From c0366fb80603ab1d1687ad12c47baa5fda35977f Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 19 Mar 2025 16:42:41 +0100 Subject: [PATCH 01/26] wire up some of the generation logic --- .gitmodules | 3 + package-lock.json | 6145 +++++++++++++---- packages/monorepo-tools/src/precommit.ts | 20 + packages/mql-typescript/.depcheckrc | 8 + packages/mql-typescript/.eslintignore | 2 + packages/mql-typescript/.eslintrc.js | 8 + packages/mql-typescript/.mocharc.js | 1 + packages/mql-typescript/.prettierignore | 3 + packages/mql-typescript/.prettierrc.json | 1 + packages/mql-typescript/LICENSE | 201 + packages/mql-typescript/mongo-php-library | 1 + packages/mql-typescript/out/schema.ts | 6051 ++++++++++++++++ packages/mql-typescript/out/test.ts | 40 + packages/mql-typescript/package.json | 79 + packages/mql-typescript/src/index.spec.ts | 0 packages/mql-typescript/src/index.ts | 499 ++ packages/mql-typescript/src/metaschema.ts | 147 + packages/mql-typescript/src/utils.ts | 13 + .../tests/accumulator/accumulator.spec.ts | 45 + .../mql-typescript/tests/stage/bucket.spec.ts | 34 + packages/mql-typescript/tsconfig-lint.json | 5 + packages/mql-typescript/tsconfig.json | 10 + 22 files changed, 11982 insertions(+), 1334 deletions(-) create mode 100644 .gitmodules create mode 100644 packages/mql-typescript/.depcheckrc create mode 100644 packages/mql-typescript/.eslintignore create mode 100644 packages/mql-typescript/.eslintrc.js create mode 100644 packages/mql-typescript/.mocharc.js create mode 100644 packages/mql-typescript/.prettierignore create mode 100644 packages/mql-typescript/.prettierrc.json create mode 100644 packages/mql-typescript/LICENSE create mode 160000 packages/mql-typescript/mongo-php-library create mode 100644 packages/mql-typescript/out/schema.ts create mode 100644 packages/mql-typescript/out/test.ts create mode 100644 packages/mql-typescript/package.json create mode 100644 packages/mql-typescript/src/index.spec.ts create mode 100644 packages/mql-typescript/src/index.ts create mode 100644 packages/mql-typescript/src/metaschema.ts create mode 100644 packages/mql-typescript/src/utils.ts create mode 100644 packages/mql-typescript/tests/accumulator/accumulator.spec.ts create mode 100644 packages/mql-typescript/tests/stage/bucket.spec.ts create mode 100644 packages/mql-typescript/tsconfig-lint.json create mode 100644 packages/mql-typescript/tsconfig.json diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..5f09a786 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "packages/mql-typescript/mongo-php-library"] + path = packages/mql-typescript/mongo-php-library + url = https://github.com/mongodb-js/mongo-php-library diff --git a/package-lock.json b/package-lock.json index 0ba7ff59..08430277 100644 --- a/package-lock.json +++ b/package-lock.json @@ -169,44 +169,49 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.22.5" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", - "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==", + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", - "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -216,6 +221,12 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "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==", + "license": "MIT" + }, "node_modules/@babel/eslint-parser": { "version": "7.22.7", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.7.tgz", @@ -234,14 +245,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", - "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" @@ -270,21 +283,19 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz", - "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-validator-option": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1" + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": { @@ -396,32 +407,33 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-optimise-call-expression": { @@ -510,25 +522,28 @@ } }, "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.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -548,13 +563,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10" }, "engines": { "node": ">=6.9.0" @@ -564,6 +579,7 @@ "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", @@ -577,6 +593,7 @@ "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" }, @@ -588,6 +605,7 @@ "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", @@ -601,6 +619,7 @@ "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" } @@ -608,12 +627,14 @@ "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==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/@babel/highlight/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==", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -622,6 +643,7 @@ "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" } @@ -630,6 +652,7 @@ "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" }, @@ -638,9 +661,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.10" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -1853,55 +1880,56 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", + "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", - "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz", + "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==", + "license": "MIT", "dependencies": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -1909,13 +1937,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2285,13 +2313,52 @@ } }, "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==", + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, + "node_modules/@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -2357,11 +2424,73 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -2395,6 +2524,20 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", @@ -2601,13 +2744,14 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -2622,9 +2766,10 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -2640,17 +2785,19 @@ } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "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/@jsdevtools/ono": { @@ -5823,6 +5970,10 @@ "resolved": "packages/monorepo-tools", "link": true }, + "node_modules/@mongodb-js/mql-typescript": { + "resolved": "packages/mql-typescript", + "link": true + }, "node_modules/@mongodb-js/oidc-http-server-pages": { "resolved": "packages/oidc-http-server-pages", "link": true @@ -6814,10 +6965,11 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", - "dev": true + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "dev": true, + "license": "(Unlicense OR Apache-2.0)" }, "node_modules/@storybook/csf": { "version": "0.1.2", @@ -6980,6 +7132,13 @@ "@types/node": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/eslint": { "version": "8.37.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", @@ -7037,6 +7196,13 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -7641,73 +7807,65 @@ "dev": true }, "node_modules/@vue/compiler-core": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", - "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.37", + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map": "^0.6.1" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", - "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", "dev": true, + "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.2.37", - "@vue/shared": "3.2.37" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", - "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.37", - "@vue/compiler-dom": "3.2.37", - "@vue/compiler-ssr": "3.2.37", - "@vue/reactivity-transform": "3.2.37", - "@vue/shared": "3.2.37", + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", - "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.2.37", - "@vue/shared": "3.2.37" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", - "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.37", - "@vue/shared": "3.2.37", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/shared": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", - "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", - "dev": true + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", + "dev": true, + "license": "MIT" }, "node_modules/@webassemblyjs/ast": { "version": "1.11.5", @@ -8274,12 +8432,13 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -8415,18 +8574,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -8444,6 +8603,13 @@ "node": ">=0.10.0" } }, + "node_modules/asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true, + "license": "MIT" + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -8514,15 +8680,28 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8898,11 +9077,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -8915,9 +9095,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -8932,11 +9112,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -8946,9 +9127,10 @@ } }, "node_modules/bson": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", - "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", + "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==", + "license": "Apache-2.0", "engines": { "node": ">=16.20.1" } @@ -9175,15 +9357,44 @@ } }, "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "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" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "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==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -9198,6 +9409,15 @@ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -9246,9 +9466,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001514", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001514.tgz", - "integrity": "sha512-ENcIpYBmwAAOm/V2cXgM7rZUrKKaqisZl4ZAI520FIkqGXUxJjmaIssbRW5HVVR5tyV6ygTLIm15aU8LUmQSaQ==", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "funding": [ { "type": "opencollective", @@ -9262,7 +9482,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/caseless": { "version": "0.12.0", @@ -9719,6 +9940,16 @@ "dot-prop": "^5.1.0" } }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -9956,6 +10187,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, "dependencies": { "safe-buffer": "~5.1.1" } @@ -9975,6 +10207,13 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true, + "license": "MIT" + }, "node_modules/cookies": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", @@ -10010,10 +10249,11 @@ } }, "node_modules/core-js-pure": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.0.tgz", - "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", + "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -10025,10 +10265,11 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -10106,9 +10347,10 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -10244,6 +10486,57 @@ "node": ">=18" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -10831,34 +11124,35 @@ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "node_modules/depcheck": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.3.tgz", - "integrity": "sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.7.tgz", + "integrity": "sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/parser": "7.16.4", - "@babel/traverse": "^7.12.5", - "@vue/compiler-sfc": "^3.0.5", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", - "deps-regex": "^0.1.4", - "ignore": "^5.1.8", - "is-core-module": "^2.4.0", - "js-yaml": "^3.14.0", - "json5": "^2.1.3", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@vue/compiler-sfc": "^3.3.4", + "callsite": "^1.0.0", + "camelcase": "^6.3.0", + "cosmiconfig": "^7.1.0", + "debug": "^4.3.4", + "deps-regex": "^0.2.0", + "findup-sync": "^5.0.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.0", + "js-yaml": "^3.14.1", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "minimatch": "^7.4.6", "multimatch": "^5.0.0", "please-upgrade-node": "^3.2.0", - "query-ast": "^1.0.3", - "readdirp": "^3.5.0", + "readdirp": "^3.6.0", "require-package-name": "^2.0.1", - "resolve": "^1.18.1", - "sass": "^1.29.0", - "scss-parser": "^1.0.4", - "semver": "^7.3.2", - "yargs": "^16.1.0" + "resolve": "^1.22.3", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "yargs": "^16.2.0" }, "bin": { "depcheck": "bin/depcheck.js" @@ -10867,26 +11161,48 @@ "node": ">=10" } }, - "node_modules/depcheck/node_modules/@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "node_modules/depcheck/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, - "bin": { - "parser": "bin/babel-parser.js" + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/depcheck/node_modules/minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/depcheck/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": { + "node": ">=8" } }, "node_modules/depcheck/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -10908,10 +11224,11 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "node_modules/deps-regex": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", - "integrity": "sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA==", - "dev": true + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.2.0.tgz", + "integrity": "sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==", + "dev": true, + "license": "MIT" }, "node_modules/destroy": { "version": "1.2.0", @@ -10923,6 +11240,16 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", @@ -10948,6 +11275,17 @@ "dev": true, "optional": true }, + "node_modules/dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "node_modules/dicer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", @@ -11088,6 +11426,20 @@ "node": ">=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==", + "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/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -11234,9 +11586,10 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.454", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.454.tgz", - "integrity": "sha512-pmf1rbAStw8UEQ0sr2cdJtWl48ZMuPD9Sto8HVQOq9vx9j2WgDEN6lYoaqFvqEHYOmGA9oRGn7LqWI9ta0YugQ==" + "version": "1.5.120", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", + "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", + "license": "ISC" }, "node_modules/electron/node_modules/@types/node": { "version": "20.14.11", @@ -11392,11 +11745,12 @@ } }, "node_modules/enzyme-shallow-equal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", - "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", + "license": "MIT", "dependencies": { - "has": "^1.0.3", + "hasown": "^2.0.0", "object-is": "^1.1.5" }, "funding": { @@ -11426,51 +11780,62 @@ } }, "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -11485,12 +11850,10 @@ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, "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==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -11509,14 +11872,28 @@ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -11531,13 +11908,14 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -11601,9 +11979,10 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "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" } @@ -11914,15 +12293,6 @@ "json5": "lib/cli.js" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-import/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -12343,7 +12713,8 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", @@ -12428,6 +12799,19 @@ "node": ">=6" } }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "homedir-polyfill": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -12668,6 +13052,13 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-xml-parser": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", @@ -12810,9 +13201,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -12892,6 +13284,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -12914,10 +13322,11 @@ } }, "node_modules/flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "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/fn.name": { "version": "1.1.0", @@ -12969,11 +13378,18 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -13021,6 +13437,22 @@ "node": ">=12.20.0" } }, + "node_modules/formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + }, + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" + } + }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -13116,14 +13548,17 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -13537,23 +13972,30 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "license": "MIT", "engines": { "node": "*" } }, "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==", + "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" @@ -13601,6 +14043,19 @@ "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==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", @@ -13626,13 +14081,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -13897,6 +14353,51 @@ "jsdom": ">=24 <25" } }, + "node_modules/global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -13906,11 +14407,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -13948,11 +14451,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13992,6 +14496,16 @@ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, + "node_modules/graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.15" + } + }, "node_modules/growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -14092,9 +14606,13 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14119,9 +14637,13 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -14130,9 +14652,10 @@ } }, "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==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -14185,9 +14708,10 @@ } }, "node_modules/hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -14212,6 +14736,16 @@ "node": ">=10.0.0" } }, + "node_modules/hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/highlight.js": { "version": "11.5.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.1.tgz", @@ -14227,6 +14761,19 @@ "integrity": "sha512-jShTftpKQDwMXc+7OHOpHXRYSweT08EO2YOIcLbwU00e9yuwJMYXGLF1eiDO0aUPeQU4/5EjAh5HtPt3ly7rvg==", "dev": true }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-passwd": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -14570,12 +15117,6 @@ "minimatch": "^3.0.4" } }, - "node_modules/immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -14768,13 +15309,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -14789,15 +15331,6 @@ "node": ">=10.13.0" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -14877,12 +15410,14 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -14897,12 +15432,35 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14921,12 +15479,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -14984,12 +15543,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15027,6 +15605,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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", @@ -15106,15 +15699,11 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -15122,20 +15711,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15192,12 +15789,15 @@ "dev": true }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15206,12 +15806,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15239,11 +15855,13 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15258,11 +15876,14 @@ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -15284,11 +15905,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -15328,12 +15950,44 @@ "assert": "^1.4.1" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15719,14 +16373,15 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -15745,6 +16400,39 @@ "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==" }, + "node_modules/json-refs": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", + "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", + "dev": true, + "license": "MIT", + "dependencies": { + "commander": "~4.1.1", + "graphlib": "^2.1.8", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "native-promise-only": "^0.8.1", + "path-loader": "^1.0.10", + "slash": "^3.0.0", + "uri-js": "^4.2.2" + }, + "bin": { + "json-refs": "bin/json-refs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/json-refs/node_modules/commander": { + "version": "4.1.1", + "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/json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -15793,6 +16481,16 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/json-schema-to-zod": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/json-schema-to-zod/-/json-schema-to-zod-2.6.0.tgz", + "integrity": "sha512-6sFZqOzHZeON8g2ZW5HJ114Hb/FffNCjWh8dgulJaKFkUqKCEWZAzF4+g07SQpfBZF7HXemwedtdLypZzmnVpQ==", + "dev": true, + "license": "ISC", + "bin": { + "json-schema-to-zod": "dist/cjs/cli.js" + } + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -15927,9 +16625,10 @@ } }, "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -17630,12 +18329,13 @@ "optional": true }, "node_modules/magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "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": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { @@ -17991,6 +18691,15 @@ "node": ">=10" } }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -18223,11 +18932,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -18780,6 +19490,13 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "optional": true }, + "node_modules/native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "dev": true, + "license": "MIT" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -19091,9 +19808,10 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" }, "node_modules/node-webpack-startup-snapshot-checker": { "resolved": "packages/node-webpack-startup-snapshot-checker", @@ -19865,9 +20583,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -19896,13 +20618,16 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -20166,6 +20891,23 @@ "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -20353,6 +21095,13 @@ "node": ">=8" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/pacote": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", @@ -20507,6 +21256,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse-path": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", @@ -20587,33 +21346,43 @@ "node": ">=8" } }, + "node_modules/path-loader": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", + "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "native-promise-only": "^0.8.1", + "superagent": "^7.1.6" + } + }, "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==" }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", - "engines": { - "node": "14 || >=16.14" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/path-scurry/node_modules/minipass": { "version": "6.0.2", @@ -20665,9 +21434,10 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", @@ -20864,10 +21634,19 @@ "node": ">=10" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -20877,22 +21656,34 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" } }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", + "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -21165,15 +21956,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/query-ast": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/query-ast/-/query-ast-1.0.4.tgz", - "integrity": "sha512-KFJFSvODCBjIH5HbHvITj9EEZKYUU6VX0T5CuB1ayvjUoUaZkKMi6eeby5Tf8DMukyZHlJQOE1+f3vevKUe6eg==", - "dev": true, - "dependencies": { - "invariant": "2.2.4" - } - }, "node_modules/querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -21884,6 +22666,28 @@ "node": ">=8" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -21901,9 +22705,10 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.1", @@ -21914,14 +22719,17 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -22111,6 +22919,20 @@ "node": ">=8" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "license": "MIT", + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -22370,13 +23192,15 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -22389,21 +23213,45 @@ "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "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==" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -22426,23 +23274,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "node_modules/sass": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.0.tgz", - "integrity": "sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ==", - "dev": true, - "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - }, - "bin": { - "sass": "sass.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, "node_modules/sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -22486,18 +23317,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/scss-parser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.5.tgz", - "integrity": "sha512-RZOtvCmCnwkDo7kdcYBi807Y5EoTIxJ34AgEgJNDmOH1jl0/xG0FyYZFbH6Ga3Iwu7q8LSdxJ4C5UkzNXjQxKQ==", - "dev": true, - "dependencies": { - "invariant": "2.2.4" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -22517,9 +23336,10 @@ "dev": true }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -22659,29 +23479,46 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "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==", + "license": "MIT", "dependencies": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -22724,13 +23561,72 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "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==", + "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==", + "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" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23017,10 +23913,11 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -23035,12 +23932,6 @@ "source-map": "^0.6.0" } }, - "node_modules/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "node_modules/sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -23302,13 +24193,18 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -23318,26 +24214,35 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23457,6 +24362,87 @@ "node": ">= 8.0" } }, + "node_modules/superagent": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", + "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", + "dev": true, + "license": "MIT", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" + }, + "engines": { + "node": ">=6.4.0 <13 || >=14" + } + }, + "node_modules/superagent/node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/readable-stream": { + "version": "3.6.2", + "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", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/superagent/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -23808,18 +24794,11 @@ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "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==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -24120,27 +25099,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -24150,15 +25132,18 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -24168,13 +25153,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24221,14 +25213,18 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24342,9 +25338,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -24359,9 +25355,10 @@ "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": { "update-browserslist-db": "cli.js" @@ -24736,15 +25733,70 @@ } }, "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24757,15 +25809,18 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -25299,6 +26354,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, "packages/bump-monorepo-packages": { "name": "@mongodb-js/bump-monorepo-packages", "version": "0.2.4", @@ -27154,6 +28218,1057 @@ "node": ">=14.17" } }, + "packages/mql-typescript": { + "name": "@mongodb-js/mql-typescript", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "bson": "^6.10.3", + "js-yaml": "^4.1.0", + "zod": "^3.24.2" + }, + "devDependencies": { + "@mongodb-js/eslint-config-devtools": "0.9.10", + "@mongodb-js/mocha-config-devtools": "^1.0.4", + "@mongodb-js/prettier-config-devtools": "^1.0.1", + "@mongodb-js/tsconfig-devtools": "^1.0.2", + "@types/chai": "^5.2.0", + "@types/js-yaml": "^4.0.9", + "@types/mocha": "^10.0.10", + "@types/node": "^22.13.10", + "@types/sinon-chai": "^4.0.0", + "chai": "^5.2.0", + "depcheck": "^1.4.7", + "eslint": "^9.22.0", + "gen-esm-wrapper": "^1.1.3", + "json-refs": "^3.0.15", + "json-schema-to-zod": "^2.6.0", + "mocha": "^11.1.0", + "nyc": "^17.1.0", + "prettier": "^3.5.3", + "sinon": "^19.0.2", + "ts-node": "^10.9.2", + "typescript": "^5.8.2" + } + }, + "packages/mql-typescript/node_modules/@eslint/eslintrc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/mql-typescript/node_modules/@eslint/js": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "packages/mql-typescript/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" + } + }, + "packages/mql-typescript/node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "packages/mql-typescript/node_modules/@sinonjs/samsam": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", + "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "lodash.get": "^4.4.2", + "type-detect": "^4.1.0" + } + }, + "packages/mql-typescript/node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "packages/mql-typescript/node_modules/@types/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-FWnQYdrG9FAC8KgPVhDFfrPL1FBsL3NtIt2WsxKvwu/61K6HiuDF3xAb7c7w/k9ML2QOUHcwTgU7dKLFPK6sBg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "packages/mql-typescript/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==", + "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "packages/mql-typescript/node_modules/@types/sinon-chai": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-4.0.0.tgz", + "integrity": "sha512-Uar+qk3TmeFsUWCwtqRNqNUE7vf34+MCJiQJR5M2rd4nCbhtE8RgTiHwN/mVwbfCjhmO6DiOel/MgzHkRMJJFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "packages/mql-typescript/node_modules/acorn": { + "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" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "packages/mql-typescript/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==", + "license": "Python-2.0" + }, + "packages/mql-typescript/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "packages/mql-typescript/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" + } + }, + "packages/mql-typescript/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": { + "node": ">=6" + } + }, + "packages/mql-typescript/node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "packages/mql-typescript/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "packages/mql-typescript/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "packages/mql-typescript/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==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "packages/mql-typescript/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==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "packages/mql-typescript/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "packages/mql-typescript/node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "packages/mql-typescript/node_modules/eslint": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "packages/mql-typescript/node_modules/eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/mql-typescript/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/mql-typescript/node_modules/espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "packages/mql-typescript/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" + } + }, + "packages/mql-typescript/node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "packages/mql-typescript/node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "packages/mql-typescript/node_modules/foreground-child": { + "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.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/mql-typescript/node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/mql-typescript/node_modules/glob-parent": { + "version": "6.0.2", + "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" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "packages/mql-typescript/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/mql-typescript/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" + } + }, + "packages/mql-typescript/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "packages/mql-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==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "packages/mql-typescript/node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/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": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/mql-typescript/node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/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" + } + }, + "packages/mql-typescript/node_modules/mocha": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "packages/mql-typescript/node_modules/mocha/node_modules/glob": { + "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": { + "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" + } + }, + "packages/mql-typescript/node_modules/mocha/node_modules/glob/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": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "packages/mql-typescript/node_modules/mocha/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" + } + }, + "packages/mql-typescript/node_modules/mocha/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": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "packages/mql-typescript/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/node_modules/nise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", + "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.1", + "@sinonjs/text-encoding": "^0.7.3", + "just-extend": "^6.2.0", + "path-to-regexp": "^8.1.0" + } + }, + "packages/mql-typescript/node_modules/nyc": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^3.3.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=18" + } + }, + "packages/mql-typescript/node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "packages/mql-typescript/node_modules/nyc/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": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/nyc/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "packages/mql-typescript/node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "packages/mql-typescript/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": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "packages/mql-typescript/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": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "packages/mql-typescript/node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "packages/mql-typescript/node_modules/prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "packages/mql-typescript/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": { + "node": ">=8" + } + }, + "packages/mql-typescript/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "packages/mql-typescript/node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "packages/mql-typescript/node_modules/sinon": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.2.tgz", + "integrity": "sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.2", + "@sinonjs/samsam": "^8.0.1", + "diff": "^7.0.0", + "nise": "^6.1.1", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "packages/mql-typescript/node_modules/sinon/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "packages/mql-typescript/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "packages/mql-typescript/node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, + "license": "Apache-2.0" + }, + "packages/mql-typescript/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "packages/mql-typescript/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==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, "packages/node-webpack-startup-snapshot-checker": { "version": "0.2.1", "license": "Apache-2.0", @@ -27995,38 +30110,47 @@ } }, "@babel/code-frame": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz", - "integrity": "sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "requires": { - "@babel/highlight": "^7.22.5" + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" } }, "@babel/compat-data": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.6.tgz", - "integrity": "sha512-29tfsWTq2Ftu7MXmimyC0C5FDZv5DYxOZkh3XD3+QW4V/BYuv/LyEsjj3c0hqedEaDt6DBfDvexMKU8YevdqFg==" + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==" }, "@babel/core": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.8.tgz", - "integrity": "sha512-75+KxFB4CZqYRXjx4NlR4J7yGvKumBuZTmV4NV6v09dVXXkuYVYLT68N6HCzLvfJ+fWCxQsntNzKwwIXL4bHnw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "requires": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-module-transforms": "^7.22.5", - "@babel/helpers": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.8", - "@babel/types": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2" + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "dependencies": { + "convert-source-map": { + "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==" + } } }, "@babel/eslint-parser": { @@ -28040,14 +30164,15 @@ } }, "@babel/generator": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.7.tgz", - "integrity": "sha512-p+jPjMG+SI8yvIaxGgeW24u7q9+5+TGpZh8/CuB7RhBKd7RCy8FayNEFNNKrNK/eUcY/4ExQqLmyrvBXKsIcwQ==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", "requires": { - "@babel/types": "^7.22.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" } }, "@babel/helper-annotate-as-pure": { @@ -28067,15 +30192,15 @@ } }, "@babel/helper-compilation-targets": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.6.tgz", - "integrity": "sha512-534sYEqWD9VfUm3IPn2SLcH4Q3P86XL+QvqdC7ZsFrzyyPF3T4XGiVghF6PTYNdWg6pXuoqXxNQAhbYeEInTzA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "requires": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-validator-option": "^7.22.5", - "@nicolo-ribaudo/semver-v6": "^6.3.3", - "browserslist": "^4.21.9", - "lru-cache": "^5.1.1" + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" }, "dependencies": { "lru-cache": { @@ -28162,26 +30287,22 @@ } }, "@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "requires": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" } }, "@babel/helper-module-transforms": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz", - "integrity": "sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "requires": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" } }, "@babel/helper-optimise-call-expression": { @@ -28246,19 +30367,19 @@ } }, "@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.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==" }, "@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==" + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==" }, "@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==" + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==" }, "@babel/helper-wrap-function": { "version": "7.22.5", @@ -28272,19 +30393,19 @@ } }, "@babel/helpers": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.6.tgz", - "integrity": "sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.10.tgz", + "integrity": "sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==", "requires": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.6", - "@babel/types": "^7.22.5" + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10" } }, "@babel/highlight": { "version": "7.22.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz", "integrity": "sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==", + "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.22.5", "chalk": "^2.0.0", @@ -28295,6 +30416,7 @@ "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, "requires": { "color-convert": "^1.9.0" } @@ -28303,6 +30425,7 @@ "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, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -28313,6 +30436,7 @@ "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, "requires": { "color-name": "1.1.3" } @@ -28320,22 +30444,26 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "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==" + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true }, "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==" + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true }, "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, "requires": { "has-flag": "^3.0.0" } @@ -28343,9 +30471,12 @@ } }, "@babel/parser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.7.tgz", - "integrity": "sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==" + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "requires": { + "@babel/types": "^7.26.10" + } }, "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.22.5", @@ -29123,57 +31254,53 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "@babel/runtime": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", - "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", "requires": { - "regenerator-runtime": "^0.13.4" + "regenerator-runtime": "^0.14.0" } }, "@babel/runtime-corejs3": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", - "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz", + "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==", "requires": { - "core-js-pure": "^3.20.2", - "regenerator-runtime": "^0.13.4" + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" } }, "@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" } }, "@babel/traverse": { - "version": "7.22.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.8.tgz", - "integrity": "sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==", - "requires": { - "@babel/code-frame": "^7.22.5", - "@babel/generator": "^7.22.7", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.7", - "@babel/types": "^7.22.5", - "debug": "^4.1.0", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.10.tgz", + "integrity": "sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A==", + "requires": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.10", + "debug": "^4.3.1", "globals": "^11.1.0" } }, "@babel/types": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.5.tgz", - "integrity": "sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", "requires": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" } }, "@bcherny/json-schema-ref-parser": { @@ -29491,9 +31618,35 @@ } }, "@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==" + }, + "@eslint/config-array": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", + "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "dev": true, + "requires": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + } + }, + "@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true + }, + "@eslint/core": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.15" + } }, "@eslint/eslintrc": { "version": "0.4.3", @@ -29541,11 +31694,51 @@ "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true }, + "@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true + }, + "@eslint/plugin-kit": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", + "dev": true, + "requires": { + "@eslint/core": "^0.12.0", + "levn": "^0.4.1" + } + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, + "@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true + }, + "@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "requires": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "dependencies": { + "@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true + } + } + }, "@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -29569,6 +31762,12 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@humanwhocodes/retry": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", + "dev": true + }, "@hutson/parse-repository-url": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", @@ -29713,13 +31912,13 @@ } }, "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "requires": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" } }, "@jridgewell/resolve-uri": { @@ -29728,9 +31927,9 @@ "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" }, "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==" }, "@jridgewell/source-map": { "version": "0.3.3", @@ -29743,17 +31942,17 @@ } }, "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "@jsdevtools/ono": { @@ -33462,6 +35661,757 @@ } } }, + "@mongodb-js/mql-typescript": { + "version": "file:packages/mql-typescript", + "requires": { + "@mongodb-js/eslint-config-devtools": "0.9.10", + "@mongodb-js/mocha-config-devtools": "^1.0.4", + "@mongodb-js/prettier-config-devtools": "^1.0.1", + "@mongodb-js/tsconfig-devtools": "^1.0.2", + "@types/chai": "^5.2.0", + "@types/js-yaml": "^4.0.9", + "@types/mocha": "^10.0.10", + "@types/node": "^22.13.10", + "@types/sinon-chai": "^4.0.0", + "bson": "^6.10.3", + "chai": "^5.2.0", + "depcheck": "^1.4.7", + "eslint": "^9.22.0", + "gen-esm-wrapper": "^1.1.3", + "js-yaml": "^4.1.0", + "json-refs": "^3.0.15", + "json-schema-to-zod": "^2.6.0", + "mocha": "^11.1.0", + "nyc": "^17.1.0", + "prettier": "^3.5.3", + "sinon": "^19.0.2", + "ts-node": "^10.9.2", + "typescript": "^5.8.2", + "zod": "^3.24.2" + }, + "dependencies": { + "@eslint/eslintrc": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + } + }, + "@eslint/js": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "dev": true + }, + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1" + } + }, + "@sinonjs/samsam": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", + "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1", + "lodash.get": "^4.4.2", + "type-detect": "^4.1.0" + }, + "dependencies": { + "type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true + } + } + }, + "@types/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-FWnQYdrG9FAC8KgPVhDFfrPL1FBsL3NtIt2WsxKvwu/61K6HiuDF3xAb7c7w/k9ML2QOUHcwTgU7dKLFPK6sBg==", + "dev": true, + "requires": { + "@types/deep-eql": "*" + } + }, + "@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==", + "dev": true + }, + "@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true + }, + "@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "dev": true, + "requires": { + "undici-types": "~6.20.0" + } + }, + "@types/sinon-chai": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-4.0.0.tgz", + "integrity": "sha512-Uar+qk3TmeFsUWCwtqRNqNUE7vf34+MCJiQJR5M2rd4nCbhtE8RgTiHwN/mVwbfCjhmO6DiOel/MgzHkRMJJFg==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "dev": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true + }, + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "requires": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + } + }, + "check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.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" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "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==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true + }, + "diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true + }, + "eslint": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", + "dev": true, + "requires": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.3.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + } + }, + "eslint-scope": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true + }, + "espree": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", + "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "dev": true, + "requires": { + "acorn": "^8.14.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + }, + "file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "requires": { + "flat-cache": "^4.0.0" + } + }, + "flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + } + }, + "foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true + } + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true + }, + "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, + "requires": { + "@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" + } + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true + }, + "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, + "requires": { + "p-locate": "^4.1.0" + } + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "dev": true + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + }, + "mocha": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "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, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "nise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", + "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.1", + "@sinonjs/text-encoding": "^0.7.3", + "just-extend": "^6.2.0", + "path-to-regexp": "^8.1.0" + } + }, + "nyc": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", + "dev": true, + "requires": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^3.3.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "dependencies": { + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "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, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "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, + "requires": { + "p-try": "^2.0.0" + } + }, + "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, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true + }, + "pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true + }, + "prettier": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", + "dev": true + }, + "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 + }, + "semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "sinon": { + "version": "19.0.2", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.2.tgz", + "integrity": "sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==", + "dev": true, + "requires": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.2", + "@sinonjs/samsam": "^8.0.1", + "diff": "^7.0.0", + "nise": "^6.1.1", + "supports-color": "^7.2.0" + }, + "dependencies": { + "diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true + } + } + }, + "typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "dev": true + }, + "undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "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==", + "dev": true + } + } + }, "@mongodb-js/oidc-http-server-pages": { "version": "file:packages/oidc-http-server-pages", "requires": { @@ -34679,9 +37629,9 @@ } }, "@sinonjs/text-encoding": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", - "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", "dev": true }, "@storybook/csf": { @@ -34827,6 +37777,12 @@ "@types/node": "*" } }, + "@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true + }, "@types/eslint": { "version": "8.37.0", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", @@ -34883,6 +37839,12 @@ "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" }, + "@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -35382,72 +38344,59 @@ "dev": true }, "@vue/compiler-core": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.37.tgz", - "integrity": "sha512-81KhEjo7YAOh0vQJoSmAD68wLfYqJvoiD4ulyedzF+OEk/bk6/hx3fTNVfuzugIIaTrOx4PGx6pAiBRe5e9Zmg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, "requires": { - "@babel/parser": "^7.16.4", - "@vue/shared": "3.2.37", + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map": "^0.6.1" + "source-map-js": "^1.2.0" } }, "@vue/compiler-dom": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.37.tgz", - "integrity": "sha512-yxJLH167fucHKxaqXpYk7x8z7mMEnXOw3G2q62FTkmsvNxu4FQSu5+3UMb+L7fjKa26DEzhrmCxAgFLLIzVfqQ==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", "dev": true, "requires": { - "@vue/compiler-core": "3.2.37", - "@vue/shared": "3.2.37" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "@vue/compiler-sfc": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.37.tgz", - "integrity": "sha512-+7i/2+9LYlpqDv+KTtWhOZH+pa8/HnX/905MdVmAcI/mPQOBwkHHIzrsEsucyOIZQYMkXUiTkmZq5am/NyXKkg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", "dev": true, "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.37", - "@vue/compiler-dom": "3.2.37", - "@vue/compiler-ssr": "3.2.37", - "@vue/reactivity-transform": "3.2.37", - "@vue/shared": "3.2.37", + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", - "magic-string": "^0.25.7", - "postcss": "^8.1.10", - "source-map": "^0.6.1" + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" } }, "@vue/compiler-ssr": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.37.tgz", - "integrity": "sha512-7mQJD7HdXxQjktmsWp/J67lThEIcxLemz1Vb5I6rYJHR5vI+lON3nPGOH3ubmbvYGt8xEUaAr1j7/tIFWiEOqw==", - "dev": true, - "requires": { - "@vue/compiler-dom": "3.2.37", - "@vue/shared": "3.2.37" - } - }, - "@vue/reactivity-transform": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.37.tgz", - "integrity": "sha512-IWopkKEb+8qpu/1eMKVeXrK0NLw9HicGviJzhJDEyfxTR9e1WtpnnbYkJWurX6WwoFP0sz10xQg8yL8lgskAZg==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", "dev": true, "requires": { - "@babel/parser": "^7.16.4", - "@vue/compiler-core": "3.2.37", - "@vue/shared": "3.2.37", - "estree-walker": "^2.0.2", - "magic-string": "^0.25.7" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "@vue/shared": { - "version": "3.2.37", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.37.tgz", - "integrity": "sha512-4rSJemR2NQIo9Klm1vabqWjD8rs/ZaJSzMxkMNeJS6lHiUjjUeYFbooN19NgFjztubEKh3WlZUeOLVdbbUWHsw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "dev": true }, "@webassemblyjs/ast": { @@ -35905,12 +38854,12 @@ } }, "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" } }, "array-differ": { @@ -36001,18 +38950,17 @@ } }, "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "requires": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" } }, "arrify": { @@ -36021,6 +38969,12 @@ "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "dev": true + }, "asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -36081,15 +39035,23 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, + "async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "aws-sdk": { "version": "2.1441.0", @@ -36397,11 +39359,11 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browser-stdout": { @@ -36411,20 +39373,20 @@ "dev": true }, "browserslist": { - "version": "4.21.9", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.9.tgz", - "integrity": "sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "requires": { - "caniuse-lite": "^1.0.30001503", - "electron-to-chromium": "^1.4.431", - "node-releases": "^2.0.12", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" } }, "bson": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/bson/-/bson-6.8.0.tgz", - "integrity": "sha512-iOJg8pr7wq2tg/zSlCCHMi3hMm5JTOxLTagf3zxhcenHsFp+c6uOs6K7W5UE7A4QIJGtqh/ZovFNMP4mOPJynQ==" + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.10.3.tgz", + "integrity": "sha512-MTxGsqgYTwfshYWTRdmZRC+M7FnG1b4y7RO7p2k3X24Wq0yv1m77Wsj0BzlPzd/IowgESfsruQCUToa7vbOpPQ==" }, "buffer": { "version": "5.7.1", @@ -36588,15 +39550,32 @@ } }, "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "requires": { + "call-bind-apply-helpers": "^1.0.0", "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" + "set-function-length": "^1.2.2" + } + }, + "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==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" } }, "call-me-maybe": { @@ -36605,6 +39584,12 @@ "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", "dev": true }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "dev": true + }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -36637,9 +39622,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001514", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001514.tgz", - "integrity": "sha512-ENcIpYBmwAAOm/V2cXgM7rZUrKKaqisZl4ZAI520FIkqGXUxJjmaIssbRW5HVVR5tyV6ygTLIm15aU8LUmQSaQ==" + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==" }, "caseless": { "version": "0.12.0", @@ -36988,6 +39973,12 @@ "dot-prop": "^5.1.0" } }, + "component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true + }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -37169,6 +40160,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dev": true, "requires": { "safe-buffer": "~5.1.1" } @@ -37185,6 +40177,12 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==", + "dev": true + }, "cookies": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", @@ -37212,9 +40210,9 @@ } }, "core-js-pure": { - "version": "3.24.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.0.tgz", - "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==" + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", + "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==" }, "core-util-is": { "version": "1.0.3", @@ -37222,9 +40220,9 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "requires": { "@types/parse-json": "^4.0.0", @@ -37287,9 +40285,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "requires": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -37396,6 +40394,36 @@ } } }, + "data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -37816,50 +40844,65 @@ "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "depcheck": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.3.tgz", - "integrity": "sha512-vy8xe1tlLFu7t4jFyoirMmOR7x7N601ubU9Gkifyr9z8rjBFtEdWHDBMqXyk6OkK+94NXutzddVXJuo0JlUQKQ==", + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/depcheck/-/depcheck-1.4.7.tgz", + "integrity": "sha512-1lklS/bV5chOxwNKA/2XUUk/hPORp8zihZsXflr8x0kLwmcZ9Y9BsS6Hs3ssvA+2wUVbG0U2Ciqvm1SokNjPkA==", "dev": true, "requires": { - "@babel/parser": "7.16.4", - "@babel/traverse": "^7.12.5", - "@vue/compiler-sfc": "^3.0.5", - "camelcase": "^6.2.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.2.0", - "deps-regex": "^0.1.4", - "ignore": "^5.1.8", - "is-core-module": "^2.4.0", - "js-yaml": "^3.14.0", - "json5": "^2.1.3", - "lodash": "^4.17.20", - "minimatch": "^3.0.4", + "@babel/parser": "^7.23.0", + "@babel/traverse": "^7.23.2", + "@vue/compiler-sfc": "^3.3.4", + "callsite": "^1.0.0", + "camelcase": "^6.3.0", + "cosmiconfig": "^7.1.0", + "debug": "^4.3.4", + "deps-regex": "^0.2.0", + "findup-sync": "^5.0.0", + "ignore": "^5.2.4", + "is-core-module": "^2.12.0", + "js-yaml": "^3.14.1", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "minimatch": "^7.4.6", "multimatch": "^5.0.0", "please-upgrade-node": "^3.2.0", - "query-ast": "^1.0.3", - "readdirp": "^3.5.0", + "readdirp": "^3.6.0", "require-package-name": "^2.0.1", - "resolve": "^1.18.1", - "sass": "^1.29.0", - "scss-parser": "^1.0.4", - "semver": "^7.3.2", - "yargs": "^16.1.0" + "resolve": "^1.22.3", + "resolve-from": "^5.0.0", + "semver": "^7.5.4", + "yargs": "^16.2.0" }, "dependencies": { - "@babel/parser": { - "version": "7.16.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", - "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", - "dev": true + "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, + "requires": { + "balanced-match": "^1.0.0" + } }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "minimatch": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "brace-expansion": "^2.0.1" } + }, + "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 + }, + "semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true } } }, @@ -37874,9 +40917,9 @@ "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" }, "deps-regex": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.1.4.tgz", - "integrity": "sha512-3tzwGYogSJi8HoG93R5x9NrdefZQOXgHgGih/7eivloOq6yC6O+yoFxZnkgP661twvfILONfoKRdF9GQOGx2RA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deps-regex/-/deps-regex-0.2.0.tgz", + "integrity": "sha512-PwuBojGMQAYbWkMXOY9Pd/NWCDNHVH12pnS7WHqZkTSeMESe4hwnKKRp0yR87g37113x4JPbo/oIvXY+s/f56Q==", "dev": true }, "destroy": { @@ -37885,6 +40928,12 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==", + "dev": true + }, "detect-indent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", @@ -37904,6 +40953,16 @@ "dev": true, "optional": true }, + "dezalgo": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz", + "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, "dicer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", @@ -38005,6 +41064,16 @@ "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", "dev": true }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, "duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -38120,9 +41189,9 @@ } }, "electron-to-chromium": { - "version": "1.4.454", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.454.tgz", - "integrity": "sha512-pmf1rbAStw8UEQ0sr2cdJtWl48ZMuPD9Sto8HVQOq9vx9j2WgDEN6lYoaqFvqEHYOmGA9oRGn7LqWI9ta0YugQ==" + "version": "1.5.120", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", + "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==" }, "email-validator": { "version": "2.0.4", @@ -38238,11 +41307,11 @@ } }, "enzyme-shallow-equal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", - "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", "requires": { - "has": "^1.0.3", + "hasown": "^2.0.0", "object-is": "^1.1.5" } }, @@ -38269,51 +41338,61 @@ } }, "es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "requires": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" } }, "es-array-method-boxes-properly": { @@ -38322,12 +41401,9 @@ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, "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==", - "requires": { - "get-intrinsic": "^1.2.4" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" }, "es-errors": { "version": "1.3.0", @@ -38340,14 +41416,23 @@ "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, + "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==", + "requires": { + "es-errors": "^1.3.0" + } + }, "es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "requires": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, "es-shim-unscopables": { @@ -38359,13 +41444,13 @@ } }, "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" } }, "es5-ext": { @@ -38419,9 +41504,9 @@ } }, "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==" }, "escape-html": { "version": "1.0.3", @@ -38675,12 +41760,6 @@ "minimist": "^1.2.0" } }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -39006,6 +42085,15 @@ "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", "optional": true }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "exponential-backoff": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", @@ -39205,6 +42293,12 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, "fast-xml-parser": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", @@ -39312,9 +42406,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "requires": { "to-regex-range": "^5.0.1" } @@ -39378,6 +42472,18 @@ "path-exists": "^4.0.0" } }, + "findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + } + }, "flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -39394,9 +42500,9 @@ } }, "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "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 }, "fn.name": { @@ -39430,11 +42536,11 @@ "dev": true }, "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "requires": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" } }, "foreground-child": { @@ -39470,6 +42576,18 @@ "fetch-blob": "^3.1.2" } }, + "formidable": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", + "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "dev": true, + "requires": { + "dezalgo": "^1.0.4", + "hexoid": "^1.0.0", + "once": "^1.4.0", + "qs": "^6.11.0" + } + }, "forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -39529,14 +42647,16 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" } }, "functional-red-black-tree": { @@ -39873,20 +42993,25 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==" }, "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==", "requires": { + "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" } }, "get-package-type": { @@ -39913,6 +43038,15 @@ "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, "get-stdin": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", @@ -39926,13 +43060,13 @@ "dev": true }, "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "requires": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" } }, "get-tsconfig": { @@ -40136,17 +43270,53 @@ "resolved": "https://registry.npmjs.org/global-jsdom/-/global-jsdom-24.0.0.tgz", "integrity": "sha512-CARBUWkqZ3O9VOc2PIVE5kQpdQeJh9eF9kQ7zSeNtmqx5vAFDKMr9XnDt1epVMMrz1s9uK/yFCa4HLwpa6TcPA==" }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "requires": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" } }, "globby": { @@ -40172,12 +43342,9 @@ } }, "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "got": { "version": "11.8.6", @@ -40207,6 +43374,15 @@ "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==" }, + "graphlib": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/graphlib/-/graphlib-2.1.8.tgz", + "integrity": "sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, "growl": { "version": "1.10.5", "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", @@ -40283,9 +43459,9 @@ } }, "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==" }, "has-flag": { "version": "4.0.0", @@ -40301,14 +43477,17 @@ } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "requires": { + "dunder-proto": "^1.0.0" + } }, "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==" }, "has-tostringtag": { "version": "1.0.2", @@ -40342,9 +43521,9 @@ } }, "hasown": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.1.tgz", - "integrity": "sha512-1/th4MHjnwncwXsIW6QMzlvYL9kG5e/CpVvLRZe4XPa8TOUNbCELqmvhDmnkNsAjwaG4+I8gJJL0JBvTTLO9qA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "requires": { "function-bind": "^1.1.2" } @@ -40360,6 +43539,12 @@ "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.3.0.tgz", "integrity": "sha512-E5303mzwQ+4j/n2J0rDvEPBN7GKjhis10oHiYOgjxsmxYgqG++hz9NyLLOXttzH8as/DyiBHYpUrJTZWYaMo8Q==" }, + "hexoid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", + "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", + "dev": true + }, "highlight.js": { "version": "11.5.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.1.tgz", @@ -40372,6 +43557,15 @@ "integrity": "sha512-jShTftpKQDwMXc+7OHOpHXRYSweT08EO2YOIcLbwU00e9yuwJMYXGLF1eiDO0aUPeQU4/5EjAh5HtPt3ly7rvg==", "dev": true }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", @@ -40633,12 +43827,6 @@ "minimatch": "^3.0.4" } }, - "immutable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", - "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", - "dev": true - }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -40790,13 +43978,13 @@ } }, "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "requires": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" } }, "interpret": { @@ -40804,15 +43992,6 @@ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==" }, - "invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, - "requires": { - "loose-envify": "^1.0.0" - } - }, "invert-kv": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", @@ -40878,12 +44057,13 @@ } }, "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" } }, "is-arrayish": { @@ -40892,12 +44072,24 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "requires": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "requires": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" } }, "is-binary-path": { @@ -40910,12 +44102,12 @@ } }, "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-builtin-module": { @@ -40949,12 +44141,23 @@ "hasown": "^2.0.0" } }, + "is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "requires": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + } + }, "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-docker": { @@ -40974,6 +44177,14 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, + "is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "requires": { + "call-bound": "^1.0.3" + } + }, "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", @@ -41022,27 +44233,28 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" + }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-obj": { @@ -41081,20 +44293,27 @@ "dev": true }, "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" + }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" } }, "is-ssh": { @@ -41113,11 +44332,12 @@ "dev": true }, "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-subset": { @@ -41126,11 +44346,13 @@ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" }, "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "requires": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" } }, "is-text-path": { @@ -41143,11 +44365,11 @@ } }, "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "requires": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" } }, "is-typedarray": { @@ -41175,12 +44397,26 @@ "assert": "^1.4.1" } }, + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" + }, "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + } + }, + "is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "requires": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" } }, "is-windows": { @@ -41472,9 +44708,9 @@ } }, "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==" }, "json-buffer": { "version": "3.0.1", @@ -41492,6 +44728,30 @@ "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==" }, + "json-refs": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/json-refs/-/json-refs-3.0.15.tgz", + "integrity": "sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==", + "dev": true, + "requires": { + "commander": "~4.1.1", + "graphlib": "^2.1.8", + "js-yaml": "^3.13.1", + "lodash": "^4.17.15", + "native-promise-only": "^0.8.1", + "path-loader": "^1.0.10", + "slash": "^3.0.0", + "uri-js": "^4.2.2" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + } + } + }, "json-schema": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", @@ -41527,6 +44787,12 @@ } } }, + "json-schema-to-zod": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/json-schema-to-zod/-/json-schema-to-zod-2.6.0.tgz", + "integrity": "sha512-6sFZqOzHZeON8g2ZW5HJ114Hb/FffNCjWh8dgulJaKFkUqKCEWZAzF4+g07SQpfBZF7HXemwedtdLypZzmnVpQ==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -41633,9 +44899,9 @@ } }, "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "requires": { "json-buffer": "3.0.1" } @@ -42992,12 +46258,12 @@ } }, "magic-string": { - "version": "0.25.9", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", - "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "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, "requires": { - "sourcemap-codec": "^1.4.8" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "make-dir": { @@ -43258,6 +46524,11 @@ "escape-string-regexp": "^4.0.0" } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -43442,11 +46713,11 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -44216,6 +47487,12 @@ "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "optional": true }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -44449,9 +47726,9 @@ } }, "node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, "node-webpack-startup-snapshot-checker": { "version": "file:packages/node-webpack-startup-snapshot-checker", @@ -45073,9 +48350,9 @@ "dev": true }, "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" }, "object-is": { "version": "1.1.5", @@ -45092,13 +48369,15 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "requires": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, @@ -45299,6 +48578,16 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, + "own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "requires": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + } + }, "p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -45423,6 +48712,12 @@ "release-zalgo": "^1.0.0" } }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, "pacote": { "version": "11.3.5", "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.3.5.tgz", @@ -45545,6 +48840,12 @@ "lines-and-columns": "^1.1.6" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true + }, "parse-path": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", @@ -45607,24 +48908,34 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" }, + "path-loader": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/path-loader/-/path-loader-1.0.12.tgz", + "integrity": "sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==", + "dev": true, + "requires": { + "native-promise-only": "^0.8.1", + "superagent": "^7.1.6" + } + }, "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==" }, "path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "requires": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "dependencies": { "lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==" + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "minipass": { "version": "6.0.2", @@ -45671,9 +48982,9 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "picomatch": { "version": "2.3.1", @@ -45814,21 +49125,26 @@ "@babel/runtime": "^7.17.8" } }, + "possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" + }, "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "dependencies": { "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", + "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", "dev": true } } @@ -46036,15 +49352,6 @@ "side-channel": "^1.0.4" } }, - "query-ast": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/query-ast/-/query-ast-1.0.4.tgz", - "integrity": "sha512-KFJFSvODCBjIH5HbHvITj9EEZKYUU6VX0T5CuB1ayvjUoUaZkKMi6eeby5Tf8DMukyZHlJQOE1+f3vevKUe6eg==", - "dev": true, - "requires": { - "invariant": "2.2.4" - } - }, "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", @@ -46578,6 +49885,21 @@ "strip-indent": "^3.0.0" } }, + "reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -46592,9 +49914,9 @@ } }, "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "regenerator-transform": { "version": "0.15.1", @@ -46605,14 +49927,16 @@ } }, "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "requires": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" } }, "regexpp": { @@ -46755,6 +50079,16 @@ } } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -46948,13 +50282,14 @@ } }, "safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "requires": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "dependencies": { @@ -46970,14 +50305,30 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "requires": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "requires": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" } }, "safe-stable-stringify": { @@ -46991,17 +50342,6 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "sass": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.0.tgz", - "integrity": "sha512-C4zp79GCXZfK0yoHZg+GxF818/aclhp9F48XBu/+bm9vXEVAYov9iU3FBVRMq3Hx3OA4jfKL+p2K9180mEh0xQ==", - "dev": true, - "requires": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", - "source-map-js": ">=0.6.2 <2.0.0" - } - }, "sax": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", @@ -47035,15 +50375,6 @@ "ajv-keywords": "^3.5.2" } }, - "scss-parser": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/scss-parser/-/scss-parser-1.0.5.tgz", - "integrity": "sha512-RZOtvCmCnwkDo7kdcYBi807Y5EoTIxJ34AgEgJNDmOH1jl0/xG0FyYZFbH6Ga3Iwu7q8LSdxJ4C5UkzNXjQxKQ==", - "dev": true, - "requires": { - "invariant": "2.2.4" - } - }, "seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -47059,9 +50390,9 @@ "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "semver-compare": { "version": "1.0.0", @@ -47180,26 +50511,37 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "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==", "requires": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" } }, "set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "requires": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" + } + }, + "set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "requires": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" } }, "setprototypeof": { @@ -47230,13 +50572,47 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "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" + } + }, + "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==", + "requires": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "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==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "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==", + "requires": { + "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" } }, "siginfo": { @@ -47451,9 +50827,9 @@ "devOptional": true }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true }, "source-map-support": { @@ -47466,12 +50842,6 @@ "source-map": "^0.6.0" } }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, "sparse-bitfield": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", @@ -47691,33 +51061,38 @@ } }, "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" } }, "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "strip-ansi": { @@ -47803,6 +51178,62 @@ "debug": "^4.1.0" } }, + "superagent": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", + "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", + "dev": true, + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.3", + "debug": "^4.3.4", + "fast-safe-stringify": "^2.1.1", + "form-data": "^4.0.0", + "formidable": "^2.0.1", + "methods": "^1.1.2", + "mime": "2.6.0", + "qs": "^6.10.3", + "readable-stream": "^3.6.0", + "semver": "^7.3.7" + }, + "dependencies": { + "form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -48081,11 +51512,6 @@ "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -48305,46 +51731,52 @@ } }, "typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "requires": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" } }, "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" } }, "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" } }, "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" } }, "typedarray": { @@ -48375,14 +51807,14 @@ "optional": true }, "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "requires": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" } }, "unbzip2-stream": { @@ -48468,12 +51900,12 @@ "dev": true }, "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" } }, "uri-js": { @@ -48755,15 +52187,53 @@ } }, "which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "requires": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + } + }, + "which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "requires": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, + "which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" } }, "which-module": { @@ -48773,15 +52243,17 @@ "dev": true }, "which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "requires": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" } }, "why-is-node-running": { @@ -49180,6 +52652,11 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true + }, + "zod": { + "version": "3.24.2", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", + "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==" } } } diff --git a/packages/monorepo-tools/src/precommit.ts b/packages/monorepo-tools/src/precommit.ts index 95473ec7..406ffe5e 100644 --- a/packages/monorepo-tools/src/precommit.ts +++ b/packages/monorepo-tools/src/precommit.ts @@ -5,15 +5,35 @@ import path from 'path'; import pkgUp from 'pkg-up'; import { promisify } from 'util'; import { execFile } from 'child_process'; +import * as fs from 'fs/promises'; const execFileAsync = promisify(execFile); const monorepoRoot = path.resolve(__dirname, '..', '..'); +const repoRoot = path.resolve(monorepoRoot, '..'); async function main(fileList: string[]) { const filesToPrettify: string[] = []; + const submodules = [ + ...( + await fs.readFile(path.resolve(repoRoot, '.gitmodules'), { + encoding: 'utf8', + }) + ).matchAll(/^\s+path = (?.*)$/gm), + ] + .map((r) => r.groups?.submodulePath) + .filter((p) => p) + .map((p) => path.resolve(repoRoot, p!)); + await Promise.all( fileList.map(async (filePath) => { + if ( + submodules.some((submodulePath) => filePath.startsWith(submodulePath)) + ) { + console.log(`Skipping submodule ${filePath}`); + return; + } + const packageJsonPath = await pkgUp({ cwd: path.dirname(filePath) }); if (!packageJsonPath) { diff --git a/packages/mql-typescript/.depcheckrc b/packages/mql-typescript/.depcheckrc new file mode 100644 index 00000000..48bf9af6 --- /dev/null +++ b/packages/mql-typescript/.depcheckrc @@ -0,0 +1,8 @@ +ignores: + - '@mongodb-js/prettier-config-devtools' + - '@mongodb-js/tsconfig-devtools' + - '@types/chai' + - '@types/sinon-chai' + - 'sinon' +ignore-patterns: + - 'dist' diff --git a/packages/mql-typescript/.eslintignore b/packages/mql-typescript/.eslintignore new file mode 100644 index 00000000..85a8a75e --- /dev/null +++ b/packages/mql-typescript/.eslintignore @@ -0,0 +1,2 @@ +.nyc-output +dist diff --git a/packages/mql-typescript/.eslintrc.js b/packages/mql-typescript/.eslintrc.js new file mode 100644 index 00000000..83296d73 --- /dev/null +++ b/packages/mql-typescript/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + root: true, + extends: ['@mongodb-js/eslint-config-devtools'], + parserOptions: { + tsconfigRootDir: __dirname, + project: ['./tsconfig-lint.json'], + }, +}; diff --git a/packages/mql-typescript/.mocharc.js b/packages/mql-typescript/.mocharc.js new file mode 100644 index 00000000..64afeb1f --- /dev/null +++ b/packages/mql-typescript/.mocharc.js @@ -0,0 +1 @@ +module.exports = require('@mongodb-js/mocha-config-devtools'); diff --git a/packages/mql-typescript/.prettierignore b/packages/mql-typescript/.prettierignore new file mode 100644 index 00000000..4d28df66 --- /dev/null +++ b/packages/mql-typescript/.prettierignore @@ -0,0 +1,3 @@ +.nyc_output +dist +coverage diff --git a/packages/mql-typescript/.prettierrc.json b/packages/mql-typescript/.prettierrc.json new file mode 100644 index 00000000..dfae21d0 --- /dev/null +++ b/packages/mql-typescript/.prettierrc.json @@ -0,0 +1 @@ +"@mongodb-js/prettier-config-devtools" diff --git a/packages/mql-typescript/LICENSE b/packages/mql-typescript/LICENSE new file mode 100644 index 00000000..5e0fd33c --- /dev/null +++ b/packages/mql-typescript/LICENSE @@ -0,0 +1,201 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, +and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by +the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all +other entities that control, are controlled by, or are under common +control with that entity. For the purposes of this definition, +"control" means (i) the power, direct or indirect, to cause the +direction or management of such entity, whether by contract or +otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity +exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, +including but not limited to software source code, documentation +source, and configuration files. + +"Object" form shall mean any form resulting from mechanical +transformation or translation of a Source form, including but +not limited to compiled object code, generated documentation, +and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or +Object form, made available under the License, as indicated by a +copyright notice that is included in or attached to the work +(an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object +form, that is based on (or derived from) the Work and for which the +editorial revisions, annotations, elaborations, or other modifications +represent, as a whole, an original work of authorship. For the purposes +of this License, Derivative Works shall not include works that remain +separable from, or merely link (or bind by name) to the interfaces of, +the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including +the original version of the Work and any modifications or additions +to that Work or Derivative Works thereof, that is intentionally +submitted to Licensor for inclusion in the Work by the copyright owner +or by an individual or Legal Entity authorized to submit on behalf of +the copyright owner. For the purposes of this definition, "submitted" +means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, +and issue tracking systems that are managed by, or on behalf of, the +Licensor for the purpose of discussing and improving the Work, but +excluding communication that is conspicuously marked or otherwise +designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity +on behalf of whom a Contribution has been received by Licensor and +subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the +Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of +this License, each Contributor hereby grants to You a perpetual, +worldwide, non-exclusive, no-charge, royalty-free, irrevocable +(except as stated in this section) patent license to make, have made, +use, offer to sell, sell, import, and otherwise transfer the Work, +where such license applies only to those patent claims licensable +by such Contributor that are necessarily infringed by their +Contribution(s) alone or by combination of their Contribution(s) +with the Work to which such Contribution(s) was submitted. If You +institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work +or a Contribution incorporated within the Work constitutes direct +or contributory patent infringement, then any patent licenses +granted to You under this License for that Work shall terminate +as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the +Work or Derivative Works thereof in any medium, with or without +modifications, and in Source or Object form, provided that You +meet the following conditions: + +(a) You must give any other recipients of the Work or +Derivative Works a copy of this License; and + +(b) You must cause any modified files to carry prominent notices +stating that You changed the files; and + +(c) You must retain, in the Source form of any Derivative Works +that You distribute, all copyright, patent, trademark, and +attribution notices from the Source form of the Work, +excluding those notices that do not pertain to any part of +the Derivative Works; and + +(d) If the Work includes a "NOTICE" text file as part of its +distribution, then any Derivative Works that You distribute must +include a readable copy of the attribution notices contained +within such NOTICE file, excluding those notices that do not +pertain to any part of the Derivative Works, in at least one +of the following places: within a NOTICE text file distributed +as part of the Derivative Works; within the Source form or +documentation, if provided along with the Derivative Works; or, +within a display generated by the Derivative Works, if and +wherever such third-party notices normally appear. The contents +of the NOTICE file are for informational purposes only and +do not modify the License. You may add Your own attribution +notices within Derivative Works that You distribute, alongside +or as an addendum to the NOTICE text from the Work, provided +that such additional attribution notices cannot be construed +as modifying the License. + +You may add Your own copyright statement to Your modifications and +may provide additional or different license terms and conditions +for use, reproduction, or distribution of Your modifications, or +for any such Derivative Works as a whole, provided Your use, +reproduction, and distribution of the Work otherwise complies with +the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, +any Contribution intentionally submitted for inclusion in the Work +by You to the Licensor shall be under the terms and conditions of +this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify +the terms of any separate license agreement you may have executed +with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade +names, trademarks, service marks, or product names of the Licensor, +except as required for reasonable and customary use in describing the +origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or +agreed to in writing, Licensor provides the Work (and each +Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied, including, without limitation, any warranties or conditions +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A +PARTICULAR PURPOSE. You are solely responsible for determining the +appropriateness of using or redistributing the Work and assume any +risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, +whether in tort (including negligence), contract, or otherwise, +unless required by applicable law (such as deliberate and grossly +negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, +incidental, or consequential damages of any character arising as a +result of this License or out of the use or inability to use the +Work (including but not limited to damages for loss of goodwill, +work stoppage, computer failure or malfunction, or any and all +other commercial damages or losses), even if such Contributor +has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing +the Work or Derivative Works thereof, You may choose to offer, +and charge a fee for, acceptance of support, warranty, indemnity, +or other liability obligations and/or rights consistent with this +License. However, in accepting such obligations, You may act only +on Your own behalf and on Your sole responsibility, not on behalf +of any other Contributor, and only if You agree to indemnify, +defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason +of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following +boilerplate notice, with the fields enclosed by brackets "{}" +replaced with your own identifying information. (Don't include +the brackets!) The text should be enclosed in the appropriate +comment syntax for the file format. We also recommend that a +file or class name and description of purpose be included on the +same "printed page" as the copyright notice for easier +identification within third-party archives. + +Copyright {yyyy} {name of copyright owner} + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library new file mode 160000 index 00000000..39224b6f --- /dev/null +++ b/packages/mql-typescript/mongo-php-library @@ -0,0 +1 @@ +Subproject commit 39224b6fa3bf421cb20060b2c5235762671c3d57 diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts new file mode 100644 index 00000000..9c413f5b --- /dev/null +++ b/packages/mql-typescript/out/schema.ts @@ -0,0 +1,6051 @@ +import type * as bson from 'bson'; + +// from Node.js driver +type Condition = AlternativeType; // misses FilterOperators +type AlternativeType = T extends ReadonlyArray + ? T | RegExpOrString + : RegExpOrString; +type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; +type KeysOfAType = { + [k in keyof T]: NonNullable extends Type ? k : never; +}[keyof T]; +type RecordWithStaticFields, TValue> = T & { + [key: string]: TValue | T[keyof T]; +}; + +// TBD: Nested fields +type AFieldPath = KeysOfAType & string; +export namespace AccumulatorOperators { + /** + * A type describing the `$accumulator` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/} + */ + export interface $accumulator { + /** + * Defines a custom accumulator function. + * New in MongoDB 4.4. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/} + */ + $accumulator: { + /** + * Function used to initialize the state. The init function receives its arguments from the initArgs array expression. You can specify the function definition as either BSON type Code or String. + */ + init: Javascript; + + /** + * Arguments passed to the init function. + */ + initArgs?: ResolvesToArray; + + /** + * Function used to accumulate documents. The accumulate function receives its arguments from the current state and accumulateArgs array expression. The result of the accumulate function becomes the new state. You can specify the function definition as either BSON type Code or String. + */ + accumulate: Javascript; + + /** + * Arguments passed to the accumulate function. You can use accumulateArgs to specify what field value(s) to pass to the accumulate function. + */ + accumulateArgs: ResolvesToArray; + + /** + * Function used to merge two internal states. merge must be either a String or Code BSON type. merge returns the combined result of the two merged states. For information on when the merge function is called, see Merge Two States with $merge. + */ + merge: Javascript; + + /** + * Function used to update the result of the accumulation. + */ + finalize?: Javascript; + + /** + * The language used in the $accumulator code. + */ + lang: string; + }; + } + + /** + * A type describing the `$addToSet` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/} + */ + export interface $addToSet { + /** + * Returns an array of unique expression values for each group. Order of the array elements is undefined. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/} + */ + $addToSet: Expression; + } + + /** + * A type describing the `$avg` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/} + */ + export interface $avg { + /** + * Returns an average of numerical values. Ignores non-numeric values. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/} + */ + $avg: ResolvesToNumber; + } + + /** + * A type describing the `$bottom` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/} + */ + export interface $bottom { + /** + * Returns the bottom element within a group according to the specified sort order. + * New in MongoDB 5.2: Available in the $group and $setWindowFields stages. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/} + */ + $bottom: { + /** + * Specifies the order of results, with syntax similar to $sort. + */ + sortBy: SortBy; + + /** + * Represents the output for each element in the group and can be any expression. + */ + output: Expression; + }; + } + + /** + * A type describing the `$bottomN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/} + */ + export interface $bottomN { + /** + * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. If the group contains fewer than n elements, $bottomN returns all elements in the group. + * New in MongoDB 5.2. + * Available in the $group and $setWindowFields stages. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/} + */ + $bottomN: { + /** + * Limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group. + */ + n: ResolvesToInt; + + /** + * Specifies the order of results, with syntax similar to $sort. + */ + sortBy: SortBy; + + /** + * Represents the output for each element in the group and can be any expression. + */ + output: Expression; + }; + } + + /** + * A type describing the `$count` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/} + */ + export interface $count { + /** + * Returns the number of documents in the group or window. + * Distinct from the $count pipeline stage. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/} + */ + $count: Record; + } + + /** + * A type describing the `$covariancePop` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/} + */ + export interface $covariancePop { + /** + * Returns the population covariance of two numeric expressions. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/} + */ + $covariancePop: [ + expression1: ResolvesToNumber, + expression2: ResolvesToNumber + ]; + } + + /** + * A type describing the `$covarianceSamp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/} + */ + export interface $covarianceSamp { + /** + * Returns the sample covariance of two numeric expressions. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/} + */ + $covarianceSamp: [ + expression1: ResolvesToNumber, + expression2: ResolvesToNumber + ]; + } + + /** + * A type describing the `$denseRank` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/} + */ + export interface $denseRank { + /** + * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. There are no gaps in the ranks. Ties receive the same rank. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/} + */ + $denseRank: Record; + } + + /** + * A type describing the `$derivative` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/} + */ + export interface $derivative { + /** + * Returns the average rate of change within the specified window. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/} + */ + $derivative: { + input: ResolvesToNumber | ResolvesToDate; + + /** + * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond". + * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field. + */ + unit?: TimeUnit; + }; + } + + /** + * A type describing the `$documentNumber` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/} + */ + export interface $documentNumber { + /** + * Returns the position of a document (known as the document number) in the $setWindowFields stage partition. Ties result in different adjacent document numbers. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/} + */ + $documentNumber: Record; + } + + /** + * A type describing the `$expMovingAvg` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/} + */ + export interface $expMovingAvg { + /** + * Returns the exponential moving average for the numeric expression. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/} + */ + $expMovingAvg: { + input: ResolvesToNumber; + + /** + * An integer that specifies the number of historical documents that have a significant mathematical weight in the exponential moving average calculation, with the most recent documents contributing the most weight. + * You must specify either N or alpha. You cannot specify both. + * The N value is used in this formula to calculate the current result based on the expression value from the current document being read and the previous result of the calculation: + */ + N?: Int; + + /** + * A double that specifies the exponential decay value to use in the exponential moving average calculation. A higher alpha value assigns a lower mathematical significance to previous results from the calculation. + * You must specify either N or alpha. You cannot specify both. + */ + alpha?: Double; + }; + } + + /** + * A type describing the `$first` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/} + */ + export interface $first { + /** + * Returns the result of an expression for the first document in a group or window. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/} + */ + $first: Expression; + } + + /** + * A type describing the `$firstN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/} + */ + export interface $firstN { + /** + * Returns an aggregation of the first n elements within a group. + * The elements returned are meaningful only if in a specified sort order. + * If the group contains fewer than n elements, $firstN returns all elements in the group. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/} + */ + $firstN: { + /** + * An expression that resolves to the array from which to return n elements. + */ + input: Expression; + + /** + * A positive integral expression that is either a constant or depends on the _id value for $group. + */ + n: ResolvesToInt; + }; + } + + /** + * A type describing the `$integral` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/} + */ + export interface $integral { + /** + * Returns the approximation of the area under a curve. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/} + */ + $integral: { + input: ResolvesToNumber | ResolvesToDate; + + /** + * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond". + * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field. + */ + unit?: TimeUnit; + }; + } + + /** + * A type describing the `$last` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/} + */ + export interface $last { + /** + * Returns the result of an expression for the last document in a group or window. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/} + */ + $last: Expression; + } + + /** + * A type describing the `$lastN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/} + */ + export interface $lastN { + /** + * Returns an aggregation of the last n elements within a group. + * The elements returned are meaningful only if in a specified sort order. + * If the group contains fewer than n elements, $lastN returns all elements in the group. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/} + */ + $lastN: { + /** + * An expression that resolves to the array from which to return n elements. + */ + input: ResolvesToArray; + + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns. + */ + n: ResolvesToInt; + }; + } + + /** + * A type describing the `$linearFill` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/} + */ + export interface $linearFill { + /** + * Fills null and missing fields in a window using linear interpolation based on surrounding field values. + * Available in the $setWindowFields stage. + * New in MongoDB 5.3. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/} + */ + $linearFill: ResolvesToNumber; + } + + /** + * A type describing the `$locf` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/} + */ + export interface $locf { + /** + * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field. + * Available in the $setWindowFields stage. + * New in MongoDB 5.2. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/} + */ + $locf: Expression; + } + + /** + * A type describing the `$max` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/} + */ + export interface $max { + /** + * Returns the maximum value that results from applying an expression to each document. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/} + */ + $max: Expression; + } + + /** + * A type describing the `$maxN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/} + */ + export interface $maxN { + /** + * Returns the n largest values in an array. Distinct from the $maxN accumulator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/} + */ + $maxN: { + /** + * An expression that resolves to the array from which to return the maximal n elements. + */ + input: ResolvesToArray; + + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns. + */ + n: ResolvesToInt; + }; + } + + /** + * A type describing the `$median` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/} + */ + export interface $median { + /** + * Returns an approximation of the median, the 50th percentile, as a scalar value. + * New in MongoDB 7.0. + * This operator is available as an accumulator in these stages: + * $group + * $setWindowFields + * It is also available as an aggregation expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/} + */ + $median: { + /** + * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it. + */ + input: ResolvesToNumber; + + /** + * The method that mongod uses to calculate the 50th percentile value. The method must be 'approximate'. + */ + method: AccumulatorPercentile; + }; + } + + /** + * A type describing the `$mergeObjects` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/} + */ + export interface $mergeObjects { + /** + * Combines multiple documents into a single document. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/} + */ + $mergeObjects: ResolvesToObject; + } + + /** + * A type describing the `$min` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/} + */ + export interface $min { + /** + * Returns the minimum value that results from applying an expression to each document. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/} + */ + $min: Expression; + } + + /** + * A type describing the `$minN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/} + */ + export interface $minN { + /** + * Returns the n smallest values in an array. Distinct from the $minN accumulator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/} + */ + $minN: { + /** + * An expression that resolves to the array from which to return the maximal n elements. + */ + input: ResolvesToArray; + + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns. + */ + n: ResolvesToInt; + }; + } + + /** + * A type describing the `$percentile` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/} + */ + export interface $percentile { + /** + * Returns an array of scalar values that correspond to specified percentile values. + * New in MongoDB 7.0. + * This operator is available as an accumulator in these stages: + * $group + * $setWindowFields + * It is also available as an aggregation expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/} + */ + $percentile: { + /** + * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it. + */ + input: ResolvesToNumber; + + /** + * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive. + * $percentile returns results in the same order as the elements in p. + */ + p: ResolvesToArray; + + /** + * The method that mongod uses to calculate the percentile value. The method must be 'approximate'. + */ + method: AccumulatorPercentile; + }; + } + + /** + * A type describing the `$push` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/} + */ + export interface $push { + /** + * Returns an array of values that result from applying an expression to each document. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/} + */ + $push: Expression; + } + + /** + * A type describing the `$rank` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/} + */ + export interface $rank { + /** + * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/} + */ + $rank: Record; + } + + /** + * A type describing the `$shift` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/} + */ + export interface $shift { + /** + * Returns the value from an expression applied to a document in a specified position relative to the current document in the $setWindowFields stage partition. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/} + */ + $shift: { + /** + * Specifies an expression to evaluate and return in the output. + */ + output: Expression; + + /** + * Specifies an integer with a numeric document position relative to the current document in the output. + * For example: + * 1 specifies the document position after the current document. + * -1 specifies the document position before the current document. + * -2 specifies the document position that is two positions before the current document. + */ + by: Int; + + /** + * Specifies an optional default expression to evaluate if the document position is outside of the implicit $setWindowFields stage window. The implicit window contains all the documents in the partition. + * The default expression must evaluate to a constant value. + * If you do not specify a default expression, $shift returns null for documents whose positions are outside of the implicit $setWindowFields stage window. + */ + default: Expression; + }; + } + + /** + * A type describing the `$stdDevPop` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/} + */ + export interface $stdDevPop { + /** + * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values. + * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/} + */ + $stdDevPop: ResolvesToNumber; + } + + /** + * A type describing the `$stdDevSamp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/} + */ + export interface $stdDevSamp { + /** + * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values. + * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/} + */ + $stdDevSamp: ResolvesToNumber; + } + + /** + * A type describing the `$sum` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/} + */ + export interface $sum { + /** + * Returns a sum of numerical values. Ignores non-numeric values. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/} + */ + $sum: ResolvesToNumber; + } + + /** + * A type describing the `$top` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/} + */ + export interface $top { + /** + * Returns the top element within a group according to the specified sort order. + * New in MongoDB 5.2. + * Available in the $group and $setWindowFields stages. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/} + */ + $top: { + /** + * Specifies the order of results, with syntax similar to $sort. + */ + sortBy: SortBy; + + /** + * Represents the output for each element in the group and can be any expression. + */ + output: Expression; + }; + } + + /** + * A type describing the `$topN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/} + */ + export interface $topN { + /** + * Returns an aggregation of the top n fields within a group, according to the specified sort order. + * New in MongoDB 5.2. + * Available in the $group and $setWindowFields stages. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/} + */ + $topN: { + /** + * limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group. + */ + n: ResolvesToInt; + + /** + * Specifies the order of results, with syntax similar to $sort. + */ + sortBy: SortBy; + + /** + * Represents the output for each element in the group and can be any expression. + */ + output: Expression; + }; + } +} +export namespace ExpressionOperators { + /** + * A type describing the `$abs` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/} + */ + export interface $abs { + /** + * Returns the absolute value of a number. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/} + */ + $abs: ResolvesToNumber; + } + + /** + * A type describing the `$acos` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/} + */ + export interface $acos { + /** + * Returns the inverse cosine (arc cosine) of a value in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/} + */ + $acos: ResolvesToNumber; + } + + /** + * A type describing the `$acosh` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/} + */ + export interface $acosh { + /** + * Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/} + */ + $acosh: ResolvesToNumber; + } + + /** + * A type describing the `$add` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/} + */ + export interface $add { + /** + * Adds numbers to return the sum, or adds numbers and a date to return a new date. If adding numbers and a date, treats the numbers as milliseconds. Accepts any number of argument expressions, but at most, one expression can resolve to a date. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/} + */ + $add: [ + /** + * The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date. + */ + ...(ResolvesToNumber | ResolvesToDate)[] + ]; + } + + /** + * A type describing the `$allElementsTrue` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/} + */ + export interface $allElementsTrue { + /** + * Returns true if no element of a set evaluates to false, otherwise, returns false. Accepts a single argument expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/} + */ + $allElementsTrue: [expression: ResolvesToArray]; + } + + /** + * A type describing the `$and` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/} + */ + export interface $and { + /** + * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/} + */ + $and: [ + ...( + | Expression + | ResolvesToBool + | ResolvesToNumber + | ResolvesToString + | ResolvesToNull + )[] + ]; + } + + /** + * A type describing the `$anyElementTrue` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/} + */ + export interface $anyElementTrue { + /** + * Returns true if any elements of a set evaluate to true; otherwise, returns false. Accepts a single argument expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/} + */ + $anyElementTrue: [expression: ResolvesToArray]; + } + + /** + * A type describing the `$arrayElemAt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/} + */ + export interface $arrayElemAt { + /** + * Returns the element at the specified array index. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/} + */ + $arrayElemAt: [array: ResolvesToArray, idx: ResolvesToInt]; + } + + /** + * A type describing the `$arrayToObject` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/} + */ + export interface $arrayToObject { + /** + * Converts an array of key value pairs to a document. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/} + */ + $arrayToObject: [array: ResolvesToArray]; + } + + /** + * A type describing the `$asin` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/} + */ + export interface $asin { + /** + * Returns the inverse sin (arc sine) of a value in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/} + */ + $asin: ResolvesToNumber; + } + + /** + * A type describing the `$asinh` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/} + */ + export interface $asinh { + /** + * Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/} + */ + $asinh: ResolvesToNumber; + } + + /** + * A type describing the `$atan` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/} + */ + export interface $atan { + /** + * Returns the inverse tangent (arc tangent) of a value in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/} + */ + $atan: ResolvesToNumber; + } + + /** + * A type describing the `$atan2` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/} + */ + export interface $atan2 { + /** + * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/} + */ + $atan2: [ + /** + * $atan2 takes any valid expression that resolves to a number. + * $atan2 returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees. + * By default $atan returns values as a double. $atan2 can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value. + */ + y: ResolvesToNumber, + x: ResolvesToNumber + ]; + } + + /** + * A type describing the `$atanh` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/} + */ + export interface $atanh { + /** + * Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/} + */ + $atanh: ResolvesToNumber; + } + + /** + * A type describing the `$avg` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/} + */ + export interface $avg { + /** + * Returns an average of numerical values. Ignores non-numeric values. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/} + */ + $avg: [...ResolvesToNumber[]]; + } + + /** + * A type describing the `$binarySize` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/} + */ + export interface $binarySize { + /** + * Returns the size of a given string or binary data value's content in bytes. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/} + */ + $binarySize: ResolvesToString | ResolvesToBinData | ResolvesToNull; + } + + /** + * A type describing the `$bitAnd` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/} + */ + export interface $bitAnd { + /** + * Returns the result of a bitwise and operation on an array of int or long values. + * New in MongoDB 6.3. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/} + */ + $bitAnd: [...(ResolvesToInt | ResolvesToLong)[]]; + } + + /** + * A type describing the `$bitNot` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/} + */ + export interface $bitNot { + /** + * Returns the result of a bitwise not operation on a single argument or an array that contains a single int or long value. + * New in MongoDB 6.3. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/} + */ + $bitNot: ResolvesToInt | ResolvesToLong; + } + + /** + * A type describing the `$bitOr` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/} + */ + export interface $bitOr { + /** + * Returns the result of a bitwise or operation on an array of int or long values. + * New in MongoDB 6.3. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/} + */ + $bitOr: [...(ResolvesToInt | ResolvesToLong)[]]; + } + + /** + * A type describing the `$bitXor` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/} + */ + export interface $bitXor { + /** + * Returns the result of a bitwise xor (exclusive or) operation on an array of int and long values. + * New in MongoDB 6.3. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/} + */ + $bitXor: [...(ResolvesToInt | ResolvesToLong)[]]; + } + + /** + * A type describing the `$bsonSize` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/} + */ + export interface $bsonSize { + /** + * Returns the size in bytes of a given document (i.e. BSON type Object) when encoded as BSON. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/} + */ + $bsonSize: ResolvesToObject | ResolvesToNull; + } + + /** + * A type describing the `$case` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/} + */ + export interface $case { + /** + * Represents a single case in a $switch expression + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/} + */ + $case: { + /** + * Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here. + */ + case: ResolvesToBool; + + /** + * Can be any valid expression. + */ + then: Expression; + }; + } + + /** + * A type describing the `$ceil` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/} + */ + export interface $ceil { + /** + * Returns the smallest integer greater than or equal to the specified number. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/} + */ + $ceil: ResolvesToNumber; + } + + /** + * A type describing the `$cmp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/} + */ + export interface $cmp { + /** + * Returns 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/} + */ + $cmp: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$concat` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/} + */ + export interface $concat { + /** + * Concatenates any number of strings. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/} + */ + $concat: [...ResolvesToString[]]; + } + + /** + * A type describing the `$concatArrays` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/} + */ + export interface $concatArrays { + /** + * Concatenates arrays to return the concatenated array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/} + */ + $concatArrays: [...ResolvesToArray[]]; + } + + /** + * A type describing the `$cond` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/} + */ + export interface $cond { + /** + * A ternary operator that evaluates one expression, and depending on the result, returns the value of one of the other two expressions. Accepts either three expressions in an ordered list or three named parameters. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/} + */ + $cond: { if: ResolvesToBool; then: Expression; else: Expression }; + } + + /** + * A type describing the `$convert` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/} + */ + export interface $convert { + /** + * Converts a value to a specified type. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/} + */ + $convert: { + input: Expression; + to: ResolvesToString | ResolvesToInt; + + /** + * The value to return on encountering an error during conversion, including unsupported type conversions. The arguments can be any valid expression. + * If unspecified, the operation throws an error upon encountering an error and stops. + */ + onError?: Expression; + + /** + * The value to return if the input is null or missing. The arguments can be any valid expression. + * If unspecified, $convert returns null if the input is null or missing. + */ + onNull?: Expression; + }; + } + + /** + * A type describing the `$cos` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/} + */ + export interface $cos { + /** + * Returns the cosine of a value that is measured in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/} + */ + $cos: ResolvesToNumber; + } + + /** + * A type describing the `$cosh` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/} + */ + export interface $cosh { + /** + * Returns the hyperbolic cosine of a value that is measured in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/} + */ + $cosh: ResolvesToNumber; + } + + /** + * A type describing the `$dateAdd` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/} + */ + export interface $dateAdd { + /** + * Adds a number of time units to a date object. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/} + */ + $dateAdd: { + /** + * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + startDate: + | ResolvesToDate + | ResolvesToTimestamp + | ResolvesToObjectId; + + /** + * The unit used to measure the amount of time added to the startDate. + */ + unit: TimeUnit; + amount: ResolvesToInt | ResolvesToLong; + + /** + * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$dateDiff` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/} + */ + export interface $dateDiff { + /** + * Returns the difference between two dates. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/} + */ + $dateDiff: { + /** + * The start of the time period. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + startDate: + | ResolvesToDate + | ResolvesToTimestamp + | ResolvesToObjectId; + + /** + * The end of the time period. The endDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + endDate: + | ResolvesToDate + | ResolvesToTimestamp + | ResolvesToObjectId; + + /** + * The time measurement unit between the startDate and endDate + */ + unit: TimeUnit; + + /** + * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + + /** + * Used when the unit is equal to week. Defaults to Sunday. The startOfWeek parameter is an expression that resolves to a case insensitive string + */ + startOfWeek?: ResolvesToString; + }; + } + + /** + * A type describing the `$dateFromParts` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/} + */ + export interface $dateFromParts { + /** + * Constructs a BSON Date object given the date's constituent parts. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/} + */ + $dateFromParts: { + /** + * Calendar year. Can be any expression that evaluates to a number. + */ + year?: ResolvesToNumber; + + /** + * ISO Week Date Year. Can be any expression that evaluates to a number. + */ + isoWeekYear?: ResolvesToNumber; + + /** + * Month. Defaults to 1. + */ + month?: ResolvesToNumber; + + /** + * Week of year. Defaults to 1. + */ + isoWeek?: ResolvesToNumber; + + /** + * Day of month. Defaults to 1. + */ + day?: ResolvesToNumber; + + /** + * Day of week (Monday 1 - Sunday 7). Defaults to 1. + */ + isoDayOfWeek?: ResolvesToNumber; + + /** + * Hour. Defaults to 0. + */ + hour?: ResolvesToNumber; + + /** + * Minute. Defaults to 0. + */ + minute?: ResolvesToNumber; + + /** + * Second. Defaults to 0. + */ + second?: ResolvesToNumber; + + /** + * Millisecond. Defaults to 0. + */ + millisecond?: ResolvesToNumber; + + /** + * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$dateFromString` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/} + */ + export interface $dateFromString { + /** + * Converts a date/time string to a date object. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/} + */ + $dateFromString: { + /** + * The date/time string to convert to a date object. + */ + dateString: ResolvesToString; + + /** + * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers. + * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible. + */ + format?: ResolvesToString; + + /** + * The time zone to use to format the date. + */ + timezone?: ResolvesToString; + + /** + * If $dateFromString encounters an error while parsing the given dateString, it outputs the result value of the provided onError expression. This result value can be of any type. + * If you do not specify onError, $dateFromString throws an error if it cannot parse dateString. + */ + onError?: Expression; + + /** + * If the dateString provided to $dateFromString is null or missing, it outputs the result value of the provided onNull expression. This result value can be of any type. + * If you do not specify onNull and dateString is null or missing, then $dateFromString outputs null. + */ + onNull?: Expression; + }; + } + + /** + * A type describing the `$dateSubtract` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/} + */ + export interface $dateSubtract { + /** + * Subtracts a number of time units from a date object. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/} + */ + $dateSubtract: { + /** + * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + startDate: + | ResolvesToDate + | ResolvesToTimestamp + | ResolvesToObjectId; + + /** + * The unit used to measure the amount of time added to the startDate. + */ + unit: TimeUnit; + amount: ResolvesToInt | ResolvesToLong; + + /** + * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$dateToParts` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/} + */ + export interface $dateToParts { + /** + * Returns a document containing the constituent parts of a date. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/} + */ + $dateToParts: { + /** + * The input date for which to return parts. date can be any expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + + /** + * If set to true, modifies the output document to use ISO week date fields. Defaults to false. + */ + iso8601?: boolean; + }; + } + + /** + * A type describing the `$dateToString` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/} + */ + export interface $dateToString { + /** + * Returns the date as a formatted string. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/} + */ + $dateToString: { + /** + * The date to convert to string. Must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers. + * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible. + */ + format?: ResolvesToString; + + /** + * The time zone to use to format the date. + */ + timezone?: ResolvesToString; + + /** + * The value to return if the date is null or missing. + * If unspecified, $dateToString returns null if the date is null or missing. + */ + onNull?: Expression; + }; + } + + /** + * A type describing the `$dateTrunc` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/} + */ + export interface $dateTrunc { + /** + * Truncates a date. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/} + */ + $dateTrunc: { + /** + * The date to truncate, specified in UTC. The date can be any expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The unit of time, specified as an expression that must resolve to one of these strings: year, quarter, week, month, day, hour, minute, second. + * Together, binSize and unit specify the time period used in the $dateTrunc calculation. + */ + unit: TimeUnit; + + /** + * The numeric time value, specified as an expression that must resolve to a positive non-zero number. Defaults to 1. + * Together, binSize and unit specify the time period used in the $dateTrunc calculation. + */ + binSize?: ResolvesToNumber; + + /** + * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + + /** + * The start of the week. Used when + * unit is week. Defaults to Sunday. + */ + startOfWeek?: string; + }; + } + + /** + * A type describing the `$dayOfMonth` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/} + */ + export interface $dayOfMonth { + /** + * Returns the day of the month for a date as a number between 1 and 31. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/} + */ + $dayOfMonth: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$dayOfWeek` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/} + */ + export interface $dayOfWeek { + /** + * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/} + */ + $dayOfWeek: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$dayOfYear` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/} + */ + export interface $dayOfYear { + /** + * Returns the day of the year for a date as a number between 1 and 366 (leap year). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/} + */ + $dayOfYear: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$degreesToRadians` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/} + */ + export interface $degreesToRadians { + /** + * Converts a value from degrees to radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/} + */ + $degreesToRadians: ResolvesToNumber; + } + + /** + * A type describing the `$divide` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/} + */ + export interface $divide { + /** + * Returns the result of dividing the first number by the second. Accepts two argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/} + */ + $divide: [ + /** + * The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument. + */ + dividend: ResolvesToNumber, + divisor: ResolvesToNumber + ]; + } + + /** + * A type describing the `$eq` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/} + */ + export interface $eq { + /** + * Returns true if the values are equivalent. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/} + */ + $eq: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$exp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/} + */ + export interface $exp { + /** + * Raises e to the specified exponent. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/} + */ + $exp: ResolvesToNumber; + } + + /** + * A type describing the `$filter` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/} + */ + export interface $filter { + /** + * Selects a subset of the array to return an array with only the elements that match the filter condition. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/} + */ + $filter: { + input: ResolvesToArray; + + /** + * An expression that resolves to a boolean value used to determine if an element should be included in the output array. The expression references each element of the input array individually with the variable name specified in as. + */ + cond: ResolvesToBool; + + /** + * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this. + */ + as?: string; + + /** + * A number expression that restricts the number of matching array elements that $filter returns. You cannot specify a limit less than 1. The matching array elements are returned in the order they appear in the input array. + * If the specified limit is greater than the number of matching array elements, $filter returns all matching array elements. If the limit is null, $filter returns all matching array elements. + */ + limit?: ResolvesToInt; + }; + } + + /** + * A type describing the `$first` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/} + */ + export interface $first { + /** + * Returns the result of an expression for the first document in an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/} + */ + $first: ResolvesToArray; + } + + /** + * A type describing the `$firstN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/} + */ + export interface $firstN { + /** + * Returns a specified number of elements from the beginning of an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/} + */ + $firstN: { + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns. + */ + n: ResolvesToInt; + + /** + * An expression that resolves to the array from which to return n elements. + */ + input: ResolvesToArray; + }; + } + + /** + * A type describing the `$floor` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/} + */ + export interface $floor { + /** + * Returns the largest integer less than or equal to the specified number. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/} + */ + $floor: ResolvesToNumber; + } + + /** + * A type describing the `$function` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/} + */ + export interface $function { + /** + * Defines a custom function. + * New in MongoDB 4.4. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/} + */ + $function: { + /** + * The function definition. You can specify the function definition as either BSON\JavaScript or string. + * function(arg1, arg2, ...) { ... } + */ + body: Javascript; + + /** + * Arguments passed to the function body. If the body function does not take an argument, you can specify an empty array [ ]. + */ + args: unknown[]; + lang: string; + }; + } + + /** + * A type describing the `$getField` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/} + */ + export interface $getField { + /** + * Returns the value of a specified field from a document. You can use $getField to retrieve the value of fields with names that contain periods (.) or start with dollar signs ($). + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/} + */ + $getField: { + /** + * Field in the input object for which you want to return a value. field can be any valid expression that resolves to a string constant. + * If field begins with a dollar sign ($), place the field name inside of a $literal expression to return its value. + */ + field: ResolvesToString; + + /** + * Default: $$CURRENT + * A valid expression that contains the field for which you want to return a value. input must resolve to an object, missing, null, or undefined. If omitted, defaults to the document currently being processed in the pipeline ($$CURRENT). + */ + input?: Expression; + }; + } + + /** + * A type describing the `$gt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/} + */ + export interface $gt { + /** + * Returns true if the first value is greater than the second. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/} + */ + $gt: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$gte` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/} + */ + export interface $gte { + /** + * Returns true if the first value is greater than or equal to the second. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/} + */ + $gte: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$hour` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/} + */ + export interface $hour { + /** + * Returns the hour for a date as a number between 0 and 23. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/} + */ + $hour: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$ifNull` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/} + */ + export interface $ifNull { + /** + * Returns either the non-null result of the first expression or the result of the second expression if the first expression results in a null result. Null result encompasses instances of undefined values or missing fields. Accepts two expressions as arguments. The result of the second expression can be null. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/} + */ + $ifNull: [...Expression[]]; + } + + /** + * A type describing the `$in` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/} + */ + export interface $in { + /** + * Returns a boolean indicating whether a specified value is in an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/} + */ + $in: [ + /** + * Any valid expression expression. + */ + expression: Expression, + + /** + * Any valid expression that resolves to an array. + */ + array: ResolvesToArray + ]; + } + + /** + * A type describing the `$indexOfArray` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/} + */ + export interface $indexOfArray { + /** + * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. Array indexes start at zero. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/} + */ + $indexOfArray: [ + /** + * Can be any valid expression as long as it resolves to an array. + * If the array expression resolves to a value of null or refers to a field that is missing, $indexOfArray returns null. + * If the array expression does not resolve to an array or null nor refers to a missing field, $indexOfArray returns an error. + */ + array: ResolvesToArray, + search: Expression, + + /** + * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number. + * If unspecified, the starting index position for the search is the beginning of the string. + */ + start?: ResolvesToInt, + + /** + * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value. + * If unspecified, the ending index position for the search is the end of the string. + */ + end?: ResolvesToInt + ]; + } + + /** + * A type describing the `$indexOfBytes` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/} + */ + export interface $indexOfBytes { + /** + * Searches a string for an occurrence of a substring and returns the UTF-8 byte index of the first occurrence. If the substring is not found, returns -1. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/} + */ + $indexOfBytes: [ + /** + * Can be any valid expression as long as it resolves to a string. + * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfBytes returns null. + * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfBytes returns an error. + */ + string: ResolvesToString, + + /** + * Can be any valid expression as long as it resolves to a string. + */ + substring: ResolvesToString, + + /** + * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number. + * If unspecified, the starting index position for the search is the beginning of the string. + */ + start?: ResolvesToInt, + + /** + * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value. + * If unspecified, the ending index position for the search is the end of the string. + */ + end?: ResolvesToInt + ]; + } + + /** + * A type describing the `$indexOfCP` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/} + */ + export interface $indexOfCP { + /** + * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurrence. If the substring is not found, returns -1 + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/} + */ + $indexOfCP: [ + /** + * Can be any valid expression as long as it resolves to a string. + * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfCP returns null. + * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfCP returns an error. + */ + string: ResolvesToString, + + /** + * Can be any valid expression as long as it resolves to a string. + */ + substring: ResolvesToString, + + /** + * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number. + * If unspecified, the starting index position for the search is the beginning of the string. + */ + start?: ResolvesToInt, + + /** + * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value. + * If unspecified, the ending index position for the search is the end of the string. + */ + end?: ResolvesToInt + ]; + } + + /** + * A type describing the `$isArray` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/} + */ + export interface $isArray { + /** + * Determines if the operand is an array. Returns a boolean. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/} + */ + $isArray: [expression: Expression]; + } + + /** + * A type describing the `$isNumber` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/} + */ + export interface $isNumber { + /** + * Returns boolean true if the specified expression resolves to an integer, decimal, double, or long. + * Returns boolean false if the expression resolves to any other BSON type, null, or a missing field. + * New in MongoDB 4.4. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/} + */ + $isNumber: Expression; + } + + /** + * A type describing the `$isoDayOfWeek` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/} + */ + export interface $isoDayOfWeek { + /** + * Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/} + */ + $isoDayOfWeek: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$isoWeek` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/} + */ + export interface $isoWeek { + /** + * Returns the week number in ISO 8601 format, ranging from 1 to 53. Week numbers start at 1 with the week (Monday through Sunday) that contains the year's first Thursday. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/} + */ + $isoWeek: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$isoWeekYear` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/} + */ + export interface $isoWeekYear { + /** + * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/} + */ + $isoWeekYear: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$last` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/} + */ + export interface $last { + /** + * Returns the result of an expression for the last document in an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/} + */ + $last: ResolvesToArray; + } + + /** + * A type describing the `$lastN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN-array-element/} + */ + export interface $lastN { + /** + * Returns a specified number of elements from the end of an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN-array-element/} + */ + $lastN: { + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns. + */ + n: ResolvesToInt; + + /** + * An expression that resolves to the array from which to return n elements. + */ + input: ResolvesToArray; + }; + } + + /** + * A type describing the `$let` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/} + */ + export interface $let { + /** + * Defines variables for use within the scope of a subexpression and returns the result of the subexpression. Accepts named parameters. + * Accepts any number of argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/} + */ + $let: { + /** + * Assignment block for the variables accessible in the in expression. To assign a variable, specify a string for the variable name and assign a valid expression for the value. + * The variable assignments have no meaning outside the in expression, not even within the vars block itself. + */ + vars: Record; + + /** + * The expression to evaluate. + */ + in: Expression; + }; + } + + /** + * A type describing the `$literal` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/} + */ + export interface $literal { + /** + * Return a value without parsing. Use for values that the aggregation pipeline may interpret as an expression. For example, use a $literal expression to a string that starts with a dollar sign ($) to avoid parsing as a field path. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/} + */ + $literal: any; + } + + /** + * A type describing the `$ln` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/} + */ + export interface $ln { + /** + * Calculates the natural log of a number. + * $ln is equivalent to $log: [ , Math.E ] expression, where Math.E is a JavaScript representation for Euler's number e. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/} + */ + $ln: ResolvesToNumber; + } + + /** + * A type describing the `$log` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/} + */ + export interface $log { + /** + * Calculates the log of a number in the specified base. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/} + */ + $log: [ + /** + * Any valid expression as long as it resolves to a non-negative number. + */ + number: ResolvesToNumber, + + /** + * Any valid expression as long as it resolves to a positive number greater than 1. + */ + base: ResolvesToNumber + ]; + } + + /** + * A type describing the `$log10` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/} + */ + export interface $log10 { + /** + * Calculates the log base 10 of a number. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/} + */ + $log10: ResolvesToNumber; + } + + /** + * A type describing the `$lt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/} + */ + export interface $lt { + /** + * Returns true if the first value is less than the second. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/} + */ + $lt: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$lte` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/} + */ + export interface $lte { + /** + * Returns true if the first value is less than or equal to the second. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/} + */ + $lte: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$ltrim` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/} + */ + export interface $ltrim { + /** + * Removes whitespace or the specified characters from the beginning of a string. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/} + */ + $ltrim: { + /** + * The string to trim. The argument can be any valid expression that resolves to a string. + */ + input: ResolvesToString; + + /** + * The character(s) to trim from the beginning of the input. + * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input. + * If unspecified, $ltrim removes whitespace characters, including the null character. + */ + chars?: ResolvesToString; + }; + } + + /** + * A type describing the `$map` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/} + */ + export interface $map { + /** + * Applies a subexpression to each element of an array and returns the array of resulting values in order. Accepts named parameters. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/} + */ + $map: { + /** + * An expression that resolves to an array. + */ + input: ResolvesToArray; + + /** + * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this. + */ + as?: ResolvesToString; + + /** + * An expression that is applied to each element of the input array. The expression references each element individually with the variable name specified in as. + */ + in: Expression; + }; + } + + /** + * A type describing the `$max` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/} + */ + export interface $max { + /** + * Returns the maximum value that results from applying an expression to each document. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/} + */ + $max: [...Expression[]]; + } + + /** + * A type describing the `$maxN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/} + */ + export interface $maxN { + /** + * Returns the n largest values in an array. Distinct from the $maxN accumulator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/} + */ + $maxN: { + /** + * An expression that resolves to the array from which to return the maximal n elements. + */ + input: ResolvesToArray; + + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns. + */ + n: ResolvesToInt; + }; + } + + /** + * A type describing the `$median` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/} + */ + export interface $median { + /** + * Returns an approximation of the median, the 50th percentile, as a scalar value. + * New in MongoDB 7.0. + * This operator is available as an accumulator in these stages: + * $group + * $setWindowFields + * It is also available as an aggregation expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/} + */ + $median: { + /** + * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it. + */ + input: ResolvesToNumber | unknown[]; + + /** + * The method that mongod uses to calculate the 50th percentile value. The method must be 'approximate'. + */ + method: AccumulatorPercentile; + }; + } + + /** + * A type describing the `$mergeObjects` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/} + */ + export interface $mergeObjects { + /** + * Combines multiple documents into a single document. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/} + */ + $mergeObjects: [ + /** + * Any valid expression that resolves to a document. + */ + ...ResolvesToObject[] + ]; + } + + /** + * A type describing the `$meta` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/} + */ + export interface $meta { + /** + * Access available per-document metadata related to the aggregation operation. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/} + */ + $meta: string; + } + + /** + * A type describing the `$millisecond` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/} + */ + export interface $millisecond { + /** + * Returns the milliseconds of a date as a number between 0 and 999. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/} + */ + $millisecond: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$min` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/} + */ + export interface $min { + /** + * Returns the minimum value that results from applying an expression to each document. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/} + */ + $min: [...Expression[]]; + } + + /** + * A type describing the `$minN` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/} + */ + export interface $minN { + /** + * Returns the n smallest values in an array. Distinct from the $minN accumulator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/} + */ + $minN: { + /** + * An expression that resolves to the array from which to return the maximal n elements. + */ + input: ResolvesToArray; + + /** + * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns. + */ + n: ResolvesToInt; + }; + } + + /** + * A type describing the `$minute` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/} + */ + export interface $minute { + /** + * Returns the minute for a date as a number between 0 and 59. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/} + */ + $minute: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$mod` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/} + */ + export interface $mod { + /** + * Returns the remainder of the first number divided by the second. Accepts two argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/} + */ + $mod: [ + /** + * The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument. + */ + dividend: ResolvesToNumber, + divisor: ResolvesToNumber + ]; + } + + /** + * A type describing the `$month` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/} + */ + export interface $month { + /** + * Returns the month for a date as a number between 1 (January) and 12 (December). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/} + */ + $month: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$multiply` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/} + */ + export interface $multiply { + /** + * Multiplies numbers to return the product. Accepts any number of argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/} + */ + $multiply: [ + /** + * The arguments can be any valid expression as long as they resolve to numbers. + * Starting in MongoDB 6.1 you can optimize the $multiply operation. To improve performance, group references at the end of the argument list. + */ + ...ResolvesToNumber[] + ]; + } + + /** + * A type describing the `$ne` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/} + */ + export interface $ne { + /** + * Returns true if the values are not equivalent. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/} + */ + $ne: [expression1: Expression, expression2: Expression]; + } + + /** + * A type describing the `$not` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/} + */ + export interface $not { + /** + * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/} + */ + $not: [expression: Expression | ResolvesToBool]; + } + + /** + * A type describing the `$objectToArray` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/} + */ + export interface $objectToArray { + /** + * Converts a document to an array of documents representing key-value pairs. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/} + */ + $objectToArray: ResolvesToObject; + } + + /** + * A type describing the `$or` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/} + */ + export interface $or { + /** + * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/} + */ + $or: [...(Expression | ResolvesToBool)[]]; + } + + /** + * A type describing the `$percentile` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/} + */ + export interface $percentile { + /** + * Returns an array of scalar values that correspond to specified percentile values. + * New in MongoDB 7.0. + * This operator is available as an accumulator in these stages: + * $group + * $setWindowFields + * It is also available as an aggregation expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/} + */ + $percentile: { + /** + * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it. + */ + input: ResolvesToNumber | unknown[]; + + /** + * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive. + * $percentile returns results in the same order as the elements in p. + */ + p: ResolvesToArray; + + /** + * The method that mongod uses to calculate the percentile value. The method must be 'approximate'. + */ + method: AccumulatorPercentile; + }; + } + + /** + * A type describing the `$pow` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/} + */ + export interface $pow { + /** + * Raises a number to the specified exponent. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/} + */ + $pow: [number: ResolvesToNumber, exponent: ResolvesToNumber]; + } + + /** + * A type describing the `$radiansToDegrees` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/} + */ + export interface $radiansToDegrees { + /** + * Converts a value from radians to degrees. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/} + */ + $radiansToDegrees: ResolvesToNumber; + } + + /** + * A type describing the `$rand` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/} + */ + export interface $rand { + /** + * Returns a random float between 0 and 1 + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/} + */ + $rand: Record; + } + + /** + * A type describing the `$range` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/} + */ + export interface $range { + /** + * Outputs an array containing a sequence of integers according to user-defined inputs. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/} + */ + $range: [ + /** + * An integer that specifies the start of the sequence. Can be any valid expression that resolves to an integer. + */ + start: ResolvesToInt, + + /** + * An integer that specifies the exclusive upper limit of the sequence. Can be any valid expression that resolves to an integer. + */ + end: ResolvesToInt, + + /** + * An integer that specifies the increment value. Can be any valid expression that resolves to a non-zero integer. Defaults to 1. + */ + step?: ResolvesToInt + ]; + } + + /** + * A type describing the `$reduce` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/} + */ + export interface $reduce { + /** + * Applies an expression to each element in an array and combines them into a single value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/} + */ + $reduce: { + /** + * Can be any valid expression that resolves to an array. + * If the argument resolves to a value of null or refers to a missing field, $reduce returns null. + * If the argument does not resolve to an array or null nor refers to a missing field, $reduce returns an error. + */ + input: ResolvesToArray; + + /** + * The initial cumulative value set before in is applied to the first element of the input array. + */ + initialValue: Expression; + + /** + * A valid expression that $reduce applies to each element in the input array in left-to-right order. Wrap the input value with $reverseArray to yield the equivalent of applying the combining expression from right-to-left. + * During evaluation of the in expression, two variables will be available: + * - value is the variable that represents the cumulative value of the expression. + * - this is the variable that refers to the element being processed. + */ + in: Expression; + }; + } + + /** + * A type describing the `$regexFind` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/} + */ + export interface $regexFind { + /** + * Applies a regular expression (regex) to a string and returns information on the first matched substring. + * New in MongoDB 4.2. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/} + */ + $regexFind: { + /** + * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string. + */ + input: ResolvesToString; + + /** + * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options) + */ + regex: ResolvesToString | Regex; + options?: string; + }; + } + + /** + * A type describing the `$regexFindAll` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/} + */ + export interface $regexFindAll { + /** + * Applies a regular expression (regex) to a string and returns information on the all matched substrings. + * New in MongoDB 4.2. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/} + */ + $regexFindAll: { + /** + * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string. + */ + input: ResolvesToString; + + /** + * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options) + */ + regex: ResolvesToString | Regex; + options?: string; + }; + } + + /** + * A type describing the `$regexMatch` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/} + */ + export interface $regexMatch { + /** + * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not. + * New in MongoDB 4.2. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/} + */ + $regexMatch: { + /** + * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string. + */ + input: ResolvesToString; + + /** + * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options) + */ + regex: ResolvesToString | Regex; + options?: string; + }; + } + + /** + * A type describing the `$replaceAll` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/} + */ + export interface $replaceAll { + /** + * Replaces all instances of a search string in an input string with a replacement string. + * $replaceAll is both case-sensitive and diacritic-sensitive, and ignores any collation present on a collection. + * New in MongoDB 4.4. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/} + */ + $replaceAll: { + /** + * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null. + */ + input: ResolvesToString | ResolvesToNull; + + /** + * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null. + */ + find: ResolvesToString | ResolvesToNull; + + /** + * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null. + */ + replacement: ResolvesToString | ResolvesToNull; + }; + } + + /** + * A type describing the `$replaceOne` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/} + */ + export interface $replaceOne { + /** + * Replaces the first instance of a matched string in a given input. + * New in MongoDB 4.4. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/} + */ + $replaceOne: { + /** + * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null. + */ + input: ResolvesToString | ResolvesToNull; + + /** + * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null. + */ + find: ResolvesToString | ResolvesToNull; + + /** + * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null. + */ + replacement: ResolvesToString | ResolvesToNull; + }; + } + + /** + * A type describing the `$reverseArray` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/} + */ + export interface $reverseArray { + /** + * Returns an array with the elements in reverse order. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/} + */ + $reverseArray: ResolvesToArray; + } + + /** + * A type describing the `$round` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/} + */ + export interface $round { + /** + * Rounds a number to a whole integer or to a specified decimal place. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/} + */ + $round: [ + /** + * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long. + * $round returns an error if the expression resolves to a non-numeric data type. + */ + number: ResolvesToNumber, + + /** + * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. + */ + place?: ResolvesToInt + ]; + } + + /** + * A type describing the `$rtrim` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/} + */ + export interface $rtrim { + /** + * Removes whitespace characters, including null, or the specified characters from the end of a string. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/} + */ + $rtrim: { + /** + * The string to trim. The argument can be any valid expression that resolves to a string. + */ + input: ResolvesToString; + + /** + * The character(s) to trim from the beginning of the input. + * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input. + * If unspecified, $ltrim removes whitespace characters, including the null character. + */ + chars?: ResolvesToString; + }; + } + + /** + * A type describing the `$second` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/} + */ + export interface $second { + /** + * Returns the seconds for a date as a number between 0 and 60 (leap seconds). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/} + */ + $second: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$setDifference` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/} + */ + export interface $setDifference { + /** + * Returns a set with elements that appear in the first set but not in the second set; i.e. performs a relative complement of the second set relative to the first. Accepts exactly two argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/} + */ + $setDifference: [ + /** + * The arguments can be any valid expression as long as they each resolve to an array. + */ + expression1: ResolvesToArray, + + /** + * The arguments can be any valid expression as long as they each resolve to an array. + */ + expression2: ResolvesToArray + ]; + } + + /** + * A type describing the `$setEquals` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/} + */ + export interface $setEquals { + /** + * Returns true if the input sets have the same distinct elements. Accepts two or more argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/} + */ + $setEquals: [...ResolvesToArray[]]; + } + + /** + * A type describing the `$setField` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/} + */ + export interface $setField { + /** + * Adds, updates, or removes a specified field in a document. You can use $setField to add, update, or remove fields with names that contain periods (.) or start with dollar signs ($). + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/} + */ + $setField: { + /** + * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant. + */ + field: ResolvesToString; + + /** + * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined. + */ + input: ResolvesToObject; + + /** + * The value that you want to assign to field. value can be any valid expression. + * Set to $$REMOVE to remove field from the input document. + */ + value: Expression; + }; + } + + /** + * A type describing the `$setIntersection` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/} + */ + export interface $setIntersection { + /** + * Returns a set with elements that appear in all of the input sets. Accepts any number of argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/} + */ + $setIntersection: [...ResolvesToArray[]]; + } + + /** + * A type describing the `$setIsSubset` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/} + */ + export interface $setIsSubset { + /** + * Returns true if all elements of the first set appear in the second set, including when the first set equals the second set; i.e. not a strict subset. Accepts exactly two argument expressions. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/} + */ + $setIsSubset: [ + expression1: ResolvesToArray, + expression2: ResolvesToArray + ]; + } + + /** + * A type describing the `$setUnion` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/} + */ + export interface $setUnion { + /** + * Returns a set with elements that appear in any of the input sets. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/} + */ + $setUnion: [...ResolvesToArray[]]; + } + + /** + * A type describing the `$sin` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/} + */ + export interface $sin { + /** + * Returns the sine of a value that is measured in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/} + */ + $sin: ResolvesToNumber; + } + + /** + * A type describing the `$sinh` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/} + */ + export interface $sinh { + /** + * Returns the hyperbolic sine of a value that is measured in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/} + */ + $sinh: ResolvesToNumber; + } + + /** + * A type describing the `$size` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/} + */ + export interface $size { + /** + * Returns the number of elements in the array. Accepts a single expression as argument. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/} + */ + $size: ResolvesToArray; + } + + /** + * A type describing the `$slice` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/} + */ + export interface $slice { + /** + * Returns a subset of an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/} + */ + $slice: [ + /** + * Any valid expression as long as it resolves to an array. + */ + expression: ResolvesToArray, + + /** + * Any valid expression as long as it resolves to an integer. + * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array. + * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array. + */ + position?: ResolvesToInt, + + /** + * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer. + * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position. + * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified. + */ + n: ResolvesToInt + ]; + } + + /** + * A type describing the `$sortArray` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/} + */ + export interface $sortArray { + /** + * Sorts the elements of an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/} + */ + $sortArray: { + /** + * The array to be sorted. + * The result is null if the expression: is missing, evaluates to null, or evaluates to undefined + * If the expression evaluates to any other non-array value, the document returns an error. + */ + input: ResolvesToArray; + + /** + * The document specifies a sort ordering. + */ + sortBy: Int | SortSpec | SortBy; + }; + } + + /** + * A type describing the `$split` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/} + */ + export interface $split { + /** + * Splits a string into substrings based on a delimiter. Returns an array of substrings. If the delimiter is not found within the string, returns an array containing the original string. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/} + */ + $split: [ + /** + * The string to be split. string expression can be any valid expression as long as it resolves to a string. + */ + string: ResolvesToString, + + /** + * The delimiter to use when splitting the string expression. delimiter can be any valid expression as long as it resolves to a string. + */ + delimiter: ResolvesToString + ]; + } + + /** + * A type describing the `$sqrt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/} + */ + export interface $sqrt { + /** + * Calculates the square root. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/} + */ + $sqrt: ResolvesToNumber; + } + + /** + * A type describing the `$stdDevPop` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/} + */ + export interface $stdDevPop { + /** + * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values. + * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/} + */ + $stdDevPop: [...ResolvesToNumber[]]; + } + + /** + * A type describing the `$stdDevSamp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/} + */ + export interface $stdDevSamp { + /** + * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values. + * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/} + */ + $stdDevSamp: [...ResolvesToNumber[]]; + } + + /** + * A type describing the `$strLenBytes` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/} + */ + export interface $strLenBytes { + /** + * Returns the number of UTF-8 encoded bytes in a string. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/} + */ + $strLenBytes: ResolvesToString; + } + + /** + * A type describing the `$strLenCP` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/} + */ + export interface $strLenCP { + /** + * Returns the number of UTF-8 code points in a string. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/} + */ + $strLenCP: ResolvesToString; + } + + /** + * A type describing the `$strcasecmp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/} + */ + export interface $strcasecmp { + /** + * Performs case-insensitive string comparison and returns: 0 if two strings are equivalent, 1 if the first string is greater than the second, and -1 if the first string is less than the second. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/} + */ + $strcasecmp: [ + expression1: ResolvesToString, + expression2: ResolvesToString + ]; + } + + /** + * A type describing the `$substr` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/} + */ + export interface $substr { + /** + * Deprecated. Use $substrBytes or $substrCP. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/} + */ + $substr: [ + string: ResolvesToString, + + /** + * If start is a negative number, $substr returns an empty string "". + */ + start: ResolvesToInt, + + /** + * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string. + */ + length: ResolvesToInt + ]; + } + + /** + * A type describing the `$substrBytes` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/} + */ + export interface $substrBytes { + /** + * Returns the substring of a string. Starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the specified number of bytes. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/} + */ + $substrBytes: [ + string: ResolvesToString, + + /** + * If start is a negative number, $substr returns an empty string "". + */ + start: ResolvesToInt, + + /** + * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string. + */ + length: ResolvesToInt + ]; + } + + /** + * A type describing the `$substrCP` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/} + */ + export interface $substrCP { + /** + * Returns the substring of a string. Starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string and continues for the number of code points specified. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/} + */ + $substrCP: [ + string: ResolvesToString, + + /** + * If start is a negative number, $substr returns an empty string "". + */ + start: ResolvesToInt, + + /** + * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string. + */ + length: ResolvesToInt + ]; + } + + /** + * A type describing the `$subtract` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/} + */ + export interface $subtract { + /** + * Returns the result of subtracting the second value from the first. If the two values are numbers, return the difference. If the two values are dates, return the difference in milliseconds. If the two values are a date and a number in milliseconds, return the resulting date. Accepts two argument expressions. If the two values are a date and a number, specify the date argument first as it is not meaningful to subtract a date from a number. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/} + */ + $subtract: [ + expression1: ResolvesToNumber | ResolvesToDate, + expression2: ResolvesToNumber | ResolvesToDate + ]; + } + + /** + * A type describing the `$sum` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/} + */ + export interface $sum { + /** + * Returns a sum of numerical values. Ignores non-numeric values. + * Changed in MongoDB 5.0: Available in the $setWindowFields stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/} + */ + $sum: [...(ResolvesToNumber | ResolvesToArray)[]]; + } + + /** + * A type describing the `$switch` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/} + */ + export interface $switch { + /** + * Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/} + */ + $switch: { + /** + * An array of control branch documents. Each branch is a document with the following fields: + * - case Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here. + * - then Can be any valid expression. + * The branches array must contain at least one branch document. + */ + branches: unknown[]; + + /** + * The path to take if no branch case expression evaluates to true. + * Although optional, if default is unspecified and no branch case evaluates to true, $switch returns an error. + */ + default?: Expression; + }; + } + + /** + * A type describing the `$tan` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/} + */ + export interface $tan { + /** + * Returns the tangent of a value that is measured in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/} + */ + $tan: ResolvesToNumber; + } + + /** + * A type describing the `$tanh` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/} + */ + export interface $tanh { + /** + * Returns the hyperbolic tangent of a value that is measured in radians. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/} + */ + $tanh: ResolvesToNumber; + } + + /** + * A type describing the `$toBool` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/} + */ + export interface $toBool { + /** + * Converts value to a boolean. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/} + */ + $toBool: Expression; + } + + /** + * A type describing the `$toDate` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/} + */ + export interface $toDate { + /** + * Converts value to a Date. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/} + */ + $toDate: Expression; + } + + /** + * A type describing the `$toDecimal` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/} + */ + export interface $toDecimal { + /** + * Converts value to a Decimal128. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/} + */ + $toDecimal: Expression; + } + + /** + * A type describing the `$toDouble` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/} + */ + export interface $toDouble { + /** + * Converts value to a double. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/} + */ + $toDouble: Expression; + } + + /** + * A type describing the `$toHashedIndexKey` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/} + */ + export interface $toHashedIndexKey { + /** + * Computes and returns the hash value of the input expression using the same hash function that MongoDB uses to create a hashed index. A hash function maps a key or string to a fixed-size numeric value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/} + */ + $toHashedIndexKey: Expression; + } + + /** + * A type describing the `$toInt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/} + */ + export interface $toInt { + /** + * Converts value to an integer. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/} + */ + $toInt: Expression; + } + + /** + * A type describing the `$toLong` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/} + */ + export interface $toLong { + /** + * Converts value to a long. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/} + */ + $toLong: Expression; + } + + /** + * A type describing the `$toLower` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/} + */ + export interface $toLower { + /** + * Converts a string to lowercase. Accepts a single argument expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/} + */ + $toLower: ResolvesToString; + } + + /** + * A type describing the `$toObjectId` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/} + */ + export interface $toObjectId { + /** + * Converts value to an ObjectId. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/} + */ + $toObjectId: Expression; + } + + /** + * A type describing the `$toString` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/} + */ + export interface $toString { + /** + * Converts value to a string. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/} + */ + $toString: Expression; + } + + /** + * A type describing the `$toUpper` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/} + */ + export interface $toUpper { + /** + * Converts a string to uppercase. Accepts a single argument expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/} + */ + $toUpper: ResolvesToString; + } + + /** + * A type describing the `$trim` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/} + */ + export interface $trim { + /** + * Removes whitespace or the specified characters from the beginning and end of a string. + * New in MongoDB 4.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/} + */ + $trim: { + /** + * The string to trim. The argument can be any valid expression that resolves to a string. + */ + input: ResolvesToString; + + /** + * The character(s) to trim from the beginning of the input. + * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input. + * If unspecified, $ltrim removes whitespace characters, including the null character. + */ + chars?: ResolvesToString; + }; + } + + /** + * A type describing the `$trunc` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/} + */ + export interface $trunc { + /** + * Truncates a number to a whole integer or to a specified decimal place. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/} + */ + $trunc: [ + /** + * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long. + * $trunc returns an error if the expression resolves to a non-numeric data type. + */ + number: ResolvesToNumber, + + /** + * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g. -20 < place < 100. Defaults to 0. + */ + place?: ResolvesToInt + ]; + } + + /** + * A type describing the `$tsIncrement` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/} + */ + export interface $tsIncrement { + /** + * Returns the incrementing ordinal from a timestamp as a long. + * New in MongoDB 5.1. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/} + */ + $tsIncrement: ResolvesToTimestamp; + } + + /** + * A type describing the `$tsSecond` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/} + */ + export interface $tsSecond { + /** + * Returns the seconds from a timestamp as a long. + * New in MongoDB 5.1. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/} + */ + $tsSecond: ResolvesToTimestamp; + } + + /** + * A type describing the `$type` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/} + */ + export interface $type { + /** + * Return the BSON data type of the field. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/} + */ + $type: Expression; + } + + /** + * A type describing the `$unsetField` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/} + */ + export interface $unsetField { + /** + * You can use $unsetField to remove fields with names that contain periods (.) or that start with dollar signs ($). + * $unsetField is an alias for $setField using $$REMOVE to remove fields. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/} + */ + $unsetField: { + /** + * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant. + */ + field: ResolvesToString; + + /** + * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined. + */ + input: ResolvesToObject; + }; + } + + /** + * A type describing the `$week` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/} + */ + export interface $week { + /** + * Returns the week number for a date as a number between 0 (the partial week that precedes the first Sunday of the year) and 53 (leap year). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/} + */ + $week: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$year` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/} + */ + export interface $year { + /** + * Returns the year for a date as a number (e.g. 2014). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/} + */ + $year: { + /** + * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID. + */ + date: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId; + + /** + * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC. + */ + timezone?: ResolvesToString; + }; + } + + /** + * A type describing the `$zip` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/} + */ + export interface $zip { + /** + * Merge two arrays together. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/} + */ + $zip: { + /** + * An array of expressions that resolve to arrays. The elements of these input arrays combine to form the arrays of the output array. + * If any of the inputs arrays resolves to a value of null or refers to a missing field, $zip returns null. + * If any of the inputs arrays does not resolve to an array or null nor refers to a missing field, $zip returns an error. + */ + inputs: ResolvesToArray; + + /** + * A boolean which specifies whether the length of the longest array determines the number of arrays in the output array. + * The default value is false: the shortest array length determines the number of arrays in the output array. + */ + useLongestLength?: boolean; + + /** + * An array of default element values to use if the input arrays have different lengths. You must specify useLongestLength: true along with this field, or else $zip will return an error. + * If useLongestLength: true but defaults is empty or not specified, $zip uses null as the default value. + * If specifying a non-empty defaults, you must specify a default for each input array or else $zip will return an error. + */ + defaults?: unknown[]; + }; + } +} +export namespace QueryOperators { + /** + * A type describing the `$all` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/} + */ + export interface $all { + /** + * Matches arrays that contain all elements specified in the query. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/} + */ + $all: [...FieldQuery[]]; + } + + /** + * A type describing the `$and` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/} + */ + export interface $and { + /** + * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/} + */ + $and: [Query, ...Query[]]; + } + + /** + * A type describing the `$bitsAllClear` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/} + */ + export interface $bitsAllClear { + /** + * Matches numeric or binary values in which a set of bit positions all have a value of 0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/} + */ + $bitsAllClear: Int | bson.Binary | unknown[]; + } + + /** + * A type describing the `$bitsAllSet` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/} + */ + export interface $bitsAllSet { + /** + * Matches numeric or binary values in which a set of bit positions all have a value of 1. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/} + */ + $bitsAllSet: Int | bson.Binary | unknown[]; + } + + /** + * A type describing the `$bitsAnyClear` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/} + */ + export interface $bitsAnyClear { + /** + * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/} + */ + $bitsAnyClear: Int | bson.Binary | unknown[]; + } + + /** + * A type describing the `$bitsAnySet` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/} + */ + export interface $bitsAnySet { + /** + * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/} + */ + $bitsAnySet: Int | bson.Binary | unknown[]; + } + + /** + * A type describing the `$box` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/} + */ + export interface $box { + /** + * Specifies a rectangular box using legacy coordinate pairs for $geoWithin queries. The 2d index supports $box. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/} + */ + $box: unknown[]; + } + + /** + * A type describing the `$center` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/} + */ + export interface $center { + /** + * Specifies a circle using legacy coordinate pairs to $geoWithin queries when using planar geometry. The 2d index supports $center. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/} + */ + $center: unknown[]; + } + + /** + * A type describing the `$centerSphere` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/} + */ + export interface $centerSphere { + /** + * Specifies a circle using either legacy coordinate pairs or GeoJSON format for $geoWithin queries when using spherical geometry. The 2dsphere and 2d indexes support $centerSphere. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/} + */ + $centerSphere: unknown[]; + } + + /** + * A type describing the `$comment` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/comment/} + */ + export interface $comment { + /** + * Adds a comment to a query predicate. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/comment/} + */ + $comment: string; + } + + /** + * A type describing the `$elemMatch` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/} + */ + export interface $elemMatch { + /** + * The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/} + */ + $elemMatch: Query | FieldQuery; + } + + /** + * A type describing the `$eq` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/} + */ + export interface $eq { + /** + * Matches values that are equal to a specified value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/} + */ + $eq: any; + } + + /** + * A type describing the `$exists` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/} + */ + export interface $exists { + /** + * Matches documents that have the specified field. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/} + */ + $exists: boolean; + } + + /** + * A type describing the `$expr` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/} + */ + export interface $expr { + /** + * Allows use of aggregation expressions within the query language. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/} + */ + $expr: Expression; + } + + /** + * A type describing the `$geoIntersects` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/} + */ + export interface $geoIntersects { + /** + * Selects geometries that intersect with a GeoJSON geometry. The 2dsphere index supports $geoIntersects. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/} + */ + $geoIntersects: Geometry; + } + + /** + * A type describing the `$geoWithin` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/} + */ + export interface $geoWithin { + /** + * Selects geometries within a bounding GeoJSON geometry. The 2dsphere and 2d indexes support $geoWithin. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/} + */ + $geoWithin: Geometry; + } + + /** + * A type describing the `$geometry` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/} + */ + export interface $geometry { + /** + * Specifies a geometry in GeoJSON format to geospatial query operators. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/} + */ + $geometry: { + type: string; + coordinates: unknown[]; + crs?: Record; + }; + } + + /** + * A type describing the `$gt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/} + */ + export interface $gt { + /** + * Matches values that are greater than a specified value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/} + */ + $gt: any; + } + + /** + * A type describing the `$gte` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/} + */ + export interface $gte { + /** + * Matches values that are greater than or equal to a specified value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/} + */ + $gte: any; + } + + /** + * A type describing the `$in` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/} + */ + export interface $in { + /** + * Matches any of the values specified in an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/} + */ + $in: unknown[]; + } + + /** + * A type describing the `$jsonSchema` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/} + */ + export interface $jsonSchema { + /** + * Validate documents against the given JSON Schema. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/} + */ + $jsonSchema: Record; + } + + /** + * A type describing the `$lt` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/} + */ + export interface $lt { + /** + * Matches values that are less than a specified value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/} + */ + $lt: any; + } + + /** + * A type describing the `$lte` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/} + */ + export interface $lte { + /** + * Matches values that are less than or equal to a specified value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/} + */ + $lte: any; + } + + /** + * A type describing the `$maxDistance` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/} + */ + export interface $maxDistance { + /** + * Specifies a maximum distance to limit the results of $near and $nearSphere queries. The 2dsphere and 2d indexes support $maxDistance. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/} + */ + $maxDistance: Number; + } + + /** + * A type describing the `$minDistance` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/} + */ + export interface $minDistance { + /** + * Specifies a minimum distance to limit the results of $near and $nearSphere queries. For use with 2dsphere index only. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/} + */ + $minDistance: Int | Double; + } + + /** + * A type describing the `$mod` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/} + */ + export interface $mod { + /** + * Performs a modulo operation on the value of a field and selects documents with a specified result. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/} + */ + $mod: [divisor: Number, remainder: Number]; + } + + /** + * A type describing the `$ne` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/} + */ + export interface $ne { + /** + * Matches all values that are not equal to a specified value. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/} + */ + $ne: any; + } + + /** + * A type describing the `$near` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/} + */ + export interface $near { + /** + * Returns geospatial objects in proximity to a point. Requires a geospatial index. The 2dsphere and 2d indexes support $near. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/} + */ + $near: Geometry; + } + + /** + * A type describing the `$nearSphere` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/} + */ + export interface $nearSphere { + /** + * Returns geospatial objects in proximity to a point on a sphere. Requires a geospatial index. The 2dsphere and 2d indexes support $nearSphere. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/} + */ + $nearSphere: Geometry; + } + + /** + * A type describing the `$nin` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/} + */ + export interface $nin { + /** + * Matches none of the values specified in an array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/} + */ + $nin: unknown[]; + } + + /** + * A type describing the `$nor` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/} + */ + export interface $nor { + /** + * Joins query clauses with a logical NOR returns all documents that fail to match both clauses. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/} + */ + $nor: [Query, ...Query[]]; + } + + /** + * A type describing the `$not` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/} + */ + export interface $not { + /** + * Inverts the effect of a query expression and returns documents that do not match the query expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/} + */ + $not: FieldQuery; + } + + /** + * A type describing the `$or` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/} + */ + export interface $or { + /** + * Joins query clauses with a logical OR returns all documents that match the conditions of either clause. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/} + */ + $or: [Query, ...Query[]]; + } + + /** + * A type describing the `$polygon` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/} + */ + export interface $polygon { + /** + * Specifies a polygon to using legacy coordinate pairs for $geoWithin queries. The 2d index supports $center. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/} + */ + $polygon: unknown[]; + } + + /** + * A type describing the `$rand` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/} + */ + export interface $rand { + /** + * Generates a random float between 0 and 1. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/} + */ + $rand: Record; + } + + /** + * A type describing the `$regex` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/} + */ + export interface $regex { + /** + * Selects documents where values match a specified regular expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/} + */ + $regex: Regex; + } + + /** + * A type describing the `$sampleRate` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/} + */ + export interface $sampleRate { + /** + * Randomly select documents at a given rate. Although the exact number of documents selected varies on each run, the quantity chosen approximates the sample rate expressed as a percentage of the total number of documents. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/} + */ + $sampleRate: ResolvesToDouble; + } + + /** + * A type describing the `$size` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/} + */ + export interface $size { + /** + * Selects documents if the array field is a specified size. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/} + */ + $size: Int; + } + + /** + * A type describing the `$text` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/} + */ + export interface $text { + /** + * Performs text search. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/} + */ + $text: { + /** + * A string of terms that MongoDB parses and uses to query the text index. MongoDB performs a logical OR search of the terms unless specified as a phrase. + */ + $search: string; + + /** + * The language that determines the list of stop words for the search and the rules for the stemmer and tokenizer. If not specified, the search uses the default language of the index. + * If you specify a default_language value of none, then the text index parses through each word in the field, including stop words, and ignores suffix stemming. + */ + $language?: string; + + /** + * A boolean flag to enable or disable case sensitive search. Defaults to false; i.e. the search defers to the case insensitivity of the text index. + */ + $caseSensitive?: boolean; + + /** + * A boolean flag to enable or disable diacritic sensitive search against version 3 text indexes. Defaults to false; i.e. the search defers to the diacritic insensitivity of the text index. + * Text searches against earlier versions of the text index are inherently diacritic sensitive and cannot be diacritic insensitive. As such, the $diacriticSensitive option has no effect with earlier versions of the text index. + */ + $diacriticSensitive?: boolean; + }; + } + + /** + * A type describing the `$type` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/} + */ + export interface $type { + /** + * Selects documents if a field is of the specified type. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/} + */ + $type: [...(Int | string)[]]; + } + + /** + * A type describing the `$where` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/} + */ + export interface $where { + /** + * Matches documents that satisfy a JavaScript expression. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/} + */ + $where: Javascript; + } +} +export namespace SearchOperators { + /** + * A type describing the `autocomplete` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/} + */ + export interface Autocomplete { + /** + * The autocomplete operator performs a search for a word or phrase that + * contains a sequence of characters from an incomplete input string. The + * fields that you intend to query with the autocomplete operator must be + * indexed with the autocomplete data type in the collection's index definition. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/} + */ + autocomplete: { + path: SearchPath; + query: string; + tokenOrder?: string; + fuzzy?: Record; + score?: SearchScore; + }; + } + + /** + * A type describing the `compound` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/} + */ + export interface Compound { + /** + * The compound operator combines two or more operators into a single query. + * Each element of a compound query is called a clause, and each clause + * consists of one or more sub-queries. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/} + */ + compound: { + must?: SearchOperator | unknown[]; + mustNot?: SearchOperator | unknown[]; + should?: SearchOperator | unknown[]; + filter?: SearchOperator | unknown[]; + minimumShouldMatch?: Int; + score?: SearchScore; + }; + } + + /** + * A type describing the `embeddedDocument` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/} + */ + export interface EmbeddedDocument { + /** + * The embeddedDocument operator is similar to $elemMatch operator. + * It constrains multiple query predicates to be satisfied from a single + * element of an array of embedded documents. embeddedDocument can be used only + * for queries over fields of the embeddedDocuments + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/} + */ + embeddedDocument: { + path: SearchPath; + operator: SearchOperator; + score?: SearchScore; + }; + } + + /** + * A type describing the `equals` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/} + */ + export interface Equals { + /** + * The equals operator checks whether a field matches a value you specify. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/} + */ + equals: { + path: SearchPath; + value: + | bson.Binary + | boolean + | Date + | bson.ObjectId + | null + | Number + | string; + score?: SearchScore; + }; + } + + /** + * A type describing the `exists` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/} + */ + export interface Exists { + /** + * The exists operator tests if a path to a specified indexed field name exists in a document. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/} + */ + exists: { path: SearchPath; score?: SearchScore }; + } + + /** + * A type describing the `facet` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/} + */ + export interface Facet { + /** + * The facet collector groups results by values or ranges in the specified + * faceted fields and returns the count for each of those groups. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/} + */ + facet: { facets: Record; operator?: SearchOperator }; + } + + /** + * A type describing the `geoShape` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/} + */ + export interface GeoShape { + /** + * The geoShape operator supports querying shapes with a relation to a given + * geometry if indexShapes is set to true in the index definition. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/} + */ + geoShape: { + path: SearchPath; + relation: string; + geometry: Geometry; + score?: SearchScore; + }; + } + + /** + * A type describing the `geoWithin` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/} + */ + export interface GeoWithin { + /** + * The geoWithin operator supports querying geographic points within a given + * geometry. Only points are returned, even if indexShapes value is true in + * the index definition. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/} + */ + geoWithin: { + path: SearchPath; + box?: Record; + circle?: Record; + geometry?: Geometry; + score?: SearchScore; + }; + } + + /** + * A type describing the `in` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/} + */ + export interface In { + /** + * The in operator performs a search for an array of BSON values in a field. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/} + */ + in: { path: SearchPath; value: any | unknown[]; score?: SearchScore }; + } + + /** + * A type describing the `moreLikeThis` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/} + */ + export interface MoreLikeThis { + /** + * The moreLikeThis operator returns documents similar to input documents. + * The moreLikeThis operator allows you to build features for your applications + * that display similar or alternative results based on one or more given documents. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/} + */ + moreLikeThis: { + like: Record | unknown[]; + score?: SearchScore; + }; + } + + /** + * A type describing the `near` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/} + */ + export interface Near { + /** + * The near operator supports querying and scoring numeric, date, and GeoJSON point values. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/} + */ + near: { + path: SearchPath; + origin: Date | Number | Geometry; + pivot: Number; + score?: SearchScore; + }; + } + + /** + * A type describing the `phrase` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/} + */ + export interface Phrase { + /** + * The phrase operator performs search for documents containing an ordered sequence of terms using the analyzer specified in the index configuration. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/} + */ + phrase: { + path: SearchPath; + query: string | unknown[]; + slop?: Int; + synonyms?: string; + score?: SearchScore; + }; + } + + /** + * A type describing the `queryString` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/} + */ + export interface QueryString { + queryString: { defaultPath: SearchPath; query: string }; + } + + /** + * A type describing the `range` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/} + */ + export interface Range { + /** + * The range operator supports querying and scoring numeric, date, and string values. + * You can use this operator to find results that are within a given numeric, date, objectId, or letter (from the English alphabet) range. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/} + */ + range: { + path: SearchPath; + gt?: Date | Number | string | bson.ObjectId; + gte?: Date | Number | string | bson.ObjectId; + lt?: Date | Number | string | bson.ObjectId; + lte?: Date | Number | string | bson.ObjectId; + score?: SearchScore; + }; + } + + /** + * A type describing the `regex` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/} + */ + export interface Regex { + /** + * regex interprets the query field as a regular expression. + * regex is a term-level operator, meaning that the query field isn't analyzed. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/} + */ + regex: { + path: SearchPath; + query: string; + allowAnalyzedField?: boolean; + score?: SearchScore; + }; + } + + /** + * A type describing the `text` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/} + */ + export interface Text { + /** + * The text operator performs a full-text search using the analyzer that you specify in the index configuration. + * If you omit an analyzer, the text operator uses the default standard analyzer. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/} + */ + text: { + path: SearchPath; + query: string; + fuzzy?: Record; + matchCriteria?: string; + synonyms?: string; + score?: SearchScore; + }; + } + + /** + * A type describing the `wildcard` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/} + */ + export interface Wildcard { + /** + * The wildcard operator enables queries which use special characters in the search string that can match any character. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/} + */ + wildcard: { + path: SearchPath; + query: string; + allowAnalyzedField?: boolean; + score?: SearchScore; + }; + } +} +export namespace StageOperators { + /** + * A type describing the `$addFields` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/} + */ + export interface $addFields { + /** + * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/} + */ + $addFields: { + /** + * Specify the name of each field to add and set its value to an aggregation expression or an empty object. + */ + } & { [expression: string]: Expression }; + } + + /** + * A type describing the `$bucket` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/} + */ + export interface $bucket { + /** + * Categorizes incoming documents into groups, called buckets, based on a specified expression and bucket boundaries. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/} + */ + $bucket: { + /** + * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes. + * Unless $bucket includes a default specification, each input document must resolve the groupBy field path or expression to a value that falls within one of the ranges specified by the boundaries. + */ + groupBy: Expression; + + /** + * An array of values based on the groupBy expression that specify the boundaries for each bucket. Each adjacent pair of values acts as the inclusive lower boundary and the exclusive upper boundary for the bucket. You must specify at least two boundaries. + * The specified values must be in ascending order and all of the same type. The exception is if the values are of mixed numeric types, such as: + */ + boundaries: unknown[]; + + /** + * A literal that specifies the _id of an additional bucket that contains all documents whose groupBy expression result does not fall into a bucket specified by boundaries. + * If unspecified, each input document must resolve the groupBy expression to a value within one of the bucket ranges specified by boundaries or the operation throws an error. + * The default value must be less than the lowest boundaries value, or greater than or equal to the highest boundaries value. + * The default value can be of a different type than the entries in boundaries. + */ + default?: Expression; + + /** + * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions. + * If you do not specify an output document, the operation returns a count field containing the number of documents in each bucket. + * If you specify an output document, only the fields specified in the document are returned; i.e. the count field is not returned unless it is explicitly included in the output document. + */ + output?: Record; + }; + } + + /** + * A type describing the `$bucketAuto` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/} + */ + export interface $bucketAuto { + /** + * Categorizes incoming documents into a specific number of groups, called buckets, based on a specified expression. Bucket boundaries are automatically determined in an attempt to evenly distribute the documents into the specified number of buckets. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/} + */ + $bucketAuto: { + /** + * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes. + */ + groupBy: Expression; + + /** + * A positive 32-bit integer that specifies the number of buckets into which input documents are grouped. + */ + buckets: Int; + + /** + * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions. + * The default count field is not included in the output document when output is specified. Explicitly specify the count expression as part of the output document to include it. + */ + output?: Record; + + /** + * A string that specifies the preferred number series to use to ensure that the calculated boundary edges end on preferred round numbers or their powers of 10. + * Available only if the all groupBy values are numeric and none of them are NaN. + */ + granularity?: Granularity; + }; + } + + /** + * A type describing the `$changeStream` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/} + */ + export interface $changeStream { + /** + * Returns a Change Stream cursor for the collection or database. This stage can only occur once in an aggregation pipeline and it must occur as the first stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/} + */ + $changeStream: { + /** + * A flag indicating whether the stream should report all changes that occur on the deployment, aside from those on internal databases or collections. + */ + allChangesForCluster?: boolean; + + /** + * Specifies whether change notifications include a copy of the full document when modified by update operations. + */ + fullDocument?: FullDocument; + + /** + * Valid values are "off", "whenAvailable", or "required". If set to "off", the "fullDocumentBeforeChange" field of the output document is always omitted. If set to "whenAvailable", the "fullDocumentBeforeChange" field will be populated with the pre-image of the document modified by the current change event if such a pre-image is available, and will be omitted otherwise. If set to "required", then the "fullDocumentBeforeChange" field is always populated and an exception is thrown if the pre-image is not available. + */ + fullDocumentBeforeChange?: FullDocumentBeforeChange; + + /** + * Specifies a resume token as the logical starting point for the change stream. Cannot be used with startAfter or startAtOperationTime fields. + */ + resumeAfter?: Int; + + /** + * Specifies whether to include additional change events, such as such as DDL and index operations. + * New in MongoDB 6.0. + */ + showExpandedEvents?: boolean; + + /** + * Specifies a resume token as the logical starting point for the change stream. Cannot be used with resumeAfter or startAtOperationTime fields. + */ + startAfter?: Record; + + /** + * Specifies a time as the logical starting point for the change stream. Cannot be used with resumeAfter or startAfter fields. + */ + startAtOperationTime?: bson.Timestamp; + }; + } + + /** + * A type describing the `$changeStreamSplitLargeEvent` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/} + */ + export interface $changeStreamSplitLargeEvent { + /** + * Splits large change stream events that exceed 16 MB into smaller fragments returned in a change stream cursor. + * You can only use $changeStreamSplitLargeEvent in a $changeStream pipeline and it must be the final stage in the pipeline. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/} + */ + $changeStreamSplitLargeEvent: Record; + } + + /** + * A type describing the `$collStats` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/} + */ + export interface $collStats { + /** + * Returns statistics regarding a collection or view. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/} + */ + $collStats: { + latencyStats?: Record; + storageStats?: Record; + count?: Record; + queryExecStats?: Record; + }; + } + + /** + * A type describing the `$count` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/} + */ + export interface $count { + /** + * Returns a count of the number of documents at this stage of the aggregation pipeline. + * Distinct from the $count aggregation accumulator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/} + */ + $count: string; + } + + /** + * A type describing the `$currentOp` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/} + */ + export interface $currentOp { + /** + * Returns information on active and/or dormant operations for the MongoDB deployment. To run, use the db.aggregate() method. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/} + */ + $currentOp: { + allUsers?: boolean; + idleConnections?: boolean; + idleCursors?: boolean; + idleSessions?: boolean; + localOps?: boolean; + }; + } + + /** + * A type describing the `$densify` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/} + */ + export interface $densify { + /** + * Creates new documents in a sequence of documents where certain values in a field are missing. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/} + */ + $densify: { + /** + * The field to densify. The values of the specified field must either be all numeric values or all dates. + * Documents that do not contain the specified field continue through the pipeline unmodified. + * To specify a in an embedded document or in an array, use dot notation. + */ + field: string; + + /** + * The field(s) that will be used as the partition keys. + */ + partitionByFields?: unknown[]; + + /** + * Specification for range based densification. + */ + range: Range; + }; + } + + /** + * A type describing the `$documents` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/} + */ + export interface $documents { + /** + * Returns literal documents from input values. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/} + */ + $documents: ResolvesToArray; + } + + /** + * A type describing the `$facet` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/} + */ + export interface $facet { + /** + * Processes multiple aggregation pipelines within a single stage on the same set of input documents. Enables the creation of multi-faceted aggregations capable of characterizing data across multiple dimensions, or facets, in a single stage. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/} + */ + $facet: {} & { [facet: string]: Pipeline }; + } + + /** + * A type describing the `$fill` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/} + */ + export interface $fill { + /** + * Populates null and missing field values within documents. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/} + */ + $fill: { + /** + * Specifies an expression to group the documents. In the $fill stage, a group of documents is known as a partition. + * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection. + * partitionBy and partitionByFields are mutually exclusive. + */ + partitionBy?: Record | string; + + /** + * Specifies an array of fields as the compound key to group the documents. In the $fill stage, each group of documents is known as a partition. + * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection. + * partitionBy and partitionByFields are mutually exclusive. + */ + partitionByFields?: unknown[]; + + /** + * Specifies the field or fields to sort the documents within each partition. Uses the same syntax as the $sort stage. + */ + sortBy?: SortBy; + + /** + * Specifies an object containing each field for which to fill missing values. You can specify multiple fields in the output object. + * The object name is the name of the field to fill. The object value specifies how the field is filled. + */ + output: Record; + }; + } + + /** + * A type describing the `$geoNear` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/} + */ + export interface $geoNear { + /** + * Returns an ordered stream of documents based on the proximity to a geospatial point. Incorporates the functionality of $match, $sort, and $limit for geospatial data. The output documents include an additional distance field and can include a location identifier field. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/} + */ + $geoNear: { + /** + * The output field that contains the calculated distance. To specify a field within an embedded document, use dot notation. + */ + distanceField?: string; + + /** + * The factor to multiply all distances returned by the query. For example, use the distanceMultiplier to convert radians, as returned by a spherical query, to kilometers by multiplying by the radius of the Earth. + */ + distanceMultiplier?: Number; + + /** + * This specifies the output field that identifies the location used to calculate the distance. This option is useful when a location field contains multiple locations. To specify a field within an embedded document, use dot notation. + */ + includeLocs?: string; + + /** + * Specify the geospatial indexed field to use when calculating the distance. + */ + key?: string; + + /** + * The maximum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall within the specified distance from the center point. + * Specify the distance in meters if the specified point is GeoJSON and in radians if the specified point is legacy coordinate pairs. + */ + maxDistance?: Number; + + /** + * The minimum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall outside the specified distance from the center point. + * Specify the distance in meters for GeoJSON data and in radians for legacy coordinate pairs. + */ + minDistance?: Number; + + /** + * The point for which to find the closest documents. + */ + near: GeoPoint | ResolvesToObject; + + /** + * Limits the results to the documents that match the query. The query syntax is the usual MongoDB read operation query syntax. + * You cannot specify a $near predicate in the query field of the $geoNear stage. + */ + query?: Query; + + /** + * Determines how MongoDB calculates the distance between two points: + * - When true, MongoDB uses $nearSphere semantics and calculates distances using spherical geometry. + * - When false, MongoDB uses $near semantics: spherical geometry for 2dsphere indexes and planar geometry for 2d indexes. + * Default: false. + */ + spherical?: boolean; + }; + } + + /** + * A type describing the `$graphLookup` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/} + */ + export interface $graphLookup { + /** + * Performs a recursive search on a collection. To each output document, adds a new array field that contains the traversal results of the recursive search for that document. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/} + */ + $graphLookup: { + /** + * Target collection for the $graphLookup operation to search, recursively matching the connectFromField to the connectToField. The from collection must be in the same database as any other collections used in the operation. + * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded. + */ + from: string; + + /** + * Expression that specifies the value of the connectFromField with which to start the recursive search. Optionally, startWith may be array of values, each of which is individually followed through the traversal process. + */ + startWith: Expression | unknown[]; + + /** + * Field name whose value $graphLookup uses to recursively match against the connectToField of other documents in the collection. If the value is an array, each element is individually followed through the traversal process. + */ + connectFromField: string; + + /** + * Field name in other documents against which to match the value of the field specified by the connectFromField parameter. + */ + connectToField: string; + + /** + * Name of the array field added to each output document. Contains the documents traversed in the $graphLookup stage to reach the document. + */ + as: string; + + /** + * Non-negative integral number specifying the maximum recursion depth. + */ + maxDepth?: Int; + + /** + * Name of the field to add to each traversed document in the search path. The value of this field is the recursion depth for the document, represented as a NumberLong. Recursion depth value starts at zero, so the first lookup corresponds to zero depth. + */ + depthField?: string; + + /** + * A document specifying additional conditions for the recursive search. The syntax is identical to query filter syntax. + */ + restrictSearchWithMatch?: Query; + }; + } + + /** + * A type describing the `$group` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/} + */ + export interface $group { + /** + * Groups input documents by a specified identifier expression and applies the accumulator expression(s), if specified, to each group. Consumes all input documents and outputs one document per each distinct group. The output documents only contain the identifier field and, if specified, accumulated fields. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/} + */ + $group: RecordWithStaticFields< + { + /** + * The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents. + */ + _id: Expression; + }, + /** + * Computed using the accumulator operators. + */ + Accumulator + >; + } + + /** + * A type describing the `$indexStats` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/} + */ + export interface $indexStats { + /** + * Returns statistics regarding the use of each index for the collection. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/} + */ + $indexStats: Record; + } + + /** + * A type describing the `$limit` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/} + */ + export interface $limit { + /** + * Passes the first n documents unmodified to the pipeline where n is the specified limit. For each input document, outputs either one document (for the first n documents) or zero documents (after the first n documents). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/} + */ + $limit: Int; + } + + /** + * A type describing the `$listLocalSessions` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/} + */ + export interface $listLocalSessions { + /** + * Lists all active sessions recently in use on the currently connected mongos or mongod instance. These sessions may have not yet propagated to the system.sessions collection. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/} + */ + $listLocalSessions: { + /** + * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users. + */ + users?: unknown[]; + + /** + * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster. + */ + allUsers?: boolean; + }; + } + + /** + * A type describing the `$listSampledQueries` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/} + */ + export interface $listSampledQueries { + /** + * Lists sampled queries for all collections or a specific collection. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/} + */ + $listSampledQueries: { namespace?: string }; + } + + /** + * A type describing the `$listSearchIndexes` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/} + */ + export interface $listSearchIndexes { + /** + * Returns information about existing Atlas Search indexes on a specified collection. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/} + */ + $listSearchIndexes: { + /** + * The id of the index to return information about. + */ + id?: string; + + /** + * The name of the index to return information about. + */ + name?: string; + }; + } + + /** + * A type describing the `$listSessions` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/} + */ + export interface $listSessions { + /** + * Lists all sessions that have been active long enough to propagate to the system.sessions collection. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/} + */ + $listSessions: { + /** + * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users. + */ + users?: unknown[]; + + /** + * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster. + */ + allUsers?: boolean; + }; + } + + /** + * A type describing the `$lookup` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/} + */ + export interface $lookup { + /** + * Performs a left outer join to another collection in the same database to filter in documents from the "joined" collection for processing. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/} + */ + $lookup: { + /** + * Specifies the collection in the same database to perform the join with. + * from is optional, you can use a $documents stage in a $lookup stage instead. For an example, see Use a $documents Stage in a $lookup Stage. + * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded. + */ + from?: string; + + /** + * Specifies the field from the documents input to the $lookup stage. $lookup performs an equality match on the localField to the foreignField from the documents of the from collection. If an input document does not contain the localField, the $lookup treats the field as having a value of null for matching purposes. + */ + localField?: string; + + /** + * Specifies the field from the documents in the from collection. $lookup performs an equality match on the foreignField to the localField from the input documents. If a document in the from collection does not contain the foreignField, the $lookup treats the value as null for matching purposes. + */ + foreignField?: string; + + /** + * Specifies variables to use in the pipeline stages. Use the variable expressions to access the fields from the joined collection's documents that are input to the pipeline. + */ + let?: Record; + + /** + * Specifies the pipeline to run on the joined collection. The pipeline determines the resulting documents from the joined collection. To return all documents, specify an empty pipeline []. + * The pipeline cannot include the $out stage or the $merge stage. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline. + * The pipeline cannot directly access the joined document fields. Instead, define variables for the joined document fields using the let option and then reference the variables in the pipeline stages. + */ + pipeline?: Pipeline; + + /** + * Specifies the name of the new array field to add to the input documents. The new array field contains the matching documents from the from collection. If the specified name already exists in the input document, the existing field is overwritten. + */ + as: string; + }; + } + + /** + * A type describing the `$match` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/} + */ + export interface $match { + /** + * Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. $match uses standard MongoDB queries. For each input document, outputs either one document (a match) or zero documents (no match). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/} + */ + $match: Query; + } + + /** + * A type describing the `$merge` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/} + */ + export interface $merge { + /** + * Writes the resulting documents of the aggregation pipeline to a collection. The stage can incorporate (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) the results into an output collection. To use the $merge stage, it must be the last stage in the pipeline. + * New in MongoDB 4.2. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/} + */ + $merge: { + /** + * The output collection. + */ + into: string | OutCollection; + + /** + * Field or fields that act as a unique identifier for a document. The identifier determines if a results document matches an existing document in the output collection. + */ + on?: string | unknown[]; + + /** + * Specifies variables for use in the whenMatched pipeline. + */ + let?: Record; + + /** + * The behavior of $merge if a result document and an existing document in the collection have the same value for the specified on field(s). + */ + whenMatched?: WhenMatched | Pipeline; + + /** + * The behavior of $merge if a result document does not match an existing document in the out collection. + */ + whenNotMatched?: WhenNotMatched; + }; + } + + /** + * A type describing the `$out` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/} + */ + export interface $out { + /** + * Writes the resulting documents of the aggregation pipeline to a collection. To use the $out stage, it must be the last stage in the pipeline. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/} + */ + $out: string | OutCollection; + } + + /** + * A type describing the `$planCacheStats` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/} + */ + export interface $planCacheStats { + /** + * Returns plan cache information for a collection. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/} + */ + $planCacheStats: Record; + } + + /** + * A type describing the `$project` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/} + */ + export interface $project { + /** + * Reshapes each document in the stream, such as by adding new fields or removing existing fields. For each input document, outputs one document. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/} + */ + $project: {} & { [specification: string]: Expression }; + } + + /** + * A type describing the `$redact` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/} + */ + export interface $redact { + /** + * Reshapes each document in the stream by restricting the content for each document based on information stored in the documents themselves. Incorporates the functionality of $project and $match. Can be used to implement field level redaction. For each input document, outputs either one or zero documents. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/} + */ + $redact: Expression; + } + + /** + * A type describing the `$replaceRoot` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/} + */ + export interface $replaceRoot { + /** + * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/} + */ + $replaceRoot: { newRoot: ResolvesToObject }; + } + + /** + * A type describing the `$replaceWith` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/} + */ + export interface $replaceWith { + /** + * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level. + * Alias for $replaceRoot. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/} + */ + $replaceWith: ResolvesToObject; + } + + /** + * A type describing the `$sample` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/} + */ + export interface $sample { + /** + * Randomly selects the specified number of documents from its input. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/} + */ + $sample: { + /** + * The number of documents to randomly select. + */ + size: Int; + }; + } + + /** + * A type describing the `$search` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/} + */ + export interface $search { + /** + * Performs a full-text search of the field or fields in an Atlas collection. + * NOTE: $search is only available for MongoDB Atlas clusters, and is not available for self-managed deployments. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/} + */ + $search: SearchOperator; + } + + /** + * A type describing the `$searchMeta` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/} + */ + export interface $searchMeta { + /** + * Returns different types of metadata result documents for the Atlas Search query against an Atlas collection. + * NOTE: $searchMeta is only available for MongoDB Atlas clusters running MongoDB v4.4.9 or higher, and is not available for self-managed deployments. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/} + */ + $searchMeta: SearchOperator; + } + + /** + * A type describing the `$set` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/} + */ + export interface $set { + /** + * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields. + * Alias for $addFields. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/} + */ + $set: {} & { [field: string]: Expression }; + } + + /** + * A type describing the `$setWindowFields` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/} + */ + export interface $setWindowFields { + /** + * Groups documents into windows and applies one or more operators to the documents in each window. + * New in MongoDB 5.0. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/} + */ + $setWindowFields: { + /** + * Specifies the field(s) to sort the documents by in the partition. Uses the same syntax as the $sort stage. Default is no sorting. + */ + sortBy: SortBy; + + /** + * Specifies the field(s) to append to the documents in the output returned by the $setWindowFields stage. Each field is set to the result returned by the window operator. + * A field can contain dots to specify embedded document fields and array fields. The semantics for the embedded document dotted notation in the $setWindowFields stage are the same as the $addFields and $set stages. + */ + output: Record; + + /** + * Specifies an expression to group the documents. In the $setWindowFields stage, the group of documents is known as a partition. Default is one partition for the entire collection. + */ + partitionBy?: Expression; + }; + } + + /** + * A type describing the `$shardedDataDistribution` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/} + */ + export interface $shardedDataDistribution { + /** + * Provides data and size distribution information on sharded collections. + * New in MongoDB 6.0.3. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/} + */ + $shardedDataDistribution: Record; + } + + /** + * A type describing the `$skip` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/} + */ + export interface $skip { + /** + * Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. For each input document, outputs either zero documents (for the first n documents) or one document (if after the first n documents). + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/} + */ + $skip: Int; + } + + /** + * A type describing the `$sort` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/} + */ + export interface $sort { + /** + * Reorders the document stream by a specified sort key. Only the order changes; the documents remain unmodified. For each input document, outputs one document. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/} + */ + $sort: {} & { [sort: string]: Expression | SortSpec }; + } + + /** + * A type describing the `$sortByCount` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/} + */ + export interface $sortByCount { + /** + * Groups incoming documents based on the value of a specified expression, then computes the count of documents in each distinct group. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/} + */ + $sortByCount: Expression; + } + + /** + * A type describing the `$unionWith` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/} + */ + export interface $unionWith { + /** + * Performs a union of two collections; i.e. combines pipeline results from two collections into a single result set. + * New in MongoDB 4.4. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/} + */ + $unionWith: { + /** + * The collection or view whose pipeline results you wish to include in the result set. + */ + coll: string; + + /** + * An aggregation pipeline to apply to the specified coll. + * The pipeline cannot include the $out and $merge stages. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline. + */ + pipeline?: Pipeline; + }; + } + + /** + * A type describing the `$unset` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/} + */ + export interface $unset { + /** + * Removes or excludes fields from documents. + * Alias for $project stage that removes or excludes fields. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/} + */ + $unset: [...FieldPath[]]; + } + + /** + * A type describing the `$unwind` operator. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/} + */ + export interface $unwind { + /** + * Deconstructs an array field from the input documents to output a document for each element. Each output document replaces the array with an element value. For each input document, outputs n documents where n is the number of array elements and can be zero for an empty array. + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/} + */ + $unwind: { + /** + * Field path to an array field. + */ + path: ArrayFieldPath; + + /** + * The name of a new field to hold the array index of the element. The name cannot start with a dollar sign $. + */ + includeArrayIndex?: string; + + /** + * If true, if the path is null, missing, or an empty array, $unwind outputs the document. + * If false, if path is null, missing, or an empty array, $unwind does not output a document. + * The default value is false. + */ + preserveNullAndEmptyArrays?: boolean; + }; + } + + /** + * A type describing the `$vectorSearch` operator. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/} + */ + export interface $vectorSearch { + /** + * The $vectorSearch stage performs an ANN or ENN search on a vector in the specified field. + * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/} + */ + $vectorSearch: { + /** + * Name of the Atlas Vector Search index to use. + */ + index: string; + + /** + * Number of documents to return in the results. This value can't exceed the value of numCandidates if you specify numCandidates. + */ + limit: Int; + + /** + * Indexed vector type field to search. + */ + path: string; + + /** + * Array of numbers that represent the query vector. The number type must match the indexed field value type. + */ + queryVector: unknown[]; + + /** + * This is required if numCandidates is omitted. false to run ANN search. true to run ENN search. + */ + exact?: boolean; + + /** + * Any match query that compares an indexed field with a boolean, date, objectId, number (not decimals), string, or UUID to use as a pre-filter. + */ + filter?: Query; + + /** + * This field is required if exact is false or omitted. + * Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can't specify a number less than the number of documents to return (limit). + */ + numCandidates?: Int; + }; + } +} + +export type Int = number | bson.Int32; +export type Double = number | bson.Double; +export type Regex = RegExp | bson.BSONRegExp; +export type Long = bigint | bson.Long; +export type Javascript = bson.Code | Function; +export type Number = Int | Long | Double | bson.Decimal128; +export type BsonPrimitive = + | Number + | bson.Binary + | bson.ObjectId + | string + | boolean + | Date + | null + | Regex + | Javascript + | bson.Timestamp; +export type SearchPath = string | string[]; +export type SearchScore = unknown; +export type Granularity = string; +export type FullDocument = string; +export type FullDocumentBeforeChange = string; +export type AccumulatorPercentile = string; +export type Range = unknown; +export type SortBy = unknown; +export type GeoPoint = unknown; +export type SortSpec = -1 | 1; +export type TimeUnit = + | 'week' + | 'day' + | 'hour' + | 'minute' + | 'second' + | 'millisecond'; +export type OutCollection = unknown; +export type WhenMatched = string; +export type WhenNotMatched = string; +export type Expression = C_expression | FieldPath | BsonPrimitive; +export type Stage = + | C_stage + | StageOperators.$addFields + | StageOperators.$bucket + | StageOperators.$bucketAuto + | StageOperators.$changeStream + | StageOperators.$changeStreamSplitLargeEvent + | StageOperators.$collStats + | StageOperators.$count + | StageOperators.$currentOp + | StageOperators.$densify + | StageOperators.$documents + | StageOperators.$facet + | StageOperators.$fill + | StageOperators.$geoNear + | StageOperators.$graphLookup + | StageOperators.$group + | StageOperators.$indexStats + | StageOperators.$limit + | StageOperators.$listLocalSessions + | StageOperators.$listSampledQueries + | StageOperators.$listSearchIndexes + | StageOperators.$listSessions + | StageOperators.$lookup + | StageOperators.$match + | StageOperators.$merge + | StageOperators.$out + | StageOperators.$planCacheStats + | StageOperators.$project + | StageOperators.$redact + | StageOperators.$replaceRoot + | StageOperators.$replaceWith + | StageOperators.$sample + | StageOperators.$search + | StageOperators.$searchMeta + | StageOperators.$set + | StageOperators.$setWindowFields + | StageOperators.$shardedDataDistribution + | StageOperators.$skip + | StageOperators.$sort + | StageOperators.$sortByCount + | StageOperators.$unionWith + | StageOperators.$unset + | StageOperators.$unwind + | StageOperators.$vectorSearch; +export type Pipeline = Stage[]; +export type Query = + | C_query + | Partial<{ [k in keyof S]: Condition }> + | QueryOperators.$and + | QueryOperators.$comment + | QueryOperators.$expr + | QueryOperators.$jsonSchema + | QueryOperators.$nor + | QueryOperators.$or + | QueryOperators.$sampleRate + | QueryOperators.$text + | QueryOperators.$where; +export type Accumulator = + | AccumulatorOperators.$accumulator + | AccumulatorOperators.$addToSet + | AccumulatorOperators.$avg + | AccumulatorOperators.$bottom + | AccumulatorOperators.$bottomN + | AccumulatorOperators.$count + | AccumulatorOperators.$first + | AccumulatorOperators.$firstN + | AccumulatorOperators.$last + | AccumulatorOperators.$lastN + | AccumulatorOperators.$max + | AccumulatorOperators.$maxN + | AccumulatorOperators.$median + | AccumulatorOperators.$mergeObjects + | AccumulatorOperators.$min + | AccumulatorOperators.$minN + | AccumulatorOperators.$percentile + | AccumulatorOperators.$push + | AccumulatorOperators.$stdDevPop + | AccumulatorOperators.$stdDevSamp + | AccumulatorOperators.$sum + | AccumulatorOperators.$top + | AccumulatorOperators.$topN; +export type SearchOperator = + | SearchOperators.Autocomplete + | SearchOperators.Compound + | SearchOperators.EmbeddedDocument + | SearchOperators.Equals + | SearchOperators.Exists + | SearchOperators.Facet + | SearchOperators.GeoShape + | SearchOperators.GeoWithin + | SearchOperators.In + | SearchOperators.MoreLikeThis + | SearchOperators.Near + | SearchOperators.Phrase + | SearchOperators.QueryString + | SearchOperators.Range + | SearchOperators.Regex + | SearchOperators.Text + | SearchOperators.Wildcard; +export type Geometry = + | QueryOperators.$box + | QueryOperators.$center + | QueryOperators.$centerSphere + | QueryOperators.$geometry + | QueryOperators.$polygon; +export type FieldPath = `$${AFieldPath}`; +export type NumberFieldPath = `$${AFieldPath}`; +export type DoubleFieldPath = `$${AFieldPath}`; +export type StringFieldPath = `$${AFieldPath}`; +export type ObjectFieldPath = `$${AFieldPath>}`; +export type ArrayFieldPath = `$${AFieldPath}`; +export type BinDataFieldPath = `$${AFieldPath}`; +export type ObjectIdFieldPath = `$${AFieldPath}`; +export type BoolFieldPath = `$${AFieldPath}`; +export type DateFieldPath = `$${AFieldPath}`; +export type NullFieldPath = `$${AFieldPath}`; +export type RegexFieldPath = `$${AFieldPath}`; +export type JavascriptFieldPath = `$${AFieldPath}`; +export type IntFieldPath = `$${AFieldPath}`; +export type TimestampFieldPath = `$${AFieldPath}`; +export type LongFieldPath = `$${AFieldPath}`; +export type DecimalFieldPath = `$${AFieldPath}`; +export type ResolvesToNumber = + | NumberFieldPath + | Number + | ExpressionOperators.$abs + | ExpressionOperators.$avg + | ExpressionOperators.$pow + | ExpressionOperators.$sum; +export type ResolvesToDouble = + | DoubleFieldPath + | Double + | ExpressionOperators.$acos + | ExpressionOperators.$acosh + | ExpressionOperators.$add + | ExpressionOperators.$asin + | ExpressionOperators.$asinh + | ExpressionOperators.$atan + | ExpressionOperators.$atan2 + | ExpressionOperators.$atanh + | ExpressionOperators.$cos + | ExpressionOperators.$cosh + | ExpressionOperators.$degreesToRadians + | ExpressionOperators.$divide + | ExpressionOperators.$exp + | ExpressionOperators.$ln + | ExpressionOperators.$log + | ExpressionOperators.$log10 + | ExpressionOperators.$median + | ExpressionOperators.$radiansToDegrees + | ExpressionOperators.$rand + | ExpressionOperators.$round + | ExpressionOperators.$sin + | ExpressionOperators.$sinh + | ExpressionOperators.$sqrt + | ExpressionOperators.$stdDevPop + | ExpressionOperators.$stdDevSamp + | ExpressionOperators.$subtract + | ExpressionOperators.$tan + | ExpressionOperators.$tanh + | ExpressionOperators.$toDouble + | QueryOperators.$rand; +export type ResolvesToString = + | StringFieldPath + | string + | ExpressionOperators.$concat + | ExpressionOperators.$dateToString + | ExpressionOperators.$ltrim + | ExpressionOperators.$replaceAll + | ExpressionOperators.$replaceOne + | ExpressionOperators.$rtrim + | ExpressionOperators.$substr + | ExpressionOperators.$substrBytes + | ExpressionOperators.$substrCP + | ExpressionOperators.$toLower + | ExpressionOperators.$toString + | ExpressionOperators.$toUpper + | ExpressionOperators.$trim + | ExpressionOperators.$trunc + | ExpressionOperators.$type; +export type ResolvesToObject = + | ObjectFieldPath + | Record + | ExpressionOperators.$arrayToObject + | ExpressionOperators.$dateToParts + | ExpressionOperators.$mergeObjects + | ExpressionOperators.$regexFind + | ExpressionOperators.$setField + | ExpressionOperators.$unsetField; +export type ResolvesToArray = + | ArrayFieldPath + | unknown[] + | ExpressionOperators.$concatArrays + | ExpressionOperators.$filter + | ExpressionOperators.$firstN + | ExpressionOperators.$lastN + | ExpressionOperators.$map + | ExpressionOperators.$maxN + | ExpressionOperators.$minN + | ExpressionOperators.$objectToArray + | ExpressionOperators.$percentile + | ExpressionOperators.$range + | ExpressionOperators.$regexFindAll + | ExpressionOperators.$reverseArray + | ExpressionOperators.$setDifference + | ExpressionOperators.$setIntersection + | ExpressionOperators.$setUnion + | ExpressionOperators.$slice + | ExpressionOperators.$sortArray + | ExpressionOperators.$split + | ExpressionOperators.$zip; +export type ResolvesToBinData = BinDataFieldPath | bson.Binary; +export type ResolvesToObjectId = + | ObjectIdFieldPath + | bson.ObjectId + | ExpressionOperators.$toObjectId; +export type ResolvesToBool = + | BoolFieldPath + | boolean + | ExpressionOperators.$allElementsTrue + | ExpressionOperators.$and + | ExpressionOperators.$anyElementTrue + | ExpressionOperators.$eq + | ExpressionOperators.$gt + | ExpressionOperators.$gte + | ExpressionOperators.$in + | ExpressionOperators.$isArray + | ExpressionOperators.$isNumber + | ExpressionOperators.$lt + | ExpressionOperators.$lte + | ExpressionOperators.$ne + | ExpressionOperators.$not + | ExpressionOperators.$or + | ExpressionOperators.$regexMatch + | ExpressionOperators.$setEquals + | ExpressionOperators.$setIsSubset + | ExpressionOperators.$toBool; +export type ResolvesToDate = + | DateFieldPath + | Date + | ExpressionOperators.$add + | ExpressionOperators.$dateAdd + | ExpressionOperators.$dateFromParts + | ExpressionOperators.$dateFromString + | ExpressionOperators.$dateSubtract + | ExpressionOperators.$dateTrunc + | ExpressionOperators.$subtract + | ExpressionOperators.$toDate; +export type ResolvesToNull = NullFieldPath | null; +export type ResolvesToRegex = RegexFieldPath | Regex; +export type ResolvesToJavascript = JavascriptFieldPath | Javascript; +export type ResolvesToInt = + | IntFieldPath + | Int + | ExpressionOperators.$add + | ExpressionOperators.$binarySize + | ExpressionOperators.$bitAnd + | ExpressionOperators.$bitNot + | ExpressionOperators.$bitOr + | ExpressionOperators.$bitXor + | ExpressionOperators.$bsonSize + | ExpressionOperators.$ceil + | ExpressionOperators.$cmp + | ExpressionOperators.$dateDiff + | ExpressionOperators.$dayOfMonth + | ExpressionOperators.$dayOfWeek + | ExpressionOperators.$dayOfYear + | ExpressionOperators.$floor + | ExpressionOperators.$hour + | ExpressionOperators.$indexOfArray + | ExpressionOperators.$indexOfBytes + | ExpressionOperators.$indexOfCP + | ExpressionOperators.$isoDayOfWeek + | ExpressionOperators.$isoWeek + | ExpressionOperators.$isoWeekYear + | ExpressionOperators.$millisecond + | ExpressionOperators.$minute + | ExpressionOperators.$mod + | ExpressionOperators.$month + | ExpressionOperators.$round + | ExpressionOperators.$second + | ExpressionOperators.$size + | ExpressionOperators.$strLenBytes + | ExpressionOperators.$strLenCP + | ExpressionOperators.$strcasecmp + | ExpressionOperators.$subtract + | ExpressionOperators.$toInt + | ExpressionOperators.$week + | ExpressionOperators.$year; +export type ResolvesToTimestamp = TimestampFieldPath | bson.Timestamp; +export type ResolvesToLong = + | LongFieldPath + | Long + | ExpressionOperators.$add + | ExpressionOperators.$bitAnd + | ExpressionOperators.$bitNot + | ExpressionOperators.$bitOr + | ExpressionOperators.$bitXor + | ExpressionOperators.$round + | ExpressionOperators.$subtract + | ExpressionOperators.$toHashedIndexKey + | ExpressionOperators.$toLong + | ExpressionOperators.$tsIncrement + | ExpressionOperators.$tsSecond; +export type ResolvesToDecimal = + | DecimalFieldPath + | bson.Decimal128 + | ExpressionOperators.$acos + | ExpressionOperators.$acosh + | ExpressionOperators.$add + | ExpressionOperators.$asin + | ExpressionOperators.$asinh + | ExpressionOperators.$atan + | ExpressionOperators.$atan2 + | ExpressionOperators.$atanh + | ExpressionOperators.$cos + | ExpressionOperators.$cosh + | ExpressionOperators.$degreesToRadians + | ExpressionOperators.$multiply + | ExpressionOperators.$radiansToDegrees + | ExpressionOperators.$round + | ExpressionOperators.$sin + | ExpressionOperators.$sinh + | ExpressionOperators.$subtract + | ExpressionOperators.$tan + | ExpressionOperators.$tanh + | ExpressionOperators.$toDecimal; +export type C_accumulator = + | AccumulatorOperators.$accumulator + | AccumulatorOperators.$addToSet + | AccumulatorOperators.$addToSet + | AccumulatorOperators.$avg + | AccumulatorOperators.$avg + | AccumulatorOperators.$bottom + | AccumulatorOperators.$bottom + | AccumulatorOperators.$bottomN + | AccumulatorOperators.$bottomN + | AccumulatorOperators.$count + | AccumulatorOperators.$count + | AccumulatorOperators.$covariancePop + | AccumulatorOperators.$covarianceSamp + | AccumulatorOperators.$denseRank + | AccumulatorOperators.$derivative + | AccumulatorOperators.$documentNumber + | AccumulatorOperators.$expMovingAvg + | AccumulatorOperators.$first + | AccumulatorOperators.$first + | AccumulatorOperators.$firstN + | AccumulatorOperators.$firstN + | AccumulatorOperators.$integral + | AccumulatorOperators.$last + | AccumulatorOperators.$last + | AccumulatorOperators.$lastN + | AccumulatorOperators.$lastN + | AccumulatorOperators.$linearFill + | AccumulatorOperators.$locf + | AccumulatorOperators.$max + | AccumulatorOperators.$max + | AccumulatorOperators.$maxN + | AccumulatorOperators.$maxN + | AccumulatorOperators.$median + | AccumulatorOperators.$median + | AccumulatorOperators.$mergeObjects + | AccumulatorOperators.$min + | AccumulatorOperators.$min + | AccumulatorOperators.$minN + | AccumulatorOperators.$minN + | AccumulatorOperators.$percentile + | AccumulatorOperators.$percentile + | AccumulatorOperators.$push + | AccumulatorOperators.$push + | AccumulatorOperators.$rank + | AccumulatorOperators.$shift + | AccumulatorOperators.$stdDevPop + | AccumulatorOperators.$stdDevPop + | AccumulatorOperators.$stdDevSamp + | AccumulatorOperators.$stdDevSamp + | AccumulatorOperators.$sum + | AccumulatorOperators.$sum + | AccumulatorOperators.$top + | AccumulatorOperators.$topN; +export type Window = + | AccumulatorOperators.$addToSet + | AccumulatorOperators.$avg + | AccumulatorOperators.$bottom + | AccumulatorOperators.$bottomN + | AccumulatorOperators.$count + | AccumulatorOperators.$covariancePop + | AccumulatorOperators.$covarianceSamp + | AccumulatorOperators.$denseRank + | AccumulatorOperators.$derivative + | AccumulatorOperators.$documentNumber + | AccumulatorOperators.$expMovingAvg + | AccumulatorOperators.$first + | AccumulatorOperators.$firstN + | AccumulatorOperators.$integral + | AccumulatorOperators.$last + | AccumulatorOperators.$lastN + | AccumulatorOperators.$linearFill + | AccumulatorOperators.$locf + | AccumulatorOperators.$max + | AccumulatorOperators.$maxN + | AccumulatorOperators.$median + | AccumulatorOperators.$min + | AccumulatorOperators.$minN + | AccumulatorOperators.$percentile + | AccumulatorOperators.$push + | AccumulatorOperators.$rank + | AccumulatorOperators.$shift + | AccumulatorOperators.$stdDevPop + | AccumulatorOperators.$stdDevSamp + | AccumulatorOperators.$sum; +export type C_expression = + | ExpressionOperators.$abs + | ExpressionOperators.$acos + | ExpressionOperators.$acos + | ExpressionOperators.$acosh + | ExpressionOperators.$acosh + | ExpressionOperators.$add + | ExpressionOperators.$add + | ExpressionOperators.$add + | ExpressionOperators.$add + | ExpressionOperators.$add + | ExpressionOperators.$allElementsTrue + | ExpressionOperators.$and + | ExpressionOperators.$anyElementTrue + | ExpressionOperators.$arrayElemAt + | ExpressionOperators.$arrayToObject + | ExpressionOperators.$asin + | ExpressionOperators.$asin + | ExpressionOperators.$asinh + | ExpressionOperators.$asinh + | ExpressionOperators.$atan + | ExpressionOperators.$atan + | ExpressionOperators.$atan2 + | ExpressionOperators.$atan2 + | ExpressionOperators.$atanh + | ExpressionOperators.$atanh + | ExpressionOperators.$avg + | ExpressionOperators.$binarySize + | ExpressionOperators.$bitAnd + | ExpressionOperators.$bitAnd + | ExpressionOperators.$bitNot + | ExpressionOperators.$bitNot + | ExpressionOperators.$bitOr + | ExpressionOperators.$bitOr + | ExpressionOperators.$bitXor + | ExpressionOperators.$bitXor + | ExpressionOperators.$bsonSize + | ExpressionOperators.$case + | ExpressionOperators.$ceil + | ExpressionOperators.$cmp + | ExpressionOperators.$concat + | ExpressionOperators.$concatArrays + | ExpressionOperators.$cond + | ExpressionOperators.$convert + | ExpressionOperators.$cos + | ExpressionOperators.$cos + | ExpressionOperators.$cosh + | ExpressionOperators.$cosh + | ExpressionOperators.$dateAdd + | ExpressionOperators.$dateDiff + | ExpressionOperators.$dateFromParts + | ExpressionOperators.$dateFromString + | ExpressionOperators.$dateSubtract + | ExpressionOperators.$dateToParts + | ExpressionOperators.$dateToString + | ExpressionOperators.$dateTrunc + | ExpressionOperators.$dayOfMonth + | ExpressionOperators.$dayOfWeek + | ExpressionOperators.$dayOfYear + | ExpressionOperators.$degreesToRadians + | ExpressionOperators.$degreesToRadians + | ExpressionOperators.$divide + | ExpressionOperators.$eq + | ExpressionOperators.$exp + | ExpressionOperators.$filter + | ExpressionOperators.$first + | ExpressionOperators.$firstN + | ExpressionOperators.$floor + | ExpressionOperators.$function + | ExpressionOperators.$getField + | ExpressionOperators.$gt + | ExpressionOperators.$gte + | ExpressionOperators.$hour + | ExpressionOperators.$ifNull + | ExpressionOperators.$in + | ExpressionOperators.$indexOfArray + | ExpressionOperators.$indexOfBytes + | ExpressionOperators.$indexOfCP + | ExpressionOperators.$isArray + | ExpressionOperators.$isNumber + | ExpressionOperators.$isoDayOfWeek + | ExpressionOperators.$isoWeek + | ExpressionOperators.$isoWeekYear + | ExpressionOperators.$last + | ExpressionOperators.$lastN + | ExpressionOperators.$let + | ExpressionOperators.$literal + | ExpressionOperators.$ln + | ExpressionOperators.$log + | ExpressionOperators.$log10 + | ExpressionOperators.$lt + | ExpressionOperators.$lte + | ExpressionOperators.$ltrim + | ExpressionOperators.$map + | ExpressionOperators.$max + | ExpressionOperators.$maxN + | ExpressionOperators.$median + | ExpressionOperators.$mergeObjects + | ExpressionOperators.$meta + | ExpressionOperators.$millisecond + | ExpressionOperators.$min + | ExpressionOperators.$minN + | ExpressionOperators.$minute + | ExpressionOperators.$mod + | ExpressionOperators.$month + | ExpressionOperators.$multiply + | ExpressionOperators.$ne + | ExpressionOperators.$not + | ExpressionOperators.$objectToArray + | ExpressionOperators.$or + | ExpressionOperators.$percentile + | ExpressionOperators.$pow + | ExpressionOperators.$radiansToDegrees + | ExpressionOperators.$radiansToDegrees + | ExpressionOperators.$rand + | ExpressionOperators.$range + | ExpressionOperators.$reduce + | ExpressionOperators.$regexFind + | ExpressionOperators.$regexFindAll + | ExpressionOperators.$regexMatch + | ExpressionOperators.$replaceAll + | ExpressionOperators.$replaceOne + | ExpressionOperators.$reverseArray + | ExpressionOperators.$round + | ExpressionOperators.$round + | ExpressionOperators.$round + | ExpressionOperators.$round + | ExpressionOperators.$rtrim + | ExpressionOperators.$second + | ExpressionOperators.$setDifference + | ExpressionOperators.$setEquals + | ExpressionOperators.$setField + | ExpressionOperators.$setIntersection + | ExpressionOperators.$setIsSubset + | ExpressionOperators.$setUnion + | ExpressionOperators.$sin + | ExpressionOperators.$sin + | ExpressionOperators.$sinh + | ExpressionOperators.$sinh + | ExpressionOperators.$size + | ExpressionOperators.$slice + | ExpressionOperators.$sortArray + | ExpressionOperators.$split + | ExpressionOperators.$sqrt + | ExpressionOperators.$stdDevPop + | ExpressionOperators.$stdDevSamp + | ExpressionOperators.$strLenBytes + | ExpressionOperators.$strLenCP + | ExpressionOperators.$strcasecmp + | ExpressionOperators.$substr + | ExpressionOperators.$substrBytes + | ExpressionOperators.$substrCP + | ExpressionOperators.$subtract + | ExpressionOperators.$subtract + | ExpressionOperators.$subtract + | ExpressionOperators.$subtract + | ExpressionOperators.$subtract + | ExpressionOperators.$sum + | ExpressionOperators.$switch + | ExpressionOperators.$tan + | ExpressionOperators.$tan + | ExpressionOperators.$tanh + | ExpressionOperators.$tanh + | ExpressionOperators.$toBool + | ExpressionOperators.$toDate + | ExpressionOperators.$toDecimal + | ExpressionOperators.$toDouble + | ExpressionOperators.$toHashedIndexKey + | ExpressionOperators.$toInt + | ExpressionOperators.$toLong + | ExpressionOperators.$toLower + | ExpressionOperators.$toObjectId + | ExpressionOperators.$toString + | ExpressionOperators.$toUpper + | ExpressionOperators.$trim + | ExpressionOperators.$trunc + | ExpressionOperators.$tsIncrement + | ExpressionOperators.$tsSecond + | ExpressionOperators.$type + | ExpressionOperators.$unsetField + | ExpressionOperators.$week + | ExpressionOperators.$year + | ExpressionOperators.$zip; +export type ResolvesToAny = + | ExpressionOperators.$arrayElemAt + | ExpressionOperators.$cond + | ExpressionOperators.$convert + | ExpressionOperators.$first + | ExpressionOperators.$function + | ExpressionOperators.$getField + | ExpressionOperators.$ifNull + | ExpressionOperators.$last + | ExpressionOperators.$let + | ExpressionOperators.$literal + | ExpressionOperators.$max + | ExpressionOperators.$meta + | ExpressionOperators.$min + | ExpressionOperators.$reduce + | ExpressionOperators.$switch; +export type SwitchBranch = ExpressionOperators.$case; +export type FieldQuery = + | QueryOperators.$all + | QueryOperators.$bitsAllClear + | QueryOperators.$bitsAllSet + | QueryOperators.$bitsAnyClear + | QueryOperators.$bitsAnySet + | QueryOperators.$elemMatch + | QueryOperators.$eq + | QueryOperators.$exists + | QueryOperators.$geoIntersects + | QueryOperators.$geoWithin + | QueryOperators.$gt + | QueryOperators.$gte + | QueryOperators.$in + | QueryOperators.$lt + | QueryOperators.$lte + | QueryOperators.$maxDistance + | QueryOperators.$minDistance + | QueryOperators.$mod + | QueryOperators.$ne + | QueryOperators.$near + | QueryOperators.$nearSphere + | QueryOperators.$nin + | QueryOperators.$not + | QueryOperators.$regex + | QueryOperators.$size + | QueryOperators.$type; +export type C_query = + | QueryOperators.$all + | QueryOperators.$and + | QueryOperators.$bitsAllClear + | QueryOperators.$bitsAllSet + | QueryOperators.$bitsAnyClear + | QueryOperators.$bitsAnySet + | QueryOperators.$box + | QueryOperators.$center + | QueryOperators.$centerSphere + | QueryOperators.$comment + | QueryOperators.$elemMatch + | QueryOperators.$eq + | QueryOperators.$exists + | QueryOperators.$expr + | QueryOperators.$geoIntersects + | QueryOperators.$geoWithin + | QueryOperators.$geometry + | QueryOperators.$gt + | QueryOperators.$gte + | QueryOperators.$in + | QueryOperators.$jsonSchema + | QueryOperators.$lt + | QueryOperators.$lte + | QueryOperators.$maxDistance + | QueryOperators.$minDistance + | QueryOperators.$mod + | QueryOperators.$ne + | QueryOperators.$near + | QueryOperators.$nearSphere + | QueryOperators.$nin + | QueryOperators.$nor + | QueryOperators.$not + | QueryOperators.$or + | QueryOperators.$polygon + | QueryOperators.$rand + | QueryOperators.$regex + | QueryOperators.$sampleRate + | QueryOperators.$size + | QueryOperators.$text + | QueryOperators.$type + | QueryOperators.$where; +export type C_search = + | SearchOperators.Autocomplete + | SearchOperators.Compound + | SearchOperators.EmbeddedDocument + | SearchOperators.Equals + | SearchOperators.Exists + | SearchOperators.Facet + | SearchOperators.GeoShape + | SearchOperators.GeoWithin + | SearchOperators.In + | SearchOperators.MoreLikeThis + | SearchOperators.Near + | SearchOperators.Phrase + | SearchOperators.QueryString + | SearchOperators.Range + | SearchOperators.Regex + | SearchOperators.Text + | SearchOperators.Wildcard; +export type C_stage = + | StageOperators.$addFields + | StageOperators.$bucket + | StageOperators.$bucketAuto + | StageOperators.$changeStream + | StageOperators.$changeStreamSplitLargeEvent + | StageOperators.$collStats + | StageOperators.$count + | StageOperators.$currentOp + | StageOperators.$densify + | StageOperators.$documents + | StageOperators.$facet + | StageOperators.$fill + | StageOperators.$geoNear + | StageOperators.$graphLookup + | StageOperators.$group + | StageOperators.$indexStats + | StageOperators.$limit + | StageOperators.$listLocalSessions + | StageOperators.$listSampledQueries + | StageOperators.$listSearchIndexes + | StageOperators.$listSessions + | StageOperators.$lookup + | StageOperators.$match + | StageOperators.$merge + | StageOperators.$out + | StageOperators.$planCacheStats + | StageOperators.$project + | StageOperators.$redact + | StageOperators.$replaceRoot + | StageOperators.$replaceWith + | StageOperators.$sample + | StageOperators.$search + | StageOperators.$searchMeta + | StageOperators.$set + | StageOperators.$setWindowFields + | StageOperators.$shardedDataDistribution + | StageOperators.$skip + | StageOperators.$sort + | StageOperators.$sortByCount + | StageOperators.$unionWith + | StageOperators.$unset + | StageOperators.$unwind + | StageOperators.$vectorSearch; diff --git a/packages/mql-typescript/out/test.ts b/packages/mql-typescript/out/test.ts new file mode 100644 index 00000000..b5a4e65f --- /dev/null +++ b/packages/mql-typescript/out/test.ts @@ -0,0 +1,40 @@ +import * as schema from './schema'; +import type * as bson from 'bson'; + +type Doc = { + _id: bson.ObjectId; + name: string; + age: number; + address: string; + phone: string; + email: string; + hobbies: string[]; + createdAt: Date; + updatedAt: Date; +}; + +const pipeline: schema.Pipeline = [ + { + $match: { + $and: [ + { + name: 'John', + }, + { + $gt: { + age: 18, + }, + }, + { + age: 18, + }, + ], + }, + }, + { + $match: { + name: 'John', + age: 18, + }, + }, +]; diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json new file mode 100644 index 00000000..905f7e69 --- /dev/null +++ b/packages/mql-typescript/package.json @@ -0,0 +1,79 @@ +{ + "name": "@mongodb-js/mql-typescript", + "description": "TS definitions for the MongoDB aggregation API", + "author": { + "name": "MongoDB Inc", + "email": "compass@mongodb.com" + }, + "publishConfig": { + "access": "public" + }, + "bugs": { + "url": "https://jira.mongodb.org/projects/COMPASS/issues", + "email": "compass@mongodb.com" + }, + "homepage": "https://github.com/mongodb-js/devtools-shared", + "version": "0.1.0", + "repository": { + "type": "git", + "url": "https://github.com/mongodb-js/devtools-shared.git" + }, + "files": [ + "dist" + ], + "license": "Apache-2.0", + "main": "dist/index.js", + "exports": { + "require": "./dist/index.js", + "import": "./dist/.esm-wrapper.mjs" + }, + "types": "./dist/index.d.ts", + "scripts": { + "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", + "prestart": "npm run extract-metaschema", + "start": "ts-node src/index.ts > out/schema.ts && npm run prettier -- --write out/schema.ts", + "bootstrap": "npm run compile", + "prepublishOnly": "npm run compile", + "compile": "tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs", + "typecheck": "tsc --noEmit", + "eslint": "eslint", + "prettier": "prettier", + "lint": "npm run eslint . && npm run prettier -- --check .", + "depcheck": "depcheck", + "check": "npm run typecheck && npm run lint && npm run depcheck", + "check-ci": "npm run check", + "test": "mocha", + "test-cov": "nyc -x \"**/*.spec.*\" --reporter=lcov --reporter=text --reporter=html npm run test", + "test-watch": "npm run test -- --watch", + "test-ci": "npm run test-cov", + "reformat": "npm run prettier -- --write ." + }, + "devDependencies": { + "@mongodb-js/eslint-config-devtools": "0.9.10", + "@mongodb-js/mocha-config-devtools": "^1.0.4", + "@mongodb-js/prettier-config-devtools": "^1.0.1", + "@mongodb-js/tsconfig-devtools": "^1.0.2", + "@types/chai": "^5.2.0", + "@types/js-yaml": "^4.0.9", + "@types/mocha": "^10.0.10", + "@types/node": "^22.13.10", + "@types/sinon-chai": "^4.0.0", + "chai": "^5.2.0", + "depcheck": "^1.4.7", + "eslint": "^9.22.0", + "gen-esm-wrapper": "^1.1.3", + "json-refs": "^3.0.15", + "json-schema-to-zod": "^2.6.0", + "mocha": "^11.1.0", + "nyc": "^17.1.0", + "prettier": "^3.5.3", + "sinon": "^19.0.2", + "ts-node": "^10.9.2", + "typescript": "^5.8.2" + }, + "dependencies": { + "bson": "^6.10.3", + "js-yaml": "^4.1.0", + "zod": "^3.24.2" + } +} diff --git a/packages/mql-typescript/src/index.spec.ts b/packages/mql-typescript/src/index.spec.ts new file mode 100644 index 00000000..e69de29b diff --git a/packages/mql-typescript/src/index.ts b/packages/mql-typescript/src/index.ts new file mode 100644 index 00000000..a6f4cefa --- /dev/null +++ b/packages/mql-typescript/src/index.ts @@ -0,0 +1,499 @@ +import * as yaml from 'js-yaml'; +import * as fs from 'fs/promises'; +import * as path from 'path'; +import * as bson from 'bson'; +import { Operator } from './metaschema'; +import { StringWriter } from './utils'; + +type ArgType = NonNullable< + typeof Operator._type.arguments +>[number]['type'][number]; + +const loadOptions: yaml.LoadOptions = { + schema: yaml.DEFAULT_SCHEMA.extend([ + new yaml.Type('!bson_utcdatetime', { + kind: 'scalar', + construct(data) { + return new Date(data); + }, + }), + new yaml.Type('!bson_objectId', { + kind: 'scalar', + construct(data) { + return bson.ObjectId.createFromHexString(data); + }, + }), + new yaml.Type('!bson_uuid', { + kind: 'scalar', + construct(data) { + return bson.UUID.createFromHexString(data); + }, + }), + new yaml.Type('!bson_regex', { + kind: 'scalar', + construct(data) { + return new bson.BSONRegExp(data); + }, + }), + new yaml.Type('!bson_regex', { + kind: 'sequence', + construct([data, flags]) { + return new bson.BSONRegExp(data, flags); + }, + }), + new yaml.Type('!bson_binary', { + kind: 'scalar', + construct([data]) { + return bson.Binary.createFromBase64(data); + }, + }), + new yaml.Type('!bson_decimal128', { + kind: 'scalar', + construct([data]) { + return bson.Decimal128.fromString(data); + }, + }), + ]), +}; + +async function* listCategories(): AsyncIterable<{ + category: string; + folder: string; +}> { + const configDir = path.join( + __dirname, + '..', + 'mongo-php-library', + 'generator', + 'config' + ); + + for await (const folder of await fs.readdir(configDir, { + withFileTypes: true, + })) { + if (folder.isDirectory()) { + yield { + category: folder.name, + folder: path.join(folder.parentPath, folder.name), + }; + } + } +} + +async function* listSourceYAMLFiles(): AsyncIterable<{ + category: string; + operators: () => AsyncIterable<{ yaml: unknown }>; +}> { + for await (const { category, folder } of listCategories()) { + yield { + category, + operators: async function* () { + for await (const file of await fs.readdir(folder, { + withFileTypes: true, + })) { + if (file.isFile() && file.name.endsWith('.yaml')) { + const filePath = path.join(file.parentPath, file.name); + const content = await fs.readFile(filePath, 'utf8'); + const parsed = yaml.load(content, loadOptions); + yield { yaml: parsed }; + } + } + }, + }; + } +} + +function toComment(str?: string, docsUrl?: string): string { + if (!str) { + return ''; + } + + return [ + '', + '', + '/**', + ...str + .replace(/\*\//g, '*//*') + .split('\n') + .map((l) => l.trim()) + .filter((l) => l) + .map((l) => ` * ${l}`), + ...(docsUrl ? [` * @see {@link ${docsUrl}}`] : []), + ' */', + '', + ].join('\n'); +} + +function emitComment(str: string, docsUrl?: string): void { + emit(toComment(str, docsUrl)); +} + +function getArgumentTypeName(type: ArgType): string | undefined { + if (typeMappings[type]) { + return toTypeName(type); + } + + if (typeMappings[`${type}_S`]) { + return toTypeName(`${type}`); + } + + if (trivialTypeMappings[type]) { + return trivialTypeMappings[type]; + } + + return undefined; +} + +function toTypeName(type: string): string { + return trivialTypeMappings[type as ArgType] ?? capitalize(type); +} + +function toTypeFieldTypeName(type: string): string { + return '`$${AFieldPath}`'; +} + +let outputBuffer: StringWriter | undefined; +function emit(str: string): void { + (outputBuffer ?? process.stdout).write(str); +} + +function getOutputOf(fn: () => void): string { + outputBuffer = new StringWriter(); + fn(); + const output = outputBuffer.toString(); + outputBuffer = undefined; + return output; +} + +function emitHeader(): void { + emit(` + import type * as bson from 'bson'; + + // from Node.js driver + type Condition = AlternativeType; // misses FilterOperators + type AlternativeType = + T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; + type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; + type KeysOfAType = { + [k in keyof T]: NonNullable extends Type ? k : never; + }[keyof T]; + type RecordWithStaticFields, TValue> = T & { + [key: string]: TValue | T[keyof T]; + }; + + // TBD: Nested fields + type AFieldPath = KeysOfAType & string; + `); +} + +const trivialTypeMappings: Partial> = { + any: 'any', + bool: 'boolean', + date: 'Date', + null: 'null', + timestamp: 'bson.Timestamp', + decimal: 'bson.Decimal128', + array: 'unknown[]', + binData: 'bson.Binary', + objectId: 'bson.ObjectId', + object: 'Record', + string: 'string', +}; + +const typeMappings: Record = { + int: ['number', 'bson.Int32'], + double: ['number', 'bson.Double'], + regex: ['RegExp', 'bson.BSONRegExp'], + long: ['bigint', 'bson.Long'], + javascript: ['bson.Code', 'Function'], + + number: [ + toTypeName('int'), + toTypeName('long'), + toTypeName('double'), + toTypeName('decimal'), + ], + bsonPrimitive: [ + toTypeName('number'), + toTypeName('binData'), + toTypeName('objectId'), + 'string', + toTypeName('bool'), + toTypeName('date'), + toTypeName('null'), + toTypeName('regex'), + toTypeName('javascript'), + toTypeName('timestamp'), + ], + + // Can be improved: + searchPath: ['string', 'string[]'], + searchScore: ['unknown'], + granularity: ['string'], + fullDocument: ['string'], + fullDocumentBeforeChange: ['string'], + accumulatorPercentile: ['string'], + range: ['unknown'], + sortBy: ['unknown'], + geoPoint: ['unknown'], + sortSpec: ['-1', '1'], + timeUnit: [ + '"week"', + '"day"', + '"hour"', + '"minute"', + '"second"', + '"millisecond"', + ], + outCollection: ['unknown'], + whenMatched: ['string'], + whenNotMatched: ['string'], + + expression_S: [ + toTypeName('C_expression'), + toTypeName('fieldPath'), + toTypeName('bsonPrimitive'), + ], + stage_S: [toTypeName('C_stage')], + pipeline_S: [toTypeName('stage[]')], + query_S: [ + toTypeName('C_query'), + 'Partial<{ [k in keyof S]: Condition }>', + ], + accumulator_S: [], + searchOperator_S: [], + geometry_S: [], + + // Need to be adjusted to match the real schema + fieldPath_S: ['`$${AFieldPath}`'], + numberFieldPath_S: [toTypeFieldTypeName('number')], + doubleFieldPath_S: [toTypeFieldTypeName('double')], + stringFieldPath_S: [toTypeFieldTypeName('string')], + objectFieldPath_S: [toTypeFieldTypeName('object')], + arrayFieldPath_S: [toTypeFieldTypeName('array')], + binDataFieldPath_S: [toTypeFieldTypeName('binData')], + objectIdFieldPath_S: [toTypeFieldTypeName('objectId')], + boolFieldPath_S: [toTypeFieldTypeName('bool')], + dateFieldPath_S: [toTypeFieldTypeName('date')], + nullFieldPath_S: [toTypeFieldTypeName('null')], + regexFieldPath_S: [toTypeFieldTypeName('regex')], + javascriptFieldPath_S: [toTypeFieldTypeName('javascript')], + intFieldPath_S: [toTypeFieldTypeName('int')], + timestampFieldPath_S: [toTypeFieldTypeName('timestamp')], + longFieldPath_S: [toTypeFieldTypeName('long')], + decimalFieldPath_S: [toTypeFieldTypeName('decimal')], + + resolvesToNumber_S: [toTypeName('numberFieldPath'), toTypeName('number')], + resolvesToDouble_S: [toTypeName('doubleFieldPath'), toTypeName('double')], + resolvesToString_S: [toTypeName('stringFieldPath'), toTypeName('string')], + resolvesToObject_S: [toTypeName('objectFieldPath'), toTypeName('object')], + resolvesToArray_S: [toTypeName('arrayFieldPath'), toTypeName('array')], + resolvesToBinData_S: [ + toTypeName('binDataFieldPath'), + toTypeName('binData'), + ], + resolvesToObjectId_S: [ + toTypeName('objectIdFieldPath'), + toTypeName('objectId'), + ], + resolvesToBool_S: [toTypeName('boolFieldPath'), toTypeName('bool')], + resolvesToDate_S: [toTypeName('dateFieldPath'), toTypeName('date')], + resolvesToNull_S: [toTypeName('nullFieldPath'), toTypeName('null')], + resolvesToRegex_S: [toTypeName('regexFieldPath'), toTypeName('regex')], + resolvesToJavascript_S: [ + toTypeName('javascriptFieldPath'), + toTypeName('javascript'), + ], + resolvesToInt_S: [toTypeName('intFieldPath'), toTypeName('int')], + resolvesToTimestamp_S: [ + toTypeName('timestampFieldPath'), + toTypeName('timestamp'), + ], + resolvesToLong_S: [toTypeName('longFieldPath'), toTypeName('long')], + resolvesToDecimal_S: [ + toTypeName('decimalFieldPath'), + toTypeName('decimal'), + ], +}; + +function capitalize(str: string): string { + return str[0].toUpperCase() + str.slice(1); +} + +function emitArg( + arg: NonNullable[number], + named: boolean +): void { + if (named) { + emit(`${arg.name}${arg.optional ? '?' : ''}: `); + } + + for (const type of arg.type) { + const name = getArgumentTypeName(type); + + if (!name) { + throw new Error(`Unknown type ${type}`); + } + + emit(`| ${name}`); + } +} + +async function emitTypes(): Promise { + for await (const file of listSourceYAMLFiles()) { + const namespace = `${capitalize(file.category)}Operators`; + emit(`export namespace ${namespace} {\n`); + + for await (const operator of file.operators()) { + const parsed = Operator.parse(operator.yaml); + const ifaceName = capitalize(parsed.name); + + emitComment( + `A type describing the \`${parsed.name}\` operator.`, + parsed.link + ); + emit(`export interface ${ifaceName} {`); + if (parsed.description) { + emitComment(parsed.description, parsed.link); + } + emit(`${parsed.name}:`); + for (const type of parsed.type) { + (typeMappings[`${type}_S`] ??= []).push(`${namespace}.${ifaceName}`); + } + for (const type of parsed.type) { + // TODO: why? + (typeMappings[`C_${file.category}_S`] ??= []).push( + `${namespace}.${ifaceName}` + ); + } + if (!parsed.arguments) { + emit(`Record`); + } else { + let encode = parsed.encode; + if (encode === 'single') { + if (parsed.arguments.length !== 1) { + throw new Error( + 'encode: single should imply arguments.length === 1' + ); + } + if (parsed.arguments[0].variadic) { + encode = parsed.arguments[0].variadic; + } + } + switch (encode) { + case 'array': + case 'object': + // We're temporarily switching to writing to an in-memory buffer in case we need to merge objects. Due to + // limitations of merging objects with records, we need to use some type magic, requiring a helper type. + // { foo: number } & { [key: string]: string } results in foo being a string due to the indexer. To avoid it + // we need to use RecordWithStaticFields<{ foo: number}, string> + const mergedArgs: typeof parsed.arguments[number][] = []; + const objectType = getOutputOf(() => { + emit(encode === 'array' ? '[' : '{'); + for (const arg of parsed.arguments!) { + if (arg.mergeObject) { + mergedArgs.push(arg); + continue; + } + if (arg.description) { + emitComment(arg.description); + } + + if (arg.variadic === 'array') { + for (let i = 0; i < (arg.variadicMin ?? 0); i++) { + emitArg(arg, false); + emit(','); + } + emit('...('); + emitArg(arg, false); + emit(')[]'); + } else if (arg.variadic === 'object') { + emit(`} & { [${arg.name}: string]: `); + emitArg(arg, false); + } else { + emitArg(arg, true); + } + emit(','); + } + emit(encode === 'array' ? ']' : '}'); + }); + + switch (mergedArgs.length) { + case 0: + emit(objectType); + break; + case 1: + const arg = mergedArgs[0]; + switch (arg.variadic) { + case 'object': + if (objectType === '{}') { + emit(`{ [${arg.name}: string]: `); + emitArg(arg, false); + emit(`}`); + } else { + emit( + `RecordWithStaticFields<${objectType}, ${toComment( + arg.description + )} ${arg.type + .map((t) => getArgumentTypeName(t)) + .join(' | ')}>` + ); + } + break; + case 'array': + throw new Error( + `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}` + ); + case undefined: + emitArg(arg, false); + break; + } + break; + default: + throw new Error( + `Unsupported number of mergeObject arguments: ${ + mergedArgs.length + }, ${namespace}.${ifaceName}.{${mergedArgs + .map((a) => a.name) + .join(', ')}}` + ); + } + break; + case 'single': + if (parsed.arguments.length !== 1) { + throw new Error( + 'encode: single should imply arguments.length === 1' + ); + } + emitArg(parsed.arguments[0], false); + + break; + default: + throw new Error(`unknown encode mode ${parsed.encode}`); + } + } + emit('};\n'); + } + + emit('};\n'); + } + + for (const [type, interfaces] of Object.entries(typeMappings)) { + const isTemplated = type.endsWith('_S'); + const name = isTemplated ? type.replace(/_S$/, '') : type; + emit( + `\nexport type ${toTypeName(name)}${isTemplated ? '' : ''} = |` + + interfaces + .map((i) => `(${i}${i.endsWith('_S') ? '' : ''})`) + .join('|') + + ';' + ); + } +} + +async function main(): Promise { + emitHeader(); + await emitTypes(); +} + +main(); diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts new file mode 100644 index 00000000..ab81a206 --- /dev/null +++ b/packages/mql-typescript/src/metaschema.ts @@ -0,0 +1,147 @@ +import { z } from 'zod'; + +export const Operator = z + .object({ + name: z.string().regex(new RegExp('^\\$?[a-z][a-zA-Z0-9]*$')), + link: z.string().url().regex(new RegExp('^https://')), + type: z.array( + z.enum([ + 'accumulator', + 'stage', + 'query', + 'fieldQuery', + 'filter', + 'window', + 'geometry', + 'switchBranch', + 'resolvesToAny', + 'resolvesToNumber', + 'resolvesToDouble', + 'resolvesToString', + 'resolvesToObject', + 'resolvesToArray', + 'resolvesToBinData', + 'resolvesToObjectId', + 'resolvesToBool', + 'resolvesToDate', + 'resolvesToNull', + 'resolvesToRegex', + 'resolvesToJavascript', + 'resolvesToInt', + 'resolvesToTimestamp', + 'resolvesToLong', + 'resolvesToDecimal', + 'searchOperator', + ]) + ), + encode: z.enum(['array', 'object', 'single']), + description: z.string(), + wrapObject: z.boolean().default(true), + arguments: z + .array( + z + .object({ + name: z.string().regex(new RegExp('^([_$]?[a-z][a-zA-Z0-9]*|N)$')), + type: z.array( + z.enum([ + 'accumulator', + 'query', + 'fieldQuery', + 'pipeline', + 'window', + 'expression', + 'geometry', + 'fieldPath', + 'timeUnit', + 'sortSpec', + 'any', + 'granularity', + 'fullDocument', + 'fullDocumentBeforeChange', + 'accumulatorPercentile', + 'whenMatched', + 'whenNotMatched', + 'outCollection', + 'range', + 'sortBy', + 'geoPoint', + 'resolvesToNumber', + 'numberFieldPath', + 'number', + 'resolvesToDouble', + 'doubleFieldPath', + 'double', + 'resolvesToString', + 'stringFieldPath', + 'string', + 'resolvesToObject', + 'objectFieldPath', + 'object', + 'resolvesToArray', + 'arrayFieldPath', + 'array', + 'resolvesToBinData', + 'binDataFieldPath', + 'binData', + 'resolvesToObjectId', + 'objectIdFieldPath', + 'objectId', + 'resolvesToBool', + 'boolFieldPath', + 'bool', + 'resolvesToDate', + 'dateFieldPath', + 'date', + 'resolvesToNull', + 'nullFieldPath', + 'null', + 'resolvesToRegex', + 'regexFieldPath', + 'regex', + 'resolvesToJavascript', + 'javascriptFieldPath', + 'javascript', + 'resolvesToInt', + 'intFieldPath', + 'int', + 'resolvesToTimestamp', + 'timestampFieldPath', + 'timestamp', + 'resolvesToLong', + 'longFieldPath', + 'long', + 'resolvesToDecimal', + 'decimalFieldPath', + 'decimal', + 'searchPath', + 'searchScore', + 'searchOperator', + ]) + ), + description: z.string().optional(), + optional: z.boolean().optional(), + valueMin: z.number().optional(), + valueMax: z.number().optional(), + variadic: z.enum(['array', 'object']).optional(), + variadicMin: z.number().int().gte(0).optional(), + default: z + .union([z.array(z.any()), z.boolean(), z.number(), z.string()]) + .optional(), + mergeObject: z.boolean().default(false), + }) + .strict() + ) + .optional(), + tests: z + .array( + z + .object({ + name: z.string().optional(), + link: z.string().url().regex(new RegExp('^https://')).optional(), + pipeline: z.array(z.record(z.any())).optional(), + }) + .strict() + ) + .optional(), + }) + .strict(); diff --git a/packages/mql-typescript/src/utils.ts b/packages/mql-typescript/src/utils.ts new file mode 100644 index 00000000..9451b6b4 --- /dev/null +++ b/packages/mql-typescript/src/utils.ts @@ -0,0 +1,13 @@ +import { unknown } from 'zod'; + +export class StringWriter { + private buffer: string = ''; + + public write(text: string) { + this.buffer += text; + } + + public toString() { + return this.buffer; + } +} diff --git a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts new file mode 100644 index 00000000..f6ccbbb5 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts @@ -0,0 +1,45 @@ +import * as schema from '../../out/schema'; + +type Books = { + _id: 8751; + title: 'The Banquet'; + author: 'Dante'; + copies: 2; +}; + +const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$author', + avgCopies: { + $accumulator: { + init: function () { + // Set the initial state + return { count: 0, sum: 0 }; + }, + accumulate: function (state, numCopies) { + // Define how to update the state + return { + count: state.count + 1, + sum: state.sum + numCopies, + }; + }, + accumulateArgs: ['$copies'], // Argument required by the accumulate function + merge: function (state1, state2) { + // When the operator performs a merge, + return { + // add the fields from the two states + count: state1.count + state2.count, + sum: state1.sum + state2.sum, + }; + }, + finalize: function (state) { + // After collecting the results from all documents, + return state.sum / state.count; // calculate the average + }, + lang: 'js', + }, + }, + }, + }, +]; diff --git a/packages/mql-typescript/tests/stage/bucket.spec.ts b/packages/mql-typescript/tests/stage/bucket.spec.ts new file mode 100644 index 00000000..fda7b56c --- /dev/null +++ b/packages/mql-typescript/tests/stage/bucket.spec.ts @@ -0,0 +1,34 @@ +import * as schema from '../../out/schema'; + +type Artists = { + _id: number; + last_name: string; + first_name: string; + year_born: number; + year_died: number; + nationality: string; +}; + +const stage1: schema.StageOperators.$bucket = { + $bucket: { + groupBy: '$year_born', // Field to group by + boundaries: [1840, 1850, 1860, 1870, 1880], // Boundaries for the buckets + default: 'Other', // Bucket ID for documents which do not fall into a bucket + output: { + // Output for each bucket + count: { $sum: 1 }, + artists: { + $push: { + name: { $concat: ['$first_name', ' ', '$last_name'] }, + year_born: '$year_born', + }, + }, + }, + }, +}; + +const stage2: schema.StageOperators.$match = { + $match: { count: { $gt: 3 } }, +}; + +const aggregation: schema.Pipeline = [stage1, stage2]; diff --git a/packages/mql-typescript/tsconfig-lint.json b/packages/mql-typescript/tsconfig-lint.json new file mode 100644 index 00000000..6bdef84f --- /dev/null +++ b/packages/mql-typescript/tsconfig-lint.json @@ -0,0 +1,5 @@ +{ + "extends": "./tsconfig.json", + "include": ["**/*"], + "exclude": ["node_modules", "dist"] +} diff --git a/packages/mql-typescript/tsconfig.json b/packages/mql-typescript/tsconfig.json new file mode 100644 index 00000000..156674a5 --- /dev/null +++ b/packages/mql-typescript/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "@mongodb-js/tsconfig-devtools/tsconfig.common.json", + "compilerOptions": { + "outDir": "dist", + "allowJs": true, + "strict": true + }, + "include": ["src/**/*"], + "exclude": ["./src/**/*.spec.*"] +} From 3c3b63b167646c20c49adcff41e885a347993dc7 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 20 Mar 2025 01:02:04 +0100 Subject: [PATCH 02/26] Generate some tests --- package-lock.json | 821 ++++++++++++++++-- packages/mql-typescript/.prettierignore | 1 + packages/mql-typescript/out/schema.ts | 66 +- packages/mql-typescript/package.json | 11 +- packages/mql-typescript/src/generator.ts | 155 ++++ packages/mql-typescript/src/index.spec.ts | 0 packages/mql-typescript/src/index.ts | 522 +---------- .../mql-typescript/src/schemaGenerator.ts | 476 ++++++++++ packages/mql-typescript/src/testGenerator.ts | 161 ++++ packages/mql-typescript/src/utils.ts | 10 +- .../tests/accumulator/$accumulator.spec.ts | 79 ++ .../tests/accumulator/$addToSet.spec.ts | 17 + .../tests/accumulator/$avg.spec.ts | 17 + .../tests/accumulator/$bottom.spec.ts | 38 + .../tests/accumulator/accumulator.spec.ts | 45 - .../mql-typescript/tests/stage/bucket.spec.ts | 34 - 16 files changed, 1785 insertions(+), 668 deletions(-) create mode 100644 packages/mql-typescript/src/generator.ts delete mode 100644 packages/mql-typescript/src/index.spec.ts create mode 100644 packages/mql-typescript/src/schemaGenerator.ts create mode 100644 packages/mql-typescript/src/testGenerator.ts create mode 100644 packages/mql-typescript/tests/accumulator/$accumulator.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/$addToSet.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/$avg.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/$bottom.spec.ts delete mode 100644 packages/mql-typescript/tests/accumulator/accumulator.spec.ts delete mode 100644 packages/mql-typescript/tests/stage/bucket.spec.ts diff --git a/package-lock.json b/package-lock.json index 08430277..9cd2070a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -168,6 +168,25 @@ "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/css-color": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", + "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", + "license": "MIT", + "dependencies": { + "@csstools/css-calc": "^2.1.2", + "@csstools/css-color-parser": "^3.0.8", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + } + }, + "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, "node_modules/@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -2014,6 +2033,116 @@ "@jridgewell/sourcemap-codec": "^1.4.10" } }, + "node_modules/@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT-0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "dependencies": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^3.0.3" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/@dabh/diagnostics": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", @@ -7203,6 +7332,18 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -7517,6 +7658,13 @@ "integrity": "sha512-jRtyvEu0Na/sy0oIxBW0f6wPQjidgVqlmCTJVHEGTNEUdL1f0YSvdPzHY7nX7MUWAZS6zcAa0KkqofHjy/xDZQ==", "dev": true }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/triple-beam": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", @@ -8244,12 +8392,10 @@ "dev": true }, "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dependencies": { - "debug": "^4.3.4" - }, + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", "engines": { "node": ">= 14" } @@ -9710,6 +9856,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "optional": true, + "dependencies": { + "colors": "1.0.3" + }, + "engines": { + "node": ">= 0.2.0" + } + }, "node_modules/cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -9885,6 +10043,16 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "license": "MIT" }, + "node_modules/colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -10387,20 +10555,23 @@ } }, "node_modules/cssstyle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", - "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", + "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", + "license": "MIT", "dependencies": { - "rrweb-cssom": "^0.6.0" + "@asamuzakjp/css-color": "^3.1.1", + "rrweb-cssom": "^0.8.0" }, "engines": { "node": ">=18" } }, "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "license": "MIT" }, "node_modules/csstype": { "version": "3.1.3", @@ -15010,11 +15181,12 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" }, "engines": { @@ -16024,6 +16196,13 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "node_modules/isnumber": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isnumber/-/isnumber-1.0.0.tgz", + "integrity": "sha512-JLiSz/zsZcGFXPrB4I/AGBvtStkt+8QmksyZBZnVXnnK9XdTEyz0tX8CRYljtwYDuIuZzih6DpHQdi+3Q6zHPw==", + "license": "MIT", + "optional": true + }, "node_modules/isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -16511,6 +16690,7 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -19276,13 +19456,13 @@ } }, "node_modules/mongodb": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", - "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", + "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", "license": "Apache-2.0", "dependencies": { - "@mongodb-js/saslprep": "^1.1.5", - "bson": "^6.7.0", + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.3", "mongodb-connection-string-url": "^3.0.0" }, "engines": { @@ -19290,7 +19470,7 @@ }, "peerDependencies": { "@aws-sdk/credential-providers": "^3.188.0", - "@mongodb-js/zstd": "^1.1.0", + "@mongodb-js/zstd": "^1.1.0 || ^2.0.0", "gcp-metadata": "^5.2.0", "kerberos": "^2.0.1", "mongodb-client-encryption": ">=6.0.0 <7", @@ -19389,6 +19569,13 @@ "resolved": "packages/mongodb-log-writer", "link": true }, + "node_modules/mongodb-ns": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mongodb-ns/-/mongodb-ns-2.4.2.tgz", + "integrity": "sha512-gYJjEYG4v4a1WSXgUf81OBoBRlj+Z1SlnQVO392fC/4a1CN7CLWDITajZWPFTPh/yRozYk6sHHtZwZmQhodBEA==", + "license": "MIT", + "optional": true + }, "node_modules/mongodb-query-parser": { "resolved": "packages/query-parser", "link": true @@ -19401,6 +19588,93 @@ "resolved": "packages/mongodb-runner", "link": true }, + "node_modules/mongodb-schema": { + "version": "12.5.2", + "resolved": "https://registry.npmjs.org/mongodb-schema/-/mongodb-schema-12.5.2.tgz", + "integrity": "sha512-gukbasp1udtpI79PDeGvbTGB14vO099Gm2/LNsJ+HunL1EqcdeWh+T6vBWy4fYmDvWx2SAeYrGLstp9aXruPJA==", + "license": "Apache-2.0", + "dependencies": { + "reservoir": "^0.1.2" + }, + "bin": { + "mongodb-schema": "bin/mongodb-schema" + }, + "optionalDependencies": { + "bson": "^6.7.0", + "cli-table": "^0.3.4", + "js-yaml": "^4.0.0", + "mongodb": "^6.6.1", + "mongodb-ns": "^2.4.0", + "numeral": "^2.0.6", + "progress": "^2.0.3", + "stats-lite": "^2.0.0", + "yargs": "^17.6.2" + } + }, + "node_modules/mongodb-schema/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==", + "license": "Python-2.0", + "optional": true + }, + "node_modules/mongodb-schema/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", + "optional": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-schema/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==", + "license": "MIT", + "optional": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mongodb-schema/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "optional": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-schema/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", + "optional": true, + "engines": { + "node": ">=12" + } + }, "node_modules/moo": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", @@ -20147,10 +20421,21 @@ "node": ">=0.10.0" } }, + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "license": "MIT", + "optional": true, + "engines": { + "node": "*" + } + }, "node_modules/nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.19.tgz", + "integrity": "sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==", + "license": "MIT" }, "node_modules/nx": { "version": "16.3.2", @@ -21285,11 +21570,12 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -21809,7 +22095,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.4.0" } @@ -22879,6 +23165,12 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, + "node_modules/reservoir": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reservoir/-/reservoir-0.1.2.tgz", + "integrity": "sha512-ysyw95gLBhMAzqIVrOHJ2yMrRQHAS+h97bS9r89Z7Ou10Jhl2k5KOsyjPqrxL+WfEanov0o5bAMVzQ7AKyENHA==", + "license": "MIT" + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -24112,6 +24404,19 @@ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, + "node_modules/stats-lite": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stats-lite/-/stats-lite-2.2.0.tgz", + "integrity": "sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA==", + "license": "MIT", + "optional": true, + "dependencies": { + "isnumber": "~1.0.0" + }, + "engines": { + "node": ">=2.0.0" + } + }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -24777,6 +25082,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tldts": { + "version": "6.1.84", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.84.tgz", + "integrity": "sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==", + "license": "MIT", + "dependencies": { + "tldts-core": "^6.1.84" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.84", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.84.tgz", + "integrity": "sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==", + "license": "MIT" + }, "node_modules/tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", @@ -28225,6 +28548,11 @@ "dependencies": { "bson": "^6.10.3", "js-yaml": "^4.1.0", + "jsdom": "^26.0.0", + "json5": "^2.2.3", + "mongodb": "^6.15.0", + "mongodb-schema": "^12.5.2", + "yargs": "^17.7.2", "zod": "^3.24.2" }, "devDependencies": { @@ -28234,6 +28562,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.2", "@types/chai": "^5.2.0", "@types/js-yaml": "^4.0.9", + "@types/jsdom": "^21.1.7", "@types/mocha": "^10.0.10", "@types/node": "^22.13.10", "@types/sinon-chai": "^4.0.0", @@ -28490,7 +28819,6 @@ "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==", - "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", @@ -28697,6 +29025,21 @@ "url": "https://github.com/sponsors/isaacs" } }, + "packages/mql-typescript/node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "packages/mql-typescript/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -28768,6 +29111,46 @@ "js-yaml": "bin/js-yaml.js" } }, + "packages/mql-typescript/node_modules/jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "license": "MIT", + "dependencies": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "canvas": "^3.0.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, "packages/mql-typescript/node_modules/just-extend": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", @@ -29160,6 +29543,12 @@ "node": ">=8" } }, + "packages/mql-typescript/node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", + "license": "MIT" + }, "packages/mql-typescript/node_modules/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -29212,6 +29601,30 @@ "node": ">=0.3.1" } }, + "packages/mql-typescript/node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^6.1.32" + }, + "engines": { + "node": ">=16" + } + }, + "packages/mql-typescript/node_modules/tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "engines": { + "node": ">=18" + } + }, "packages/mql-typescript/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -29233,6 +29646,19 @@ "dev": true, "license": "MIT" }, + "packages/mql-typescript/node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", + "dependencies": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, "packages/mql-typescript/node_modules/workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", @@ -29244,7 +29670,6 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "license": "MIT", "dependencies": { "cliui": "^8.0.1", @@ -29263,7 +29688,6 @@ "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, "license": "ISC", "engines": { "node": ">=12" @@ -30109,6 +30533,25 @@ "@jridgewell/trace-mapping": "^0.3.9" } }, + "@asamuzakjp/css-color": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.1.1.tgz", + "integrity": "sha512-hpRD68SV2OMcZCsrbdkccTw5FXjNDLo5OuqSHyHZfwweGsDWZwDJ2+gONyNAbazZclobMirACLw0lk8WVxIqxA==", + "requires": { + "@csstools/css-calc": "^2.1.2", + "@csstools/css-color-parser": "^3.0.8", + "@csstools/css-parser-algorithms": "^3.0.4", + "@csstools/css-tokenizer": "^3.0.3", + "lru-cache": "^10.4.3" + }, + "dependencies": { + "lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" + } + } + }, "@babel/code-frame": { "version": "7.26.2", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", @@ -31357,6 +31800,35 @@ } } }, + "@csstools/color-helpers": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==" + }, + "@csstools/css-calc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==" + }, + "@csstools/css-color-parser": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", + "requires": { + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" + } + }, + "@csstools/css-parser-algorithms": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.4.tgz", + "integrity": "sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==" + }, + "@csstools/css-tokenizer": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.3.tgz", + "integrity": "sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==" + }, "@dabh/diagnostics": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", @@ -35670,6 +36142,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.2", "@types/chai": "^5.2.0", "@types/js-yaml": "^4.0.9", + "@types/jsdom": "^21.1.7", "@types/mocha": "^10.0.10", "@types/node": "^22.13.10", "@types/sinon-chai": "^4.0.0", @@ -35679,14 +36152,19 @@ "eslint": "^9.22.0", "gen-esm-wrapper": "^1.1.3", "js-yaml": "^4.1.0", + "jsdom": "^26.0.0", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", + "json5": "^2.2.3", "mocha": "^11.1.0", + "mongodb": "^6.15.0", + "mongodb-schema": "^12.5.2", "nyc": "^17.1.0", "prettier": "^3.5.3", "sinon": "^19.0.2", "ts-node": "^10.9.2", "typescript": "^5.8.2", + "yargs": "^17.7.2", "zod": "^3.24.2" }, "dependencies": { @@ -35872,7 +36350,6 @@ "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==", - "dev": true, "requires": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -36004,6 +36481,17 @@ } } }, + "form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" + } + }, "glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -36050,6 +36538,34 @@ "argparse": "^2.0.1" } }, + "jsdom": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", + "requires": { + "cssstyle": "^4.2.1", + "data-urls": "^5.0.0", + "decimal.js": "^10.4.3", + "form-data": "^4.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.16", + "parse5": "^7.2.1", + "rrweb-cssom": "^0.8.0", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^5.0.0", + "w3c-xmlserializer": "^5.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.1.0", + "ws": "^8.18.0", + "xml-name-validator": "^5.0.0" + } + }, "just-extend": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", @@ -36334,6 +36850,11 @@ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true }, + "rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==" + }, "semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -36371,6 +36892,22 @@ } } }, + "tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "requires": { + "tldts": "^6.1.32" + } + }, + "tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "requires": { + "punycode": "^2.3.1" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -36383,6 +36920,15 @@ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true }, + "whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "requires": { + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" + } + }, "workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", @@ -36393,7 +36939,6 @@ "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, "requires": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -36407,8 +36952,7 @@ "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==", - "dev": true + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" } } }, @@ -37845,6 +38389,17 @@ "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", "dev": true }, + "@types/jsdom": { + "version": "21.1.7", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz", + "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, "@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -38159,6 +38714,12 @@ "integrity": "sha512-jRtyvEu0Na/sy0oIxBW0f6wPQjidgVqlmCTJVHEGTNEUdL1f0YSvdPzHY7nX7MUWAZS6zcAa0KkqofHjy/xDZQ==", "dev": true }, + "@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, "@types/triple-beam": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", @@ -38709,12 +39270,9 @@ "dev": true }, "agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "requires": { - "debug": "^4.3.4" - } + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==" }, "agentkeepalive": { "version": "4.2.1", @@ -39780,6 +40338,15 @@ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" }, + "cli-table": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.11.tgz", + "integrity": "sha512-IqLQi4lO0nIB4tcdTpN4LCB9FI3uqrJZK7RC515EnhZ6qBaglkIgICb1wjeAqpdoOabm1+SuQtkXIPdYC93jhQ==", + "optional": true, + "requires": { + "colors": "1.0.3" + } + }, "cli-width": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", @@ -39924,6 +40491,12 @@ "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" }, + "colors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", + "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", + "optional": true + }, "colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -40312,17 +40885,18 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, "cssstyle": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", - "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", + "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", "requires": { - "rrweb-cssom": "^0.6.0" + "@asamuzakjp/css-color": "^3.1.1", + "rrweb-cssom": "^0.8.0" }, "dependencies": { "rrweb-cssom": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", - "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==" } } }, @@ -43758,11 +44332,11 @@ } }, "https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "requires": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.2", "debug": "4" } }, @@ -44444,6 +45018,12 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "isnumber": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isnumber/-/isnumber-1.0.0.tgz", + "integrity": "sha512-JLiSz/zsZcGFXPrB4I/AGBvtStkt+8QmksyZBZnVXnnK9XdTEyz0tX8CRYljtwYDuIuZzih6DpHQdi+3Q6zHPw==", + "optional": true + }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", @@ -46964,12 +47544,12 @@ "dev": true }, "mongodb": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.9.0.tgz", - "integrity": "sha512-UMopBVx1LmEUbW/QE0Hw18u583PEDVQmUmVzzBRH0o/xtE9DBRA5ZYLOjpLIa03i8FXjzvQECJcqoMvCXftTUA==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.15.0.tgz", + "integrity": "sha512-ifBhQ0rRzHDzqp9jAQP6OwHSH7dbYIQjD3SbJs9YYk9AikKEettW/9s/tbSFDTpXcRbF+u1aLrhHxDFaYtZpFQ==", "requires": { - "@mongodb-js/saslprep": "^1.1.5", - "bson": "^6.7.0", + "@mongodb-js/saslprep": "^1.1.9", + "bson": "^6.10.3", "mongodb-connection-string-url": "^3.0.0" } }, @@ -47281,6 +47861,12 @@ } } }, + "mongodb-ns": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/mongodb-ns/-/mongodb-ns-2.4.2.tgz", + "integrity": "sha512-gYJjEYG4v4a1WSXgUf81OBoBRlj+Z1SlnQVO392fC/4a1CN7CLWDITajZWPFTPh/yRozYk6sHHtZwZmQhodBEA==", + "optional": true + }, "mongodb-query-parser": { "version": "file:packages/query-parser", "requires": { @@ -47411,6 +47997,72 @@ } } }, + "mongodb-schema": { + "version": "12.5.2", + "resolved": "https://registry.npmjs.org/mongodb-schema/-/mongodb-schema-12.5.2.tgz", + "integrity": "sha512-gukbasp1udtpI79PDeGvbTGB14vO099Gm2/LNsJ+HunL1EqcdeWh+T6vBWy4fYmDvWx2SAeYrGLstp9aXruPJA==", + "requires": { + "bson": "^6.7.0", + "cli-table": "^0.3.4", + "js-yaml": "^4.0.0", + "mongodb": "^6.6.1", + "mongodb-ns": "^2.4.0", + "numeral": "^2.0.6", + "progress": "^2.0.3", + "reservoir": "^0.1.2", + "stats-lite": "^2.0.0", + "yargs": "^17.6.2" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "optional": true + }, + "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==", + "optional": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "optional": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "optional": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "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==", + "optional": true + } + } + }, "moo": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/moo/-/moo-0.5.1.tgz", @@ -48010,10 +48662,16 @@ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==" }, + "numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "optional": true + }, "nwsapi": { - "version": "2.2.12", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", - "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" + "version": "2.2.19", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.19.tgz", + "integrity": "sha512-94bcyI3RsqiZufXjkr3ltkI86iEl+I7uiHVDtcq9wJUTwYQJ5odHDeSzkkrRzi80jJ8MaeZgqKjH1bAWAFw9bA==" }, "nx": { "version": "16.3.2", @@ -48865,11 +49523,11 @@ } }, "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "requires": { - "entities": "^4.4.0" + "entities": "^4.5.0" } }, "parse5-htmlparser2-tree-adapter": { @@ -49236,7 +49894,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true + "devOptional": true }, "promise-fs": { "version": "2.1.1", @@ -50049,6 +50707,11 @@ "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, + "reservoir": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reservoir/-/reservoir-0.1.2.tgz", + "integrity": "sha512-ysyw95gLBhMAzqIVrOHJ2yMrRQHAS+h97bS9r89Z7Ou10Jhl2k5KOsyjPqrxL+WfEanov0o5bAMVzQ7AKyENHA==" + }, "resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -50996,6 +51659,15 @@ "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, + "stats-lite": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/stats-lite/-/stats-lite-2.2.0.tgz", + "integrity": "sha512-/Kz55rgUIv2KP2MKphwYT/NCuSfAlbbMRv2ZWw7wyXayu230zdtzhxxuXXcvsc6EmmhS8bSJl3uS1wmMHFumbA==", + "optional": true, + "requires": { + "isnumber": "~1.0.0" + } + }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -51498,6 +52170,19 @@ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "dev": true }, + "tldts": { + "version": "6.1.84", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.84.tgz", + "integrity": "sha512-aRGIbCIF3teodtUFAYSdQONVmDRy21REM3o6JnqWn5ZkQBJJ4gHxhw6OfwQ+WkSAi3ASamrS4N4nyazWx6uTYg==", + "requires": { + "tldts-core": "^6.1.84" + } + }, + "tldts-core": { + "version": "6.1.84", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.84.tgz", + "integrity": "sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==" + }, "tmp": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", diff --git a/packages/mql-typescript/.prettierignore b/packages/mql-typescript/.prettierignore index 4d28df66..4804f298 100644 --- a/packages/mql-typescript/.prettierignore +++ b/packages/mql-typescript/.prettierignore @@ -1,3 +1,4 @@ .nyc_output dist coverage +mongo-php-library diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 9c413f5b..a1026a0c 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -1,7 +1,7 @@ import type * as bson from 'bson'; +import { FilterOperators } from 'mongodb'; -// from Node.js driver -type Condition = AlternativeType; // misses FilterOperators +type Condition = AlternativeType | FilterOperators; type AlternativeType = T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; @@ -15,6 +15,7 @@ type RecordWithStaticFields, TValue> = T & { // TBD: Nested fields type AFieldPath = KeysOfAType & string; +type FieldExpression = { [k: string]: FieldPath }; export namespace AccumulatorOperators { /** * A type describing the `$accumulator` operator. @@ -2884,26 +2885,40 @@ export namespace ExpressionOperators { * Returns a subset of an array. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/} */ - $slice: [ - /** - * Any valid expression as long as it resolves to an array. - */ - expression: ResolvesToArray, - - /** - * Any valid expression as long as it resolves to an integer. - * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array. - * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array. - */ - position?: ResolvesToInt, - - /** - * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer. - * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position. - * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified. - */ - n: ResolvesToInt - ]; + $slice: + | [ + /** + * Any valid expression as long as it resolves to an array. + */ + expression: ResolvesToArray, + + /** + * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer. + * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position. + * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified. + */ + n: ResolvesToInt + ] + | [ + /** + * Any valid expression as long as it resolves to an array. + */ + expression: ResolvesToArray, + + /** + * Any valid expression as long as it resolves to an integer. + * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array. + * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array. + */ + position: ResolvesToInt, + + /** + * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer. + * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position. + * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified. + */ + n: ResolvesToInt + ]; } /** @@ -5304,7 +5319,12 @@ export type TimeUnit = export type OutCollection = unknown; export type WhenMatched = string; export type WhenNotMatched = string; -export type Expression = C_expression | FieldPath | BsonPrimitive; +export type Expression = + | C_expression + | FieldPath + | BsonPrimitive + | FieldExpression + | FieldPath[]; export type Stage = | C_stage | StageOperators.$addFields diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 905f7e69..950a8571 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -30,8 +30,9 @@ "types": "./dist/index.d.ts", "scripts": { "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", - "prestart": "npm run extract-metaschema", - "start": "ts-node src/index.ts > out/schema.ts && npm run prettier -- --write out/schema.ts", + "pregenerate-schema": "npm run extract-metaschema", + "generate-schema": "ts-node src/index.ts schema && npm run prettier -- --write out/schema.ts", + "generate-tests": "ts-node src/index.ts tests && npm run prettier -- --write tests/**/*.ts", "bootstrap": "npm run compile", "prepublishOnly": "npm run compile", "compile": "tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs", @@ -55,6 +56,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.2", "@types/chai": "^5.2.0", "@types/js-yaml": "^4.0.9", + "@types/jsdom": "^21.1.7", "@types/mocha": "^10.0.10", "@types/node": "^22.13.10", "@types/sinon-chai": "^4.0.0", @@ -74,6 +76,11 @@ "dependencies": { "bson": "^6.10.3", "js-yaml": "^4.1.0", + "jsdom": "^26.0.0", + "json5": "^2.2.3", + "mongodb": "^6.15.0", + "mongodb-schema": "^12.5.2", + "yargs": "^17.7.2", "zod": "^3.24.2" } } diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts new file mode 100644 index 00000000..caf2cf03 --- /dev/null +++ b/packages/mql-typescript/src/generator.ts @@ -0,0 +1,155 @@ +import { createWriteStream } from 'fs'; +import { StringWriter } from './utils'; +import path from 'path'; +import * as fs from 'fs/promises'; +import * as yaml from 'js-yaml'; +import * as bson from 'bson'; + +export type YamlFiles = ReturnType; + +export abstract class GeneratorBase { + private outputBuffer: StringWriter | undefined; + private outputStream?: NodeJS.WritableStream; + + private static loadOptions: yaml.LoadOptions = { + schema: yaml.DEFAULT_SCHEMA.extend([ + new yaml.Type('!bson_utcdatetime', { + kind: 'scalar', + construct(data) { + return new Date(data); + }, + }), + new yaml.Type('!bson_objectId', { + kind: 'scalar', + construct(data) { + return bson.ObjectId.createFromHexString(data); + }, + }), + new yaml.Type('!bson_uuid', { + kind: 'scalar', + construct(data) { + return bson.UUID.createFromHexString(data); + }, + }), + new yaml.Type('!bson_regex', { + kind: 'scalar', + construct(data) { + return new bson.BSONRegExp(data); + }, + }), + new yaml.Type('!bson_regex', { + kind: 'sequence', + construct([data, flags]) { + return new bson.BSONRegExp(data, flags); + }, + }), + new yaml.Type('!bson_binary', { + kind: 'scalar', + construct([data]) { + return bson.Binary.createFromBase64(data); + }, + }), + new yaml.Type('!bson_decimal128', { + kind: 'scalar', + construct([data]) { + return bson.Decimal128.fromString(data); + }, + }), + ]), + }; + + private async *listCategories(): AsyncIterable<{ + category: string; + folder: string; + }> { + const configDir = path.join( + __dirname, + '..', + 'mongo-php-library', + 'generator', + 'config' + ); + + for await (const folder of await fs.readdir(configDir, { + withFileTypes: true, + })) { + if (folder.isDirectory()) { + yield { + category: folder.name, + folder: path.join(folder.parentPath, folder.name), + }; + } + } + } + + private async *listSourceYAMLFiles(): AsyncIterable<{ + category: string; + operators: () => AsyncIterable<{ yaml: unknown }>; + }> { + for await (const { category, folder } of this.listCategories()) { + yield { + category, + operators: async function* () { + for await (const file of await fs.readdir(folder, { + withFileTypes: true, + })) { + if (file.isFile() && file.name.endsWith('.yaml')) { + const filePath = path.join(file.parentPath, file.name); + const content = await fs.readFile(filePath, 'utf8'); + const parsed = yaml.load(content, GeneratorBase.loadOptions); + yield { yaml: parsed }; + } + } + }, + }; + } + } + + protected emitToFile(filePath: string): void { + this.outputStream = createWriteStream(filePath, { encoding: 'utf8' }); + } + + protected emit(str: string): void { + (this.outputBuffer ?? this.outputStream ?? process.stdout).write(str); + } + + protected toComment(str?: string, docsUrl?: string): string { + if (!str) { + return ''; + } + + return [ + '', + '', + '/**', + ...str + .replace(/\*\//g, '*//*') + .split('\n') + .map((l) => l.trim()) + .filter((l) => l) + .map((l) => ` * ${l}`), + ...(docsUrl ? [` * @see {@link ${docsUrl}}`] : []), + ' */', + '', + ].join('\n'); + } + + protected emitComment(str: string, docsUrl?: string): void { + this.emit(this.toComment(str, docsUrl)); + } + + protected getOutputOf(fn: () => void): string { + this.outputBuffer = new StringWriter(); + fn(); + const output = this.outputBuffer.toString(); + this.outputBuffer = undefined; + return output; + } + + protected abstract generateImpl(iterable: YamlFiles): Promise; + + public generate(): Promise { + const files = this.listSourceYAMLFiles(); + return this.generateImpl(files); + } +} diff --git a/packages/mql-typescript/src/index.spec.ts b/packages/mql-typescript/src/index.spec.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/mql-typescript/src/index.ts b/packages/mql-typescript/src/index.ts index a6f4cefa..8a94f65f 100644 --- a/packages/mql-typescript/src/index.ts +++ b/packages/mql-typescript/src/index.ts @@ -1,499 +1,33 @@ -import * as yaml from 'js-yaml'; -import * as fs from 'fs/promises'; -import * as path from 'path'; -import * as bson from 'bson'; -import { Operator } from './metaschema'; -import { StringWriter } from './utils'; - -type ArgType = NonNullable< - typeof Operator._type.arguments ->[number]['type'][number]; - -const loadOptions: yaml.LoadOptions = { - schema: yaml.DEFAULT_SCHEMA.extend([ - new yaml.Type('!bson_utcdatetime', { - kind: 'scalar', - construct(data) { - return new Date(data); - }, - }), - new yaml.Type('!bson_objectId', { - kind: 'scalar', - construct(data) { - return bson.ObjectId.createFromHexString(data); - }, - }), - new yaml.Type('!bson_uuid', { - kind: 'scalar', - construct(data) { - return bson.UUID.createFromHexString(data); - }, - }), - new yaml.Type('!bson_regex', { - kind: 'scalar', - construct(data) { - return new bson.BSONRegExp(data); - }, - }), - new yaml.Type('!bson_regex', { - kind: 'sequence', - construct([data, flags]) { - return new bson.BSONRegExp(data, flags); - }, - }), - new yaml.Type('!bson_binary', { - kind: 'scalar', - construct([data]) { - return bson.Binary.createFromBase64(data); - }, - }), - new yaml.Type('!bson_decimal128', { - kind: 'scalar', - construct([data]) { - return bson.Decimal128.fromString(data); - }, - }), - ]), -}; - -async function* listCategories(): AsyncIterable<{ - category: string; - folder: string; -}> { - const configDir = path.join( - __dirname, - '..', - 'mongo-php-library', - 'generator', - 'config' - ); - - for await (const folder of await fs.readdir(configDir, { - withFileTypes: true, - })) { - if (folder.isDirectory()) { - yield { - category: folder.name, - folder: path.join(folder.parentPath, folder.name), - }; - } - } -} - -async function* listSourceYAMLFiles(): AsyncIterable<{ - category: string; - operators: () => AsyncIterable<{ yaml: unknown }>; -}> { - for await (const { category, folder } of listCategories()) { - yield { - category, - operators: async function* () { - for await (const file of await fs.readdir(folder, { - withFileTypes: true, - })) { - if (file.isFile() && file.name.endsWith('.yaml')) { - const filePath = path.join(file.parentPath, file.name); - const content = await fs.readFile(filePath, 'utf8'); - const parsed = yaml.load(content, loadOptions); - yield { yaml: parsed }; - } - } - }, - }; - } -} - -function toComment(str?: string, docsUrl?: string): string { - if (!str) { - return ''; - } - - return [ - '', - '', - '/**', - ...str - .replace(/\*\//g, '*//*') - .split('\n') - .map((l) => l.trim()) - .filter((l) => l) - .map((l) => ` * ${l}`), - ...(docsUrl ? [` * @see {@link ${docsUrl}}`] : []), - ' */', - '', - ].join('\n'); -} - -function emitComment(str: string, docsUrl?: string): void { - emit(toComment(str, docsUrl)); -} - -function getArgumentTypeName(type: ArgType): string | undefined { - if (typeMappings[type]) { - return toTypeName(type); - } - - if (typeMappings[`${type}_S`]) { - return toTypeName(`${type}`); - } - - if (trivialTypeMappings[type]) { - return trivialTypeMappings[type]; - } - - return undefined; -} - -function toTypeName(type: string): string { - return trivialTypeMappings[type as ArgType] ?? capitalize(type); -} - -function toTypeFieldTypeName(type: string): string { - return '`$${AFieldPath}`'; -} - -let outputBuffer: StringWriter | undefined; -function emit(str: string): void { - (outputBuffer ?? process.stdout).write(str); -} - -function getOutputOf(fn: () => void): string { - outputBuffer = new StringWriter(); - fn(); - const output = outputBuffer.toString(); - outputBuffer = undefined; - return output; -} - -function emitHeader(): void { - emit(` - import type * as bson from 'bson'; - - // from Node.js driver - type Condition = AlternativeType; // misses FilterOperators - type AlternativeType = - T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; - type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; - type KeysOfAType = { - [k in keyof T]: NonNullable extends Type ? k : never; - }[keyof T]; - type RecordWithStaticFields, TValue> = T & { - [key: string]: TValue | T[keyof T]; - }; - - // TBD: Nested fields - type AFieldPath = KeysOfAType & string; - `); -} - -const trivialTypeMappings: Partial> = { - any: 'any', - bool: 'boolean', - date: 'Date', - null: 'null', - timestamp: 'bson.Timestamp', - decimal: 'bson.Decimal128', - array: 'unknown[]', - binData: 'bson.Binary', - objectId: 'bson.ObjectId', - object: 'Record', - string: 'string', -}; - -const typeMappings: Record = { - int: ['number', 'bson.Int32'], - double: ['number', 'bson.Double'], - regex: ['RegExp', 'bson.BSONRegExp'], - long: ['bigint', 'bson.Long'], - javascript: ['bson.Code', 'Function'], - - number: [ - toTypeName('int'), - toTypeName('long'), - toTypeName('double'), - toTypeName('decimal'), - ], - bsonPrimitive: [ - toTypeName('number'), - toTypeName('binData'), - toTypeName('objectId'), - 'string', - toTypeName('bool'), - toTypeName('date'), - toTypeName('null'), - toTypeName('regex'), - toTypeName('javascript'), - toTypeName('timestamp'), - ], - - // Can be improved: - searchPath: ['string', 'string[]'], - searchScore: ['unknown'], - granularity: ['string'], - fullDocument: ['string'], - fullDocumentBeforeChange: ['string'], - accumulatorPercentile: ['string'], - range: ['unknown'], - sortBy: ['unknown'], - geoPoint: ['unknown'], - sortSpec: ['-1', '1'], - timeUnit: [ - '"week"', - '"day"', - '"hour"', - '"minute"', - '"second"', - '"millisecond"', - ], - outCollection: ['unknown'], - whenMatched: ['string'], - whenNotMatched: ['string'], - - expression_S: [ - toTypeName('C_expression'), - toTypeName('fieldPath'), - toTypeName('bsonPrimitive'), - ], - stage_S: [toTypeName('C_stage')], - pipeline_S: [toTypeName('stage[]')], - query_S: [ - toTypeName('C_query'), - 'Partial<{ [k in keyof S]: Condition }>', - ], - accumulator_S: [], - searchOperator_S: [], - geometry_S: [], - - // Need to be adjusted to match the real schema - fieldPath_S: ['`$${AFieldPath}`'], - numberFieldPath_S: [toTypeFieldTypeName('number')], - doubleFieldPath_S: [toTypeFieldTypeName('double')], - stringFieldPath_S: [toTypeFieldTypeName('string')], - objectFieldPath_S: [toTypeFieldTypeName('object')], - arrayFieldPath_S: [toTypeFieldTypeName('array')], - binDataFieldPath_S: [toTypeFieldTypeName('binData')], - objectIdFieldPath_S: [toTypeFieldTypeName('objectId')], - boolFieldPath_S: [toTypeFieldTypeName('bool')], - dateFieldPath_S: [toTypeFieldTypeName('date')], - nullFieldPath_S: [toTypeFieldTypeName('null')], - regexFieldPath_S: [toTypeFieldTypeName('regex')], - javascriptFieldPath_S: [toTypeFieldTypeName('javascript')], - intFieldPath_S: [toTypeFieldTypeName('int')], - timestampFieldPath_S: [toTypeFieldTypeName('timestamp')], - longFieldPath_S: [toTypeFieldTypeName('long')], - decimalFieldPath_S: [toTypeFieldTypeName('decimal')], - - resolvesToNumber_S: [toTypeName('numberFieldPath'), toTypeName('number')], - resolvesToDouble_S: [toTypeName('doubleFieldPath'), toTypeName('double')], - resolvesToString_S: [toTypeName('stringFieldPath'), toTypeName('string')], - resolvesToObject_S: [toTypeName('objectFieldPath'), toTypeName('object')], - resolvesToArray_S: [toTypeName('arrayFieldPath'), toTypeName('array')], - resolvesToBinData_S: [ - toTypeName('binDataFieldPath'), - toTypeName('binData'), - ], - resolvesToObjectId_S: [ - toTypeName('objectIdFieldPath'), - toTypeName('objectId'), - ], - resolvesToBool_S: [toTypeName('boolFieldPath'), toTypeName('bool')], - resolvesToDate_S: [toTypeName('dateFieldPath'), toTypeName('date')], - resolvesToNull_S: [toTypeName('nullFieldPath'), toTypeName('null')], - resolvesToRegex_S: [toTypeName('regexFieldPath'), toTypeName('regex')], - resolvesToJavascript_S: [ - toTypeName('javascriptFieldPath'), - toTypeName('javascript'), - ], - resolvesToInt_S: [toTypeName('intFieldPath'), toTypeName('int')], - resolvesToTimestamp_S: [ - toTypeName('timestampFieldPath'), - toTypeName('timestamp'), - ], - resolvesToLong_S: [toTypeName('longFieldPath'), toTypeName('long')], - resolvesToDecimal_S: [ - toTypeName('decimalFieldPath'), - toTypeName('decimal'), - ], -}; - -function capitalize(str: string): string { - return str[0].toUpperCase() + str.slice(1); -} - -function emitArg( - arg: NonNullable[number], - named: boolean -): void { - if (named) { - emit(`${arg.name}${arg.optional ? '?' : ''}: `); - } - - for (const type of arg.type) { - const name = getArgumentTypeName(type); - - if (!name) { - throw new Error(`Unknown type ${type}`); - } - - emit(`| ${name}`); - } -} - -async function emitTypes(): Promise { - for await (const file of listSourceYAMLFiles()) { - const namespace = `${capitalize(file.category)}Operators`; - emit(`export namespace ${namespace} {\n`); - - for await (const operator of file.operators()) { - const parsed = Operator.parse(operator.yaml); - const ifaceName = capitalize(parsed.name); - - emitComment( - `A type describing the \`${parsed.name}\` operator.`, - parsed.link +import yargs from 'yargs'; +import { SchemaGenerator } from './schemaGenerator'; +import { TestGenerator } from './testGenerator'; + +async function main() { + const argv = await yargs + .command('schema', 'Generates schema from the php driver definitions') + .command( + 'tests', + 'Generates tests from the php driver definitions and the docs examples' + ) + .demandCommand(1, 'A command must be provided') + .help().argv; + + const [command, ...args] = argv._.map(String); + + switch (command) { + case 'schema': + const schemaGenerator = new SchemaGenerator(); + await schemaGenerator.generate(); + break; + case 'tests': + const testGenerator = new TestGenerator(); + await testGenerator.generate(); + break; + default: + throw new Error( + `Unknown command: ${command}. See '${argv.$0} --help' for more information.` ); - emit(`export interface ${ifaceName} {`); - if (parsed.description) { - emitComment(parsed.description, parsed.link); - } - emit(`${parsed.name}:`); - for (const type of parsed.type) { - (typeMappings[`${type}_S`] ??= []).push(`${namespace}.${ifaceName}`); - } - for (const type of parsed.type) { - // TODO: why? - (typeMappings[`C_${file.category}_S`] ??= []).push( - `${namespace}.${ifaceName}` - ); - } - if (!parsed.arguments) { - emit(`Record`); - } else { - let encode = parsed.encode; - if (encode === 'single') { - if (parsed.arguments.length !== 1) { - throw new Error( - 'encode: single should imply arguments.length === 1' - ); - } - if (parsed.arguments[0].variadic) { - encode = parsed.arguments[0].variadic; - } - } - switch (encode) { - case 'array': - case 'object': - // We're temporarily switching to writing to an in-memory buffer in case we need to merge objects. Due to - // limitations of merging objects with records, we need to use some type magic, requiring a helper type. - // { foo: number } & { [key: string]: string } results in foo being a string due to the indexer. To avoid it - // we need to use RecordWithStaticFields<{ foo: number}, string> - const mergedArgs: typeof parsed.arguments[number][] = []; - const objectType = getOutputOf(() => { - emit(encode === 'array' ? '[' : '{'); - for (const arg of parsed.arguments!) { - if (arg.mergeObject) { - mergedArgs.push(arg); - continue; - } - if (arg.description) { - emitComment(arg.description); - } - - if (arg.variadic === 'array') { - for (let i = 0; i < (arg.variadicMin ?? 0); i++) { - emitArg(arg, false); - emit(','); - } - emit('...('); - emitArg(arg, false); - emit(')[]'); - } else if (arg.variadic === 'object') { - emit(`} & { [${arg.name}: string]: `); - emitArg(arg, false); - } else { - emitArg(arg, true); - } - emit(','); - } - emit(encode === 'array' ? ']' : '}'); - }); - - switch (mergedArgs.length) { - case 0: - emit(objectType); - break; - case 1: - const arg = mergedArgs[0]; - switch (arg.variadic) { - case 'object': - if (objectType === '{}') { - emit(`{ [${arg.name}: string]: `); - emitArg(arg, false); - emit(`}`); - } else { - emit( - `RecordWithStaticFields<${objectType}, ${toComment( - arg.description - )} ${arg.type - .map((t) => getArgumentTypeName(t)) - .join(' | ')}>` - ); - } - break; - case 'array': - throw new Error( - `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}` - ); - case undefined: - emitArg(arg, false); - break; - } - break; - default: - throw new Error( - `Unsupported number of mergeObject arguments: ${ - mergedArgs.length - }, ${namespace}.${ifaceName}.{${mergedArgs - .map((a) => a.name) - .join(', ')}}` - ); - } - break; - case 'single': - if (parsed.arguments.length !== 1) { - throw new Error( - 'encode: single should imply arguments.length === 1' - ); - } - emitArg(parsed.arguments[0], false); - - break; - default: - throw new Error(`unknown encode mode ${parsed.encode}`); - } - } - emit('};\n'); - } - - emit('};\n'); } - - for (const [type, interfaces] of Object.entries(typeMappings)) { - const isTemplated = type.endsWith('_S'); - const name = isTemplated ? type.replace(/_S$/, '') : type; - emit( - `\nexport type ${toTypeName(name)}${isTemplated ? '' : ''} = |` + - interfaces - .map((i) => `(${i}${i.endsWith('_S') ? '' : ''})`) - .join('|') + - ';' - ); - } -} - -async function main(): Promise { - emitHeader(); - await emitTypes(); } main(); diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schemaGenerator.ts new file mode 100644 index 00000000..62a6189d --- /dev/null +++ b/packages/mql-typescript/src/schemaGenerator.ts @@ -0,0 +1,476 @@ +import path from 'path'; +import { GeneratorBase, YamlFiles } from './generator'; +import { Operator } from './metaschema'; +import { capitalize } from './utils'; + +type ArgType = NonNullable< + typeof Operator._type.arguments +>[number]['type'][number]; + +export class SchemaGenerator extends GeneratorBase { + constructor() { + super(); + this.emitToFile(path.resolve(__dirname, '..', 'out', 'schema.ts')); + } + + private toTypeName(type: string): string { + return this.trivialTypeMappings[type as ArgType] ?? capitalize(type); + } + + private toTypeFieldTypeName(type: string): string { + return '`$${AFieldPath}`'; + } + + private trivialTypeMappings: Partial> = { + any: 'any', + bool: 'boolean', + date: 'Date', + null: 'null', + timestamp: 'bson.Timestamp', + decimal: 'bson.Decimal128', + array: 'unknown[]', + binData: 'bson.Binary', + objectId: 'bson.ObjectId', + object: 'Record', + string: 'string', + }; + + private typeMappings: Record = { + int: ['number', 'bson.Int32'], + double: ['number', 'bson.Double'], + regex: ['RegExp', 'bson.BSONRegExp'], + long: ['bigint', 'bson.Long'], + javascript: ['bson.Code', 'Function'], + + number: [ + this.toTypeName('int'), + this.toTypeName('long'), + this.toTypeName('double'), + this.toTypeName('decimal'), + ], + bsonPrimitive: [ + this.toTypeName('number'), + this.toTypeName('binData'), + this.toTypeName('objectId'), + 'string', + this.toTypeName('bool'), + this.toTypeName('date'), + this.toTypeName('null'), + this.toTypeName('regex'), + this.toTypeName('javascript'), + this.toTypeName('timestamp'), + ], + + // Can be improved: + searchPath: ['string', 'string[]'], + searchScore: ['unknown'], + granularity: ['string'], + fullDocument: ['string'], + fullDocumentBeforeChange: ['string'], + accumulatorPercentile: ['string'], + range: ['unknown'], + sortBy: ['unknown'], + geoPoint: ['unknown'], + sortSpec: ['-1', '1'], + timeUnit: [ + '"week"', + '"day"', + '"hour"', + '"minute"', + '"second"', + '"millisecond"', + ], + outCollection: ['unknown'], + whenMatched: ['string'], + whenNotMatched: ['string'], + + expression_S: [ + this.toTypeName('C_expression'), + this.toTypeName('fieldPath'), + this.toTypeName('bsonPrimitive'), + 'FieldExpression', + 'FieldPath[]', + ], + stage_S: [this.toTypeName('C_stage')], + pipeline_S: [this.toTypeName('stage[]')], + query_S: [ + this.toTypeName('C_query'), + 'Partial<{ [k in keyof S]: Condition }>', + ], + accumulator_S: [], + searchOperator_S: [], + geometry_S: [], + + // Need to be adjusted to match the real schema + fieldPath_S: ['`$${AFieldPath}`'], + numberFieldPath_S: [this.toTypeFieldTypeName('number')], + doubleFieldPath_S: [this.toTypeFieldTypeName('double')], + stringFieldPath_S: [this.toTypeFieldTypeName('string')], + objectFieldPath_S: [this.toTypeFieldTypeName('object')], + arrayFieldPath_S: [this.toTypeFieldTypeName('array')], + binDataFieldPath_S: [this.toTypeFieldTypeName('binData')], + objectIdFieldPath_S: [this.toTypeFieldTypeName('objectId')], + boolFieldPath_S: [this.toTypeFieldTypeName('bool')], + dateFieldPath_S: [this.toTypeFieldTypeName('date')], + nullFieldPath_S: [this.toTypeFieldTypeName('null')], + regexFieldPath_S: [this.toTypeFieldTypeName('regex')], + javascriptFieldPath_S: [this.toTypeFieldTypeName('javascript')], + intFieldPath_S: [this.toTypeFieldTypeName('int')], + timestampFieldPath_S: [this.toTypeFieldTypeName('timestamp')], + longFieldPath_S: [this.toTypeFieldTypeName('long')], + decimalFieldPath_S: [this.toTypeFieldTypeName('decimal')], + + resolvesToNumber_S: [ + this.toTypeName('numberFieldPath'), + this.toTypeName('number'), + ], + resolvesToDouble_S: [ + this.toTypeName('doubleFieldPath'), + this.toTypeName('double'), + ], + resolvesToString_S: [ + this.toTypeName('stringFieldPath'), + this.toTypeName('string'), + ], + resolvesToObject_S: [ + this.toTypeName('objectFieldPath'), + this.toTypeName('object'), + ], + resolvesToArray_S: [ + this.toTypeName('arrayFieldPath'), + this.toTypeName('array'), + ], + resolvesToBinData_S: [ + this.toTypeName('binDataFieldPath'), + this.toTypeName('binData'), + ], + resolvesToObjectId_S: [ + this.toTypeName('objectIdFieldPath'), + this.toTypeName('objectId'), + ], + resolvesToBool_S: [ + this.toTypeName('boolFieldPath'), + this.toTypeName('bool'), + ], + resolvesToDate_S: [ + this.toTypeName('dateFieldPath'), + this.toTypeName('date'), + ], + resolvesToNull_S: [ + this.toTypeName('nullFieldPath'), + this.toTypeName('null'), + ], + resolvesToRegex_S: [ + this.toTypeName('regexFieldPath'), + this.toTypeName('regex'), + ], + resolvesToJavascript_S: [ + this.toTypeName('javascriptFieldPath'), + this.toTypeName('javascript'), + ], + resolvesToInt_S: [ + this.toTypeName('intFieldPath'), + this.toTypeName('int'), + ], + resolvesToTimestamp_S: [ + this.toTypeName('timestampFieldPath'), + this.toTypeName('timestamp'), + ], + resolvesToLong_S: [ + this.toTypeName('longFieldPath'), + this.toTypeName('long'), + ], + resolvesToDecimal_S: [ + this.toTypeName('decimalFieldPath'), + this.toTypeName('decimal'), + ], + }; + + private emitHeader(): void { + this.emit(` + import type * as bson from 'bson'; + import { FilterOperators } from 'mongodb'; + + type Condition = AlternativeType | FilterOperators; + type AlternativeType = + T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; + type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; + type KeysOfAType = { + [k in keyof T]: NonNullable extends Type ? k : never; + }[keyof T]; + type RecordWithStaticFields, TValue> = T & { + [key: string]: TValue | T[keyof T]; + }; + + // TBD: Nested fields + type AFieldPath = KeysOfAType & string; + type FieldExpression = { [k: string]: FieldPath }; + `); + } + + private getArgumentTypeName(type: ArgType): string | undefined { + if (this.typeMappings[type]) { + return this.toTypeName(type); + } + + if (this.typeMappings[`${type}_S`]) { + return this.toTypeName(`${type}`); + } + + if (this.trivialTypeMappings[type]) { + return this.trivialTypeMappings[type]; + } + + return undefined; + } + + private emitArg( + arg: NonNullable[number], + named: boolean + ): void { + if (named) { + this.emit(`${arg.name}${arg.optional ? '?' : ''}: `); + } + + for (const type of arg.type) { + const name = this.getArgumentTypeName(type); + + if (!name) { + throw new Error(`Unknown type ${type}`); + } + + this.emit(`| ${name}`); + } + } + + /** + * This is explicitly handling the case of $slice where an argument in the middle of the array is optional. + * This is not allowed by typescript, so we need to convert the array into a union of tuples. + */ + private emitArrayWithOptionals(parsed: typeof Operator._type): boolean { + if (!parsed.arguments) { + return false; + } + let lastRequired, + firstOptional: undefined | number = undefined; + for (let i = 0; i < parsed.arguments.length; i++) { + const arg = parsed.arguments[i]; + if (!arg.optional) { + lastRequired = i; + } else if (firstOptional === undefined) { + firstOptional = i; + } + } + + if ( + firstOptional !== undefined && + lastRequired !== undefined && + firstOptional < lastRequired + ) { + const optionalArgs = parsed.arguments.filter((arg) => arg.optional); + const totalCombinations = 1 << optionalArgs.length; // 2^n + const optionalCombinations: Array> = []; + + // Generate the combinations of supplied optional arguments. For example, + // if we have { a?, b, c? }, we generate: + // {a: false, c: false}, {a: true, c: false}, {a: false, c: true}, {a: true, c: true} + // which should produce the following, when merged with the required arguments: + // [b] | [a, b] | [b, c] | [a, b, c] + for (let i = 0; i < totalCombinations; i++) { + const combination: Record = {}; + + // For each optional parameter, check if it's included in this combination + for (let j = 0; j < optionalArgs.length; j++) { + // Check if bit j is set in i + combination[optionalArgs[j].name] = !!(i & (1 << j)); + } + + optionalCombinations.push(combination); + } + + for (const combination of optionalCombinations) { + // Now, emit the union - for each combination, merge it with the required arguments and + // emit the tuple. We don't care about trailing commas or leading pipes since prettier will + // clean that up + this.emit('| ['); + for (const arg of parsed.arguments) { + if (!arg.optional || combination[arg.name]) { + if (arg.description) { + this.emitComment(arg.description); + } + + this.emitArg({ ...arg, optional: false }, true); + this.emit(','); + } + } + this.emit(']\n'); + } + + return true; + } + + return false; + } + + protected override async generateImpl(yamlFiles: YamlFiles): Promise { + this.emitHeader(); + + for await (const file of yamlFiles) { + const namespace = `${capitalize(file.category)}Operators`; + this.emit(`export namespace ${namespace} {\n`); + + for await (const operator of file.operators()) { + const parsed = Operator.parse(operator.yaml); + const ifaceName = capitalize(parsed.name); + + this.emitComment( + `A type describing the \`${parsed.name}\` operator.`, + parsed.link + ); + this.emit(`export interface ${ifaceName} {`); + if (parsed.description) { + this.emitComment(parsed.description, parsed.link); + } + this.emit(`${parsed.name}:`); + for (const type of parsed.type) { + (this.typeMappings[`${type}_S`] ??= []).push( + `${namespace}.${ifaceName}` + ); + } + for (const type of parsed.type) { + // TODO: why? + (this.typeMappings[`C_${file.category}_S`] ??= []).push( + `${namespace}.${ifaceName}` + ); + } + if (!parsed.arguments) { + this.emit(`Record`); + } else { + let encode = parsed.encode; + if (encode === 'single') { + if (parsed.arguments.length !== 1) { + throw new Error( + 'encode: single should imply arguments.length === 1' + ); + } + if (parsed.arguments[0].variadic) { + encode = parsed.arguments[0].variadic; + } + } + switch (encode) { + case 'array': + if (this.emitArrayWithOptionals(parsed)) { + break; + } + + case 'object': + // We're temporarily switching to writing to an in-memory buffer in case we need to merge objects. Due to + // limitations of merging objects with records, we need to use some type magic, requiring a helper type. + // { foo: number } & { [key: string]: string } results in foo being a string due to the indexer. To avoid it + // we need to use RecordWithStaticFields<{ foo: number}, string> + const mergedArgs: typeof parsed.arguments[number][] = []; + const objectType = this.getOutputOf(() => { + this.emit(encode === 'array' ? '[' : '{'); + for (const arg of parsed.arguments!) { + if (arg.mergeObject) { + mergedArgs.push(arg); + continue; + } + if (arg.description) { + this.emitComment(arg.description); + } + + if (arg.variadic === 'array') { + for (let i = 0; i < (arg.variadicMin ?? 0); i++) { + this.emitArg(arg, false); + this.emit(','); + } + this.emit('...('); + this.emitArg(arg, false); + this.emit(')[]'); + } else if (arg.variadic === 'object') { + this.emit(`} & { [${arg.name}: string]: `); + this.emitArg(arg, false); + } else { + this.emitArg(arg, true); + } + this.emit(','); + } + this.emit(encode === 'array' ? ']' : '}'); + }); + + switch (mergedArgs.length) { + case 0: + this.emit(objectType); + break; + case 1: + const arg = mergedArgs[0]; + switch (arg.variadic) { + case 'object': + if (objectType === '{}') { + this.emit(`{ [${arg.name}: string]: `); + this.emitArg(arg, false); + this.emit(`}`); + } else { + this.emit( + `RecordWithStaticFields<${objectType}, ${this.toComment( + arg.description + )} ${arg.type + .map((t) => this.getArgumentTypeName(t)) + .join(' | ')}>` + ); + } + break; + case 'array': + throw new Error( + `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}` + ); + case undefined: + this.emitArg(arg, false); + break; + } + break; + default: + throw new Error( + `Unsupported number of mergeObject arguments: ${ + mergedArgs.length + }, ${namespace}.${ifaceName}.{${mergedArgs + .map((a) => a.name) + .join(', ')}}` + ); + } + break; + case 'single': + if (parsed.arguments.length !== 1) { + throw new Error( + 'encode: single should imply arguments.length === 1' + ); + } + this.emitArg(parsed.arguments[0], false); + + break; + default: + throw new Error(`unknown encode mode ${parsed.encode}`); + } + } + this.emit('};\n'); + } + + this.emit('};\n'); + } + + for (const [type, interfaces] of Object.entries(this.typeMappings)) { + const isTemplated = type.endsWith('_S'); + const name = isTemplated ? type.replace(/_S$/, '') : type; + this.emit( + `\nexport type ${this.toTypeName(name)}${ + isTemplated ? '' : '' + } = |` + + interfaces + .map((i) => `(${i}${i.endsWith('_S') ? '' : ''})`) + .join('|') + + ';' + ); + } + } +} diff --git a/packages/mql-typescript/src/testGenerator.ts b/packages/mql-typescript/src/testGenerator.ts new file mode 100644 index 00000000..fe222260 --- /dev/null +++ b/packages/mql-typescript/src/testGenerator.ts @@ -0,0 +1,161 @@ +import path from 'path'; +import { GeneratorBase, YamlFiles } from './generator'; +import * as fs from 'fs/promises'; +import { Operator } from './metaschema'; +import { capitalize, removeNewlines } from './utils'; +import { parseSchema, Schema } from 'mongodb-schema'; +import { JSDOM } from 'jsdom'; +import JSON5 from 'json5'; + +type TestType = NonNullable[number]; + +class DocsCrawler { + constructor(private readonly url: string) {} + + private getInsertionCode( + element: Element | null | undefined + ): { collectionName: string; documents: unknown[] } | undefined { + const codeSnippet = element?.querySelector('script')?.innerHTML; + + if (codeSnippet !== undefined) { + const insertionCode = + /db\.(?[^\.]*)\.insertMany\((?\[.*])\)/gm.exec( + removeNewlines(JSON.parse(codeSnippet).text as string) + ); + + if (insertionCode && insertionCode.groups) { + return { + collectionName: insertionCode.groups.collectionName, + + // The docs use quoted/unquoted shell syntax inconsistently, so use JSON5 instead of regular JSON + // to parse the documents. + documents: JSON5.parse(insertionCode.groups.documents.trim()), + }; + } + } + + // Sometimes insertion code for the collection will be in the parent examples section. We fallback to it if we can't find it in the current section. + while (element) { + element = element?.parentElement?.closest('section'); + const examples = element?.querySelector("a[href='#examples']"); + if (examples) { + return this.getInsertionCode(element); + } + } + + return undefined; + } + + public async getSchema(): Promise< + { schema: Schema; collectionName: string } | undefined + > { + const fragment = new URL(this.url).hash; + if (!fragment) { + return; + } + + const dom = await JSDOM.fromURL(this.url); + const exampleSection = dom.window.document + .querySelector(`a[href='${fragment}']`) + ?.closest('section'); + + const insertionCode = this.getInsertionCode(exampleSection); + + if (!insertionCode) { + return; + } + + return { + schema: await parseSchema(insertionCode.documents), + collectionName: insertionCode.collectionName, + }; + } +} + +export class TestGenerator extends GeneratorBase { + private async emitTestBody(category: string, test: TestType): Promise { + if (!test.link) { + this.emit( + `// TODO: No docs reference found for ${category}.${test.name}\n` + ); + return; + } + + if (!test.pipeline) { + this.emit(`// TODO: No pipeline found for ${category}.${test.name}\n`); + return; + } + + const schema = await new DocsCrawler(test.link).getSchema(); + if (!schema) { + this.emit( + `// TODO: no schema found for ${category}.${test.name} at ${test.link}\n` + ); + return; + } + + this.emit(`type ${schema.collectionName} = {};\n`); // TODO + this.emit( + `const aggregation: schema.Pipeline<${schema.collectionName}> = [\n` + ); + + for (const stage of test.pipeline) { + const json = JSON.stringify(stage, (_, value: any): any => { + if ( + typeof value === 'object' && + '$code' in value && + typeof value.$code === 'string' + ) { + return removeNewlines(value.$code); + } + + return value; + }); + + this.emit( + json.replaceAll(/"(?function[^"]*)"/gm, '$') + ); + + this.emit(',\n'); + } + + this.emit('];\n'); + } + + protected override async generateImpl(yamlFiles: YamlFiles): Promise { + const whitelisted = ['$accumulator', '$addToSet', '$avg', '$bottom']; // TODO: whitelist all + + for await (const file of yamlFiles) { + const namespace = `${capitalize(file.category)}Operators`; + + const basePath = path.resolve(__dirname, '..', 'tests', file.category); + fs.mkdir(basePath, { recursive: true }); + + for await (const operator of file.operators()) { + const parsed = Operator.parse(operator.yaml); + if (whitelisted.indexOf(parsed.name) === -1) { + // TODO: enable for others + return; + } + + const filePath = path.join(basePath, `${parsed.name}.spec.ts`); + this.emitToFile(filePath); + + this.emit(`import * as schema from '../../out/schema';\n\n`); + + let i = 0; + for (const test of parsed.tests ?? []) { + this.emitComment( + test.name ?? `Test ${namespace}.${parsed.name}`, + test.link + ); + this.emit(`function test${i++}() {\n`); + + await this.emitTestBody(parsed.name, test); + + this.emit('}\n\n'); + } + } + } + } +} diff --git a/packages/mql-typescript/src/utils.ts b/packages/mql-typescript/src/utils.ts index 9451b6b4..63d2a0e0 100644 --- a/packages/mql-typescript/src/utils.ts +++ b/packages/mql-typescript/src/utils.ts @@ -1,5 +1,3 @@ -import { unknown } from 'zod'; - export class StringWriter { private buffer: string = ''; @@ -11,3 +9,11 @@ export class StringWriter { return this.buffer; } } + +export function capitalize(str: string): string { + return str[0].toUpperCase() + str.slice(1); +} + +export function removeNewlines(str: string): string { + return str.replace(/\r?\n|\r/gm, ''); +} diff --git a/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts new file mode 100644 index 00000000..01e3eb85 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts @@ -0,0 +1,79 @@ +import * as schema from '../../out/schema'; + +/** + * Use $accumulator to Implement the $avg Operator + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/#use--accumulator-to-implement-the--avg-operator} + */ +function test0() { + type books = {}; + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$author', + avgCopies: { + $accumulator: { + init: function () { + return { count: 0, sum: 0 }; + }, + accumulate: function (state, numCopies) { + return { count: state.count + 1, sum: state.sum + numCopies }; + }, + accumulateArgs: ['$copies'], + merge: function (state1, state2) { + return { + count: state1.count + state2.count, + sum: state1.sum + state2.sum, + }; + }, + finalize: function (state) { + return state.sum / state.count; + }, + lang: 'js', + }, + }, + }, + }, + ]; +} + +/** + * Use initArgs to Vary the Initial State by Group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/#use-initargs-to-vary-the-initial-state-by-group} + */ +function test1() { + type restaurants = {}; + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { city: '$city' }, + restaurants: { + $accumulator: { + init: function (city, userProfileCity) { + return { max: city === userProfileCity ? 3 : 1, restaurants: [] }; + }, + initArgs: ['$city', 'Bettles'], + accumulate: function (state, restaurantName) { + if (state.restaurants.length < state.max) { + state.restaurants.push(restaurantName); + } + return state; + }, + accumulateArgs: ['$name'], + merge: function (state1, state2) { + return { + max: state1.max, + restaurants: state1.restaurants + .concat(state2.restaurants) + .slice(0, state1.max), + }; + }, + finalize: function (state) { + return state.restaurants; + }, + lang: 'js', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts b/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts new file mode 100644 index 00000000..ebf33314 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts @@ -0,0 +1,17 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--group-stage} + */ +function test0() { + // TODO: no schema found for $addToSet.Use in $group Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--group-stage +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--setwindowfields-stage} + */ +function test1() { + // TODO: no schema found for $addToSet.Use in $setWindowFields Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--setwindowfields-stage +} diff --git a/packages/mql-typescript/tests/accumulator/$avg.spec.ts b/packages/mql-typescript/tests/accumulator/$avg.spec.ts new file mode 100644 index 00000000..98aa73e8 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/$avg.spec.ts @@ -0,0 +1,17 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--group-stage} + */ +function test0() { + // TODO: no schema found for $avg.Use in $group Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--group-stage +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--setwindowfields-stage} + */ +function test1() { + // TODO: no schema found for $avg.Use in $setWindowFields Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--setwindowfields-stage +} diff --git a/packages/mql-typescript/tests/accumulator/$bottom.spec.ts b/packages/mql-typescript/tests/accumulator/$bottom.spec.ts new file mode 100644 index 00000000..cb2e323c --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/$bottom.spec.ts @@ -0,0 +1,38 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Bottom Score + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/#find-the-bottom-score} + */ +function test0() { + type gamescores = {}; + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + playerId: { + $bottom: { output: ['$playerId', '$score'], sortBy: { score: -1 } }, + }, + }, + }, + ]; +} + +/** + * Finding the Bottom Score Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/#finding-the-bottom-score-across-multiple-games} + */ +function test1() { + type gamescores = {}; + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + playerId: { + $bottom: { output: ['$playerId', '$score'], sortBy: { score: -1 } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts deleted file mode 100644 index f6ccbbb5..00000000 --- a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import * as schema from '../../out/schema'; - -type Books = { - _id: 8751; - title: 'The Banquet'; - author: 'Dante'; - copies: 2; -}; - -const aggregation: schema.Pipeline = [ - { - $group: { - _id: '$author', - avgCopies: { - $accumulator: { - init: function () { - // Set the initial state - return { count: 0, sum: 0 }; - }, - accumulate: function (state, numCopies) { - // Define how to update the state - return { - count: state.count + 1, - sum: state.sum + numCopies, - }; - }, - accumulateArgs: ['$copies'], // Argument required by the accumulate function - merge: function (state1, state2) { - // When the operator performs a merge, - return { - // add the fields from the two states - count: state1.count + state2.count, - sum: state1.sum + state2.sum, - }; - }, - finalize: function (state) { - // After collecting the results from all documents, - return state.sum / state.count; // calculate the average - }, - lang: 'js', - }, - }, - }, - }, -]; diff --git a/packages/mql-typescript/tests/stage/bucket.spec.ts b/packages/mql-typescript/tests/stage/bucket.spec.ts deleted file mode 100644 index fda7b56c..00000000 --- a/packages/mql-typescript/tests/stage/bucket.spec.ts +++ /dev/null @@ -1,34 +0,0 @@ -import * as schema from '../../out/schema'; - -type Artists = { - _id: number; - last_name: string; - first_name: string; - year_born: number; - year_died: number; - nationality: string; -}; - -const stage1: schema.StageOperators.$bucket = { - $bucket: { - groupBy: '$year_born', // Field to group by - boundaries: [1840, 1850, 1860, 1870, 1880], // Boundaries for the buckets - default: 'Other', // Bucket ID for documents which do not fall into a bucket - output: { - // Output for each bucket - count: { $sum: 1 }, - artists: { - $push: { - name: { $concat: ['$first_name', ' ', '$last_name'] }, - year_born: '$year_born', - }, - }, - }, - }, -}; - -const stage2: schema.StageOperators.$match = { - $match: { count: { $gt: 3 } }, -}; - -const aggregation: schema.Pipeline = [stage1, stage2]; From 7affa153aae647ab0e9939e8c185f6e41e018fdd Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 20 Mar 2025 11:12:24 +0100 Subject: [PATCH 03/26] revert some package-lock changes --- package-lock.json | 2023 +++++++++++++++------------------------------ 1 file changed, 652 insertions(+), 1371 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9cd2070a..0aff38f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -246,6 +246,15 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/eslint-parser": { "version": "7.22.7", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.7.tgz", @@ -325,6 +334,15 @@ "yallist": "^3.0.2" } }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -1899,25 +1917,23 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "node_modules/@babel/runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", - "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", - "license": "MIT", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "dependencies": { - "regenerator-runtime": "^0.14.0" + "regenerator-runtime": "^0.13.4" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz", - "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==", - "license": "MIT", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", "dependencies": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" }, "engines": { "node": ">=6.9.0" @@ -8578,13 +8594,12 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "license": "MIT", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -8720,18 +8735,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", + "call-bind": "^1.0.5", "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -8826,28 +8841,15 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", "engines": { "node": ">= 0.4" }, @@ -9223,12 +9225,11 @@ } }, "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { - "fill-range": "^7.1.1" + "fill-range": "^7.0.1" }, "engines": { "node": ">=8" @@ -9503,15 +9504,15 @@ } }, "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "call-bind-apply-helpers": "^1.0.0", "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.2" + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -9533,22 +9534,6 @@ "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==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", @@ -10417,11 +10402,10 @@ } }, "node_modules/core-js-pure": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", - "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.0.tgz", + "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==", "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -10657,57 +10641,6 @@ "node": ">=18" } }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -11757,9 +11690,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.120", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", - "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==", + "version": "1.5.122", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.122.tgz", + "integrity": "sha512-EML1wnwkY5MFh/xUnCvY8FrhUuKzdYhowuZExZOfwJo+Zu9OsNCI23Cgl5y7awy7HrUHSwB1Z8pZX5TI34lsUg==", "license": "ISC" }, "node_modules/electron/node_modules/@types/node": { @@ -11916,12 +11849,11 @@ } }, "node_modules/enzyme-shallow-equal": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", - "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", + "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", "dependencies": { - "hasown": "^2.0.0", + "has": "^1.0.3", "object-is": "^1.1.5" }, "funding": { @@ -11951,62 +11883,51 @@ } }, "node_modules/es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "license": "MIT", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", + "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", + "es-set-tostringtag": "^2.0.2", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.1", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -12079,14 +12000,13 @@ } }, "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12464,6 +12384,15 @@ "json5": "lib/cli.js" } }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-plugin-import/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -13372,10 +13301,9 @@ } }, "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==", - "license": "MIT", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -13549,18 +13477,11 @@ } }, "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "license": "MIT", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { @@ -13719,17 +13640,14 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "license": "MIT", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -14143,10 +14061,9 @@ } }, "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "license": "MIT", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", "engines": { "node": "*" } @@ -14252,14 +14169,13 @@ } }, "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bound": "^1.0.3", + "call-bind": "^1.0.5", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -14578,13 +14494,11 @@ } }, "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -14777,13 +14691,9 @@ } }, "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14808,13 +14718,9 @@ } }, "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { "node": ">= 0.4" }, @@ -15481,14 +15387,13 @@ } }, "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -15582,14 +15487,12 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "license": "MIT", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -15604,35 +15507,12 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" + "has-bigints": "^1.0.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15651,13 +15531,12 @@ } }, "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "license": "MIT", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -15715,31 +15594,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "license": "MIT", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -15777,21 +15637,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "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", @@ -15871,11 +15716,15 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "license": "MIT", + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { "node": ">= 0.4" }, @@ -15883,28 +15732,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -15961,28 +15802,13 @@ "dev": true }, "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "license": "MIT", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -15991,15 +15817,11 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16027,13 +15849,11 @@ } }, "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16048,14 +15868,11 @@ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" }, "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -16077,12 +15894,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "license": "MIT", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "which-typed-array": "^1.1.16" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -16122,44 +15938,12 @@ "assert": "^1.4.1" } }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16690,7 +16474,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -19112,12 +18895,11 @@ } }, "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { - "braces": "^3.0.3", + "braces": "^3.0.2", "picomatch": "^2.3.1" }, "engines": { @@ -20868,13 +20650,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20903,16 +20681,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "license": "MIT", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bind": "^1.0.5", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, "engines": { @@ -21176,23 +20951,6 @@ "node": ">=0.10.0" } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -21920,15 +21678,6 @@ "node": ">=10" } }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -21959,9 +21708,9 @@ } }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", - "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true, "funding": [ { @@ -22952,28 +22701,6 @@ "node": ">=8" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -22991,10 +22718,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "node_modules/regenerator-transform": { "version": "0.15.1", @@ -23005,17 +22731,14 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "license": "MIT", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dependencies": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.6", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -23484,15 +23207,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "license": "MIT", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, "engines": { @@ -23505,45 +23226,21 @@ "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "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==" }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "license": "MIT", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bound": "^1.0.2", + "call-bind": "^1.0.6", "es-errors": "^1.3.0", - "is-regex": "^1.2.1" + "is-regex": "^1.1.4" }, "engines": { "node": ">= 0.4" @@ -23628,10 +23325,9 @@ "dev": true }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", "bin": { "semver": "bin/semver.js" } @@ -23771,46 +23467,29 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "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==", - "license": "MIT", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "dependencies": { - "define-data-property": "^1.1.4", + "define-data-property": "^1.1.2", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "license": "MIT", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", + "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" + "has-property-descriptors": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -23853,72 +23532,13 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "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==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "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==", - "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==", - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "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" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24498,18 +24118,13 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "license": "MIT", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -24519,35 +24134,26 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "license": "MIT", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -25121,7 +24727,6 @@ "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==", - "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -25422,30 +25027,27 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "license": "MIT", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", "dependencies": { - "call-bound": "^1.0.3", + "call-bind": "^1.0.6", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "license": "MIT", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dependencies": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -25455,18 +25057,15 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "license": "MIT", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { "node": ">= 0.4" @@ -25476,20 +25075,13 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "license": "MIT", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" + "is-typed-array": "^1.1.9" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -25536,18 +25128,14 @@ } }, "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "license": "MIT", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dependencies": { - "call-bound": "^1.0.3", + "call-bind": "^1.0.2", "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -26056,70 +25644,15 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "license": "MIT", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -26132,18 +25665,15 @@ "dev": true }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "license": "MIT", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -29573,14 +29103,14 @@ } }, "packages/mql-typescript/node_modules/sinon": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.2.tgz", - "integrity": "sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.4.tgz", + "integrity": "sha512-myidFob7fjmYHJb+CHNLtAYScxn3sngGq4t75L2rCGGpE/k4OQVkN3KE5FsN+XkO2+fcDZ65PGvq3KHrlLAm7g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.2", + "@sinonjs/fake-timers": "^13.0.5", "@sinonjs/samsam": "^8.0.1", "diff": "^7.0.0", "nise": "^6.1.1", @@ -30593,6 +30123,11 @@ "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==" + }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -30654,6 +30189,11 @@ "yallist": "^3.0.2" } }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -31697,20 +31237,20 @@ "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==" }, "@babel/runtime": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", - "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", "requires": { - "regenerator-runtime": "^0.14.0" + "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.26.10", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.10.tgz", - "integrity": "sha512-uITFQYO68pMEYR46AHgQoyBg7KPPJDAbGn4jUTIRgCFJIp88MIBUianVOplhZDEec07bp9zIyr4Kp0FCyQzmWg==", + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.18.9.tgz", + "integrity": "sha512-qZEWeccZCrHA2Au4/X05QW5CMdm4VjUDCrGq5gf1ZDcM4hRqreKrtwAn7yci9zfgAS9apvnsFXiGBHBAxZdK9A==", "requires": { - "core-js-pure": "^3.30.2", - "regenerator-runtime": "^0.14.0" + "core-js-pure": "^3.20.2", + "regenerator-runtime": "^0.13.4" } }, "@babel/template": { @@ -36871,13 +36411,13 @@ } }, "sinon": { - "version": "19.0.2", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.2.tgz", - "integrity": "sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==", + "version": "19.0.4", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.4.tgz", + "integrity": "sha512-myidFob7fjmYHJb+CHNLtAYScxn3sngGq4t75L2rCGGpE/k4OQVkN3KE5FsN+XkO2+fcDZ65PGvq3KHrlLAm7g==", "dev": true, "requires": { "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.2", + "@sinonjs/fake-timers": "^13.0.5", "@sinonjs/samsam": "^8.0.1", "diff": "^7.0.0", "nise": "^6.1.1", @@ -39412,12 +38952,12 @@ } }, "array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "requires": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" } }, "array-differ": { @@ -39508,17 +39048,18 @@ } }, "arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "requires": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", + "call-bind": "^1.0.5", "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" } }, "arrify": { @@ -39593,23 +39134,15 @@ "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", "dev": true }, - "async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==" - }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "requires": { - "possible-typed-array-names": "^1.0.0" - } + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", + "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==" }, "aws-sdk": { "version": "2.1441.0", @@ -39917,11 +39450,11 @@ } }, "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "requires": { - "fill-range": "^7.1.1" + "fill-range": "^7.0.1" } }, "browser-stdout": { @@ -40108,14 +39641,15 @@ } }, "call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "call-bind-apply-helpers": "^1.0.0", "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.2" + "set-function-length": "^1.2.1" } }, "call-bind-apply-helpers": { @@ -40127,15 +39661,6 @@ "function-bind": "^1.1.2" } }, - "call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "requires": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - } - }, "call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", @@ -40783,9 +40308,9 @@ } }, "core-js-pure": { - "version": "3.41.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.41.0.tgz", - "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==" + "version": "3.24.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.24.0.tgz", + "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==" }, "core-util-is": { "version": "1.0.3", @@ -40968,36 +40493,6 @@ } } }, - "data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - } - }, - "data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "requires": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - } - }, - "data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - } - }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -41763,9 +41258,9 @@ } }, "electron-to-chromium": { - "version": "1.5.120", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz", - "integrity": "sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ==" + "version": "1.5.122", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.122.tgz", + "integrity": "sha512-EML1wnwkY5MFh/xUnCvY8FrhUuKzdYhowuZExZOfwJo+Zu9OsNCI23Cgl5y7awy7HrUHSwB1Z8pZX5TI34lsUg==" }, "email-validator": { "version": "2.0.4", @@ -41881,11 +41376,11 @@ } }, "enzyme-shallow-equal": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", - "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", + "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", "requires": { - "hasown": "^2.0.0", + "has": "^1.0.3", "object-is": "^1.1.5" } }, @@ -41912,61 +41407,51 @@ } }, "es-abstract": { - "version": "1.23.9", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", - "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", - "requires": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", + "version": "1.22.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", + "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "requires": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.7", + "es-define-property": "^1.0.0", "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.0", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", + "es-set-tostringtag": "^2.0.2", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.1", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-regex": "^1.2.1", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.0", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.3", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.3", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.18" + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.0", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.1", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.14" } }, "es-array-method-boxes-properly": { @@ -42018,13 +41503,13 @@ } }, "es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "requires": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, "es5-ext": { @@ -42334,6 +41819,12 @@ "minimist": "^1.2.0" } }, + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -42980,9 +42471,9 @@ } }, "fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "requires": { "to-regex-range": "^5.0.1" } @@ -43110,11 +42601,11 @@ "dev": true }, "for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "is-callable": "^1.2.7" + "is-callable": "^1.1.3" } }, "foreground-child": { @@ -43221,16 +42712,14 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" } }, "functional-red-black-tree": { @@ -43567,9 +43056,9 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" }, "get-intrinsic": { "version": "1.3.0", @@ -43634,13 +43123,13 @@ "dev": true }, "get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "requires": { - "call-bound": "^1.0.3", + "call-bind": "^1.0.5", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "get-intrinsic": "^1.2.4" } }, "get-tsconfig": { @@ -43885,12 +43374,11 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "requires": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" + "define-properties": "^1.1.3" } }, "globby": { @@ -44033,9 +43521,9 @@ } }, "has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" }, "has-flag": { "version": "4.0.0", @@ -44051,12 +43539,9 @@ } }, "has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "requires": { - "dunder-proto": "^1.0.0" - } + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, "has-symbols": { "version": "1.1.0", @@ -44552,13 +44037,13 @@ } }, "internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "requires": { "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" + "hasown": "^2.0.0", + "side-channel": "^1.0.4" } }, "interpret": { @@ -44631,13 +44116,12 @@ } }, "is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" } }, "is-arrayish": { @@ -44646,24 +44130,12 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, - "is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "requires": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - } - }, "is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "requires": { - "has-bigints": "^1.0.2" + "has-bigints": "^1.0.1" } }, "is-binary-path": { @@ -44676,12 +44148,12 @@ } }, "is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, "is-builtin-module": { @@ -44715,23 +44187,12 @@ "hasown": "^2.0.0" } }, - "is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "requires": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - } - }, "is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "requires": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-docker": { @@ -44751,14 +44212,6 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, - "is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "requires": { - "call-bound": "^1.0.3" - } - }, "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", @@ -44807,28 +44260,27 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, - "is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" - }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" + }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-obj": { @@ -44867,27 +44319,20 @@ "dev": true }, "is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" } }, - "is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" - }, "is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "requires": { - "call-bound": "^1.0.3" + "call-bind": "^1.0.2" } }, "is-ssh": { @@ -44906,12 +44351,11 @@ "dev": true }, "is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "requires": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" + "has-tostringtag": "^1.0.0" } }, "is-subset": { @@ -44920,13 +44364,11 @@ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" }, "is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" + "has-symbols": "^1.0.2" } }, "is-text-path": { @@ -44939,11 +44381,11 @@ } }, "is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "requires": { - "which-typed-array": "^1.1.16" + "which-typed-array": "^1.1.14" } }, "is-typedarray": { @@ -44971,26 +44413,12 @@ "assert": "^1.4.1" } }, - "is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" - }, "is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "requires": { - "call-bound": "^1.0.3" - } - }, - "is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "requires": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" + "call-bind": "^1.0.2" } }, "is-windows": { @@ -47293,11 +46721,11 @@ "dev": true }, "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "requires": { - "braces": "^3.0.3", + "braces": "^3.0.2", "picomatch": "^2.3.1" } }, @@ -49008,9 +48436,9 @@ "dev": true }, "object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, "object-is": { "version": "1.1.5", @@ -49027,15 +48455,13 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bind": "^1.0.5", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", + "has-symbols": "^1.0.3", "object-keys": "^1.1.1" } }, @@ -49236,16 +48662,6 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, - "own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "requires": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - } - }, "p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -49783,11 +49199,6 @@ "@babel/runtime": "^7.17.8" } }, - "possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" - }, "postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -49800,9 +49211,9 @@ }, "dependencies": { "nanoid": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.10.tgz", - "integrity": "sha512-vSJJTG+t/dIKAUhUDw/dLdZ9s//5OxcHqLaDWWrW4Cdq7o6tdLIczUkMXt2MBNmk6sJRZBZRXVixs7URY1CmIg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "dev": true } } @@ -50543,21 +49954,6 @@ "strip-indent": "^3.0.0" } }, - "reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "requires": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - } - }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -50572,9 +49968,9 @@ } }, "regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" }, "regenerator-transform": { "version": "0.15.1", @@ -50585,16 +49981,14 @@ } }, "regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "requires": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.6", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" + "set-function-name": "^2.0.1" } }, "regexpp": { @@ -50945,14 +50339,13 @@ } }, "safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", + "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, "dependencies": { @@ -50968,30 +50361,14 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "requires": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } - }, "safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "requires": { - "call-bound": "^1.0.2", + "call-bind": "^1.0.6", "es-errors": "^1.3.0", - "is-regex": "^1.2.1" + "is-regex": "^1.1.4" } }, "safe-stable-stringify": { @@ -51053,9 +50430,9 @@ "dev": true }, "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" }, "semver-compare": { "version": "1.0.0", @@ -51174,37 +50551,26 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "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==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "requires": { - "define-data-property": "^1.1.4", + "define-data-property": "^1.1.2", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" + "has-property-descriptors": "^1.0.1" } }, "set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "requires": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", + "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - } - }, - "set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "requires": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" + "has-property-descriptors": "^1.0.0" } }, "setprototypeof": { @@ -51235,47 +50601,13 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "requires": { - "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" - } - }, - "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==", - "requires": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - } - }, - "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==", - "requires": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - } - }, - "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==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "requires": { - "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" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" } }, "siginfo": { @@ -51733,38 +51065,33 @@ } }, "string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "requires": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "requires": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" } }, "strip-ansi": { @@ -52416,52 +51743,46 @@ } }, "typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", + "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", "requires": { - "call-bound": "^1.0.3", + "call-bind": "^1.0.6", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" + "is-typed-array": "^1.1.13" } }, "typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "requires": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" } }, "typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" } }, "typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "requires": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.2", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" + "is-typed-array": "^1.1.9" } }, "typedarray": { @@ -52492,14 +51813,14 @@ "optional": true }, "unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "requires": { - "call-bound": "^1.0.3", + "call-bind": "^1.0.2", "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" } }, "unbzip2-stream": { @@ -52872,53 +52193,15 @@ } }, "which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "requires": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - } - }, - "which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "requires": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "dependencies": { - "isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - } - } - }, - "which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "requires": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" } }, "which-module": { @@ -52928,17 +52211,15 @@ "dev": true }, "which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "requires": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", + "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "requires": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" } }, "why-is-node-running": { From 469d960602dd57f36904d2764473c3a6510d81f6 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 20 Mar 2025 11:44:54 +0100 Subject: [PATCH 04/26] chore: update prettier version --- configs/eslint-config-devtools/package.json | 2 +- configs/mocha-config-devtools/package.json | 2 +- configs/prettier-config-devtools/package.json | 4 +- configs/tsconfig-devtools/package.json | 2 +- package-lock.json | 13477 +++++++++------- packages/devtools-proxy-support/package.json | 2 +- packages/dl-center/package.json | 2 +- packages/download-url/package.json | 2 +- packages/get-os-info/package.json | 2 +- packages/mongodb-cloud-info/package.json | 2 +- packages/mongodb-constants/package.json | 2 +- packages/mongodb-downloader/package.json | 2 +- packages/mongodb-log-writer/package.json | 2 +- packages/mongodb-redact/package.json | 2 +- packages/mongodb-runner/package.json | 2 +- packages/monorepo-tools/package.json | 2 +- packages/mql-typescript/.depcheckrc | 1 + packages/mql-typescript/.eslintignore | 1 + packages/mql-typescript/bin/runner.js | 3 + packages/mql-typescript/out/schema.ts | 59 +- packages/mql-typescript/out/test.ts | 40 - packages/mql-typescript/package.json | 17 +- packages/mql-typescript/src/cli.ts | 33 + packages/mql-typescript/src/index.ts | 35 +- packages/mql-typescript/src/metaschema.ts | 8 +- .../package.json | 2 +- packages/oidc-http-server-pages/package.json | 2 +- packages/oidc-mock-provider/package.json | 2 +- packages/query-parser/package.json | 2 +- packages/saslprep/package.json | 2 +- packages/sbom-tools/package.json | 2 +- packages/shell-bson-parser/package.json | 2 +- packages/signing-utils/package.json | 2 +- packages/ts-autocomplete/package.json | 2 +- scripts/package.json | 2 +- 35 files changed, 7834 insertions(+), 5892 deletions(-) create mode 100755 packages/mql-typescript/bin/runner.js delete mode 100644 packages/mql-typescript/out/test.ts create mode 100644 packages/mql-typescript/src/cli.ts diff --git a/configs/eslint-config-devtools/package.json b/configs/eslint-config-devtools/package.json index 626bef50..0f05b3e5 100644 --- a/configs/eslint-config-devtools/package.json +++ b/configs/eslint-config-devtools/package.json @@ -28,7 +28,7 @@ "eslint-plugin-react-hooks": "^4.2.0" }, "devDependencies": { - "prettier": "2.3.2" + "prettier": "^3.5.3" }, "scripts": { "check": "npm run lint", diff --git a/configs/mocha-config-devtools/package.json b/configs/mocha-config-devtools/package.json index 64c89399..e7f3210e 100644 --- a/configs/mocha-config-devtools/package.json +++ b/configs/mocha-config-devtools/package.json @@ -23,7 +23,7 @@ }, "devDependencies": { "@mongodb-js/prettier-config-devtools": "^1.0.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "react": ">=16" }, "peerDependencies": { diff --git a/configs/prettier-config-devtools/package.json b/configs/prettier-config-devtools/package.json index eb9293cc..4efd231a 100644 --- a/configs/prettier-config-devtools/package.json +++ b/configs/prettier-config-devtools/package.json @@ -5,10 +5,10 @@ "license": "SSPL", "main": "index.json", "peerDependencies": { - "prettier": "^2.3.2" + "prettier": "^3.5.3" }, "devDependencies": { - "prettier": "^2.3.2" + "prettier": "^3.5.3" }, "scripts": { "check": "npm run lint", diff --git a/configs/tsconfig-devtools/package.json b/configs/tsconfig-devtools/package.json index 04c5b24b..4d776356 100644 --- a/configs/tsconfig-devtools/package.json +++ b/configs/tsconfig-devtools/package.json @@ -12,7 +12,7 @@ }, "devDependencies": { "@mongodb-js/prettier-config-devtools": "^1.0.1", - "prettier": "^2.3.2" + "prettier": "^3.5.3" }, "scripts": { "check": "npm run lint", diff --git a/package-lock.json b/package-lock.json index 0aff38f9..ab5a9c96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -46,7 +46,7 @@ "eslint-plugin-react-hooks": "^4.2.0" }, "devDependencies": { - "prettier": "2.3.2" + "prettier": "^3.5.3" }, "peerDependencies": { "eslint": "^7.25.0" @@ -72,52 +72,22 @@ }, "devDependencies": { "@mongodb-js/prettier-config-devtools": "^1.0.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "react": ">=16" }, "peerDependencies": { "react": ">=16" } }, - "configs/mocha-config-devtools/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "configs/prettier-config-devtools": { "name": "@mongodb-js/prettier-config-devtools", "version": "1.0.1", "license": "SSPL", "devDependencies": { - "prettier": "^2.3.2" + "prettier": "^3.5.3" }, "peerDependencies": { - "prettier": "^2.3.2" - } - }, - "configs/prettier-config-devtools/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "prettier": "^3.5.3" } }, "configs/tsconfig-devtools": { @@ -126,27 +96,12 @@ "license": "SSPL", "devDependencies": { "@mongodb-js/prettier-config-devtools": "^1.0.1", - "prettier": "^2.3.2" + "prettier": "^3.5.3" }, "peerDependencies": { "typescript": "^5.0.4" } }, - "configs/tsconfig-devtools/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -246,15 +201,6 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "license": "MIT" }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/eslint-parser": { "version": "7.22.7", "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.7.tgz", @@ -334,15 +280,6 @@ "yallist": "^3.0.2" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -2192,10 +2129,11 @@ } }, "node_modules/@dnd-kit/accessibility/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@dnd-kit/core": { "version": "6.1.0", @@ -2213,10 +2151,11 @@ } }, "node_modules/@dnd-kit/core/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@dnd-kit/sortable": { "version": "7.0.2", @@ -2233,10 +2172,11 @@ } }, "node_modules/@dnd-kit/sortable/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@dnd-kit/utilities": { "version": "3.2.2", @@ -2251,10 +2191,11 @@ } }, "node_modules/@dnd-kit/utilities/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@electron/get": { "version": "2.0.3", @@ -2447,9 +2388,10 @@ } }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -2525,10 +2467,11 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "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" }, @@ -2561,12 +2504,13 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", "dev": true, + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { @@ -2709,9 +2653,10 @@ } }, "node_modules/@isaacs/cliui/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==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "license": "MIT", "engines": { "node": ">=12" }, @@ -2752,9 +2697,10 @@ } }, "node_modules/@isaacs/cliui/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==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2968,37 +2914,54 @@ } }, "node_modules/@koa/router/node_modules/path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", - "dev": true + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" }, "node_modules/@leafygreen-ui/a11y": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/a11y/-/a11y-1.4.12.tgz", - "integrity": "sha512-JYpXbcPN6cbURBYEVW186gU/n4ibmmoBsD0IEtnxDl7jGir7aT7s6hd3L9nbOQEzcYfzDNHYg1CWvOHktanpkQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/a11y/-/a11y-1.5.0.tgz", + "integrity": "sha512-QKnzWWFsw8FR9+KVqQbgzSGC5T2NcsUI1+6bc6+mNh1HwH8nUctrXj0tjTkrV+Dmab8zdeArUz24ly9eEvl7UA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.1.0", - "@leafygreen-ui/lib": "^13.2.0" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.6.1" } }, "node_modules/@leafygreen-ui/a11y/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" } }, + "node_modules/@leafygreen-ui/a11y/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, "node_modules/@leafygreen-ui/a11y/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3024,10 +2987,11 @@ } }, "node_modules/@leafygreen-ui/badge/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3038,18 +3002,36 @@ } }, "node_modules/@leafygreen-ui/badge/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/badge/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/badge/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/banner": { @@ -3071,10 +3053,11 @@ } }, "node_modules/@leafygreen-ui/banner/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3085,42 +3068,74 @@ } }, "node_modules/@leafygreen-ui/banner/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/banner/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/banner/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/banner/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/banner/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/box": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/box/-/box-3.1.8.tgz", - "integrity": "sha512-qfjwhrie+mUrS2H+Qp98iQKBPoZtNpFmlGBYgg59sVOzotFvyvqwxlf/JcaNGo+v7nyOhC2XAHui0ywf9cScKw==", - "dev": true + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/box/-/box-3.1.9.tgz", + "integrity": "sha512-hY05VQKDVhqqBH/Dz1kxonjQmqrMR9URa3Dw3YgdLbVUd1hMQkoWbplamiE4S4vq2+81SQBgNw53i+/Vd0Cl0g==", + "deprecated": "This package is deprecated. Please use @leafygreen-ui/polymorphic instead.", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/button": { "version": "19.0.4", @@ -3141,19 +3156,37 @@ } }, "node_modules/@leafygreen-ui/button/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/button/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/button/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/card": { "version": "9.0.9", @@ -3173,18 +3206,36 @@ } }, "node_modules/@leafygreen-ui/card/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/card/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/card/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/checkbox": { @@ -3207,20 +3258,46 @@ } }, "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3231,35 +3308,54 @@ } }, "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/checkbox/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/code": { @@ -3292,38 +3388,55 @@ } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/button": { - "version": "21.0.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.0.12.tgz", - "integrity": "sha512-t8fSINV2JebwA7uVm2bQrZzih3pGHXlKgxt2aQJbYr7IA3mzIFSVxbVH3/aPm/6iSqkgpVWMg8Y7Mgn1LwNAGA==", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.3.0.tgz", + "integrity": "sha512-v9qipsRWHQBN9sC4RNWmJ/PVQCcYZdg9Wa+k9Q6LFjgahI1/6BXYTZOP4wPJQDp2AG6+dx2CF7Rp60ymM+wtLw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/box": "^3.1.8", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.1", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/ripple": "^1.1.12", - "@leafygreen-ui/tokens": "^2.3.0", + "@leafygreen-ui/box": "^3.1.9", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/ripple": "^1.1.13", + "@leafygreen-ui/tokens": "^2.5.2", + "@lg-tools/test-harnesses": "^0.1.2", "polished": "^4.2.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.10" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3334,67 +3447,135 @@ } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/polymorphic/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/select": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/select/-/select-11.1.2.tgz", - "integrity": "sha512-vLpelaNRJt1+I0Fl7Te9FiRZ6y1f4/SQ88+7YDJG/aQ/7RI2oIIUbudUb0uOkDtnOEXA1YVJ1n/9Ind1PzJ4Yw==", + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/select/-/select-11.3.2.tgz", + "integrity": "sha512-qPAXYibI4UNX+xW7QdspoT+fg9WfkqTwCsD9j27rTyJZ+pR2BOW5oynG5gKnm0AVPWullms5/SdxiLWai1GxNA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/button": "^21.0.10", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.1.0", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/input-option": "^1.1.0", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.2.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.1.0", + "@leafygreen-ui/button": "^21.2.0", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/input-option": "^1.1.3", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/popover": "^11.3.1", + "@leafygreen-ui/tokens": "^2.5.2", + "@leafygreen-ui/typography": "^19.0.0", + "@lg-tools/test-harnesses": "^0.1.2", "@types/react-is": "^18.0.0", "lodash": "^4.17.21", "polished": "^4.1.3", "react-is": "^18.0.1" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/code/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/code/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "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" }, "node_modules/@leafygreen-ui/confirmation-modal": { "version": "4.0.10", @@ -3457,18 +3638,36 @@ } }, "node_modules/@leafygreen-ui/confirmation-modal/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/confirmation-modal/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/confirmation-modal/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/confirmation-modal/node_modules/@leafygreen-ui/typography": { @@ -3503,10 +3702,11 @@ } }, "node_modules/@leafygreen-ui/emotion": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/emotion/-/emotion-4.0.7.tgz", - "integrity": "sha512-OxBgzEqmnZHxH9sAn6421zGKCgZ/nSf3Ryg/Ihvqz9NJEuPmKFMt/Kign4TeoaWZraIXAiWTt8q0QVBzu8ChVg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/emotion/-/emotion-4.0.10.tgz", + "integrity": "sha512-6fW0jXce40N+ZtJIomvpROrJar6h1S9TAwHSfHVJmCRB791s5hATxudiD+aE6gqYUL+naiDQc/XKy7I3LUK+hA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@emotion/css": "^11.1.3", "@emotion/server": "^11.4.0" @@ -3531,20 +3731,35 @@ } }, "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3555,35 +3770,65 @@ } }, "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/form-field/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/guide-cue": { @@ -3611,28 +3856,31 @@ } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/button": { - "version": "21.0.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.0.12.tgz", - "integrity": "sha512-t8fSINV2JebwA7uVm2bQrZzih3pGHXlKgxt2aQJbYr7IA3mzIFSVxbVH3/aPm/6iSqkgpVWMg8Y7Mgn1LwNAGA==", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.3.0.tgz", + "integrity": "sha512-v9qipsRWHQBN9sC4RNWmJ/PVQCcYZdg9Wa+k9Q6LFjgahI1/6BXYTZOP4wPJQDp2AG6+dx2CF7Rp60ymM+wtLw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/box": "^3.1.8", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.1", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/ripple": "^1.1.12", - "@leafygreen-ui/tokens": "^2.3.0", + "@leafygreen-ui/box": "^3.1.9", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/ripple": "^1.1.13", + "@leafygreen-ui/tokens": "^2.5.2", + "@lg-tools/test-harnesses": "^0.1.2", "polished": "^4.2.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.10" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/button/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3643,18 +3891,36 @@ } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tooltip": { @@ -3679,20 +3945,35 @@ } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3703,20 +3984,32 @@ } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/@leafygreen-ui/typography": { @@ -3751,21 +4044,23 @@ } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", "dev": true, + "license": "MIT", "dependencies": { "tabbable": "^6.2.0" } }, "node_modules/@leafygreen-ui/guide-cue/node_modules/focus-trap-react": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.3.tgz", - "integrity": "sha512-YXBpFu/hIeSu6NnmV2xlXzOYxuWkoOtar9jzgp3lOmjWLWY59C/b8DtDHEAV4SPU07Nd/t+nS/SBNGkhUBFmEw==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.3.1.tgz", + "integrity": "sha512-PN4Ya9xf9nyj/Nd9VxBNMuD7IrlRbmaG6POAQ8VLqgtc6IY/Ln1tYakow+UIq4fihYYYFM70/2oyidE6bbiPgw==", "dev": true, + "license": "MIT", "dependencies": { - "focus-trap": "^7.5.4", + "focus-trap": "^7.6.1", "tabbable": "^6.2.0" }, "peerDependencies": { @@ -3778,7 +4073,8 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@leafygreen-ui/hooks": { "version": "7.7.8", @@ -3818,10 +4114,11 @@ } }, "node_modules/@leafygreen-ui/icon-button/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3832,18 +4129,36 @@ } }, "node_modules/@leafygreen-ui/icon-button/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/icon-button/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/icon-button/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/info-sprinkle": { @@ -3864,20 +4179,35 @@ } }, "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3888,56 +4218,122 @@ } }, "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/polymorphic/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } }, "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/tooltip": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.0.0.tgz", - "integrity": "sha512-dqyye58w/1uWCsoFWEVgt2rrkNOTPyk1AQN9Wc828+YObIDyBI+F6ppqDxKZtu6ztw34aEOJw3kfucE98zQk+A==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.1.0.tgz", + "integrity": "sha512-nVIirNqBShuj25u9koOPAVYpqGWKSDe/rsdRyPWZLeL9rLfbtZi9Xn44HeDX7brVo+KBkE29Gsuh1Y3J7LN5ng==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.0.1", - "@leafygreen-ui/icon": "^11.25.0", - "@leafygreen-ui/lib": "^13.0.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.1.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.0.1", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.5.0", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/popover": "^11.4.0", + "@leafygreen-ui/tokens": "^2.8.0", + "@leafygreen-ui/typography": "^19.0.0", "lodash": "^4.17.21", "polished": "^4.2.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.10" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/info-sprinkle/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/inline-definition": { @@ -3956,20 +4352,46 @@ } }, "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -3980,81 +4402,138 @@ } }, "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/polymorphic/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } }, "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/tooltip": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.0.0.tgz", - "integrity": "sha512-dqyye58w/1uWCsoFWEVgt2rrkNOTPyk1AQN9Wc828+YObIDyBI+F6ppqDxKZtu6ztw34aEOJw3kfucE98zQk+A==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.1.0.tgz", + "integrity": "sha512-nVIirNqBShuj25u9koOPAVYpqGWKSDe/rsdRyPWZLeL9rLfbtZi9Xn44HeDX7brVo+KBkE29Gsuh1Y3J7LN5ng==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.0.1", - "@leafygreen-ui/icon": "^11.25.0", - "@leafygreen-ui/lib": "^13.0.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.1.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.0.1", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.5.0", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/popover": "^11.4.0", + "@leafygreen-ui/tokens": "^2.8.0", + "@leafygreen-ui/typography": "^19.0.0", "lodash": "^4.17.21", "polished": "^4.2.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.10" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/inline-definition/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/input-option": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/input-option/-/input-option-1.1.0.tgz", - "integrity": "sha512-tqhH17DrM/YjEX5BHouVHqTxUH8Ssa46QYkvwoJ/1S/i2Kw/++L+h6R5zk6S6u+NDazdDbrtH0N6q8m2PvQwrA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/input-option/-/input-option-1.1.4.tgz", + "integrity": "sha512-tti2719MBIId67OwbAnXXm71kqDRGa6Xjiy2cCVWL0au6rYpcm7RXio9J6KZyk4aUvHGu3f6jMNKQgifapvSlw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/a11y": "^1.4.12", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4", - "@leafygreen-ui/typography": "^18.1.0" + "@leafygreen-ui/a11y": "^1.4.13", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.6.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0", + "@leafygreen-ui/typography": "^19.2.0" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -4065,35 +4544,78 @@ } }, "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/polymorphic/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } }, "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/input-option/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/leafygreen-provider": { @@ -4107,13 +4629,27 @@ } }, "node_modules/@leafygreen-ui/leafygreen-provider/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/leafygreen-provider/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/leafygreen-provider/node_modules/@leafygreen-ui/lib": { @@ -4216,19 +4752,37 @@ } }, "node_modules/@leafygreen-ui/menu/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/menu/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/menu/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/modal": { "version": "14.0.5", @@ -4254,18 +4808,36 @@ } }, "node_modules/@leafygreen-ui/modal/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/modal/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/modal/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/palette": { @@ -4294,121 +4866,219 @@ } }, "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" } }, - "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@storybook/csf": "^0.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/lib": { + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@storybook/csf": "^0.1.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/polymorphic/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } }, "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/tooltip": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.0.0.tgz", - "integrity": "sha512-dqyye58w/1uWCsoFWEVgt2rrkNOTPyk1AQN9Wc828+YObIDyBI+F6ppqDxKZtu6ztw34aEOJw3kfucE98zQk+A==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.1.0.tgz", + "integrity": "sha512-nVIirNqBShuj25u9koOPAVYpqGWKSDe/rsdRyPWZLeL9rLfbtZi9Xn44HeDX7brVo+KBkE29Gsuh1Y3J7LN5ng==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.0.1", - "@leafygreen-ui/icon": "^11.25.0", - "@leafygreen-ui/lib": "^13.0.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.1.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.0.1", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.5.0", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/popover": "^11.4.0", + "@leafygreen-ui/tokens": "^2.8.0", + "@leafygreen-ui/typography": "^19.0.0", "lodash": "^4.17.21", "polished": "^4.2.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.10" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/pipeline/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/polymorphic": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-1.3.6.tgz", - "integrity": "sha512-ZJqrYNAAO/CLgl3vtl01jQl2xz6pvzPRMEDqOgCykEn2/vk6wZUOJJ4FVK0cbLZuzwvKixbrTgOSw4WrF19sKg==", - "dev": true + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-1.3.7.tgz", + "integrity": "sha512-Tr2TmpS0YFJ3hGNbVWQpeseJRo4kTrVumVlZ4aF4hId1JYDzF0TU5JJO40v+brhbgnKsyBu7+Rvz6ExY1NcKew==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/popover": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/popover/-/popover-11.2.2.tgz", - "integrity": "sha512-6FrGtkExFyyk8ZQ5LMsU13J+VDbC4S261FhrfNuzwIp+LVQN25x0xhLyMcQwprRXI8iCL8AJ2ToyFLmstIkpOA==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/popover/-/popover-11.4.0.tgz", + "integrity": "sha512-hSr3zbbWOCUuhByR5ncFJTkXxFfA7o2QjVjDXKLVPPn9Gh7+sYRLe87mTQWs9m8fbRx9O4Uk7Vq0R9U4A77dxw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.1.0", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/portal": "^5.0.3", - "@leafygreen-ui/tokens": "^2.2.0", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/portal": "^5.1.1", + "@leafygreen-ui/tokens": "^2.8.0", "@types/react-transition-group": "^4.4.5", "react-transition-group": "^4.4.5" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -4419,31 +5089,50 @@ } }, "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/portal": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.0.3.tgz", - "integrity": "sha512-vwoZHtdrMzR5uBsfxAvl1kdB/xtQwtfpRTuCqC5Q3X+DsLg9JReDl+5dsGMegwDwkqwzsndYVGpq0BcFuDITXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.1.1.tgz", + "integrity": "sha512-8wvNdLxO3hWY7u5rf1ndYCJJ85TB6XpKp+dl7sQPoLnkq8HXd4GqnFXYwvGQp/pf3ts/Dp5FmZ/9dljkktnzQg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/hooks": "^8.0.0", - "@leafygreen-ui/lib": "^13.0.0" + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.3.0" }, "peerDependencies": { "react-dom": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/popover/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/portal": { @@ -4476,13 +5165,27 @@ } }, "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/lib": { @@ -4500,18 +5203,36 @@ } }, "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/radio-group": { @@ -4532,20 +5253,46 @@ } }, "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -4556,59 +5303,97 @@ } }, "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/radio-group/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/ripple": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/ripple/-/ripple-1.1.12.tgz", - "integrity": "sha512-4i+AoogkaX5UAY5SGuQwZBScF+FRSd9+vlpKrB1FtesYhWC6g2e4DS/nd00g4EnpgYXvK22g0dsxoUkog71mIg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/ripple/-/ripple-1.1.18.tgz", + "integrity": "sha512-GWdQWbxJ3dP/BRIufLs/zB6BeLuxWnhR9YJNr25nlWc3qeC30WdJqsd8ULaQzZBupxA9UsnfY9+tRRVXh1LbMg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/tokens": "^2.12.0" + } + }, + "node_modules/@leafygreen-ui/ripple/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/ripple/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/ripple/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" } }, "node_modules/@leafygreen-ui/search-input": { @@ -4637,20 +5422,35 @@ } }, "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -4661,35 +5461,65 @@ } }, "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/search-input/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/segmented-control": { @@ -4714,18 +5544,36 @@ } }, "node_modules/@leafygreen-ui/segmented-control/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/segmented-control/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/segmented-control/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/segmented-control/node_modules/@leafygreen-ui/typography": { @@ -4784,28 +5632,31 @@ } }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/button": { - "version": "21.0.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.0.12.tgz", - "integrity": "sha512-t8fSINV2JebwA7uVm2bQrZzih3pGHXlKgxt2aQJbYr7IA3mzIFSVxbVH3/aPm/6iSqkgpVWMg8Y7Mgn1LwNAGA==", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.3.0.tgz", + "integrity": "sha512-v9qipsRWHQBN9sC4RNWmJ/PVQCcYZdg9Wa+k9Q6LFjgahI1/6BXYTZOP4wPJQDp2AG6+dx2CF7Rp60ymM+wtLw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/box": "^3.1.8", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.1", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/ripple": "^1.1.12", - "@leafygreen-ui/tokens": "^2.3.0", + "@leafygreen-ui/box": "^3.1.9", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/ripple": "^1.1.13", + "@leafygreen-ui/tokens": "^2.5.2", + "@lg-tools/test-harnesses": "^0.1.2", "polished": "^4.2.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.10" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/button/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -4816,24 +5667,24 @@ } }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@storybook/csf": "^0.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2" + "lodash": "^4.17.21" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0" @@ -4854,18 +5705,36 @@ } }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/select/node_modules/@leafygreen-ui/typography": { @@ -4886,10 +5755,11 @@ } }, "node_modules/@leafygreen-ui/select/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "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" }, "node_modules/@leafygreen-ui/table": { "version": "10.0.3", @@ -4914,18 +5784,36 @@ } }, "node_modules/@leafygreen-ui/table/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/table/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/table/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/table/node_modules/@leafygreen-ui/typography": { @@ -4980,20 +5868,46 @@ } }, "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" + } + }, + "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -5004,48 +5918,68 @@ } }, "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/portal": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.0.3.tgz", - "integrity": "sha512-vwoZHtdrMzR5uBsfxAvl1kdB/xtQwtfpRTuCqC5Q3X+DsLg9JReDl+5dsGMegwDwkqwzsndYVGpq0BcFuDITXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.1.1.tgz", + "integrity": "sha512-8wvNdLxO3hWY7u5rf1ndYCJJ85TB6XpKp+dl7sQPoLnkq8HXd4GqnFXYwvGQp/pf3ts/Dp5FmZ/9dljkktnzQg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/hooks": "^8.0.0", - "@leafygreen-ui/lib": "^13.0.0" + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.3.0" }, "peerDependencies": { "react-dom": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/tabs/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" } }, "node_modules/@leafygreen-ui/text-area": { @@ -5067,20 +6001,35 @@ } }, "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -5091,35 +6040,65 @@ } }, "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/text-area/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/text-input": { @@ -5142,20 +6121,35 @@ } }, "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -5166,35 +6160,65 @@ } }, "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/text-input/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/toast": { @@ -5221,20 +6245,35 @@ } }, "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/hooks/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/lib": "^13.2.1", "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -5245,48 +6284,79 @@ } }, "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/portal": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.0.3.tgz", - "integrity": "sha512-vwoZHtdrMzR5uBsfxAvl1kdB/xtQwtfpRTuCqC5Q3X+DsLg9JReDl+5dsGMegwDwkqwzsndYVGpq0BcFuDITXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.1.1.tgz", + "integrity": "sha512-8wvNdLxO3hWY7u5rf1ndYCJJ85TB6XpKp+dl7sQPoLnkq8HXd4GqnFXYwvGQp/pf3ts/Dp5FmZ/9dljkktnzQg==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/hooks": "^8.0.0", - "@leafygreen-ui/lib": "^13.0.0" + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.3.0" }, "peerDependencies": { "react-dom": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" }, "peerDependencies": { - "@leafygreen-ui/leafygreen-provider": "^3.1.11" + "@leafygreen-ui/leafygreen-provider": "^3.1.12" + } + }, + "node_modules/@leafygreen-ui/toast/node_modules/@leafygreen-ui/typography/node_modules/@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" } }, "node_modules/@leafygreen-ui/toggle": { @@ -5307,10 +6377,11 @@ } }, "node_modules/@leafygreen-ui/toggle/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -5321,18 +6392,36 @@ } }, "node_modules/@leafygreen-ui/toggle/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/toggle/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/toggle/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/tokens": { @@ -5366,18 +6455,36 @@ } }, "node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", - "dev": true + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", + "dev": true, + "license": "Apache-2.0" }, "node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + } + }, + "node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/tokens/node_modules/@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": "^17.0.0 || ^18.0.0" } }, "node_modules/@leafygreen-ui/tooltip/node_modules/@leafygreen-ui/typography": { @@ -5467,10 +6574,11 @@ } }, "node_modules/@lerna/create/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -5507,16 +6615,17 @@ } }, "node_modules/@lerna/create/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -5569,16 +6678,17 @@ } }, "node_modules/@lerna/create/node_modules/cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -5600,13 +6710,24 @@ "node": ">=12" } }, + "node_modules/@lerna/create/node_modules/cacache/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/@lerna/create/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "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": { @@ -5617,39 +6738,59 @@ } }, "node_modules/@lerna/create/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@lerna/create/node_modules/fs-minipass/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/@lerna/create/node_modules/glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "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": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "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/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@lerna/create/node_modules/glob/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/@lerna/create/node_modules/hosted-git-info": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", @@ -5663,10 +6804,11 @@ } }, "node_modules/@lerna/create/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -5675,19 +6817,21 @@ } }, "node_modules/@lerna/create/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/@lerna/create/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "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" }, @@ -5708,10 +6852,11 @@ } }, "node_modules/@lerna/create/node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -5720,10 +6865,11 @@ } }, "node_modules/@lerna/create/node_modules/npm-install-checks": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -5776,10 +6922,11 @@ } }, "node_modules/@lerna/create/node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -5791,10 +6938,11 @@ } }, "node_modules/@lerna/create/node_modules/npm-pick-manifest/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -5859,10 +7007,11 @@ } }, "node_modules/@lerna/create/node_modules/pacote/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -5908,13 +7057,11 @@ } }, "node_modules/@lerna/create/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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5923,10 +7070,11 @@ } }, "node_modules/@lerna/create/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -5935,17 +7083,28 @@ } }, "node_modules/@lerna/create/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@lerna/create/node_modules/ssri/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/@lerna/create/node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -5983,10 +7142,11 @@ } }, "node_modules/@lerna/create/node_modules/validate-npm-package-name/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.0.0" } @@ -6006,6 +7166,16 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/@lg-tools/test-harnesses": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@lg-tools/test-harnesses/-/test-harnesses-0.1.4.tgz", + "integrity": "sha512-3CbuBu28tgn919mHTWFwyKiHnrg78h3kOT1uIrYTlJzUJ8V8tcFXSCTlOYhn+8iQSlbG3dHVSbOcZmfSXDFohA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@testing-library/dom": "9.3.1" + } + }, "node_modules/@mongodb-js/compass-components": { "version": "1.21.3", "resolved": "https://registry.npmjs.org/@mongodb-js/compass-components/-/compass-components-1.21.3.tgz", @@ -6269,12 +7439,10 @@ } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6298,12 +7466,10 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6400,12 +7566,10 @@ } }, "node_modules/@npmcli/run-script/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -6467,10 +7631,11 @@ } }, "node_modules/@nx/devkit/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@nx/nx-darwin-arm64": { "version": "16.3.2", @@ -6696,10 +7861,11 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-enterprise-rest": { "version": "6.0.1", @@ -6849,12 +8015,10 @@ } }, "node_modules/@pkgjs/nv/node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7081,10 +8245,11 @@ } }, "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } @@ -7147,10 +8312,11 @@ } }, "node_modules/@swc/helpers/node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", @@ -7163,6 +8329,111 @@ "node": ">=10" } }, + "node_modules/@testing-library/dom": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz", + "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@testing-library/dom/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": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@testing-library/dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@testing-library/dom/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@testing-library/dom/node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@testing-library/dom/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -7228,10 +8499,11 @@ } }, "node_modules/@tufjs/models/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "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" }, @@ -7242,6 +8514,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -7254,10 +8533,11 @@ } }, "node_modules/@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", - "dev": true + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/debug": { "version": "4.1.8", @@ -7305,10 +8585,11 @@ } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/facepaint": { "version": "1.2.5", @@ -7443,14 +8724,16 @@ } }, "node_modules/@types/node-fetch/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -7584,19 +8867,21 @@ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" }, "node_modules/@types/sinon": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", - "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.11.tgz", + "integrity": "sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg==", "dev": true, + "license": "MIT", "dependencies": { "@types/sinonjs__fake-timers": "*" } }, "node_modules/@types/sinon-chai": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", - "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*", "@types/sinon": "*" @@ -7633,9 +8918,10 @@ } }, "node_modules/@types/ssh2/node_modules/@types/node": { - "version": "18.19.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz", - "integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==", + "version": "18.19.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz", + "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -7759,12 +9045,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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7879,12 +9163,10 @@ } }, "node_modules/@typescript-eslint/typescript-estree/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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7918,12 +9200,10 @@ } }, "node_modules/@typescript-eslint/utils/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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -7948,9 +9228,10 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -7964,12 +9245,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "node_modules/@vue/compiler-core": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", @@ -8310,10 +9585,11 @@ } }, "node_modules/@yarnpkg/parsers/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/@zkochan/js-yaml": { "version": "0.0.6", @@ -8543,10 +9819,10 @@ } }, "node_modules/aproba": { - "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 + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "license": "ISC" }, "node_modules/archy": { "version": "1.0.0", @@ -8594,12 +9870,13 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -8735,18 +10012,18 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -8822,9 +10099,10 @@ "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" }, "node_modules/ast-types/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/astral-regex": { "version": "2.0.0", @@ -8836,10 +10114,20 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true, + "license": "MIT" + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } }, "node_modules/asynckit": { "version": "0.4.0", @@ -8847,9 +10135,13 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8953,13 +10245,15 @@ } }, "node_modules/axios/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -9115,9 +10409,10 @@ } }, "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -9225,11 +10520,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -9504,15 +10800,15 @@ } }, "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==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "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" + "set-function-length": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -9534,6 +10830,22 @@ "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==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", @@ -9622,17 +10934,18 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -9665,6 +10978,15 @@ "react-dom": "^0.14.0 || ^15.0.0-0 || ^16.0.0-0" } }, + "node_modules/chai/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -9687,9 +11009,13 @@ "dev": true }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "license": "MIT", + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -9831,9 +11157,10 @@ } }, "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "license": "MIT", "engines": { "node": ">=6" }, @@ -10337,13 +11664,11 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "license": "MIT" }, "node_modules/cookie": { "version": "0.5.0", @@ -10412,9 +11737,10 @@ } }, "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "license": "MIT" }, "node_modules/cosmiconfig": { "version": "7.1.0", @@ -10619,9 +11945,10 @@ } }, "node_modules/data-urls/node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -10630,17 +11957,69 @@ } }, "node_modules/data-urls/node_modules/whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", "dependencies": { - "tr46": "^5.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" }, "engines": { "node": ">=18" } }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -10651,11 +12030,12 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -10770,14 +12150,6 @@ "safe-buffer": "^5.1.1" } }, - "node_modules/decompress-tar/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/decompress-tar/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -10847,14 +12219,6 @@ "node": ">=4" } }, - "node_modules/decompress-targz/node_modules/file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/decompress-targz/node_modules/is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -10939,14 +12303,15 @@ "dev": true }, "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=6" } }, "node_modules/deep-equal": { @@ -11073,10 +12438,11 @@ } }, "node_modules/default-browser/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "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" }, @@ -11448,6 +12814,13 @@ "node": ">=6.0.0" } }, + "node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, "node_modules/dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -11592,10 +12965,11 @@ } }, "node_modules/duplexpair/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": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", @@ -11696,14 +13070,22 @@ "license": "ISC" }, "node_modules/electron/node_modules/@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "version": "20.17.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.24.tgz", + "integrity": "sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } }, + "node_modules/electron/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT" + }, "node_modules/email-validator": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/email-validator/-/email-validator-2.0.4.tgz", @@ -11849,11 +13231,12 @@ } }, "node_modules/enzyme-shallow-equal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", - "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", + "license": "MIT", "dependencies": { - "has": "^1.0.3", + "hasown": "^2.0.0", "object-is": "^1.1.5" }, "funding": { @@ -11883,51 +13266,62 @@ } }, "node_modules/es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -11958,6 +13352,34 @@ "node": ">= 0.4" } }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, "node_modules/es-module-lexer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", @@ -12000,13 +13422,14 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -12384,15 +13807,6 @@ "json5": "lib/cli.js" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-import/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -12489,10 +13903,11 @@ } }, "node_modules/eslint-plugin-n/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.0.0" } @@ -12513,13 +13928,11 @@ } }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -12609,11 +14022,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -12676,10 +14090,11 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "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" }, @@ -12700,13 +14115,11 @@ } }, "node_modules/eslint/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -13036,10 +14449,11 @@ } }, "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", - "dev": true + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" }, "node_modules/extend": { "version": "3.0.2", @@ -13127,15 +14541,16 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "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" @@ -13159,6 +14574,23 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fast-xml-parser": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", @@ -13264,6 +14696,15 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -13301,9 +14742,10 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -13408,12 +14850,14 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "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": { @@ -13477,11 +14921,18 @@ } }, "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/foreground-child": { @@ -13589,9 +15040,10 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -13640,14 +15092,17 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -13693,11 +15148,6 @@ "node": ">=0.10.0" } }, - "node_modules/gauge/node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, "node_modules/gauge/node_modules/is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -14061,9 +15511,10 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "license": "MIT", "engines": { "node": "*" } @@ -14169,13 +15620,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -14417,10 +15869,11 @@ } }, "node_modules/global-agent/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, + "license": "ISC", "optional": true, "bin": { "semver": "bin/semver.js" @@ -14494,11 +15947,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -14691,9 +16146,13 @@ } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14718,9 +16177,13 @@ } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -15180,9 +16643,10 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", "engines": { "node": ">= 4" } @@ -15288,20 +16752,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/init-package-json/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/init-package-json/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -15309,11 +16765,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/init-package-json/node_modules/hosted-git-info/node_modules/lru-cache": { + "node_modules/init-package-json/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -15334,13 +16791,11 @@ } }, "node_modules/init-package-json/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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -15349,13 +16804,11 @@ } }, "node_modules/init-package-json/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -15387,13 +16840,14 @@ } }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -15458,9 +16912,10 @@ } }, "node_modules/ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -15487,12 +16942,14 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -15507,12 +16964,35 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15531,12 +17011,13 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15584,22 +17065,45 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15637,6 +17141,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "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", @@ -15716,15 +17235,11 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, - "node_modules/is-natural-number": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", - "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -15732,20 +17247,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15763,15 +17286,6 @@ "node": ">=8" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -15802,12 +17316,15 @@ "dev": true }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15816,12 +17333,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -15837,23 +17370,23 @@ } }, "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==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -15868,11 +17401,14 @@ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -15894,11 +17430,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -15938,12 +17475,44 @@ "assert": "^1.4.1" } }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16107,15 +17676,13 @@ } }, "node_modules/jackspeak": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.0.tgz", - "integrity": "sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -16278,12 +17845,14 @@ } }, "node_modules/jsdom/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -16305,9 +17874,10 @@ } }, "node_modules/jsdom/node_modules/tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", + "license": "MIT", "dependencies": { "punycode": "^2.3.1" }, @@ -16324,11 +17894,12 @@ } }, "node_modules/jsdom/node_modules/whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", + "license": "MIT", "dependencies": { - "tr46": "^5.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" }, "engines": { @@ -16889,10 +18460,11 @@ } }, "node_modules/lerna/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -16929,26 +18501,28 @@ } }, "node_modules/lerna/node_modules/@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, + "license": "ISC", "dependencies": { "npm-bundled": "^3.0.0", "npm-normalize-package-bin": "^3.0.0" }, "bin": { - "installed-package-contents": "lib/index.js" + "installed-package-contents": "bin/index.js" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/lerna/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, + "license": "ISC", "dependencies": { "npm-normalize-package-bin": "^3.0.0" }, @@ -17022,16 +18596,17 @@ "dev": true }, "node_modules/lerna/node_modules/cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -17049,27 +18624,27 @@ "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/lerna/node_modules/cacache/node_modules/glob": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", - "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "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": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -17085,10 +18660,11 @@ } }, "node_modules/lerna/node_modules/cacache/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "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" }, @@ -17100,21 +18676,23 @@ } }, "node_modules/lerna/node_modules/cacache/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "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": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/lerna/node_modules/cacache/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -17137,14 +18715,15 @@ } }, "node_modules/lerna/node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, + "license": "MIT", "dependencies": { - "import-fresh": "^3.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", + "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "engines": { @@ -17152,15 +18731,24 @@ }, "funding": { "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/lerna/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "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": { @@ -17171,10 +18759,11 @@ } }, "node_modules/lerna/node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -17183,24 +18772,26 @@ } }, "node_modules/lerna/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/lerna/node_modules/fs-minipass/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "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": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/lerna/node_modules/gauge": { @@ -17307,15 +18898,6 @@ "node": ">=10" } }, - "node_modules/lerna/node_modules/is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/lerna/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -17329,10 +18911,11 @@ } }, "node_modules/lerna/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -17350,10 +18933,11 @@ } }, "node_modules/lerna/node_modules/npm-install-checks": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, @@ -17403,10 +18987,11 @@ } }, "node_modules/lerna/node_modules/npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", "dev": true, + "license": "ISC", "dependencies": { "npm-install-checks": "^6.0.0", "npm-normalize-package-bin": "^3.0.0", @@ -17418,10 +19003,11 @@ } }, "node_modules/lerna/node_modules/npm-pick-manifest/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -17519,10 +19105,11 @@ } }, "node_modules/lerna/node_modules/pacote/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -17531,10 +19118,11 @@ } }, "node_modules/lerna/node_modules/pacote/node_modules/ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, + "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, @@ -17552,10 +19140,11 @@ } }, "node_modules/lerna/node_modules/pacote/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "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" }, @@ -17603,17 +19192,28 @@ } }, "node_modules/lerna/node_modules/pacote/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/lerna/node_modules/pacote/node_modules/ssri/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/lerna/node_modules/read-package-json-fast": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", @@ -17729,13 +19329,11 @@ } }, "node_modules/lerna/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -17780,10 +19378,15 @@ } }, "node_modules/lerna/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -17801,10 +19404,11 @@ } }, "node_modules/lerna/node_modules/validate-npm-package-name/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, + "license": "MIT", "dependencies": { "semver": "^7.0.0" } @@ -17847,10 +19451,11 @@ } }, "node_modules/lerna/node_modules/write-file-atomic/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -17884,20 +19489,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmaccess/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/libnpmaccess/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -17905,11 +19502,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmaccess/node_modules/hosted-git-info/node_modules/lru-cache": { + "node_modules/libnpmaccess/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -17930,13 +19528,11 @@ } }, "node_modules/libnpmaccess/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -17945,13 +19541,11 @@ } }, "node_modules/libnpmaccess/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -17975,20 +19569,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/libnpmpublish/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -17996,22 +19582,24 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/libnpmpublish/node_modules/hosted-git-info/node_modules/lru-cache": { + "node_modules/libnpmpublish/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/libnpmpublish/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "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": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/libnpmpublish/node_modules/normalize-package-data": { @@ -18045,13 +19633,11 @@ } }, "node_modules/libnpmpublish/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -18060,25 +19646,24 @@ } }, "node_modules/libnpmpublish/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/libnpmpublish/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -18234,11 +19819,12 @@ } }, "node_modules/loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "license": "MIT", "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lowercase-keys": { @@ -18269,6 +19855,16 @@ "es5-ext": "~0.10.2" } }, + "node_modules/lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true, + "license": "MIT", + "bin": { + "lz-string": "bin/bin.js" + } + }, "node_modules/macos-export-certificate-and-key": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/macos-export-certificate-and-key/-/macos-export-certificate-and-key-1.2.2.tgz", @@ -18348,10 +19944,11 @@ } }, "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, + "license": "ISC", "dependencies": { "semver": "^7.3.5" }, @@ -18386,21 +19983,23 @@ "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/make-fetch-happen/node_modules/cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, + "license": "ISC", "dependencies": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -18413,13 +20012,24 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/make-fetch-happen/node_modules/cacache/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/make-fetch-happen/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "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": { @@ -18430,39 +20040,59 @@ } }, "node_modules/make-fetch-happen/node_modules/fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/make-fetch-happen/node_modules/fs-minipass/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/make-fetch-happen/node_modules/glob": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", - "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "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": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/make-fetch-happen/node_modules/glob/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/make-fetch-happen/node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -18500,10 +20130,11 @@ } }, "node_modules/make-fetch-happen/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "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" }, @@ -18524,12 +20155,13 @@ } }, "node_modules/make-fetch-happen/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, @@ -18540,38 +20172,35 @@ "encoding": "^0.1.13" } }, - "node_modules/make-fetch-happen/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "node_modules/make-fetch-happen/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/make-fetch-happen/node_modules/semver/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==", + "node_modules/make-fetch-happen/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, "node_modules/make-fetch-happen/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -18594,17 +20223,28 @@ } }, "node_modules/make-fetch-happen/node_modules/ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, + "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/make-fetch-happen/node_modules/ssri/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/make-fetch-happen/node_modules/unique-filename": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", @@ -18845,10 +20485,11 @@ } }, "node_modules/meow/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -18895,11 +20536,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -19207,12 +20849,6 @@ "node": "*" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -19298,6 +20934,13 @@ "node": ">=16.20.1" } }, + "node_modules/mongodb-client-encryption/node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT", + "optional": true + }, "node_modules/mongodb-client-encryption/node_modules/node-addon-api": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", @@ -19305,9 +20948,10 @@ "optional": true }, "node_modules/mongodb-client-encryption/node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", "optional": true, "dependencies": { "detect-libc": "^2.0.0", @@ -19315,7 +20959,7 @@ "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -19463,9 +21107,10 @@ "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" }, "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==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/multimatch": { "version": "5.0.0", @@ -19654,13 +21299,11 @@ } }, "node_modules/node-abi/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -19731,16 +21374,17 @@ } }, "node_modules/node-gyp": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, + "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", + "make-fetch-happen": "^10.0.3", "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -19766,6 +21410,58 @@ "node-gyp-build-test": "build-test.js" } }, + "node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/agent-base": { + "version": "6.0.2", + "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" + }, + "engines": { + "node": ">= 6.0.0" + } + }, "node_modules/node-gyp/node_modules/are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -19779,6 +21475,67 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/node-gyp/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/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -19798,6 +21555,104 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/node-gyp/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/https-proxy-agent": { + "version": "5.0.1", + "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" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/node-gyp/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/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/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, "node_modules/node-gyp/node_modules/npmlog": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", @@ -19828,13 +21683,11 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -19842,6 +21695,60 @@ "node": ">=10" } }, + "node_modules/node-gyp/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/node-gyp/node_modules/wide-align": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", @@ -19904,13 +21811,11 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -19958,12 +21863,10 @@ } }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -19990,12 +21893,10 @@ } }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -20032,12 +21933,10 @@ } }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -20063,20 +21962,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "dependencies": { - "semver": "^7.0.0" - } - }, "node_modules/npm-registry-fetch/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -20084,11 +21975,12 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-registry-fetch/node_modules/hosted-git-info/node_modules/lru-cache": { + "node_modules/npm-registry-fetch/node_modules/lru-cache": { "version": "7.18.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -20103,12 +21995,13 @@ } }, "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, + "license": "MIT", "dependencies": { - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, @@ -20119,6 +22012,16 @@ "encoding": "^0.1.13" } }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch/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/npm-registry-fetch/node_modules/npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -20135,13 +22038,11 @@ } }, "node_modules/npm-registry-fetch/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -20150,13 +22051,11 @@ } }, "node_modules/npm-registry-fetch/node_modules/validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "dependencies": { - "builtins": "^5.0.0" - }, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -20295,18 +22194,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/nx/node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nx/node_modules/fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -20353,10 +22240,11 @@ } }, "node_modules/nx/node_modules/lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -20389,10 +22277,11 @@ } }, "node_modules/nx/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/nx/node_modules/yargs": { "version": "17.7.2", @@ -20650,9 +22539,13 @@ } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -20681,13 +22574,16 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -20951,6 +22847,23 @@ "node": ">=0.10.0" } }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -21142,7 +23055,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, "license": "BlueOak-1.0.0" }, "node_modules/pacote": { @@ -21429,18 +23341,20 @@ "license": "ISC" }, "node_modules/path-scurry/node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, + "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -21678,6 +23592,15 @@ "node": ">=10" } }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -21762,15 +23685,19 @@ } }, "node_modules/prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, + "license": "MIT", "bin": { - "prettier": "bin-prettier.js" + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=10.13.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/pretty-format": { @@ -21800,10 +23727,11 @@ } }, "node_modules/pretty-format/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", - "dev": true + "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" }, "node_modules/proc-log": { "version": "3.0.0", @@ -22146,12 +24074,14 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dev": true, + "license": "MIT", "dependencies": { - "loose-envify": "^1.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" }, "engines": { "node": ">=0.10.0" @@ -22166,12 +24096,10 @@ } }, "node_modules/react-16-node-hanging-test-fix/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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -22315,17 +24243,19 @@ "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/read-package-json/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "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": { @@ -22336,32 +24266,32 @@ } }, "node_modules/read-package-json/node_modules/glob": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", - "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "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": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/read-package-json/node_modules/hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^7.5.1" }, @@ -22369,29 +24299,32 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "node_modules/read-package-json/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, + "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" } }, "node_modules/read-package-json/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "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" }, @@ -22403,10 +24336,11 @@ } }, "node_modules/read-package-json/node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "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" } @@ -22436,13 +24370,11 @@ } }, "node_modules/read-package-json/node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -22451,10 +24383,11 @@ } }, "node_modules/read-package-json/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -22624,10 +24557,11 @@ } }, "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -22651,9 +24585,10 @@ } }, "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -22701,6 +24636,28 @@ "node": ">=8" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -22731,14 +24688,17 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -22895,17 +24855,21 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.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" } @@ -23135,10 +25099,11 @@ } }, "node_modules/rxjs/node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", - "dev": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD" }, "node_modules/s3rver": { "version": "3.7.1", @@ -23207,13 +25172,15 @@ } }, "node_modules/safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -23226,21 +25193,45 @@ "node_modules/safe-array-concat/node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" }, "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==" }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -23325,9 +25316,10 @@ "dev": true }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -23402,12 +25394,6 @@ "node": ">= 0.8" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "node_modules/serialize-error": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", @@ -23467,29 +25453,46 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "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==", + "license": "MIT", "dependencies": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" } }, "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "license": "MIT", "dependencies": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -23532,13 +25535,72 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "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==", + "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==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "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" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23732,12 +25794,10 @@ } }, "node_modules/snyk-policy/node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -23791,11 +25851,12 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "license": "MIT", "dependencies": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -24046,6 +26107,20 @@ "node": ">= 0.8" } }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -24118,13 +26193,18 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -24134,26 +26214,35 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24414,15 +26503,16 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -24570,19 +26660,21 @@ } }, "node_modules/terser-webpack-plugin/node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/terser/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" }, @@ -24707,15 +26799,13 @@ "license": "MIT" }, "node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, - "dependencies": { - "rimraf": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8.17.0" + "node": ">=14.14" } }, "node_modules/to-buffer": { @@ -24727,6 +26817,7 @@ "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==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -24794,18 +26885,6 @@ "node": ">= 14.0.0" } }, - "node_modules/ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -24849,9 +26928,10 @@ } }, "node_modules/ts-node/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -24885,15 +26965,6 @@ "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", "dev": true }, - "node_modules/ts-sinon/node_modules/@types/sinon": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.11.tgz", - "integrity": "sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg==", - "dev": true, - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, "node_modules/tsconfig-paths": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", @@ -25027,27 +27098,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -25057,15 +27131,18 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -25075,13 +27152,20 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -25102,10 +27186,11 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -25128,14 +27213,18 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -25213,9 +27302,10 @@ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", "engines": { "node": ">= 10.0.0" } @@ -25398,11 +27488,6 @@ "extsprintf": "^1.2.0" } }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, "node_modules/w3c-xmlserializer": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", @@ -25576,10 +27661,11 @@ } }, "node_modules/webpack/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" }, @@ -25644,36 +27730,95 @@ } }, "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", - "dev": true + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, + "license": "ISC" }, "node_modules/which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "license": "MIT", "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -25943,10 +28088,11 @@ } }, "node_modules/write-json-file/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -26294,665 +28440,12 @@ "mongodb-log-writer": "^2.4.0" } }, - "packages/devtools-connect/node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/devtools-connect/node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "packages/devtools-connect/node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "packages/devtools-connect/node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "packages/devtools-connect/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, - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "packages/devtools-connect/node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/devtools-connect/node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "packages/devtools-connect/node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/devtools-connect/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "packages/devtools-connect/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" - } - }, - "packages/devtools-connect/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" - } - }, - "packages/devtools-connect/node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "packages/devtools-connect/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "packages/devtools-connect/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "packages/devtools-connect/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "packages/devtools-connect/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 - }, - "packages/devtools-connect/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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" - } - }, - "packages/devtools-connect/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==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "packages/devtools-connect/node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@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.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", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "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.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/devtools-connect/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, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/devtools-connect/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "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, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/devtools-connect/node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/devtools-connect/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" - } - }, - "packages/devtools-connect/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/devtools-connect/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "packages/devtools-connect/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/devtools-connect/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, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "packages/devtools-connect/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/devtools-connect/node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "packages/devtools-connect/node_modules/mocha/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "packages/devtools-connect/node_modules/mocha/node_modules/debug/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 - }, - "packages/devtools-connect/node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "packages/devtools-connect/node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, - "packages/devtools-connect/node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "packages/devtools-connect/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "packages/devtools-connect/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "packages/devtools-connect/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, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "packages/devtools-connect/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, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/devtools-connect/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.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -26961,12 +28454,6 @@ "node": ">=14.17" } }, - "packages/devtools-connect/node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true - }, "packages/devtools-proxy-support": { "name": "@mongodb-js/devtools-proxy-support", "version": "0.4.2", @@ -27001,7 +28488,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" @@ -27016,9 +28503,9 @@ } }, "packages/devtools-proxy-support/node_modules/lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", "license": "ISC", "engines": { "node": "20 || >=22" @@ -27042,10 +28529,11 @@ } }, "packages/devtools-proxy-support/node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27081,17 +28569,18 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "s3rver": "^3.7.1", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/dl-center/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27126,16 +28615,16 @@ "gen-esm-wrapper": "^1.1.1", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" } }, "packages/download-url/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -27145,9 +28634,9 @@ } }, "packages/download-url/node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -27240,16 +28729,17 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/get-os-info/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27283,17 +28773,18 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" } }, "packages/mongodb-cloud-info/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.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27325,16 +28816,17 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/mongodb-constants/node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "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" }, @@ -27343,12 +28835,10 @@ } }, "packages/mongodb-constants/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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -27357,10 +28847,11 @@ } }, "packages/mongodb-constants/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27395,7 +28886,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "typescript": "^5.0.4" } }, @@ -27408,9 +28899,10 @@ } }, "packages/mongodb-downloader/node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "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" }, @@ -27427,9 +28919,10 @@ } }, "packages/mongodb-downloader/node_modules/tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -27448,10 +28941,11 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "packages/mongodb-downloader/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27496,7 +28990,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -27505,9 +28999,9 @@ } }, "packages/mongodb-log-writer/node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "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": { @@ -27517,228 +29011,10 @@ "node": ">=0.4.0" } }, - "packages/mongodb-log-writer/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "packages/mongodb-log-writer/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" - }, - "packages/mongodb-log-writer/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "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" - } - }, - "packages/mongodb-log-writer/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "packages/mongodb-log-writer/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/mongodb-log-writer/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" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "packages/mongodb-log-writer/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/mongodb-log-writer/node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "packages/mongodb-log-writer/node_modules/mocha/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mongodb-log-writer/node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, - "packages/mongodb-log-writer/node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true, - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "packages/mongodb-log-writer/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "packages/mongodb-log-writer/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": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, "packages/mongodb-log-writer/node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -27749,13 +29025,6 @@ "node": ">=14.17" } }, - "packages/mongodb-log-writer/node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "dev": true, - "license": "Apache-2.0" - }, "packages/mongodb-redact": { "version": "1.1.5", "license": "Apache-2.0", @@ -27773,16 +29042,17 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/mongodb-redact/node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27822,7 +29092,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } @@ -27841,10 +29111,11 @@ } }, "packages/mongodb-runner/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27914,7 +29185,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } @@ -27923,6 +29194,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -27940,11 +29212,12 @@ } }, "packages/monorepo-tools/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -27955,21 +29228,20 @@ } }, "packages/monorepo-tools/node_modules/glob": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", - "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -27987,9 +29259,10 @@ } }, "packages/monorepo-tools/node_modules/minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -28001,9 +29274,10 @@ } }, "packages/monorepo-tools/node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -28034,12 +29308,10 @@ } }, "packages/monorepo-tools/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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -28048,9 +29320,10 @@ } }, "packages/monorepo-tools/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", "engines": { "node": ">=14" }, @@ -28059,10 +29332,11 @@ } }, "packages/monorepo-tools/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -28085,6 +29359,9 @@ "yargs": "^17.7.2", "zod": "^3.24.2" }, + "bin": { + "mql-typescript": "bin/runner.js" + }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.10", "@mongodb-js/mocha-config-devtools": "^1.0.4", @@ -28134,16 +29411,6 @@ "url": "https://opencollective.com/eslint" } }, - "packages/mql-typescript/node_modules/@eslint/js": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", - "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "packages/mql-typescript/node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -28196,13 +29463,6 @@ "@types/deep-eql": "*" } }, - "packages/mql-typescript/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==", - "dev": true, - "license": "MIT" - }, "packages/mql-typescript/node_modules/@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", @@ -28613,22 +29873,6 @@ "node": ">=10" } }, - "packages/mql-typescript/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "packages/mql-typescript/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -28837,13 +30081,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "packages/mql-typescript/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "packages/mql-typescript/node_modules/nise": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", @@ -29047,22 +30284,6 @@ "node": ">= 14.16" } }, - "packages/mql-typescript/node_modules/prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, "packages/mql-typescript/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -29246,15 +30467,15 @@ "eslint": "^7.25.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/node-webpack-startup-snapshot-checker/node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -29287,30 +30508,18 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "react": "^17.0.2", "react-dom": "^17.0.2", "typescript": "^5.0.4" } }, - "packages/oidc-http-server-pages/node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "packages/oidc-http-server-pages/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.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29344,7 +30553,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } @@ -29363,10 +30572,11 @@ } }, "packages/oidc-mock-provider/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29425,7 +30635,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -29434,10 +30644,11 @@ } }, "packages/query-parser/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.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29469,16 +30680,17 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/saslprep/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29525,7 +30737,7 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "rimraf": "^5.0.1", "sinon": "^9.2.3", "typescript": "^5.0.4", @@ -29541,14 +30753,15 @@ } }, "packages/sbom-tools/node_modules/@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", + "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", + "license": "MIT", "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" @@ -29558,9 +30771,10 @@ } }, "packages/sbom-tools/node_modules/@octokit/endpoint": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", - "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", + "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" @@ -29570,11 +30784,12 @@ } }, "packages/sbom-tools/node_modules/@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", + "license": "MIT", "dependencies": { - "@octokit/request": "^8.3.0", + "@octokit/request": "^8.4.1", "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" }, @@ -29583,16 +30798,18 @@ } }, "packages/sbom-tools/node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==", + "license": "MIT" }, "packages/sbom-tools/node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", - "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", + "version": "11.4.4-cjs.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", + "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", + "license": "MIT", "dependencies": { - "@octokit/types": "^13.5.0" + "@octokit/types": "^13.7.0" }, "engines": { "node": ">= 18" @@ -29613,11 +30830,12 @@ } }, "packages/sbom-tools/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", - "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", + "version": "13.3.2-cjs.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", + "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", + "license": "MIT", "dependencies": { - "@octokit/types": "^13.5.0" + "@octokit/types": "^13.8.0" }, "engines": { "node": ">= 18" @@ -29627,12 +30845,13 @@ } }, "packages/sbom-tools/node_modules/@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", + "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" }, @@ -29641,9 +30860,10 @@ } }, "packages/sbom-tools/node_modules/@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", + "license": "MIT", "dependencies": { "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", @@ -29654,25 +30874,27 @@ } }, "packages/sbom-tools/node_modules/@octokit/rest": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", - "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", + "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", + "license": "MIT", "dependencies": { "@octokit/core": "^5.0.2", - "@octokit/plugin-paginate-rest": "11.3.1", + "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-rest-endpoint-methods": "13.2.2" + "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" }, "engines": { "node": ">= 18" } }, "packages/sbom-tools/node_modules/@octokit/types": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", - "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", + "license": "MIT", "dependencies": { - "@octokit/openapi-types": "^22.2.0" + "@octokit/openapi-types": "^24.2.0" } }, "packages/sbom-tools/node_modules/brace-expansion": { @@ -29680,6 +30902,7 @@ "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" } @@ -29705,12 +30928,13 @@ } }, "packages/sbom-tools/node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "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": { @@ -29721,22 +30945,21 @@ } }, "packages/sbom-tools/node_modules/glob": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.5.tgz", - "integrity": "sha512-Gj+dFYPZ5hc5dazjXzB0iHg2jKWJZYMjITXYPBRQ/xc2Buw7H0BINknRTwURJ6IC6MEFpYbLvtgVb3qD+DwyuA==", + "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": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.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/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" + "glob": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -29754,10 +30977,11 @@ } }, "packages/sbom-tools/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "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" }, @@ -29769,10 +30993,11 @@ } }, "packages/sbom-tools/node_modules/minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "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" } @@ -29803,30 +31028,26 @@ } }, "packages/sbom-tools/node_modules/rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dev": true, + "license": "ISC", "dependencies": { - "glob": "^10.2.5" + "glob": "^10.3.7" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=14" + "rimraf": "dist/esm/bin.mjs" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "packages/sbom-tools/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==", - "dependencies": { - "lru-cache": "^6.0.0" - }, + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -29835,10 +31056,11 @@ } }, "packages/sbom-tools/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -29847,10 +31069,11 @@ } }, "packages/sbom-tools/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29911,7 +31134,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -29926,9 +31149,10 @@ "dev": true }, "packages/shell-bson-parser/node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -29937,10 +31161,11 @@ } }, "packages/shell-bson-parser/node_modules/typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -29973,16 +31198,17 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } }, "packages/signing-utils/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.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -30010,7 +31236,7 @@ "gen-esm-wrapper": "^1.1.1", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } @@ -30043,7 +31269,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.1", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "prettier": "2.3.2" + "prettier": "^3.5.3" } } }, @@ -30123,11 +31349,6 @@ "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==" - }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" } } }, @@ -30189,11 +31410,6 @@ "yallist": "^3.0.2" } }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" - }, "yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -31395,9 +32611,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -31414,9 +32630,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -31432,9 +32648,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -31449,9 +32665,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -31623,9 +32839,9 @@ }, "dependencies": { "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" } } }, @@ -31678,9 +32894,9 @@ }, "dependencies": { "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -31701,9 +32917,9 @@ } }, "@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", "dev": true }, "@eslint/object-schema": { @@ -31800,9 +33016,9 @@ }, "dependencies": { "ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==" }, "ansi-styles": { "version": "6.2.1", @@ -31825,9 +33041,9 @@ } }, "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "requires": { "ansi-regex": "^6.0.1" } @@ -31987,38 +33203,49 @@ }, "dependencies": { "path-to-regexp": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", - "integrity": "sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "dev": true } } }, "@leafygreen-ui/a11y": { - "version": "1.4.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/a11y/-/a11y-1.4.12.tgz", - "integrity": "sha512-JYpXbcPN6cbURBYEVW186gU/n4ibmmoBsD0IEtnxDl7jGir7aT7s6hd3L9nbOQEzcYfzDNHYg1CWvOHktanpkQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/a11y/-/a11y-1.5.0.tgz", + "integrity": "sha512-QKnzWWFsw8FR9+KVqQbgzSGC5T2NcsUI1+6bc6+mNh1HwH8nUctrXj0tjTkrV+Dmab8zdeArUz24ly9eEvl7UA==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.1.0", - "@leafygreen-ui/lib": "^13.2.0" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.6.1" }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32041,9 +33268,9 @@ }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32052,18 +33279,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -32084,9 +33325,9 @@ }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32095,40 +33336,66 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } }, "@leafygreen-ui/box": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/box/-/box-3.1.8.tgz", - "integrity": "sha512-qfjwhrie+mUrS2H+Qp98iQKBPoZtNpFmlGBYgg59sVOzotFvyvqwxlf/JcaNGo+v7nyOhC2XAHui0ywf9cScKw==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/box/-/box-3.1.9.tgz", + "integrity": "sha512-hY05VQKDVhqqBH/Dz1kxonjQmqrMR9URa3Dw3YgdLbVUd1hMQkoWbplamiE4S4vq2+81SQBgNw53i+/Vd0Cl0g==", "dev": true }, "@leafygreen-ui/button": { @@ -32147,18 +33414,30 @@ }, "dependencies": { "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" }, "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true } } @@ -32180,18 +33459,32 @@ }, "dependencies": { "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -32213,19 +33506,40 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", + "dev": true, + "requires": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32234,32 +33548,46 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" } } } @@ -32291,34 +33619,46 @@ }, "dependencies": { "@leafygreen-ui/button": { - "version": "21.0.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.0.12.tgz", - "integrity": "sha512-t8fSINV2JebwA7uVm2bQrZzih3pGHXlKgxt2aQJbYr7IA3mzIFSVxbVH3/aPm/6iSqkgpVWMg8Y7Mgn1LwNAGA==", - "dev": true, - "requires": { - "@leafygreen-ui/box": "^3.1.8", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.1", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/ripple": "^1.1.12", - "@leafygreen-ui/tokens": "^2.3.0", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.3.0.tgz", + "integrity": "sha512-v9qipsRWHQBN9sC4RNWmJ/PVQCcYZdg9Wa+k9Q6LFjgahI1/6BXYTZOP4wPJQDp2AG6+dx2CF7Rp60ymM+wtLw==", + "dev": true, + "requires": { + "@leafygreen-ui/box": "^3.1.9", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/ripple": "^1.1.13", + "@leafygreen-ui/tokens": "^2.5.2", + "@lg-tools/test-harnesses": "^0.1.2", "polished": "^4.2.2" } }, "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32327,60 +33667,120 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, - "@leafygreen-ui/select": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/select/-/select-11.1.2.tgz", - "integrity": "sha512-vLpelaNRJt1+I0Fl7Te9FiRZ6y1f4/SQ88+7YDJG/aQ/7RI2oIIUbudUb0uOkDtnOEXA1YVJ1n/9Ind1PzJ4Yw==", + "@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", "dev": true, "requires": { - "@leafygreen-ui/button": "^21.0.10", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.1.0", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/input-option": "^1.1.0", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.2.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.1.0", + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/select": { + "version": "11.3.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/select/-/select-11.3.2.tgz", + "integrity": "sha512-qPAXYibI4UNX+xW7QdspoT+fg9WfkqTwCsD9j27rTyJZ+pR2BOW5oynG5gKnm0AVPWullms5/SdxiLWai1GxNA==", + "dev": true, + "requires": { + "@leafygreen-ui/button": "^21.2.0", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/input-option": "^1.1.3", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/popover": "^11.3.1", + "@leafygreen-ui/tokens": "^2.5.2", + "@leafygreen-ui/typography": "^19.0.0", + "@lg-tools/test-harnesses": "^0.1.2", "@types/react-is": "^18.0.0", "lodash": "^4.17.21", "polished": "^4.1.3", "react-is": "^18.0.1" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "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 } } @@ -32437,18 +33837,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { @@ -32481,9 +33895,9 @@ } }, "@leafygreen-ui/emotion": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/emotion/-/emotion-4.0.7.tgz", - "integrity": "sha512-OxBgzEqmnZHxH9sAn6421zGKCgZ/nSf3Ryg/Ihvqz9NJEuPmKFMt/Kign4TeoaWZraIXAiWTt8q0QVBzu8ChVg==", + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/emotion/-/emotion-4.0.10.tgz", + "integrity": "sha512-6fW0jXce40N+ZtJIomvpROrJar6h1S9TAwHSfHVJmCRB791s5hATxudiD+aE6gqYUL+naiDQc/XKy7I3LUK+hA==", "dev": true, "requires": { "@emotion/css": "^11.1.3", @@ -32506,19 +33920,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32527,32 +33952,58 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -32579,24 +34030,25 @@ }, "dependencies": { "@leafygreen-ui/button": { - "version": "21.0.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.0.12.tgz", - "integrity": "sha512-t8fSINV2JebwA7uVm2bQrZzih3pGHXlKgxt2aQJbYr7IA3mzIFSVxbVH3/aPm/6iSqkgpVWMg8Y7Mgn1LwNAGA==", - "dev": true, - "requires": { - "@leafygreen-ui/box": "^3.1.8", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.1", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/ripple": "^1.1.12", - "@leafygreen-ui/tokens": "^2.3.0", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.3.0.tgz", + "integrity": "sha512-v9qipsRWHQBN9sC4RNWmJ/PVQCcYZdg9Wa+k9Q6LFjgahI1/6BXYTZOP4wPJQDp2AG6+dx2CF7Rp60ymM+wtLw==", + "dev": true, + "requires": { + "@leafygreen-ui/box": "^3.1.9", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/ripple": "^1.1.13", + "@leafygreen-ui/tokens": "^2.5.2", + "@lg-tools/test-harnesses": "^0.1.2", "polished": "^4.2.2" }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32607,18 +34059,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/tooltip": { @@ -32640,19 +34106,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32661,17 +34138,29 @@ } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -32704,21 +34193,21 @@ } }, "focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.4.tgz", + "integrity": "sha512-xx560wGBk7seZ6y933idtjJQc1l+ck+pI3sKvhKozdBV1dRZoKhkW5xoCaFv9tQiX5RH1xfSxjuNu6g+lmN/gw==", "dev": true, "requires": { "tabbable": "^6.2.0" } }, "focus-trap-react": { - "version": "10.2.3", - "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.3.tgz", - "integrity": "sha512-YXBpFu/hIeSu6NnmV2xlXzOYxuWkoOtar9jzgp3lOmjWLWY59C/b8DtDHEAV4SPU07Nd/t+nS/SBNGkhUBFmEw==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.3.1.tgz", + "integrity": "sha512-PN4Ya9xf9nyj/Nd9VxBNMuD7IrlRbmaG6POAQ8VLqgtc6IY/Ln1tYakow+UIq4fihYYYFM70/2oyidE6bbiPgw==", "dev": true, "requires": { - "focus-trap": "^7.5.4", + "focus-trap": "^7.6.1", "tabbable": "^6.2.0" } }, @@ -32765,9 +34254,9 @@ }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32776,18 +34265,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -32807,19 +34310,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32828,50 +34342,109 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, - "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, - "@leafygreen-ui/tooltip": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.0.0.tgz", - "integrity": "sha512-dqyye58w/1uWCsoFWEVgt2rrkNOTPyk1AQN9Wc828+YObIDyBI+F6ppqDxKZtu6ztw34aEOJw3kfucE98zQk+A==", + "@leafygreen-ui/tokens": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.0.1", - "@leafygreen-ui/icon": "^11.25.0", - "@leafygreen-ui/lib": "^13.0.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.1.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.0.1", + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/tooltip": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.1.0.tgz", + "integrity": "sha512-nVIirNqBShuj25u9koOPAVYpqGWKSDe/rsdRyPWZLeL9rLfbtZi9Xn44HeDX7brVo+KBkE29Gsuh1Y3J7LN5ng==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.5.0", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/popover": "^11.4.0", + "@leafygreen-ui/tokens": "^2.8.0", + "@leafygreen-ui/typography": "^19.0.0", "lodash": "^4.17.21", "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -32889,19 +34462,40 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32910,73 +34504,118 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, - "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, - "@leafygreen-ui/tooltip": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.0.0.tgz", - "integrity": "sha512-dqyye58w/1uWCsoFWEVgt2rrkNOTPyk1AQN9Wc828+YObIDyBI+F6ppqDxKZtu6ztw34aEOJw3kfucE98zQk+A==", + "@leafygreen-ui/tokens": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.0.1", - "@leafygreen-ui/icon": "^11.25.0", - "@leafygreen-ui/lib": "^13.0.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.1.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.0.1", + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/tooltip": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.1.0.tgz", + "integrity": "sha512-nVIirNqBShuj25u9koOPAVYpqGWKSDe/rsdRyPWZLeL9rLfbtZi9Xn44HeDX7brVo+KBkE29Gsuh1Y3J7LN5ng==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.5.0", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/popover": "^11.4.0", + "@leafygreen-ui/tokens": "^2.8.0", + "@leafygreen-ui/typography": "^19.0.0", "lodash": "^4.17.21", "polished": "^4.2.2" } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" } } } }, "@leafygreen-ui/input-option": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/input-option/-/input-option-1.1.0.tgz", - "integrity": "sha512-tqhH17DrM/YjEX5BHouVHqTxUH8Ssa46QYkvwoJ/1S/i2Kw/++L+h6R5zk6S6u+NDazdDbrtH0N6q8m2PvQwrA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/input-option/-/input-option-1.1.4.tgz", + "integrity": "sha512-tti2719MBIId67OwbAnXXm71kqDRGa6Xjiy2cCVWL0au6rYpcm7RXio9J6KZyk4aUvHGu3f6jMNKQgifapvSlw==", "dev": true, "requires": { - "@leafygreen-ui/a11y": "^1.4.12", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4", - "@leafygreen-ui/typography": "^18.1.0" + "@leafygreen-ui/a11y": "^1.4.13", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.6.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0", + "@leafygreen-ui/typography": "^19.2.0" }, "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -32985,32 +34624,67 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, + "@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", + "dev": true, + "requires": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" } } } @@ -33026,13 +34700,24 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { @@ -33127,18 +34812,30 @@ }, "dependencies": { "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" }, "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true } } @@ -33166,18 +34863,32 @@ }, "dependencies": { "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -33205,19 +34916,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33226,89 +34948,159 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, - "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "@leafygreen-ui/polymorphic": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-2.0.7.tgz", + "integrity": "sha512-MUw76DT7R7msTDjhqAvZs5dqrt5684fAKm+QhpdzKB9ywh3LCdo9syg/Hva72rDa0fRV5i/V6nYEY8zM1N005A==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, - "@leafygreen-ui/tooltip": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.0.0.tgz", - "integrity": "sha512-dqyye58w/1uWCsoFWEVgt2rrkNOTPyk1AQN9Wc828+YObIDyBI+F6ppqDxKZtu6ztw34aEOJw3kfucE98zQk+A==", + "@leafygreen-ui/tokens": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.0.1", - "@leafygreen-ui/icon": "^11.25.0", - "@leafygreen-ui/lib": "^13.0.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/popover": "^11.1.1", - "@leafygreen-ui/tokens": "^2.2.0", - "@leafygreen-ui/typography": "^18.0.1", + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/tooltip": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tooltip/-/tooltip-11.1.0.tgz", + "integrity": "sha512-nVIirNqBShuj25u9koOPAVYpqGWKSDe/rsdRyPWZLeL9rLfbtZi9Xn44HeDX7brVo+KBkE29Gsuh1Y3J7LN5ng==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/icon": "^12.5.0", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/palette": "^4.0.9", + "@leafygreen-ui/popover": "^11.4.0", + "@leafygreen-ui/tokens": "^2.8.0", + "@leafygreen-ui/typography": "^19.0.0", "lodash": "^4.17.21", "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-19.3.0.tgz", + "integrity": "sha512-pgTRcc4usW/S9nDDzkf5Ac/JPEybhWtOnDpmrp99mAJHM6tH48Pd1HjRNHWjn6bnh0nXWjwANXX1ZEe+8ggCNg==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.6.0", + "@leafygreen-ui/lib": "^13.6.1", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^2.0.0", + "@leafygreen-ui/tokens": "^2.9.0" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } }, "@leafygreen-ui/polymorphic": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-1.3.6.tgz", - "integrity": "sha512-ZJqrYNAAO/CLgl3vtl01jQl2xz6pvzPRMEDqOgCykEn2/vk6wZUOJJ4FVK0cbLZuzwvKixbrTgOSw4WrF19sKg==", + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/polymorphic/-/polymorphic-1.3.7.tgz", + "integrity": "sha512-Tr2TmpS0YFJ3hGNbVWQpeseJRo4kTrVumVlZ4aF4hId1JYDzF0TU5JJO40v+brhbgnKsyBu7+Rvz6ExY1NcKew==", "dev": true }, "@leafygreen-ui/popover": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/popover/-/popover-11.2.2.tgz", - "integrity": "sha512-6FrGtkExFyyk8ZQ5LMsU13J+VDbC4S261FhrfNuzwIp+LVQN25x0xhLyMcQwprRXI8iCL8AJ2ToyFLmstIkpOA==", + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/popover/-/popover-11.4.0.tgz", + "integrity": "sha512-hSr3zbbWOCUuhByR5ncFJTkXxFfA7o2QjVjDXKLVPPn9Gh7+sYRLe87mTQWs9m8fbRx9O4Uk7Vq0R9U4A77dxw==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/hooks": "^8.1.0", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/portal": "^5.0.3", - "@leafygreen-ui/tokens": "^2.2.0", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.5.0", + "@leafygreen-ui/portal": "^5.1.1", + "@leafygreen-ui/tokens": "^2.8.0", "@types/react-transition-group": "^4.4.5", "react-transition-group": "^4.4.5" }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33317,28 +35109,42 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/portal": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.0.3.tgz", - "integrity": "sha512-vwoZHtdrMzR5uBsfxAvl1kdB/xtQwtfpRTuCqC5Q3X+DsLg9JReDl+5dsGMegwDwkqwzsndYVGpq0BcFuDITXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.1.1.tgz", + "integrity": "sha512-8wvNdLxO3hWY7u5rf1ndYCJJ85TB6XpKp+dl7sQPoLnkq8HXd4GqnFXYwvGQp/pf3ts/Dp5FmZ/9dljkktnzQg==", "dev": true, "requires": { - "@leafygreen-ui/hooks": "^8.0.0", - "@leafygreen-ui/lib": "^13.0.0" + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.3.0" } }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -33367,13 +35173,24 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { @@ -33388,18 +35205,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -33419,19 +35250,40 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33440,58 +35292,84 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" } } } }, "@leafygreen-ui/ripple": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/ripple/-/ripple-1.1.12.tgz", - "integrity": "sha512-4i+AoogkaX5UAY5SGuQwZBScF+FRSd9+vlpKrB1FtesYhWC6g2e4DS/nd00g4EnpgYXvK22g0dsxoUkog71mIg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/ripple/-/ripple-1.1.18.tgz", + "integrity": "sha512-GWdQWbxJ3dP/BRIufLs/zB6BeLuxWnhR9YJNr25nlWc3qeC30WdJqsd8ULaQzZBupxA9UsnfY9+tRRVXh1LbMg==", "dev": true, "requires": { - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/tokens": "^2.12.0" }, "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" } } } @@ -33519,19 +35397,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33540,32 +35429,58 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -33589,18 +35504,32 @@ }, "dependencies": { "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { @@ -33654,24 +35583,25 @@ }, "dependencies": { "@leafygreen-ui/button": { - "version": "21.0.12", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.0.12.tgz", - "integrity": "sha512-t8fSINV2JebwA7uVm2bQrZzih3pGHXlKgxt2aQJbYr7IA3mzIFSVxbVH3/aPm/6iSqkgpVWMg8Y7Mgn1LwNAGA==", - "dev": true, - "requires": { - "@leafygreen-ui/box": "^3.1.8", - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/lib": "^13.2.1", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/ripple": "^1.1.12", - "@leafygreen-ui/tokens": "^2.3.0", + "version": "21.3.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/button/-/button-21.3.0.tgz", + "integrity": "sha512-v9qipsRWHQBN9sC4RNWmJ/PVQCcYZdg9Wa+k9Q6LFjgahI1/6BXYTZOP4wPJQDp2AG6+dx2CF7Rp60ymM+wtLw==", + "dev": true, + "requires": { + "@leafygreen-ui/box": "^3.1.9", + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/ripple": "^1.1.13", + "@leafygreen-ui/tokens": "^2.5.2", + "@lg-tools/test-harnesses": "^0.1.2", "polished": "^4.2.2" }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33682,24 +35612,22 @@ } }, "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", "dev": true, "requires": { - "@storybook/csf": "^0.1.0", - "lodash": "^4.17.21", - "prop-types": "^15.7.2" + "lodash": "^4.17.21" } } } @@ -33716,18 +35644,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { @@ -33745,9 +35687,9 @@ } }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "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 } } @@ -33772,18 +35714,32 @@ }, "dependencies": { "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { @@ -33833,19 +35789,40 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", + "dev": true, + "requires": { + "@leafygreen-ui/lib": "^14.1.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } + } + }, + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/emotion": "^4.0.8", "lodash": "^4.17.21" } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33854,42 +35831,56 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/portal": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.0.3.tgz", - "integrity": "sha512-vwoZHtdrMzR5uBsfxAvl1kdB/xtQwtfpRTuCqC5Q3X+DsLg9JReDl+5dsGMegwDwkqwzsndYVGpq0BcFuDITXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.1.1.tgz", + "integrity": "sha512-8wvNdLxO3hWY7u5rf1ndYCJJ85TB6XpKp+dl7sQPoLnkq8HXd4GqnFXYwvGQp/pf3ts/Dp5FmZ/9dljkktnzQg==", "dev": true, "requires": { - "@leafygreen-ui/hooks": "^8.0.0", - "@leafygreen-ui/lib": "^13.0.0" + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.3.0" } }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" } } } @@ -33910,19 +35901,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33931,32 +35933,58 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -33978,19 +36006,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -33999,32 +36038,58 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -34050,19 +36115,30 @@ }, "dependencies": { "@leafygreen-ui/hooks": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.1.1.tgz", - "integrity": "sha512-Ovh4/huQbM3UVSnHDQE0rWWG8bxZG7qdI2RZYtmUW/YbAL66GQx3jkfpuLlL3Npu5SxuS6b/Ai42sB2U6+Df0A==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/hooks/-/hooks-8.3.6.tgz", + "integrity": "sha512-6Sgo0irgcsmvWbV29OeJXdlEehTu5ZokONkyl3Op5jb3d3HSoaESk86w3qL3XP2vMmfn6KxE8vp5dC2nlBII+A==", "dev": true, "requires": { - "@leafygreen-ui/lib": "^13.2.1", + "@leafygreen-ui/lib": "^14.1.0", "lodash": "^4.17.21" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -34071,42 +36147,68 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/portal": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.0.3.tgz", - "integrity": "sha512-vwoZHtdrMzR5uBsfxAvl1kdB/xtQwtfpRTuCqC5Q3X+DsLg9JReDl+5dsGMegwDwkqwzsndYVGpq0BcFuDITXQ==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/portal/-/portal-5.1.1.tgz", + "integrity": "sha512-8wvNdLxO3hWY7u5rf1ndYCJJ85TB6XpKp+dl7sQPoLnkq8HXd4GqnFXYwvGQp/pf3ts/Dp5FmZ/9dljkktnzQg==", "dev": true, "requires": { - "@leafygreen-ui/hooks": "^8.0.0", - "@leafygreen-ui/lib": "^13.0.0" + "@leafygreen-ui/hooks": "^8.1.3", + "@leafygreen-ui/lib": "^13.3.0" } }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.2.0.tgz", - "integrity": "sha512-+7RTr/ruNY+Tr1hfxAYD1R1dSjBBrCCpeTSJibiydMS6CRfwUcyKEo0pLq4VRcnigMidMM1JuhMIkTaKPMHtNQ==", + "version": "18.4.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/typography/-/typography-18.4.0.tgz", + "integrity": "sha512-2pfoBv6jEPupMzT/rciyP6oN53Fc2h0Nl/uXubSRuFcIDwUAE6CIb3+IjK3UNyQrnOixGU4lWQhxIPTrnyxCpQ==", "dev": true, "requires": { - "@leafygreen-ui/emotion": "^4.0.7", - "@leafygreen-ui/icon": "^11.27.1", - "@leafygreen-ui/lib": "^13.2.0", - "@leafygreen-ui/palette": "^4.0.7", - "@leafygreen-ui/polymorphic": "^1.3.6", - "@leafygreen-ui/tokens": "^2.1.4" + "@leafygreen-ui/emotion": "^4.0.8", + "@leafygreen-ui/icon": "^12.1.0", + "@leafygreen-ui/lib": "^13.4.0", + "@leafygreen-ui/palette": "^4.0.10", + "@leafygreen-ui/polymorphic": "^1.3.7", + "@leafygreen-ui/tokens": "^2.5.2" + }, + "dependencies": { + "@leafygreen-ui/icon": { + "version": "12.9.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-12.9.0.tgz", + "integrity": "sha512-TX5iObwOwOEZ1xI5YqABuIkzKcfiMN31FApGSDDvorq+uA4MNCo0whoJLnNkg/JkyJ0Wi+MSfstTEE9NYwlVDg==", + "dev": true, + "requires": { + "@leafygreen-ui/emotion": "^4.0.8", + "lodash": "^4.17.21" + } + } } } } @@ -34126,9 +36228,9 @@ }, "dependencies": { "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -34137,18 +36239,32 @@ } }, "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } } } @@ -34181,18 +36297,32 @@ }, "dependencies": { "@leafygreen-ui/palette": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.0.8.tgz", - "integrity": "sha512-f7aA6lT5xbK/fta6Lv0YRKCdhupl1c9xK9W2bW12dt8FLwOUELAdLnu3UvgMFBcC4SP/t/B7j/Qwz0X5R6lfkA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/palette/-/palette-4.1.4.tgz", + "integrity": "sha512-pkNeNzlstEM7ceoLG1mG7PUGunEdUYemKjzVOcaCbNEoyZvX3Lf0KWb8tDmAEloSPdXxMOlO8hoef9JGNdEIcw==", "dev": true }, "@leafygreen-ui/tokens": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.3.0.tgz", - "integrity": "sha512-8oDrQWRvUISitKLufO+9rpvQnJxU56sVUhTjR3O3sY7CkRo1vhHUV7F82oY3Gt6nBXVn82RrBTHzZ6F6LHlBvw==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/tokens/-/tokens-2.12.0.tgz", + "integrity": "sha512-qdXNNA8MYU4Pc9l256r7/guGuPCZi7ymyGdIVlYm7cimpk679WBR2RRNSEenLuBz4ENuGZFuyzHeBC/9DH11nQ==", "dev": true, "requires": { - "@leafygreen-ui/palette": "^4.0.7" + "@leafygreen-ui/emotion": "^4.0.10", + "@leafygreen-ui/lib": "^14.1.0", + "@leafygreen-ui/palette": "^4.1.4", + "polished": "^4.2.2" + }, + "dependencies": { + "@leafygreen-ui/lib": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-14.1.0.tgz", + "integrity": "sha512-5UqSGClJ6RB+joiq2qftXr+Brq7ivp8E5ztob/nRlWmfOetvZoL/f7RPFmXY0N4u4zrkARxctxPAnbPWqwU8Bg==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + } } }, "@leafygreen-ui/typography": { @@ -34271,9 +36401,9 @@ }, "dependencies": { "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, "requires": { "semver": "^7.3.5" @@ -34304,9 +36434,9 @@ } }, "@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, "requires": { "npm-bundled": "^3.0.0", @@ -34351,16 +36481,16 @@ } }, "cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -34375,39 +36505,62 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true } } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "glob": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.3.tgz", - "integrity": "sha512-92vPiMb/iqpmEgsOoIDvTjc50wf9CCCvMzsi6W0JLPeUKE8TWP1a73PgqSrqy7iAZxaSD1YdzU7QZR5LF51MJw==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "hosted-git-info": { @@ -34420,24 +36573,24 @@ } }, "ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, "requires": { "minimatch": "^9.0.0" } }, "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true }, "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -34450,18 +36603,18 @@ "dev": true }, "npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^3.0.0" } }, "npm-install-checks": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, "requires": { "semver": "^7.1.1" @@ -34505,9 +36658,9 @@ } }, "npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", "dev": true, "requires": { "npm-install-checks": "^6.0.0", @@ -34517,9 +36670,9 @@ }, "dependencies": { "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" @@ -34572,9 +36725,9 @@ }, "dependencies": { "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" @@ -34611,27 +36764,32 @@ } }, "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==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "unique-filename": { @@ -34662,9 +36820,9 @@ }, "dependencies": { "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "requires": { "semver": "^7.0.0" @@ -34683,6 +36841,15 @@ } } }, + "@lg-tools/test-harnesses": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@lg-tools/test-harnesses/-/test-harnesses-0.1.4.tgz", + "integrity": "sha512-3CbuBu28tgn919mHTWFwyKiHnrg78h3kOT1uIrYTlJzUJ8V8tcFXSCTlOYhn+8iQSlbG3dHVSbOcZmfSXDFohA==", + "dev": true, + "requires": { + "@testing-library/dom": "9.3.1" + } + }, "@mongodb-js/compass-components": { "version": "1.21.3", "resolved": "https://registry.npmjs.org/@mongodb-js/compass-components/-/compass-components-1.21.3.tgz", @@ -34786,447 +36953,10 @@ "typescript": "^5.0.4" }, "dependencies": { - "@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - } - }, - "@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - } - }, - "@typescript-eslint/parser": { - "version": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - } - }, - "@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - } - }, - "@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - } - }, - "@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "dependencies": { - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "requires": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - } - }, - "acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "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 - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "eslint": { - "version": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@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.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", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "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.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - } - }, - "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, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "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 - }, - "espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "requires": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "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" - } - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "mocha": { - "version": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - }, - "dependencies": { - "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 - } - } - }, - "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "dev": true - }, - "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, - "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 - }, "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "dev": true - }, - "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -35258,7 +36988,7 @@ "node-fetch": "^3.3.2", "nyc": "^15.1.0", "pac-proxy-agent": "^7.0.2", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "socks-proxy-agent": "^8.0.4", "ssh2": "^1.15.0", @@ -35273,9 +37003,9 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" }, "lru-cache": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.0.tgz", - "integrity": "sha512-Qv32eSV1RSCfhY3fpPE2GNZ8jgM9X7rdAfemLWqTUxwiyIC4jJ6Sy0fZ8H+oLWevO6i4/bizg7c8d8i6bxrzbA==" + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", + "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==" }, "node-fetch": { "version": "3.3.2", @@ -35288,9 +37018,9 @@ } }, "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -35304,7 +37034,7 @@ "depcheck": "^1.4.1", "eslint": "^7.25.0", "pacote": "^11.3.5", - "prettier": "2.3.2", + "prettier": "^3.5.3", "prompts": "^2.4.1" } }, @@ -35331,16 +37061,16 @@ "nock": "^13.3.1", "node-fetch": "^2.6.7", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "s3rver": "^3.7.1", "sinon": "^9.2.3", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -35360,7 +37090,7 @@ "eslint-plugin-mocha": "^8.0.0", "eslint-plugin-react": "^7.24.0", "eslint-plugin-react-hooks": "^4.2.0", - "prettier": "2.3.2" + "prettier": "^3.5.3" } }, "@mongodb-js/get-os-info": { @@ -35380,15 +37110,15 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -35405,20 +37135,12 @@ "global-jsdom": "^24.0.0", "identity-obj-proxy": "^3.0.0", "jsdom": "^24.1.3", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "react": ">=16", "react-16-node-hanging-test-fix": "^1.0.0", "sinon-chai": "^3.7.0", "ts-node": "^10.9.2", "why-is-node-running": "^2.2.2" - }, - "dependencies": { - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true - } } }, "@mongodb-js/mongodb-constants": { @@ -35439,30 +37161,27 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "semver": "^7.5.4", "sinon": "^9.2.3", "typescript": "^5.0.4" }, "dependencies": { "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true }, "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -35488,7 +37207,7 @@ "mongodb-download-url": "^1.5.5", "node-fetch": "^2.6.11", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "tar": "^6.1.15", "typescript": "^5.0.4" }, @@ -35499,17 +37218,17 @@ "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" }, "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", + "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==", "requires": { "whatwg-url": "^5.0.0" } }, "tar": { - "version": "6.1.15", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz", - "integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "requires": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -35525,9 +37244,9 @@ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, "webidl-conversions": { @@ -35570,7 +37289,7 @@ "ora": "^5.4.0", "pacote": "^11.3.5", "pkg-up": "^3.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "semver": "^7.5.4", "sinon": "^9.2.3", "toposort": "^2.0.2", @@ -35595,24 +37314,25 @@ } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "requires": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "glob": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz", - "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" } }, "locate-path": { @@ -35624,17 +37344,17 @@ } }, "minimatch": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz", - "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" }, "p-limit": { "version": "2.3.0", @@ -35653,22 +37373,19 @@ } }, "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" }, "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -35725,12 +37442,6 @@ "strip-json-comments": "^3.1.1" } }, - "@eslint/js": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", - "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", - "dev": true - }, "@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -35777,12 +37488,6 @@ "@types/deep-eql": "*" } }, - "@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==", - "dev": true - }, "@types/mocha": { "version": "10.0.10", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", @@ -36060,16 +37765,6 @@ "semver": "^7.5.4" } }, - "jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -36216,12 +37911,6 @@ } } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "nise": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", @@ -36378,12 +38067,6 @@ "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true }, - "prettier": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", - "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", - "dev": true - }, "resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -36516,26 +38199,16 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "react": "^17.0.2", "react-dom": "^17.0.2", "typescript": "^5.0.4" }, "dependencies": { - "react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dev": true, - "requires": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -36557,7 +38230,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4", "yargs": "17.7.2" @@ -36574,9 +38247,9 @@ } }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, "yargs": { @@ -36634,15 +38307,7 @@ "@mongodb-js/prettier-config-devtools": { "version": "file:configs/prettier-config-devtools", "requires": { - "prettier": "^2.3.2" - }, - "dependencies": { - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true - } + "prettier": "^3.5.3" } }, "@mongodb-js/saslprep": { @@ -36663,16 +38328,16 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "sparse-bitfield": "^3.0.3", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -36705,7 +38370,7 @@ "nock": "^13.3.1", "node-fetch": "^2.6.7", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "rimraf": "^5.0.1", "semver": "^7.5.4", "sinon": "^9.2.3", @@ -36721,49 +38386,49 @@ "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==" }, "@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.1.tgz", + "integrity": "sha512-dKYCMuPO1bmrpuogcjQ8z7ICCH3FP6WmxpwC03yjzGfZhj9fTJg6+bS1+UAplekbN2C+M61UNllGOOoAfGCrdQ==", "requires": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", + "@octokit/request": "^8.4.1", + "@octokit/request-error": "^5.1.1", "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" } }, "@octokit/endpoint": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", - "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz", + "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==", "requires": { "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" } }, "@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.1.tgz", + "integrity": "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g==", "requires": { - "@octokit/request": "^8.3.0", + "@octokit/request": "^8.4.1", "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" } }, "@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==" + "version": "24.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-24.2.0.tgz", + "integrity": "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg==" }, "@octokit/plugin-paginate-rest": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", - "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", + "version": "11.4.4-cjs.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.4-cjs.2.tgz", + "integrity": "sha512-2dK6z8fhs8lla5PaOTgqfCGBxgAv/le+EhPs27KklPhm1bKObpu6lXzwfUEQ16ajXzqNrKMujsFyo9K2eaoISw==", "requires": { - "@octokit/types": "^13.5.0" + "@octokit/types": "^13.7.0" } }, "@octokit/plugin-request-log": { @@ -36772,28 +38437,28 @@ "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==" }, "@octokit/plugin-rest-endpoint-methods": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", - "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", + "version": "13.3.2-cjs.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.2-cjs.1.tgz", + "integrity": "sha512-VUjIjOOvF2oELQmiFpWA1aOPdawpyaCUqcEBc/UOUnj3Xp6DJGrJ1+bjUIIDzdHjnFNO6q57ODMfdEZnoBkCwQ==", "requires": { - "@octokit/types": "^13.5.0" + "@octokit/types": "^13.8.0" } }, "@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz", + "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==", "requires": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", + "@octokit/endpoint": "^9.0.6", + "@octokit/request-error": "^5.1.1", "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" } }, "@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz", + "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==", "requires": { "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", @@ -36801,22 +38466,22 @@ } }, "@octokit/rest": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", - "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", + "version": "20.1.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.2.tgz", + "integrity": "sha512-GmYiltypkHHtihFwPRxlaorG5R9VAHuk/vbszVoRTGXnAsY60wYLkh/E2XiFmdZmqrisw+9FaazS1i5SbdWYgA==", "requires": { "@octokit/core": "^5.0.2", - "@octokit/plugin-paginate-rest": "11.3.1", + "@octokit/plugin-paginate-rest": "11.4.4-cjs.2", "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-rest-endpoint-methods": "13.2.2" + "@octokit/plugin-rest-endpoint-methods": "13.3.2-cjs.1" } }, "@octokit/types": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", - "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", + "version": "13.10.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.10.0.tgz", + "integrity": "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA==", "requires": { - "@octokit/openapi-types": "^22.2.0" + "@octokit/openapi-types": "^24.2.0" } }, "brace-expansion": { @@ -36843,26 +38508,27 @@ } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "glob": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.5.tgz", - "integrity": "sha512-Gj+dFYPZ5hc5dazjXzB0iHg2jKWJZYMjITXYPBRQ/xc2Buw7H0BINknRTwURJ6IC6MEFpYbLvtgVb3qD+DwyuA==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.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" } }, "locate-path": { @@ -36874,18 +38540,18 @@ } }, "minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, "p-limit": { @@ -36905,32 +38571,29 @@ } }, "rimraf": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.1.tgz", - "integrity": "sha512-OfFZdwtd3lZ+XZzYP/6gTACubwFcHdLRqS9UX3UwpU2dnGQYkPFISRwvM3w9IiB2w7bW5qGo/uAwE4SmXXSKvg==", + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", "dev": true, "requires": { - "glob": "^10.2.5" + "glob": "^10.3.7" } }, "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" }, "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -36955,7 +38618,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -36967,14 +38630,14 @@ "dev": true }, "acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==" + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==" }, "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -36998,16 +38661,16 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "ssh2": "^1.15.0", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -37037,7 +38700,7 @@ "gen-esm-wrapper": "^1.1.1", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, @@ -37054,15 +38717,7 @@ "version": "file:configs/tsconfig-devtools", "requires": { "@mongodb-js/prettier-config-devtools": "^1.0.1", - "prettier": "^2.3.2" - }, - "dependencies": { - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true - } + "prettier": "^3.5.3" } }, "@nicolo-ribaudo/eslint-scope-5-internals": { @@ -37111,12 +38766,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -37136,12 +38788,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -37213,12 +38862,9 @@ } }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -37264,9 +38910,9 @@ } }, "tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -37390,9 +39036,9 @@ } }, "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", "dev": true }, "@octokit/plugin-enterprise-rest": { @@ -37510,12 +39156,9 @@ }, "dependencies": { "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -37684,9 +39327,9 @@ "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==" }, "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", "dev": true, "requires": { "type-detect": "4.0.8" @@ -37745,9 +39388,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -37760,6 +39403,88 @@ "defer-to-connect": "^2.0.0" } }, + "@testing-library/dom": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.1.tgz", + "integrity": "sha512-0DGPd9AR3+iDTjGoMpxIkAsUihHZ3Ai6CneU6bRRrffXMgzCdlNk43jTrD2/5LT6CBb3MWTP8v510JzYtahD2w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "dependencies": { + "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 + }, + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "requires": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + } + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + } + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } + } + }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -37816,9 +39541,9 @@ } }, "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -37826,6 +39551,12 @@ } } }, + "@types/aria-query": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true + }, "@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -37838,9 +39569,9 @@ } }, "@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", "dev": true }, "@types/debug": { @@ -37888,9 +39619,9 @@ } }, "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, "@types/facepaint": { @@ -38023,14 +39754,15 @@ }, "dependencies": { "form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.3.tgz", + "integrity": "sha512-q5YBMeWy6E2Un0nMGWMgI65MAKtaylxfNJGJxpGh45YDciZB4epbWpaAfImil6CPAPTYB4sh0URQNDRIZG5F2w==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35" } } } @@ -38163,18 +39895,18 @@ "integrity": "sha512-G8hZ6XJiHnuhQKR7ZmysCeJWE08o8T0AXtk5darsCaTVsYZhhgUrq53jizaR2FvsoeCwJhlmwTjkXBY5Pn/ZHw==" }, "@types/sinon": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.13.tgz", - "integrity": "sha512-UVjDqJblVNQYvVNUsj0PuYYw0ELRmgt1Nt5Vk0pT5f16ROGfcKJY8o1HVuMOJOpD727RrGB9EGvoaTQE5tgxZQ==", + "version": "9.0.11", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.11.tgz", + "integrity": "sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg==", "dev": true, "requires": { "@types/sinonjs__fake-timers": "*" } }, "@types/sinon-chai": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", - "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", "dev": true, "requires": { "@types/chai": "*", @@ -38212,9 +39944,9 @@ }, "dependencies": { "@types/node": { - "version": "18.19.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.4.tgz", - "integrity": "sha512-xNzlUhzoHotIsnFoXmJB+yWmBvFZgKCI9TtPIEdYIMM1KWfwuY8zh7wvc1u1OAXlC7dlf6mZVx/s+Y5KfFz19A==", + "version": "18.19.80", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz", + "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==", "requires": { "undici-types": "~5.26.4" } @@ -38322,12 +40054,9 @@ }, "dependencies": { "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -38382,12 +40111,9 @@ }, "dependencies": { "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -38407,12 +40133,9 @@ }, "dependencies": { "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -38426,9 +40149,9 @@ }, "dependencies": { "eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==" + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==" } } }, @@ -38438,12 +40161,6 @@ "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", "dev": true }, - "@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, "@vue/compiler-core": { "version": "3.5.13", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", @@ -38732,9 +40449,9 @@ }, "dependencies": { "tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -38904,10 +40621,9 @@ } }, "aproba": { - "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 + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" }, "archy": { "version": "1.0.0", @@ -38952,12 +40668,12 @@ } }, "array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "requires": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" } }, "array-differ": { @@ -39048,18 +40764,17 @@ } }, "arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "requires": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" } }, "arrify": { @@ -39111,9 +40826,9 @@ }, "dependencies": { "tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" } } }, @@ -39129,20 +40844,28 @@ "dev": true }, "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, + "async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==" + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "available-typed-arrays": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.6.tgz", - "integrity": "sha512-j1QzY8iPNPG4o4xmO3ptzpRxTciqD3MgEHtifP/YnJpIo58Xu+ne4BejlbkuaLfXn/nz6HFiw29bLpj2PNMdGg==" + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "requires": { + "possible-typed-array-names": "^1.0.0" + } }, "aws-sdk": { "version": "2.1441.0", @@ -39227,13 +40950,14 @@ }, "dependencies": { "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } } @@ -39352,9 +41076,9 @@ }, "dependencies": { "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -39450,11 +41174,11 @@ } }, "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "requires": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" } }, "browser-stdout": { @@ -39641,15 +41365,14 @@ } }, "call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "requires": { + "call-bind-apply-helpers": "^1.0.0", "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" + "set-function-length": "^1.2.2" } }, "call-bind-apply-helpers": { @@ -39661,6 +41384,15 @@ "function-bind": "^1.1.2" } }, + "call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "requires": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + } + }, "call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", @@ -39715,17 +41447,24 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "requires": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.1.0" + }, + "dependencies": { + "type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==" + } } }, "chai-dom": { @@ -39757,9 +41496,12 @@ "dev": true }, "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "requires": { + "get-func-name": "^2.0.2" + } }, "cheerio": { "version": "1.0.0-rc.12", @@ -39859,9 +41601,9 @@ } }, "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" }, "cli-table": { "version": "0.3.11", @@ -40255,13 +41997,10 @@ } }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { "version": "0.5.0", @@ -40313,9 +42052,9 @@ "integrity": "sha512-uzMmW8cRh7uYw4JQtzqvGWRyC2T5+4zipQLQdi2FmiRqP83k3d6F3stv2iAlNhOs6cXN401FCD5TL0vvleuHgA==" }, "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "cosmiconfig": { "version": "7.1.0", @@ -40475,24 +42214,54 @@ }, "dependencies": { "tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", "requires": { "punycode": "^2.3.1" } }, "whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "requires": { - "tr46": "^5.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } } } }, + "data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "requires": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + } + }, + "data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + } + }, "dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -40500,11 +42269,11 @@ "dev": true }, "debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "requires": { - "ms": "2.1.2" + "ms": "^2.1.3" } }, "decamelize": { @@ -40607,11 +42376,6 @@ "safe-buffer": "^5.1.1" } }, - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -40667,11 +42431,6 @@ "is-stream": "^1.1.0" }, "dependencies": { - "file-type": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", - "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" - }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", @@ -40718,9 +42477,9 @@ "dev": true }, "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "requires": { "type-detect": "^4.0.0" } @@ -40797,9 +42556,9 @@ "dev": true }, "npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "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, "requires": { "path-key": "^4.0.0" @@ -41075,6 +42834,12 @@ "esutils": "^2.0.2" } }, + "dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true + }, "dom-helpers": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", @@ -41177,9 +42942,9 @@ } }, "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, "requires": { "abort-controller": "^3.0.0", @@ -41247,13 +43012,19 @@ }, "dependencies": { "@types/node": { - "version": "20.14.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", - "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", + "version": "20.17.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.24.tgz", + "integrity": "sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==", "dev": true, "requires": { - "undici-types": "~5.26.4" + "undici-types": "~6.19.2" } + }, + "undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true } } }, @@ -41376,11 +43147,11 @@ } }, "enzyme-shallow-equal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", - "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.7.tgz", + "integrity": "sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==", "requires": { - "has": "^1.0.3", + "hasown": "^2.0.0", "object-is": "^1.1.5" } }, @@ -41407,51 +43178,61 @@ } }, "es-abstract": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.4.tgz", - "integrity": "sha512-vZYJlk2u6qHYxBOTjAeg7qUxHdNfih64Uu2J8QqWgXZ2cri0ZpJAkzDUK/q593+mvKwlxyaxr6F1Q+3LKoQRgg==", - "requires": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.7", - "es-define-property": "^1.0.0", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", + "requires": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.2", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.1", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.0", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.1", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.14" + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" } }, "es-array-method-boxes-properly": { @@ -41469,6 +43250,31 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" }, + "es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, "es-module-lexer": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", @@ -41503,13 +43309,13 @@ } }, "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" } }, "es5-ext": { @@ -41655,9 +43461,9 @@ } }, "globals": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz", - "integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -41670,13 +43476,10 @@ "dev": true }, "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "type-fest": { "version": "0.20.2", @@ -41819,12 +43622,6 @@ "minimist": "^1.2.0" } }, - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -41901,9 +43698,9 @@ }, "dependencies": { "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "requires": { "semver": "^7.0.0" @@ -41919,13 +43716,10 @@ } }, "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "type-fest": { "version": "0.20.2", @@ -41976,11 +43770,11 @@ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" }, "resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -42262,9 +44056,9 @@ }, "dependencies": { "type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "dev": true } } @@ -42336,15 +44130,15 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "requires": { "@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" } }, "fast-json-stable-stringify": { @@ -42364,6 +44158,12 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", "dev": true }, + "fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "dev": true + }, "fast-xml-parser": { "version": "3.21.1", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz", @@ -42435,6 +44235,11 @@ "flat-cache": "^3.0.4" } }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==" + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -42471,9 +44276,9 @@ } }, "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "requires": { "to-regex-range": "^5.0.1" } @@ -42555,12 +44360,13 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" }, "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "requires": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" } }, @@ -42601,11 +44407,11 @@ "dev": true }, "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "requires": { - "is-callable": "^1.1.3" + "is-callable": "^1.2.7" } }, "foreground-child": { @@ -42677,9 +44483,9 @@ "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" }, "fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", "requires": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -42712,14 +44518,16 @@ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" } }, "functional-red-black-tree": { @@ -42753,11 +44561,6 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - }, "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", @@ -43056,9 +44859,9 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==" }, "get-intrinsic": { "version": "1.3.0", @@ -43123,13 +44926,13 @@ "dev": true }, "get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "requires": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" } }, "get-tsconfig": { @@ -43320,9 +45123,9 @@ }, "dependencies": { "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "optional": true } @@ -43374,11 +45177,12 @@ "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "requires": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" } }, "globby": { @@ -43521,9 +45325,9 @@ } }, "has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==" }, "has-flag": { "version": "4.0.0", @@ -43539,9 +45343,12 @@ } }, "has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "requires": { + "dunder-proto": "^1.0.0" + } }, "has-symbols": { "version": "1.1.0", @@ -43874,9 +45681,9 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==" }, "ignore-walk": { "version": "3.0.4", @@ -43955,32 +45762,21 @@ "validate-npm-package-name": "^5.0.0" }, "dependencies": { - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - } } }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, "npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -43994,22 +45790,16 @@ } }, "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==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true } } }, @@ -44037,13 +45827,13 @@ } }, "internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "requires": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" } }, "interpret": { @@ -44096,9 +45886,9 @@ } }, "ipaddr.js": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", - "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==" }, "ipv6-normalize": { "version": "1.0.1", @@ -44116,12 +45906,13 @@ } }, "is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" } }, "is-arrayish": { @@ -44130,12 +45921,24 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "dev": true }, + "is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "requires": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + } + }, "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "requires": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" } }, "is-binary-path": { @@ -44148,12 +45951,12 @@ } }, "is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-builtin-module": { @@ -44180,19 +45983,30 @@ } }, "is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "requires": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + } + }, + "is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "requires": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" } }, "is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" } }, "is-docker": { @@ -44212,6 +46026,14 @@ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, + "is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "requires": { + "call-bound": "^1.0.3" + } + }, "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", @@ -44260,27 +46082,28 @@ "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==" }, + "is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==" + }, "is-natural-number": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" }, - "is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==" - }, "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-obj": { @@ -44289,12 +46112,6 @@ "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true }, - "is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true - }, "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", @@ -44319,20 +46136,27 @@ "dev": true }, "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, + "is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==" + }, "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" } }, "is-ssh": { @@ -44345,17 +46169,18 @@ } }, "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", "dev": true }, "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "requires": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" } }, "is-subset": { @@ -44364,11 +46189,13 @@ "integrity": "sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==" }, "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "requires": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" } }, "is-text-path": { @@ -44381,11 +46208,11 @@ } }, "is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "requires": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" } }, "is-typedarray": { @@ -44413,12 +46240,26 @@ "assert": "^1.4.1" } }, + "is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==" + }, "is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "requires": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + } + }, + "is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "requires": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" } }, "is-windows": { @@ -44547,9 +46388,9 @@ } }, "jackspeak": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.0.tgz", - "integrity": "sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "requires": { "@isaacs/cliui": "^8.0.2", "@pkgjs/parseargs": "^0.11.0" @@ -44671,12 +46512,13 @@ }, "dependencies": { "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" } }, @@ -44692,9 +46534,9 @@ } }, "tr46": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", - "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", "requires": { "punycode": "^2.3.1" } @@ -44705,11 +46547,11 @@ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" }, "whatwg-url": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", - "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "requires": { - "tr46": "^5.0.0", + "tr46": "^5.1.0", "webidl-conversions": "^7.0.0" } } @@ -45166,9 +47008,9 @@ }, "dependencies": { "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, "requires": { "semver": "^7.3.5" @@ -45199,9 +47041,9 @@ } }, "@npmcli/installed-package-contents": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.0.2.tgz", - "integrity": "sha512-xACzLPhnfD51GKvTOOuNX2/V4G4mz9/1I2MfDoye9kBM3RYe5g2YbscsaGoTlaWqkxeiapBWyseULVKpSVHtKQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", "dev": true, "requires": { "npm-bundled": "^3.0.0", @@ -45209,9 +47051,9 @@ }, "dependencies": { "npm-bundled": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.0.tgz", - "integrity": "sha512-Vq0eyEQy+elFpzsKjMss9kxqb9tG3YHg4dsyWuUENuzvSUWe1TCnW/vV9FkhvBk/brEDoDiVd+M1Btosa6ImdQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, "requires": { "npm-normalize-package-bin": "^3.0.0" @@ -45270,16 +47112,16 @@ "dev": true }, "cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -45299,16 +47141,17 @@ } }, "glob": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", - "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" } }, "lru-cache": { @@ -45318,27 +47161,27 @@ "dev": true }, "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" } } } @@ -45354,48 +47197,48 @@ } }, "cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "requires": { - "import-fresh": "^3.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", + "parse-json": "^5.2.0", "path-type": "^4.0.0" } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "dependencies": { "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true } } }, "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "dependencies": { "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true } } @@ -45487,12 +47330,6 @@ } } }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -45503,9 +47340,9 @@ } }, "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true }, "minimatch": { @@ -45518,9 +47355,9 @@ } }, "npm-install-checks": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.1.1.tgz", - "integrity": "sha512-dH3GmQL4vsPtld59cOn8uY0iOqRmqKvV+DLGwNXV/Q7MDgD2QfOADWd/mFXcIE5LVhYYGjA3baz6W9JneqnuCw==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, "requires": { "semver": "^7.1.1" @@ -45561,9 +47398,9 @@ } }, "npm-pick-manifest": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", - "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.2.tgz", + "integrity": "sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==", "dev": true, "requires": { "npm-install-checks": "^6.0.0", @@ -45573,9 +47410,9 @@ }, "dependencies": { "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" @@ -45655,18 +47492,18 @@ } }, "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" } }, "ignore-walk": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.3.tgz", - "integrity": "sha512-C7FfFoTA+bI10qfeydT8aZbvr91vAEU+2W5BZUlzPec47oNb07SsOfwYrtxuvOYdUApPP/Qlh4DtAO51Ekk2QA==", + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, "requires": { "minimatch": "^9.0.0" @@ -45679,9 +47516,9 @@ "dev": true }, "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -45715,12 +47552,20 @@ } }, "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } } } @@ -45808,13 +47653,10 @@ } }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "ssri": { "version": "9.0.1", @@ -45844,9 +47686,9 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "dev": true }, "validate-npm-package-name": { @@ -45859,9 +47701,9 @@ }, "dependencies": { "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", "dev": true, "requires": { "semver": "^7.0.0" @@ -45898,9 +47740,9 @@ }, "dependencies": { "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true } } @@ -45927,32 +47769,21 @@ "npm-registry-fetch": "^14.0.3" }, "dependencies": { - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - } } }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, "npm-package-arg": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", @@ -45966,22 +47797,16 @@ } }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true } } }, @@ -46001,36 +47826,25 @@ "ssri": "^10.0.1" }, "dependencies": { - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - } } }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, "minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, "normalize-package-data": { @@ -46058,31 +47872,25 @@ } }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" } }, "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true } } }, @@ -46218,11 +48026,11 @@ } }, "loupe": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.4.tgz", - "integrity": "sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "requires": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "lowercase-keys": { @@ -46247,6 +48055,12 @@ "es5-ext": "~0.10.2" } }, + "lz-string": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", + "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", + "dev": true + }, "macos-export-certificate-and-key": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/macos-export-certificate-and-key/-/macos-export-certificate-and-key-1.2.2.tgz", @@ -46312,9 +48126,9 @@ }, "dependencies": { "@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, "requires": { "semver": "^7.3.5" @@ -46345,16 +48159,16 @@ } }, "cacache": { - "version": "17.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.3.tgz", - "integrity": "sha512-jAdjGxmPxZh0IipMdR7fK/4sDSrHMLUV0+GvVUsjwyGNKHsh79kW/otg+GkbXwl6Uzvy9wsvHOX4nUoWldeZMg==", + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", "dev": true, "requires": { "@npmcli/fs": "^3.1.0", "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -46362,38 +48176,63 @@ "ssri": "^10.0.0", "tar": "^6.1.11", "unique-filename": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "fs-minipass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.2.tgz", - "integrity": "sha512-2GAfyfoaCDRrM6jaOS3UsBts8yJ55VioXdWcOL7dK9zdAuKT71+WBA4ifnNYqVjYv+4SsPxjK0JT4yIIn4cA/g==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "glob": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", - "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "http-proxy-agent": { @@ -46424,9 +48263,9 @@ "dev": true }, "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -46439,41 +48278,35 @@ "dev": true }, "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, "requires": { "encoding": "^0.1.13", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" - } - }, - "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" }, "dependencies": { - "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, - "requires": { - "yallist": "^4.0.0" - } + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true } } }, + "semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + }, "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true }, "socks-proxy-agent": { @@ -46488,12 +48321,20 @@ } }, "ssri": { - "version": "10.0.4", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.4.tgz", - "integrity": "sha512-12+IR2CB2C28MMAw0Ncqwj5QbTcs0nGIhgJzYWzDkb21vWmfNI83KS4f3Ci6GI98WreIfG7o9UXp3C0qbpA8nQ==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "requires": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "unique-filename": { @@ -46684,9 +48525,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "type-fest": { @@ -46721,11 +48562,11 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -46948,12 +48789,6 @@ "brace-expansion": "^1.1.7" } }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -46992,6 +48827,12 @@ "prebuild-install": "^7.1.2" }, "dependencies": { + "napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "optional": true + }, "node-addon-api": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", @@ -46999,9 +48840,9 @@ "optional": true }, "prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", "optional": true, "requires": { "detect-libc": "^2.0.0", @@ -47009,7 +48850,7 @@ "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", + "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", @@ -47042,16 +48883,16 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -47083,7 +48924,7 @@ "mocha": "^8.4.0", "node-fetch": "^2.6.1", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "semver": "^7.1.1", "sinon": "^9.2.3", "ts-node": "^10.9.2", @@ -47091,14 +48932,14 @@ }, "dependencies": { "semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==" + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" }, "typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -47122,169 +48963,21 @@ "heap-js": "^2.3.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, "dependencies": { "acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "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 - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - } - }, - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "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" - } - }, - "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, - "requires": { - "argparse": "^2.0.1" - } - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "mocha": { - "version": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "dev": true, - "requires": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "dependencies": { - "minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "dev": true }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - }, "typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", - "dev": true - }, - "workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -47316,15 +49009,15 @@ "lodash": "^4.17.21", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -47345,15 +49038,15 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, "dependencies": { "typescript": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", - "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -47382,7 +49075,7 @@ "mongodb": "^6.9.0", "mongodb-connection-string-url": "^3.0.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4", "yargs": "^17.7.2" @@ -47399,9 +49092,9 @@ } }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, "yargs": { @@ -47497,9 +49190,9 @@ "integrity": "sha512-I1mnb5xn4fO80BH9BLcF0yLypy2UKl+Cb01Fu0hJRkJjlCRtxZMWkTdAtDd5ZqCOxtCkhmRwyI57vWT+1iZ67w==" }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "multimatch": { "version": "5.0.0", @@ -47652,13 +49345,10 @@ }, "dependencies": { "semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", - "optional": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "optional": true } } }, @@ -47703,16 +49393,16 @@ } }, "node-gyp": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.0.tgz", - "integrity": "sha512-dMXsYP6gc9rRbejLXmTbVRYjAHw7ppswsKyMxuxJxxOHzluIO1rGp9TOQgjFJ+2MCqcOcQTOPB/8Xwhr+7s4Eg==", + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", "dev": true, "requires": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", + "make-fetch-happen": "^10.0.3", "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -47721,6 +49411,41 @@ "which": "^2.0.2" }, "dependencies": { + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, "are-we-there-yet": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", @@ -47731,6 +49456,56 @@ "readable-stream": "^3.6.0" } }, + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + } + } + }, "gauge": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", @@ -47747,6 +49522,78 @@ "wide-align": "^1.1.5" } }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + } + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, "npmlog": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", @@ -47771,12 +49618,47 @@ } }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, "requires": { - "lru-cache": "^6.0.0" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "requires": { + "unique-slug": "^3.0.0" + } + }, + "unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" } }, "wide-align": { @@ -47826,16 +49708,16 @@ "eslint": "^7.25.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4", "webpack-cli": "^5.1.4" }, "dependencies": { "typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true } } @@ -47862,13 +49744,10 @@ }, "dependencies": { "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true } } }, @@ -47900,12 +49779,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -47925,12 +49801,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -47957,12 +49830,9 @@ }, "dependencies": { "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -47981,32 +49851,21 @@ "proc-log": "^3.0.0" }, "dependencies": { - "builtins": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", - "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, - "requires": { - "semver": "^7.0.0" - } - }, "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - } } }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true + }, "minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -48014,15 +49873,23 @@ "dev": true }, "minipass-fetch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.3.tgz", - "integrity": "sha512-n5ITsTkDqYkYJZjcRWzZt9qnZKCT7nKCosJhHoj7S7zD+BP4jVbWs+odsniw5TA3E0sLomhTKOKjF86wf11PuQ==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, "requires": { "encoding": "^0.1.13", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" + }, + "dependencies": { + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true + } } }, "npm-package-arg": { @@ -48038,22 +49905,16 @@ } }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "validate-npm-package-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", - "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, - "requires": { - "builtins": "^5.0.0" - } + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true } } }, @@ -48159,12 +50020,6 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true - }, "fast-glob": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", @@ -48202,9 +50057,9 @@ } }, "lines-and-columns": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", - "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true }, "minimatch": { @@ -48226,9 +50081,9 @@ } }, "tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true }, "yargs": { @@ -48436,9 +50291,9 @@ "dev": true }, "object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==" }, "object-is": { "version": "1.1.5", @@ -48455,13 +50310,15 @@ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, "object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "requires": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, @@ -48662,6 +50519,16 @@ "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", "dev": true }, + "own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "requires": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + } + }, "p-cancelable": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", @@ -48789,8 +50656,7 @@ "package-json-from-dist": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" }, "pacote": { "version": "11.3.5", @@ -49012,16 +50878,16 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==" + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" } } }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "requires": { "isarray": "0.0.1" @@ -49199,6 +51065,11 @@ "@babel/runtime": "^7.17.8" } }, + "possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==" + }, "postcss": { "version": "8.5.3", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", @@ -49245,9 +51116,9 @@ "dev": true }, "prettier": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", - "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true }, "pretty-format": { @@ -49268,9 +51139,9 @@ "dev": true }, "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "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 } } @@ -49538,12 +51409,13 @@ } }, "react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", "dev": true, "requires": { - "loose-envify": "^1.1.0" + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" } }, "react-16-node-hanging-test-fix": { @@ -49555,12 +51427,9 @@ }, "dependencies": { "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==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -49668,64 +51537,63 @@ } }, "foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "requires": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "glob": { - "version": "10.2.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.7.tgz", - "integrity": "sha512-jTKehsravOJo8IJxUGfZILnkvVJM/MOfHRs8QcXolVef2zNI9Tqyy5+SeuOAZd3upViEZQLyFpQhYiHLrMUNmA==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, "requires": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" } }, "hosted-git-info": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", - "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.3.tgz", + "integrity": "sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==", "dev": true, "requires": { "lru-cache": "^7.5.1" - }, - "dependencies": { - "lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true - } } }, "json-parse-even-better-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.0.tgz", - "integrity": "sha512-iZbGHafX/59r39gPwVPRBGw0QQKnA7tte5pSMrhWOW7swGsVvVTjmfyAV9pNqk8YGT7tRCdxRu8uzcgZwoDooA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true + }, + "lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true }, "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "requires": { "brace-expansion": "^2.0.1" } }, "minipass": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz", - "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true }, "normalize-package-data": { @@ -49747,18 +51615,15 @@ "dev": true }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true }, "signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true } } @@ -49839,9 +51704,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "strip-bom": { @@ -49914,9 +51779,9 @@ } }, "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -49954,6 +51819,21 @@ "strip-indent": "^3.0.0" } }, + "reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "requires": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + } + }, "regenerate": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", @@ -49981,14 +51861,16 @@ } }, "regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "requires": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" } }, "regexpp": { @@ -50107,11 +51989,11 @@ "integrity": "sha512-ysyw95gLBhMAzqIVrOHJ2yMrRQHAS+h97bS9r89Z7Ou10Jhl2k5KOsyjPqrxL+WfEanov0o5bAMVzQ7AKyENHA==" }, "resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "requires": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -50278,9 +52160,9 @@ }, "dependencies": { "tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true } } @@ -50339,13 +52221,14 @@ } }, "safe-array-concat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.0.tgz", - "integrity": "sha512-ZdQ0Jeb9Ofti4hbt5lX3T2JcAamT9hfzYU1MNB+z/jaEbB6wfFfPIR/zEORmZqobkCCJhSjodobH6WHNmJ97dg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "requires": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "dependencies": { @@ -50361,14 +52244,30 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, + "safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "requires": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, "safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "requires": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" } }, "safe-stable-stringify": { @@ -50430,9 +52329,9 @@ "dev": true }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" }, "semver-compare": { "version": "1.0.0", @@ -50496,12 +52395,6 @@ "statuses": "2.0.1", "toidentifier": "1.0.1" } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true } } }, @@ -50551,26 +52444,37 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "set-function-length": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", - "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", + "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==", "requires": { - "define-data-property": "^1.1.2", + "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" + "has-property-descriptors": "^1.0.2" } }, "set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "requires": { - "define-data-property": "^1.0.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" + } + }, + "set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "requires": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" } }, "setprototypeof": { @@ -50601,13 +52505,47 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "requires": { + "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" + } + }, + "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==", "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + } + }, + "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==", + "requires": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + } + }, + "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==", + "requires": { + "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" } }, "siginfo": { @@ -50744,12 +52682,9 @@ }, "dependencies": { "semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==" } } }, @@ -50797,11 +52732,11 @@ } }, "socks-proxy-agent": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", - "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", "requires": { - "agent-base": "^7.1.1", + "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } @@ -51006,6 +52941,16 @@ "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true }, + "stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "requires": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + } + }, "stream-combiner2": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", @@ -51065,33 +53010,38 @@ } }, "string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" } }, "string.prototype.trimend": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" } }, "strip-ansi": { @@ -51280,15 +53230,15 @@ }, "dependencies": { "ajv": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", - "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, "requires": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" } }, "json-schema-traverse": { @@ -51383,9 +53333,9 @@ }, "dependencies": { "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 } } @@ -51404,9 +53354,9 @@ }, "dependencies": { "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -51511,13 +53461,10 @@ "integrity": "sha512-NaQa1W76W2aCGjXybvnMYzGSM4x8fvG2AN/pla7qxcg0ZHbooOPhA8kctmOZUDfZyhDL27OGNbwAeig8P4p1vg==" }, "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true }, "to-buffer": { "version": "1.1.1", @@ -51577,12 +53524,6 @@ "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", "dev": true }, - "ts-api-utils": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", - "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", - "dev": true - }, "ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -51604,9 +53545,9 @@ }, "dependencies": { "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==" + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==" }, "diff": { "version": "4.0.2", @@ -51632,15 +53573,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", "dev": true - }, - "@types/sinon": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-9.0.11.tgz", - "integrity": "sha512-PwP4UY33SeeVKodNE37ZlOsR9cReypbMJOhZ7BVE0lB+Hix3efCOxiJWiE5Ia+yL9Cn2Ch72EjFTRze8RZsNtg==", - "dev": true, - "requires": { - "@types/sinonjs__fake-timers": "*" - } } } }, @@ -51743,46 +53675,52 @@ } }, "typed-array-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", - "integrity": "sha512-RSqu1UEuSlrBhHTWC8O9FnPjOduNs4M7rJ4pRKoEjtx1zUNOPN2sSXHLDX+Y2WPbHIxbvg4JFo2DNAEfPIKWoQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "requires": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" } }, "typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" } }, "typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "requires": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" } }, "typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "requires": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" } }, "typedarray": { @@ -51800,9 +53738,9 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true }, "uglify-js": { @@ -51813,14 +53751,14 @@ "optional": true }, "unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "requires": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" } }, "unbzip2-stream": { @@ -51883,9 +53821,9 @@ "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" }, "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==" }, "unpipe": { "version": "1.0.0", @@ -52024,13 +53962,6 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - } } }, "w3c-xmlserializer": { @@ -52102,9 +54033,9 @@ }, "dependencies": { "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 } } @@ -52193,33 +54124,73 @@ } }, "which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "requires": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + } + }, + "which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "requires": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" + } + } + }, + "which-collection": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "requires": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" } }, "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "dev": true }, "which-typed-array": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.14.tgz", - "integrity": "sha512-VnXFiIW8yNn9kIHN88xvZ4yOWchftKDsRJ8fEPacX/wl1lOvBrhsJ/OeJCXq7B0AaijRuqgzSKalJoPk+D8MPg==", - "requires": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "requires": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" } }, "why-is-node-running": { @@ -52425,9 +54396,9 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "write-file-atomic": { diff --git a/packages/devtools-proxy-support/package.json b/packages/devtools-proxy-support/package.json index 650fcc8c..dc905268 100644 --- a/packages/devtools-proxy-support/package.json +++ b/packages/devtools-proxy-support/package.json @@ -83,7 +83,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4", "xvfb-maybe": "^0.2.1" diff --git a/packages/dl-center/package.json b/packages/dl-center/package.json index 58d83379..293d32cc 100644 --- a/packages/dl-center/package.json +++ b/packages/dl-center/package.json @@ -65,7 +65,7 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "s3rver": "^3.7.1", "sinon": "^9.2.3", "typescript": "^5.0.4" diff --git a/packages/download-url/package.json b/packages/download-url/package.json index b3086af1..e1bb6df3 100644 --- a/packages/download-url/package.json +++ b/packages/download-url/package.json @@ -57,7 +57,7 @@ "gen-esm-wrapper": "^1.1.1", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4", "ts-node": "^10.9.2" diff --git a/packages/get-os-info/package.json b/packages/get-os-info/package.json index 5e5c705a..c2c3dad2 100644 --- a/packages/get-os-info/package.json +++ b/packages/get-os-info/package.json @@ -60,7 +60,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/mongodb-cloud-info/package.json b/packages/mongodb-cloud-info/package.json index e6db81df..d0ccc016 100644 --- a/packages/mongodb-cloud-info/package.json +++ b/packages/mongodb-cloud-info/package.json @@ -68,7 +68,7 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" diff --git a/packages/mongodb-constants/package.json b/packages/mongodb-constants/package.json index 363fdbed..62b91e69 100644 --- a/packages/mongodb-constants/package.json +++ b/packages/mongodb-constants/package.json @@ -61,7 +61,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, diff --git a/packages/mongodb-downloader/package.json b/packages/mongodb-downloader/package.json index 35e0e5d0..03e8057b 100644 --- a/packages/mongodb-downloader/package.json +++ b/packages/mongodb-downloader/package.json @@ -67,7 +67,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "typescript": "^5.0.4" } } diff --git a/packages/mongodb-log-writer/package.json b/packages/mongodb-log-writer/package.json index 2fcf5235..30f36640 100644 --- a/packages/mongodb-log-writer/package.json +++ b/packages/mongodb-log-writer/package.json @@ -84,7 +84,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/mongodb-redact/package.json b/packages/mongodb-redact/package.json index c01da959..ba340ef6 100644 --- a/packages/mongodb-redact/package.json +++ b/packages/mongodb-redact/package.json @@ -59,7 +59,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/mongodb-runner/package.json b/packages/mongodb-runner/package.json index 04159359..1d8fba62 100644 --- a/packages/mongodb-runner/package.json +++ b/packages/mongodb-runner/package.json @@ -74,7 +74,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/monorepo-tools/package.json b/packages/monorepo-tools/package.json index c1708087..76ca138f 100644 --- a/packages/monorepo-tools/package.json +++ b/packages/monorepo-tools/package.json @@ -60,7 +60,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, diff --git a/packages/mql-typescript/.depcheckrc b/packages/mql-typescript/.depcheckrc index 48bf9af6..c06ee3cd 100644 --- a/packages/mql-typescript/.depcheckrc +++ b/packages/mql-typescript/.depcheckrc @@ -6,3 +6,4 @@ ignores: - 'sinon' ignore-patterns: - 'dist' + - 'mongo-php-library' diff --git a/packages/mql-typescript/.eslintignore b/packages/mql-typescript/.eslintignore index 85a8a75e..35b733e8 100644 --- a/packages/mql-typescript/.eslintignore +++ b/packages/mql-typescript/.eslintignore @@ -1,2 +1,3 @@ .nyc-output dist +mongo-php-library diff --git a/packages/mql-typescript/bin/runner.js b/packages/mql-typescript/bin/runner.js new file mode 100755 index 00000000..49a4c2e4 --- /dev/null +++ b/packages/mql-typescript/bin/runner.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node +'use strict'; +require('../dist/cli.js'); diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index a1026a0c..02ab9d1e 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -2,9 +2,8 @@ import type * as bson from 'bson'; import { FilterOperators } from 'mongodb'; type Condition = AlternativeType | FilterOperators; -type AlternativeType = T extends ReadonlyArray - ? T | RegExpOrString - : RegExpOrString; +type AlternativeType = + T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; type KeysOfAType = { [k in keyof T]: NonNullable extends Type ? k : never; @@ -169,7 +168,7 @@ export namespace AccumulatorOperators { */ $covariancePop: [ expression1: ResolvesToNumber, - expression2: ResolvesToNumber + expression2: ResolvesToNumber, ]; } @@ -185,7 +184,7 @@ export namespace AccumulatorOperators { */ $covarianceSamp: [ expression1: ResolvesToNumber, - expression2: ResolvesToNumber + expression2: ResolvesToNumber, ]; } @@ -733,7 +732,7 @@ export namespace ExpressionOperators { /** * The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date. */ - ...(ResolvesToNumber | ResolvesToDate)[] + ...(ResolvesToNumber | ResolvesToDate)[], ]; } @@ -765,7 +764,7 @@ export namespace ExpressionOperators { | ResolvesToNumber | ResolvesToString | ResolvesToNull - )[] + )[], ]; } @@ -857,7 +856,7 @@ export namespace ExpressionOperators { * By default $atan returns values as a double. $atan2 can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value. */ y: ResolvesToNumber, - x: ResolvesToNumber + x: ResolvesToNumber, ]; } @@ -1501,7 +1500,7 @@ export namespace ExpressionOperators { * The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument. */ dividend: ResolvesToNumber, - divisor: ResolvesToNumber + divisor: ResolvesToNumber, ]; } @@ -1731,7 +1730,7 @@ export namespace ExpressionOperators { /** * Any valid expression that resolves to an array. */ - array: ResolvesToArray + array: ResolvesToArray, ]; } @@ -1763,7 +1762,7 @@ export namespace ExpressionOperators { * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value. * If unspecified, the ending index position for the search is the end of the string. */ - end?: ResolvesToInt + end?: ResolvesToInt, ]; } @@ -1799,7 +1798,7 @@ export namespace ExpressionOperators { * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value. * If unspecified, the ending index position for the search is the end of the string. */ - end?: ResolvesToInt + end?: ResolvesToInt, ]; } @@ -1835,7 +1834,7 @@ export namespace ExpressionOperators { * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value. * If unspecified, the ending index position for the search is the end of the string. */ - end?: ResolvesToInt + end?: ResolvesToInt, ]; } @@ -2032,7 +2031,7 @@ export namespace ExpressionOperators { /** * Any valid expression as long as it resolves to a positive number greater than 1. */ - base: ResolvesToNumber + base: ResolvesToNumber, ]; } @@ -2199,7 +2198,7 @@ export namespace ExpressionOperators { /** * Any valid expression that resolves to a document. */ - ...ResolvesToObject[] + ...ResolvesToObject[], ]; } @@ -2308,7 +2307,7 @@ export namespace ExpressionOperators { * The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument. */ dividend: ResolvesToNumber, - divisor: ResolvesToNumber + divisor: ResolvesToNumber, ]; } @@ -2348,7 +2347,7 @@ export namespace ExpressionOperators { * The arguments can be any valid expression as long as they resolve to numbers. * Starting in MongoDB 6.1 you can optimize the $multiply operation. To improve performance, group references at the end of the argument list. */ - ...ResolvesToNumber[] + ...ResolvesToNumber[], ]; } @@ -2492,7 +2491,7 @@ export namespace ExpressionOperators { /** * An integer that specifies the increment value. Can be any valid expression that resolves to a non-zero integer. Defaults to 1. */ - step?: ResolvesToInt + step?: ResolvesToInt, ]; } @@ -2688,7 +2687,7 @@ export namespace ExpressionOperators { /** * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. */ - place?: ResolvesToInt + place?: ResolvesToInt, ]; } @@ -2756,7 +2755,7 @@ export namespace ExpressionOperators { /** * The arguments can be any valid expression as long as they each resolve to an array. */ - expression2: ResolvesToArray + expression2: ResolvesToArray, ]; } @@ -2824,7 +2823,7 @@ export namespace ExpressionOperators { */ $setIsSubset: [ expression1: ResolvesToArray, - expression2: ResolvesToArray + expression2: ResolvesToArray, ]; } @@ -2897,7 +2896,7 @@ export namespace ExpressionOperators { * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position. * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified. */ - n: ResolvesToInt + n: ResolvesToInt, ] | [ /** @@ -2917,7 +2916,7 @@ export namespace ExpressionOperators { * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position. * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified. */ - n: ResolvesToInt + n: ResolvesToInt, ]; } @@ -2963,7 +2962,7 @@ export namespace ExpressionOperators { /** * The delimiter to use when splitting the string expression. delimiter can be any valid expression as long as it resolves to a string. */ - delimiter: ResolvesToString + delimiter: ResolvesToString, ]; } @@ -3041,7 +3040,7 @@ export namespace ExpressionOperators { */ $strcasecmp: [ expression1: ResolvesToString, - expression2: ResolvesToString + expression2: ResolvesToString, ]; } @@ -3065,7 +3064,7 @@ export namespace ExpressionOperators { /** * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string. */ - length: ResolvesToInt + length: ResolvesToInt, ]; } @@ -3089,7 +3088,7 @@ export namespace ExpressionOperators { /** * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string. */ - length: ResolvesToInt + length: ResolvesToInt, ]; } @@ -3113,7 +3112,7 @@ export namespace ExpressionOperators { /** * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string. */ - length: ResolvesToInt + length: ResolvesToInt, ]; } @@ -3128,7 +3127,7 @@ export namespace ExpressionOperators { */ $subtract: [ expression1: ResolvesToNumber | ResolvesToDate, - expression2: ResolvesToNumber | ResolvesToDate + expression2: ResolvesToNumber | ResolvesToDate, ]; } @@ -3379,7 +3378,7 @@ export namespace ExpressionOperators { /** * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g. -20 < place < 100. Defaults to 0. */ - place?: ResolvesToInt + place?: ResolvesToInt, ]; } diff --git a/packages/mql-typescript/out/test.ts b/packages/mql-typescript/out/test.ts deleted file mode 100644 index b5a4e65f..00000000 --- a/packages/mql-typescript/out/test.ts +++ /dev/null @@ -1,40 +0,0 @@ -import * as schema from './schema'; -import type * as bson from 'bson'; - -type Doc = { - _id: bson.ObjectId; - name: string; - age: number; - address: string; - phone: string; - email: string; - hobbies: string[]; - createdAt: Date; - updatedAt: Date; -}; - -const pipeline: schema.Pipeline = [ - { - $match: { - $and: [ - { - name: 'John', - }, - { - $gt: { - age: 18, - }, - }, - { - age: 18, - }, - ], - }, - }, - { - $match: { - name: 'John', - age: 18, - }, - }, -]; diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 950a8571..4a4731f8 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -19,8 +19,12 @@ "url": "https://github.com/mongodb-js/devtools-shared.git" }, "files": [ - "dist" + "dist", + "bin" ], + "bin": { + "mql-typescript": "bin/runner.js" + }, "license": "Apache-2.0", "main": "dist/index.js", "exports": { @@ -29,10 +33,6 @@ }, "types": "./dist/index.d.ts", "scripts": { - "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", - "pregenerate-schema": "npm run extract-metaschema", - "generate-schema": "ts-node src/index.ts schema && npm run prettier -- --write out/schema.ts", - "generate-tests": "ts-node src/index.ts tests && npm run prettier -- --write tests/**/*.ts", "bootstrap": "npm run compile", "prepublishOnly": "npm run compile", "compile": "tsc -p tsconfig.json && gen-esm-wrapper . ./dist/.esm-wrapper.mjs", @@ -47,7 +47,12 @@ "test-cov": "nyc -x \"**/*.spec.*\" --reporter=lcov --reporter=text --reporter=html npm run test", "test-watch": "npm run test -- --watch", "test-ci": "npm run test-cov", - "reformat": "npm run prettier -- --write ." + "reformat": "npm run prettier -- --write .", + "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", + "pregenerate-schema": "npm run extract-metaschema", + "generate-schema": "ts-node src/cli.ts schema && npm run prettier -- --write out/schema.ts", + "pregenerate-tests": "npm run extract-metaschema", + "generate-tests": "ts-node src/cli.ts tests && npm run prettier -- --write tests/**/*.ts" }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.10", diff --git a/packages/mql-typescript/src/cli.ts b/packages/mql-typescript/src/cli.ts new file mode 100644 index 00000000..8a5c5330 --- /dev/null +++ b/packages/mql-typescript/src/cli.ts @@ -0,0 +1,33 @@ +import yargs from 'yargs'; +import { SchemaGenerator } from './schemaGenerator'; +import { TestGenerator } from './testGenerator'; + +async function main() { + const argv = await yargs + .command('schema', 'Generates schema from the php driver definitions') + .command( + 'tests', + 'Generates tests from the php driver definitions and the docs examples', + ) + .demandCommand(1, 'A command must be provided') + .help().argv; + + const [command, ...args] = argv._.map(String); + + switch (command) { + case 'schema': + const schemaGenerator = new SchemaGenerator(); + await schemaGenerator.generate(); + break; + case 'tests': + const testGenerator = new TestGenerator(); + await testGenerator.generate(); + break; + default: + throw new Error( + `Unknown command: ${command}. See '${argv.$0} --help' for more information.`, + ); + } +} + +main(); diff --git a/packages/mql-typescript/src/index.ts b/packages/mql-typescript/src/index.ts index 8a94f65f..18046888 100644 --- a/packages/mql-typescript/src/index.ts +++ b/packages/mql-typescript/src/index.ts @@ -1,33 +1,2 @@ -import yargs from 'yargs'; -import { SchemaGenerator } from './schemaGenerator'; -import { TestGenerator } from './testGenerator'; - -async function main() { - const argv = await yargs - .command('schema', 'Generates schema from the php driver definitions') - .command( - 'tests', - 'Generates tests from the php driver definitions and the docs examples' - ) - .demandCommand(1, 'A command must be provided') - .help().argv; - - const [command, ...args] = argv._.map(String); - - switch (command) { - case 'schema': - const schemaGenerator = new SchemaGenerator(); - await schemaGenerator.generate(); - break; - case 'tests': - const testGenerator = new TestGenerator(); - await testGenerator.generate(); - break; - default: - throw new Error( - `Unknown command: ${command}. See '${argv.$0} --help' for more information.` - ); - } -} - -main(); +export { SchemaGenerator } from './schemaGenerator'; +export { TestGenerator } from './testGenerator'; diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts index ab81a206..a28dadfd 100644 --- a/packages/mql-typescript/src/metaschema.ts +++ b/packages/mql-typescript/src/metaschema.ts @@ -32,7 +32,7 @@ export const Operator = z 'resolvesToLong', 'resolvesToDecimal', 'searchOperator', - ]) + ]), ), encode: z.enum(['array', 'object', 'single']), description: z.string(), @@ -116,7 +116,7 @@ export const Operator = z 'searchPath', 'searchScore', 'searchOperator', - ]) + ]), ), description: z.string().optional(), optional: z.boolean().optional(), @@ -129,7 +129,7 @@ export const Operator = z .optional(), mergeObject: z.boolean().default(false), }) - .strict() + .strict(), ) .optional(), tests: z @@ -140,7 +140,7 @@ export const Operator = z link: z.string().url().regex(new RegExp('^https://')).optional(), pipeline: z.array(z.record(z.any())).optional(), }) - .strict() + .strict(), ) .optional(), }) diff --git a/packages/node-webpack-startup-snapshot-checker/package.json b/packages/node-webpack-startup-snapshot-checker/package.json index 17dd8325..3ebc4336 100644 --- a/packages/node-webpack-startup-snapshot-checker/package.json +++ b/packages/node-webpack-startup-snapshot-checker/package.json @@ -65,7 +65,7 @@ "eslint": "^7.25.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/oidc-http-server-pages/package.json b/packages/oidc-http-server-pages/package.json index 86ac76c0..ac63b776 100644 --- a/packages/oidc-http-server-pages/package.json +++ b/packages/oidc-http-server-pages/package.json @@ -64,7 +64,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "react": "^17.0.2", "react-dom": "^17.0.2", "typescript": "^5.0.4" diff --git a/packages/oidc-mock-provider/package.json b/packages/oidc-mock-provider/package.json index c90c2388..a74c8f28 100644 --- a/packages/oidc-mock-provider/package.json +++ b/packages/oidc-mock-provider/package.json @@ -68,7 +68,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/query-parser/package.json b/packages/query-parser/package.json index deaf77e9..a9e8833d 100644 --- a/packages/query-parser/package.json +++ b/packages/query-parser/package.json @@ -66,7 +66,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, diff --git a/packages/saslprep/package.json b/packages/saslprep/package.json index b11e71c1..ab1dccdb 100644 --- a/packages/saslprep/package.json +++ b/packages/saslprep/package.json @@ -79,7 +79,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/sbom-tools/package.json b/packages/sbom-tools/package.json index f923f08c..2f034f09 100644 --- a/packages/sbom-tools/package.json +++ b/packages/sbom-tools/package.json @@ -67,7 +67,7 @@ "mocha": "^8.4.0", "nock": "^13.3.1", "nyc": "^15.1.0", - "prettier": "2.3.2", + "prettier": "^3.5.3", "rimraf": "^5.0.1", "sinon": "^9.2.3", "typescript": "^5.0.4", diff --git a/packages/shell-bson-parser/package.json b/packages/shell-bson-parser/package.json index 2c5937e5..b584fce0 100644 --- a/packages/shell-bson-parser/package.json +++ b/packages/shell-bson-parser/package.json @@ -67,7 +67,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/packages/signing-utils/package.json b/packages/signing-utils/package.json index 6a72e876..e1a33560 100644 --- a/packages/signing-utils/package.json +++ b/packages/signing-utils/package.json @@ -61,7 +61,7 @@ "gen-esm-wrapper": "^1.1.0", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" }, diff --git a/packages/ts-autocomplete/package.json b/packages/ts-autocomplete/package.json index 51c46ef5..3e8d0804 100644 --- a/packages/ts-autocomplete/package.json +++ b/packages/ts-autocomplete/package.json @@ -60,7 +60,7 @@ "gen-esm-wrapper": "^1.1.1", "mocha": "^8.4.0", "nyc": "^15.1.0", - "prettier": "^2.3.2", + "prettier": "^3.5.3", "sinon": "^9.2.3", "typescript": "^5.0.4" } diff --git a/scripts/package.json b/scripts/package.json index 04949d00..9f4da1a3 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -32,7 +32,7 @@ "@mongodb-js/monorepo-tools": "^1.1.16", "depcheck": "^1.4.1", "eslint": "^7.25.0", - "prettier": "2.3.2" + "prettier": "^3.5.3" }, "dependencies": { "pacote": "^11.3.5", From 5a5e2829193cae20c2551793c301121142740d28 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 24 Mar 2025 15:57:50 +0100 Subject: [PATCH 05/26] add recursive sumbodule checkout --- .github/workflows/bump-packages.yaml | 1 + .github/workflows/check-test.yaml | 1 + .github/workflows/codeql.yml | 2 ++ .github/workflows/update-cidrs.yaml | 1 + 4 files changed, 5 insertions(+) diff --git a/.github/workflows/bump-packages.yaml b/.github/workflows/bump-packages.yaml index 918d56e0..16f81e0c 100644 --- a/.github/workflows/bump-packages.yaml +++ b/.github/workflows/bump-packages.yaml @@ -24,6 +24,7 @@ jobs: # don't checkout a detatched HEAD ref: ${{ github.head_ref }} token: ${{ steps.app-token.outputs.token }} + submodules: recursive # this is important so git log can pick up on # the whole history to generate the list of AUTHORS diff --git a/.github/workflows/check-test.yaml b/.github/workflows/check-test.yaml index 46bc00f3..b6e65417 100644 --- a/.github/workflows/check-test.yaml +++ b/.github/workflows/check-test.yaml @@ -56,6 +56,7 @@ jobs: uses: actions/checkout@v4 with: fetch-depth: 0 + submodules: recursive - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6e4e0f42..07082cb1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -30,6 +30,8 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 + with: + submodules: recursive - name: Initialize CodeQL uses: github/codeql-action/init@v3 diff --git a/.github/workflows/update-cidrs.yaml b/.github/workflows/update-cidrs.yaml index 360fba49..b7924d49 100644 --- a/.github/workflows/update-cidrs.yaml +++ b/.github/workflows/update-cidrs.yaml @@ -25,6 +25,7 @@ jobs: # don't checkout a detatched HEAD ref: ${{ github.head_ref }} token: ${{ steps.app-token.outputs.token }} + submodules: recursive - uses: actions/setup-node@v4 with: From 97c254d3a5802307474b2b7321ab278205a41b8a Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 27 Mar 2025 11:51:26 +0200 Subject: [PATCH 06/26] Use recursive checkout in publish-packages --- .github/workflows/publish-packages.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/publish-packages.yaml b/.github/workflows/publish-packages.yaml index 19f44cc4..4ec48081 100644 --- a/.github/workflows/publish-packages.yaml +++ b/.github/workflows/publish-packages.yaml @@ -32,6 +32,7 @@ jobs: # don't checkout a detatched HEAD ref: ${{ github.head_ref }} token: ${{ steps.app-token.outputs.token }} + submodules: recursive # this is important so git log has the whole history fetch-depth: "0" From 71ef75c6445e91d0a3f7cb355d5bd2e6b6e1630e Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 27 Mar 2025 12:10:14 +0200 Subject: [PATCH 07/26] lower typescript version --- package-lock.json | 249 ++++++++++++++------------- packages/mql-typescript/package.json | 2 +- 2 files changed, 129 insertions(+), 122 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab5a9c96..9d62e90f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2424,9 +2424,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", - "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2504,9 +2504,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", - "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true, "license": "MIT", "engines": { @@ -2823,12 +2823,13 @@ } }, "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "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" @@ -4086,10 +4087,11 @@ } }, "node_modules/@leafygreen-ui/icon": { - "version": "11.28.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-11.28.0.tgz", - "integrity": "sha512-4MEUSowuU8WjWwIwn7+nufAEXo8T2623TuNHXRC3RdWgW7rWknn6eZXva6IUSvM4I1H+a1rmIPtWc7qRafjYCQ==", + "version": "11.29.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-11.29.1.tgz", + "integrity": "sha512-bCfeJ3mndU5wHayMWfkVWo0NXhPpBpHIG53aox/eRterqLvWg6jWyiuF930MHbyWDNEXC9Qw1WD637kZ93mmog==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@leafygreen-ui/emotion": "^4.0.7", "lodash": "^4.17.21" @@ -4653,10 +4655,11 @@ } }, "node_modules/@leafygreen-ui/leafygreen-provider/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -5189,10 +5192,11 @@ } }, "node_modules/@leafygreen-ui/radio-box-group/node_modules/@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@storybook/csf": "^0.1.0", "lodash": "^4.17.21", @@ -8228,10 +8232,11 @@ } }, "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", - "dev": true + "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/@sindresorhus/is": { "version": "4.6.0", @@ -8585,9 +8590,9 @@ } }, "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" }, @@ -8918,9 +8923,9 @@ } }, "node_modules/@types/ssh2/node_modules/@types/node": { - "version": "18.19.80", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz", - "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==", + "version": "18.19.84", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", + "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -13070,9 +13075,9 @@ "license": "ISC" }, "node_modules/electron/node_modules/@types/node": { - "version": "20.17.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.24.tgz", - "integrity": "sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==", + "version": "20.17.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.28.tgz", + "integrity": "sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -20635,9 +20640,10 @@ } }, "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -23701,12 +23707,13 @@ } }, "node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "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" }, @@ -28503,9 +28510,9 @@ } }, "packages/devtools-proxy-support/node_modules/lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", "license": "ISC", "engines": { "node": "20 || >=22" @@ -29384,13 +29391,13 @@ "prettier": "^3.5.3", "sinon": "^19.0.2", "ts-node": "^10.9.2", - "typescript": "^5.8.2" + "typescript": "^5.0.4" } }, "packages/mql-typescript/node_modules/@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -29454,9 +29461,9 @@ } }, "packages/mql-typescript/node_modules/@types/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-FWnQYdrG9FAC8KgPVhDFfrPL1FBsL3NtIt2WsxKvwu/61K6HiuDF3xAb7c7w/k9ML2QOUHcwTgU7dKLFPK6sBg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==", "dev": true, "license": "MIT", "dependencies": { @@ -29471,9 +29478,9 @@ "license": "MIT" }, "packages/mql-typescript/node_modules/@types/node": { - "version": "22.13.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", - "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", "dev": true, "license": "MIT", "dependencies": { @@ -29640,19 +29647,19 @@ } }, "packages/mql-typescript/node_modules/eslint": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", - "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.1.0", + "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.22.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -30324,9 +30331,9 @@ } }, "packages/mql-typescript/node_modules/sinon": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.4.tgz", - "integrity": "sha512-myidFob7fjmYHJb+CHNLtAYScxn3sngGq4t75L2rCGGpE/k4OQVkN3KE5FsN+XkO2+fcDZ65PGvq3KHrlLAm7g==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", + "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -32862,9 +32869,9 @@ } }, "@eslint/config-helpers": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", - "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.0.tgz", + "integrity": "sha512-yJLLmLexii32mGrhW29qvU3QBVTu0GUmEf/J4XsBtVhp4JkIUFN/BjWqTF63yRvGApIDpZm5fa97LtYtINmfeQ==", "dev": true }, "@eslint/core": { @@ -32917,9 +32924,9 @@ } }, "@eslint/js": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", - "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", + "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", "dev": true }, "@eslint/object-schema": { @@ -33131,12 +33138,12 @@ "dev": true }, "@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "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, "requires": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" } }, "@jridgewell/gen-mapping": { @@ -34229,9 +34236,9 @@ } }, "@leafygreen-ui/icon": { - "version": "11.28.0", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-11.28.0.tgz", - "integrity": "sha512-4MEUSowuU8WjWwIwn7+nufAEXo8T2623TuNHXRC3RdWgW7rWknn6eZXva6IUSvM4I1H+a1rmIPtWc7qRafjYCQ==", + "version": "11.29.1", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/icon/-/icon-11.29.1.tgz", + "integrity": "sha512-bCfeJ3mndU5wHayMWfkVWo0NXhPpBpHIG53aox/eRterqLvWg6jWyiuF930MHbyWDNEXC9Qw1WD637kZ93mmog==", "dev": true, "requires": { "@leafygreen-ui/emotion": "^4.0.7", @@ -34721,9 +34728,9 @@ } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -35194,9 +35201,9 @@ } }, "@leafygreen-ui/lib": { - "version": "13.2.1", - "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.2.1.tgz", - "integrity": "sha512-b9EwTr65RU05rAh/dF8SHZ6yV6jPvPx6tu0IlXB/upk7Mdswjad83CI1ceF2pDlo8GPhCKlwFvPZlQCR1jqBXA==", + "version": "13.8.2", + "resolved": "https://registry.npmjs.org/@leafygreen-ui/lib/-/lib-13.8.2.tgz", + "integrity": "sha512-UxtZauF0rsB2dT0dsFYadcs9qa22Wk3PJaSXOCoI8BRPxyV8H4H6B+FQuFjCeLpKWFYOGLee9di3Xsqd4ewa8Q==", "dev": true, "requires": { "@storybook/csf": "^0.1.0", @@ -37003,9 +37010,9 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" }, "lru-cache": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.0.2.tgz", - "integrity": "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==" + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==" }, "node-fetch": { "version": "3.3.2", @@ -37420,15 +37427,15 @@ "prettier": "^3.5.3", "sinon": "^19.0.2", "ts-node": "^10.9.2", - "typescript": "^5.8.2", + "typescript": "^5.0.4", "yargs": "^17.7.2", "zod": "^3.24.2" }, "dependencies": { "@eslint/eslintrc": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", - "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -37480,9 +37487,9 @@ } }, "@types/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-FWnQYdrG9FAC8KgPVhDFfrPL1FBsL3NtIt2WsxKvwu/61K6HiuDF3xAb7c7w/k9ML2QOUHcwTgU7dKLFPK6sBg==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz", + "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==", "dev": true, "requires": { "@types/deep-eql": "*" @@ -37495,9 +37502,9 @@ "dev": true }, "@types/node": { - "version": "22.13.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", - "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "version": "22.13.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.14.tgz", + "integrity": "sha512-Zs/Ollc1SJ8nKUAgc7ivOEdIBM8JAKgrqqUYi2J997JuKO7/tpQC+WCetQ1sypiKCQWHdvdg9wBNpUPEWZae7w==", "dev": true, "requires": { "undici-types": "~6.20.0" @@ -37614,18 +37621,18 @@ "dev": true }, "eslint": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", - "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", + "version": "9.23.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", + "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.1.0", + "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.0", - "@eslint/js": "9.22.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.23.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -38094,9 +38101,9 @@ } }, "sinon": { - "version": "19.0.4", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.4.tgz", - "integrity": "sha512-myidFob7fjmYHJb+CHNLtAYScxn3sngGq4t75L2rCGGpE/k4OQVkN3KE5FsN+XkO2+fcDZ65PGvq3KHrlLAm7g==", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", + "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", "dev": true, "requires": { "@sinonjs/commons": "^3.0.1", @@ -39316,9 +39323,9 @@ } }, "@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "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 }, "@sindresorhus/is": { @@ -39619,9 +39626,9 @@ } }, "@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 }, "@types/facepaint": { @@ -39944,9 +39951,9 @@ }, "dependencies": { "@types/node": { - "version": "18.19.80", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz", - "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==", + "version": "18.19.84", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.84.tgz", + "integrity": "sha512-ACYy2HGcZPHxEeWTqowTF7dhXN+JU1o7Gr4b41klnn6pj2LD6rsiGqSZojMdk1Jh2ys3m76ap+ae1vvE4+5+vg==", "requires": { "undici-types": "~5.26.4" } @@ -43012,9 +43019,9 @@ }, "dependencies": { "@types/node": { - "version": "20.17.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.24.tgz", - "integrity": "sha512-d7fGCyB96w9BnWQrOsJtpyiSaBcAYYr75bnK6ZRjDbql2cGLj/3GsL5OYmLPNq76l7Gf2q4Rv9J2o6h5CrD9sA==", + "version": "20.17.28", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.28.tgz", + "integrity": "sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ==", "dev": true, "requires": { "undici-types": "~6.19.2" @@ -48630,9 +48637,9 @@ } }, "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "requires": { "yallist": "^4.0.0" } @@ -51122,12 +51129,12 @@ "dev": true }, "pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "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, "requires": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 4a4731f8..aad2ce44 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -76,7 +76,7 @@ "prettier": "^3.5.3", "sinon": "^19.0.2", "ts-node": "^10.9.2", - "typescript": "^5.8.2" + "typescript": "^5.0.4" }, "dependencies": { "bson": "^6.10.3", From 798d30b4f8077059738f2542d41fda8eb21cfa80 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Tue, 22 Apr 2025 15:51:45 +0200 Subject: [PATCH 08/26] generate schema for the driver definitions --- package-lock.json | 768 ++---------------- packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema.ts | 2 +- packages/mql-typescript/package.json | 34 +- packages/mql-typescript/src/cli.ts | 30 +- packages/mql-typescript/src/docsCrawler.ts | 301 +++++++ .../src/driverSchemaGenerator.ts | 78 ++ packages/mql-typescript/src/generator.ts | 9 +- packages/mql-typescript/src/metaschema.ts | 56 ++ .../mql-typescript/src/schemaGenerator.ts | 24 +- packages/mql-typescript/src/testGenerator.ts | 147 ++-- .../tests/accumulator/$accumulator.spec.ts | 16 +- .../tests/accumulator/$addToSet.spec.ts | 44 +- .../tests/accumulator/$avg.spec.ts | 42 +- .../tests/accumulator/$bottom.spec.ts | 14 +- 15 files changed, 739 insertions(+), 828 deletions(-) create mode 100644 packages/mql-typescript/src/docsCrawler.ts create mode 100644 packages/mql-typescript/src/driverSchemaGenerator.ts diff --git a/package-lock.json b/package-lock.json index f43857d5..8da7bf5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2408,44 +2408,6 @@ "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", - "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -2503,96 +2465,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/js": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -2607,40 +2484,12 @@ "node": ">=10.10.0" } }, - "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" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "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 }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@hutson/parse-repository-url": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", @@ -8551,10 +8400,11 @@ } }, "node_modules/@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", - "dev": true + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/cross-spawn": { "version": "6.0.6", @@ -8905,10 +8755,11 @@ } }, "node_modules/@types/sinon-chai": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", - "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*", "@types/sinon": "*" @@ -29469,9 +29320,9 @@ "dependencies": { "bson": "^6.10.3", "js-yaml": "^4.1.0", - "jsdom": "^26.0.0", + "jsdom": "^24.1.3", "json5": "^2.2.3", - "mongodb": "^6.15.0", + "mongodb": "^6.9.0", "mongodb-schema": "^12.5.2", "yargs": "^17.7.2", "zod": "^3.24.2" @@ -29480,78 +29331,30 @@ "mql-typescript": "bin/runner.js" }, "devDependencies": { - "@mongodb-js/eslint-config-devtools": "0.9.10", - "@mongodb-js/mocha-config-devtools": "^1.0.4", - "@mongodb-js/prettier-config-devtools": "^1.0.1", - "@mongodb-js/tsconfig-devtools": "^1.0.2", - "@types/chai": "^5.2.0", + "@mongodb-js/eslint-config-devtools": "0.9.11", + "@mongodb-js/mocha-config-devtools": "^1.0.5", + "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.0.3", + "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/mocha": "^10.0.10", - "@types/node": "^22.13.10", - "@types/sinon-chai": "^4.0.0", - "chai": "^5.2.0", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.35", + "@types/sinon-chai": "^3.2.5", + "chai": "^4.5.0", "depcheck": "^1.4.7", - "eslint": "^9.22.0", + "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", - "mocha": "^11.1.0", - "nyc": "^17.1.0", + "mocha": "^8.4.0", + "nyc": "^15.1.0", "prettier": "^3.5.3", - "sinon": "^19.0.2", + "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" } }, - "packages/mql-typescript/node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/mql-typescript/node_modules/@mongodb-js/eslint-config-devtools": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/@mongodb-js/eslint-config-devtools/-/eslint-config-devtools-0.9.10.tgz", - "integrity": "sha512-yb0m52fgsI+gWPiceDdZJ0kiWpP+ITYXx66QhrnBAlbeKv4ID0bI8A2duzdB41bO9Clipy/Y2SYNL5B3dWS1Dw==", - "dev": true, - "license": "SSPL", - "dependencies": { - "@babel/core": "^7.22.8", - "@babel/eslint-parser": "^7.22.7", - "@babel/preset-env": "^7.22.7", - "@babel/preset-react": "^7.22.5", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-filename-rules": "^1.2.0", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-mocha": "^8.0.0", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-react-hooks": "^4.2.0" - }, - "peerDependencies": { - "eslint": "^7.25.0" - } - }, "packages/mql-typescript/node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -29632,19 +29435,6 @@ "@types/sinon": "*" } }, - "packages/mql-typescript/node_modules/acorn": { - "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" - }, - "engines": { - "node": ">=0.4.0" - } - }, "packages/mql-typescript/node_modules/ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -29743,19 +29533,6 @@ "fsevents": "~2.3.2" } }, - "packages/mql-typescript/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==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "packages/mql-typescript/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -29790,152 +29567,6 @@ "node": ">=0.3.1" } }, - "packages/mql-typescript/node_modules/eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", - "@eslint/plugin-kit": "^0.2.7", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "packages/mql-typescript/node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/mql-typescript/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/mql-typescript/node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "packages/mql-typescript/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" - } - }, - "packages/mql-typescript/node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "packages/mql-typescript/node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, "packages/mql-typescript/node_modules/foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -29981,32 +29612,6 @@ "node": ">= 6" } }, - "packages/mql-typescript/node_modules/glob-parent": { - "version": "6.0.2", - "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" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "packages/mql-typescript/node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/mql-typescript/node_modules/istanbul-lib-instrument": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", @@ -33058,32 +32663,6 @@ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" }, - "@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", - "dev": true, - "requires": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - } - }, - "@eslint/config-helpers": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", - "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", - "dev": true - }, - "@eslint/core": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", - "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.15" - } - }, "@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -33124,68 +32703,11 @@ } } }, - "@eslint/js": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", - "dev": true - }, - "@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true - }, - "@eslint/plugin-kit": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", - "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", - "dev": true, - "requires": { - "@eslint/core": "^0.13.0", - "levn": "^0.4.1" - }, - "dependencies": { - "@eslint/core": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", - "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.15" - } - } - } - }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==" }, - "@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true - }, - "@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "requires": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "dependencies": { - "@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true - } - } - }, "@humanwhocodes/config-array": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", @@ -33197,24 +32719,12 @@ "minimatch": "^3.0.4" } }, - "@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 - }, "@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 }, - "@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true - }, "@hutson/parse-repository-url": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", @@ -37640,75 +37150,38 @@ "@mongodb-js/mql-typescript": { "version": "file:packages/mql-typescript", "requires": { - "@mongodb-js/eslint-config-devtools": "0.9.10", - "@mongodb-js/mocha-config-devtools": "^1.0.4", - "@mongodb-js/prettier-config-devtools": "^1.0.1", - "@mongodb-js/tsconfig-devtools": "^1.0.2", - "@types/chai": "^5.2.0", + "@mongodb-js/eslint-config-devtools": "0.9.11", + "@mongodb-js/mocha-config-devtools": "^1.0.5", + "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.0.3", + "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/mocha": "^10.0.10", - "@types/node": "^22.13.10", - "@types/sinon-chai": "^4.0.0", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.35", + "@types/sinon-chai": "^3.2.5", "bson": "^6.10.3", - "chai": "^5.2.0", + "chai": "^4.5.0", "depcheck": "^1.4.7", - "eslint": "^9.22.0", + "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", "js-yaml": "^4.1.0", - "jsdom": "^26.0.0", + "jsdom": "^24.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", "json5": "^2.2.3", - "mocha": "^11.1.0", - "mongodb": "^6.15.0", + "mocha": "^8.4.0", + "mongodb": "^6.9.0", "mongodb-schema": "^12.5.2", - "nyc": "^17.1.0", + "nyc": "^15.1.0", "prettier": "^3.5.3", - "sinon": "^19.0.2", + "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4", "yargs": "^17.7.2", "zod": "^3.24.2" }, "dependencies": { - "@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - } - }, - "@mongodb-js/eslint-config-devtools": { - "version": "0.9.10", - "resolved": "https://registry.npmjs.org/@mongodb-js/eslint-config-devtools/-/eslint-config-devtools-0.9.10.tgz", - "integrity": "sha512-yb0m52fgsI+gWPiceDdZJ0kiWpP+ITYXx66QhrnBAlbeKv4ID0bI8A2duzdB41bO9Clipy/Y2SYNL5B3dWS1Dw==", - "dev": true, - "requires": { - "@babel/core": "^7.22.8", - "@babel/eslint-parser": "^7.22.7", - "@babel/preset-env": "^7.22.7", - "@babel/preset-react": "^7.22.5", - "@typescript-eslint/eslint-plugin": "^5.59.0", - "@typescript-eslint/parser": "^5.59.0", - "eslint-config-prettier": "^8.3.0", - "eslint-plugin-filename-rules": "^1.2.0", - "eslint-plugin-jsx-a11y": "^6.4.1", - "eslint-plugin-mocha": "^8.0.0", - "eslint-plugin-react": "^7.24.0", - "eslint-plugin-react-hooks": "^4.2.0" - } - }, "@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -37756,14 +37229,12 @@ } }, "@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "version": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", "dev": true }, "@types/node": { - "version": "22.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "version": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", "dev": true, "requires": { @@ -37771,8 +37242,7 @@ } }, "@types/sinon-chai": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-4.0.0.tgz", + "version": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-4.0.0.tgz", "integrity": "sha512-Uar+qk3TmeFsUWCwtqRNqNUE7vf34+MCJiQJR5M2rd4nCbhtE8RgTiHwN/mVwbfCjhmO6DiOel/MgzHkRMJJFg==", "dev": true, "requires": { @@ -37780,12 +37250,6 @@ "@types/sinon": "*" } }, - "acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "dev": true - }, "ansi-colors": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", @@ -37819,8 +37283,7 @@ "dev": true }, "chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "version": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "requires": { @@ -37851,17 +37314,6 @@ "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } } }, "cliui": { @@ -37886,101 +37338,6 @@ "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true }, - "eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", - "@eslint/config-helpers": "^0.2.0", - "@eslint/core": "^0.12.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", - "@eslint/plugin-kit": "^0.2.7", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - } - }, - "eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true - }, - "espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", - "dev": true, - "requires": { - "acorn": "^8.14.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "requires": { - "flat-cache": "^4.0.0" - } - }, - "flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - } - }, "foreground-child": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", @@ -38010,21 +37367,6 @@ "mime-types": "^2.1.12" } }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true - }, "istanbul-lib-instrument": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", @@ -38047,8 +37389,7 @@ } }, "jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", + "version": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", "requires": { "cssstyle": "^4.2.1", @@ -38112,8 +37453,7 @@ "dev": true }, "mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", + "version": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", "dev": true, "requires": { @@ -38198,8 +37538,7 @@ } }, "nyc": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "version": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", "dev": true, "requires": { @@ -38376,8 +37715,7 @@ } }, "sinon": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", + "version": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", "dev": true, "requires": { @@ -39878,9 +39216,9 @@ } }, "@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", "dev": true }, "@types/cross-spawn": { @@ -40222,9 +39560,9 @@ } }, "@types/sinon-chai": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", - "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", + "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", "dev": true, "requires": { "@types/chai": "*", diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 39224b6f..56a801b2 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 39224b6fa3bf421cb20060b2c5235762671c3d57 +Subproject commit 56a801b2570876050f63058eface5b8cd645bca8 diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 02ab9d1e..4c958036 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -1,5 +1,5 @@ import type * as bson from 'bson'; -import { FilterOperators } from 'mongodb'; +import type { FilterOperators } from 'mongodb'; type Condition = AlternativeType | FilterOperators; type AlternativeType = diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index aad2ce44..e694583e 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -52,38 +52,40 @@ "pregenerate-schema": "npm run extract-metaschema", "generate-schema": "ts-node src/cli.ts schema && npm run prettier -- --write out/schema.ts", "pregenerate-tests": "npm run extract-metaschema", - "generate-tests": "ts-node src/cli.ts tests && npm run prettier -- --write tests/**/*.ts" + "generate-tests": "ts-node src/cli.ts tests && npm run prettier -- --write tests/**/*.ts", + "pregenerate-driver-schema": "npm run extract-metaschema", + "generate-driver-schema": "ts-node src/cli.ts driver-schema" }, "devDependencies": { - "@mongodb-js/eslint-config-devtools": "0.9.10", - "@mongodb-js/mocha-config-devtools": "^1.0.4", - "@mongodb-js/prettier-config-devtools": "^1.0.1", - "@mongodb-js/tsconfig-devtools": "^1.0.2", - "@types/chai": "^5.2.0", + "@mongodb-js/eslint-config-devtools": "0.9.11", + "@mongodb-js/mocha-config-devtools": "^1.0.5", + "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.0.3", + "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/mocha": "^10.0.10", - "@types/node": "^22.13.10", - "@types/sinon-chai": "^4.0.0", - "chai": "^5.2.0", + "@types/mocha": "^9.1.1", + "@types/node": "^17.0.35", + "@types/sinon-chai": "^3.2.5", + "chai": "^4.5.0", "depcheck": "^1.4.7", - "eslint": "^9.22.0", + "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", - "mocha": "^11.1.0", - "nyc": "^17.1.0", + "mocha": "^8.4.0", + "nyc": "^15.1.0", "prettier": "^3.5.3", - "sinon": "^19.0.2", + "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" }, "dependencies": { "bson": "^6.10.3", "js-yaml": "^4.1.0", - "jsdom": "^26.0.0", + "jsdom": "^24.1.3", "json5": "^2.2.3", - "mongodb": "^6.15.0", + "mongodb": "^6.9.0", "mongodb-schema": "^12.5.2", "yargs": "^17.7.2", "zod": "^3.24.2" diff --git a/packages/mql-typescript/src/cli.ts b/packages/mql-typescript/src/cli.ts index 8a5c5330..9e50062e 100644 --- a/packages/mql-typescript/src/cli.ts +++ b/packages/mql-typescript/src/cli.ts @@ -1,6 +1,7 @@ import yargs from 'yargs'; import { SchemaGenerator } from './schemaGenerator'; import { TestGenerator } from './testGenerator'; +import { DriverSchemaGenerator } from './driverSchemaGenerator'; async function main() { const argv = await yargs @@ -9,19 +10,33 @@ async function main() { 'tests', 'Generates tests from the php driver definitions and the docs examples', ) + .command( + 'driver-schema', + 'Updates the php driver definitions with the schema for the tests', + ) .demandCommand(1, 'A command must be provided') .help().argv; - const [command, ...args] = argv._.map(String); + const [command] = argv._.map(String); switch (command) { case 'schema': - const schemaGenerator = new SchemaGenerator(); - await schemaGenerator.generate(); + { + const schemaGenerator = new SchemaGenerator(); + await schemaGenerator.generate(); + } break; case 'tests': - const testGenerator = new TestGenerator(); - await testGenerator.generate(); + { + const testGenerator = new TestGenerator(); + await testGenerator.generate(); + } + break; + case 'driver-schema': + { + const driverSchemaGenerator = new DriverSchemaGenerator(); + await driverSchemaGenerator.generate(); + } break; default: throw new Error( @@ -30,4 +45,7 @@ async function main() { } } -main(); +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/packages/mql-typescript/src/docsCrawler.ts b/packages/mql-typescript/src/docsCrawler.ts new file mode 100644 index 00000000..cddb97e8 --- /dev/null +++ b/packages/mql-typescript/src/docsCrawler.ts @@ -0,0 +1,301 @@ +import JSON5 from 'json5'; +import { removeNewlines } from './utils'; +import { getSimplifiedSchema } from 'mongodb-schema'; +import type { SimplifiedSchema } from 'mongodb-schema'; +import { JSDOM, VirtualConsole } from 'jsdom'; +import { createHash } from 'crypto'; +import { BSON } from 'bson'; + +abstract class CustomTypeProcessor { + public abstract process(json: string): string; + + public abstract canRevive(value: any): boolean; + + public abstract revive(value: any): any; +} + +abstract class RegexCustomTypeProcessor extends CustomTypeProcessor { + private regex: RegExp; + private replacementPrefix: string; + protected abstract reviveCore(value: string): any; + + protected constructor(regex: string) { + super(); + this.regex = new RegExp(regex, 'g'); + this.replacementPrefix = + '!rctp-' + createHash('sha256').update(regex).digest('base64'); + } + + public process(json: string): string { + return json.replace(this.regex, `"${this.replacementPrefix}$1"`); + } + + public canRevive(value: any): boolean { + return ( + typeof value === 'string' && value.startsWith(this.replacementPrefix) + ); + } + + public revive(value: string): any { + return this.reviveCore(value.replace(this.replacementPrefix, '')); + } +} + +class IsoDateProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bISODate\\(\\s*"([^"]*)"\\s*\\)'); + } + + public reviveCore(value: string): Date | undefined { + const isoDateRegex = + /^(?\d{4})-?(?\d{2})-?(?\d{2})([T ](?\d{2})(:?(?\d{2})(:?((?\d{2})(\.(?\d+))?))?)?(?Z|([+-])(\d{2}):?(\d{2})?)?)?$/; + const match = isoDateRegex.exec(value); + if (match !== null && match.groups !== undefined) { + // Normalize the representation because ISO-8601 accepts e.g. + // '20201002T102950Z' without : and -, but `new Date()` does not. + const { Y, M, D, h, m, s, ms, tz } = match.groups; + const normalized = `${Y}-${M}-${D}T${h || '00'}:${m || '00'}:${ + s || '00' + }.${ms || '000'}${tz || 'Z'}`; + const date = new Date(normalized); + // Make sur we're in the range 0000-01-01T00:00:00.000Z - 9999-12-31T23:59:59.999Z + if ( + date.getTime() >= -62167219200000 && + date.getTime() <= 253402300799999 + ) { + return date; + } + } + + return new Date(value); + } +} + +class DateProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\b(?:new )?Date\\(\\s*"([^"]*)"\\s*\\)'); + } + + public reviveCore(value: string): Date { + return new Date(value); + } +} + +class ObjectIdProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bObjectId\\(\\s*"([^"]*)"\\s*\\)'); + } + + public reviveCore(value: string): any { + return new BSON.ObjectId(value); + } +} + +class NumberDecimalProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\b(?:NumberDecimal|Decimal128)\\(\\s*"([^"]*)"\\s*\\)'); + } + + public reviveCore(value: string): any { + return new BSON.Decimal128(value); + } +} + +class UndefinedProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bundefined\\b'); + } + + public reviveCore(_: string): any { + return undefined; + } +} + +class NullProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bnull\\b'); + } + + public reviveCore(_: string): any { + return null; + } +} + +class BinDataProcessor extends CustomTypeProcessor { + private regex = /\b(?:new )?BinData\(\s*(\d*), "([^")]*)"\s*\)/g; + private replacementPrefix = + '!bdp-' + createHash('sha256').update(this.regex.source).digest('base64'); + + public process(json: string): string { + return json.replace(this.regex, `"${this.replacementPrefix}$1-$2"`); + } + + public canRevive(value: any): boolean { + return ( + typeof value === 'string' && value.startsWith(this.replacementPrefix) + ); + } + + public revive(value: string): any { + const match = /(?\d)-(?.*)/.exec( + value.replace(this.replacementPrefix, ''), + ); + + if (match && match.groups) { + const { subType, base64 } = match.groups; + return BSON.Binary.createFromBase64(base64, parseInt(subType, 10)); + } + + throw new Error(`Invalid BinData format: ${value}`); + } +} + +class NumberIntProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bNumberInt\\(\\s*(\\d*)\\s*\\)'); + } + + public reviveCore(value: string): any { + return new BSON.Int32(value); + } +} + +export class DocsCrawler { + constructor(private readonly url: string) { + this.virtualConsole = new VirtualConsole(); + this.virtualConsole.on('jsdomError', () => { + // Silence jsdom errors + }); + } + + private virtualConsole: VirtualConsole; + + private fuzzyParse(json: string): any[] | undefined { + try { + return JSON5.parse(json) as any[]; + } catch { + // Ignore parse errors + } + + // Sometimes the snippet will end with ellipsis instead of json + json = json.replace(/\.\.\.$/g, ''); + + if (!json.startsWith('[')) { + json = `[${json}`; + } + + if (!json.endsWith(']')) { + json = `${json}]`; + } + + // Insert commas between array elements + json = json.replace(/\}\{/g, '},{'); + + const processors: CustomTypeProcessor[] = [ + new IsoDateProcessor(), + new DateProcessor(), + new ObjectIdProcessor(), + new NumberDecimalProcessor(), + new UndefinedProcessor(), + new NullProcessor(), + new BinDataProcessor(), + new NumberIntProcessor(), + ]; + + for (const processor of processors) { + json = processor.process(json); + } + + try { + // The docs use quoted/unquoted shell syntax inconsistently, so use JSON5 instead of regular JSON + // to parse the documents. + return JSON5.parse(json, (key, value) => { + for (const processor of processors) { + if (processor.canRevive(value)) { + return processor.revive(value); + } + } + + return value; + }) as any[]; + } catch (e) { + const message = e instanceof Error ? e.message : String(e); + console.error('Failed to parse JSON', json, message); + return undefined; + } + } + + private getInsertionCode( + element: Element | null | undefined, + ): { collectionName: string; documents: unknown[] } | undefined { + const codeSnippetJson = element?.querySelector('script')?.innerHTML; + + if (codeSnippetJson !== undefined) { + let codeSnippet = removeNewlines( + JSON.parse(codeSnippetJson).text as string, + ); + let collectionName: string | undefined = undefined; + + const insertionCode = + /db\.(?[^.]*)\.(insertMany|insertOne)\(\s*(?(?:\[|{).*(?:]|}))\s*\)/gm.exec( + codeSnippet, + ); + + if (insertionCode && insertionCode.groups) { + collectionName = insertionCode.groups.collectionName; + codeSnippet = insertionCode.groups.documents; + } + + const documents = this.fuzzyParse(codeSnippet); + if (documents) { + collectionName ??= + Array.from(element?.querySelectorAll('p') || []) + .find((p) => p.textContent?.trim().startsWith('Consider a')) + ?.querySelector('code')?.innerHTML ?? 'TestCollection'; + + return { + collectionName, + documents, + }; + } + } + + // Sometimes insertion code for the collection will be in the parent examples section. We fallback to it if we can't find it in the current section. + while (element) { + element = element?.parentElement?.closest('section'); + const examples = element?.querySelector("a[href='#examples']"); + if (examples) { + return this.getInsertionCode(element); + } + } + + return undefined; + } + + public async getSchema(): Promise< + { schema: SimplifiedSchema; collectionName: string } | undefined + > { + const fragment = new URL(this.url).hash; + if (!fragment) { + return; + } + + const dom = await JSDOM.fromURL(this.url, { + virtualConsole: this.virtualConsole, + }); + const exampleSection = dom.window.document + .querySelector(`a[href='${fragment}']:not([target])`) + ?.closest('section'); + + const insertionCode = this.getInsertionCode(exampleSection); + + if (!insertionCode) { + return; + } + + return { + schema: await getSimplifiedSchema(insertionCode.documents), + collectionName: insertionCode.collectionName, + }; + } +} diff --git a/packages/mql-typescript/src/driverSchemaGenerator.ts b/packages/mql-typescript/src/driverSchemaGenerator.ts new file mode 100644 index 00000000..444b355e --- /dev/null +++ b/packages/mql-typescript/src/driverSchemaGenerator.ts @@ -0,0 +1,78 @@ +import { GeneratorBase, YamlFiles } from './generator'; +import { Operator } from './metaschema'; +import * as yaml from 'js-yaml'; +import * as fs from 'fs/promises'; +import { DocsCrawler } from './docsCrawler'; + +type TestType = NonNullable[number]; + +export class DriverSchemaGenerator extends GeneratorBase { + private async getYamlSchema(test: TestType): Promise { + if (!test.link) { + console.error(`No docs reference found for ${test.name}`); + return '// TODO: No docs reference found'; + } + if (!test.pipeline) { + console.error(`No pipeline found for ${test.name} at ${test.link}`); + return '// TODO: No pipeline found'; + } + + const docsCrawler = new DocsCrawler(test.link); + const schema = await docsCrawler.getSchema(); + if (!schema) { + console.error( + `Could not extract schema for ${test.name} at ${test.link}`, + ); + return '// TODO: No schema found in docs'; + } + + return { + [schema.collectionName]: schema.schema, + }; + } + + private async updateTestSchema(test: TestType, rawYaml: any): Promise { + const yamlTest = rawYaml.tests.find( + (t: { name: string }) => t.name === test.name, + ); + + yamlTest.schema = await this.getYamlSchema(test); + } + + override async generateImpl(yamlFiles: YamlFiles): Promise { + const problematicTests = [ + // 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/#example', + '', + ]; + + for await (const file of yamlFiles) { + for await (const operator of file.operators()) { + const parsed = Operator.parse(operator.yaml); + + const operatorYaml = operator.yaml as any; + if (typeof operatorYaml !== 'object' || operatorYaml === null) { + throw new Error( + `Unexpected yaml format for ${operator.path}: ${operatorYaml}`, + ); + } + + for (const test of parsed.tests ?? []) { + // if (!test.link || !problematicTests.includes(test.link)) { + // continue; + // } + await this.updateTestSchema(test, operatorYaml); + } + + let updatedYaml = yaml.dump(operatorYaml, { + schema: GeneratorBase.loadOptions.schema, + indent: 4, + lineWidth: -1, + }); + + updatedYaml = `# $schema: ../schema.json\n${updatedYaml}`; + + await fs.writeFile(operator.path, updatedYaml, 'utf8'); + } + } + } +} diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index caf2cf03..92846598 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -11,7 +11,7 @@ export abstract class GeneratorBase { private outputBuffer: StringWriter | undefined; private outputStream?: NodeJS.WritableStream; - private static loadOptions: yaml.LoadOptions = { + public static loadOptions: yaml.LoadOptions = { schema: yaml.DEFAULT_SCHEMA.extend([ new yaml.Type('!bson_utcdatetime', { kind: 'scalar', @@ -67,7 +67,7 @@ export abstract class GeneratorBase { '..', 'mongo-php-library', 'generator', - 'config' + 'config', ); for await (const folder of await fs.readdir(configDir, { @@ -84,7 +84,7 @@ export abstract class GeneratorBase { private async *listSourceYAMLFiles(): AsyncIterable<{ category: string; - operators: () => AsyncIterable<{ yaml: unknown }>; + operators: () => AsyncIterable<{ yaml: unknown; path: string }>; }> { for await (const { category, folder } of this.listCategories()) { yield { @@ -97,7 +97,8 @@ export abstract class GeneratorBase { const filePath = path.join(file.parentPath, file.name); const content = await fs.readFile(filePath, 'utf8'); const parsed = yaml.load(content, GeneratorBase.loadOptions); - yield { yaml: parsed }; + + yield { yaml: parsed, path: filePath }; } } }, diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts index a28dadfd..3948cc9e 100644 --- a/packages/mql-typescript/src/metaschema.ts +++ b/packages/mql-typescript/src/metaschema.ts @@ -139,6 +139,62 @@ export const Operator = z name: z.string().optional(), link: z.string().url().regex(new RegExp('^https://')).optional(), pipeline: z.array(z.record(z.any())).optional(), + schema: z + .union([ + z.string(), + z.record( + z.record( + z + .object({ + types: z.array( + z.union([ + z + .object({ + bsonType: z.enum([ + 'Array', + 'Binary', + 'Boolean', + 'Code', + 'CodeWScope', + 'Date', + 'Decimal128', + 'Double', + 'Int32', + 'Int64', + 'MaxKey', + 'MinKey', + 'Null', + 'ObjectId', + 'BSONRegExp', + 'String', + 'BSONSymbol', + 'Timestamp', + 'Undefined', + 'Document', + 'Number', + ]), + }) + .strict(), + z + .object({ + bsonType: z.literal('Array'), + types: z.array(z.record(z.any())), + }) + .strict(), + z + .object({ + bsonType: z.literal('Document'), + fields: z.record(z.record(z.any())), + }) + .strict(), + ]), + ), + }) + .strict(), + ), + ), + ]) + .optional(), }) .strict(), ) diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schemaGenerator.ts index 62a6189d..dc2e88da 100644 --- a/packages/mql-typescript/src/schemaGenerator.ts +++ b/packages/mql-typescript/src/schemaGenerator.ts @@ -226,7 +226,7 @@ export class SchemaGenerator extends GeneratorBase { private emitArg( arg: NonNullable[number], - named: boolean + named: boolean, ): void { if (named) { this.emit(`${arg.name}${arg.optional ? '?' : ''}: `); @@ -325,7 +325,7 @@ export class SchemaGenerator extends GeneratorBase { this.emitComment( `A type describing the \`${parsed.name}\` operator.`, - parsed.link + parsed.link, ); this.emit(`export interface ${ifaceName} {`); if (parsed.description) { @@ -334,13 +334,13 @@ export class SchemaGenerator extends GeneratorBase { this.emit(`${parsed.name}:`); for (const type of parsed.type) { (this.typeMappings[`${type}_S`] ??= []).push( - `${namespace}.${ifaceName}` + `${namespace}.${ifaceName}`, ); } for (const type of parsed.type) { // TODO: why? (this.typeMappings[`C_${file.category}_S`] ??= []).push( - `${namespace}.${ifaceName}` + `${namespace}.${ifaceName}`, ); } if (!parsed.arguments) { @@ -350,7 +350,7 @@ export class SchemaGenerator extends GeneratorBase { if (encode === 'single') { if (parsed.arguments.length !== 1) { throw new Error( - 'encode: single should imply arguments.length === 1' + 'encode: single should imply arguments.length === 1', ); } if (parsed.arguments[0].variadic) { @@ -368,7 +368,7 @@ export class SchemaGenerator extends GeneratorBase { // limitations of merging objects with records, we need to use some type magic, requiring a helper type. // { foo: number } & { [key: string]: string } results in foo being a string due to the indexer. To avoid it // we need to use RecordWithStaticFields<{ foo: number}, string> - const mergedArgs: typeof parsed.arguments[number][] = []; + const mergedArgs: (typeof parsed.arguments)[number][] = []; const objectType = this.getOutputOf(() => { this.emit(encode === 'array' ? '[' : '{'); for (const arg of parsed.arguments!) { @@ -414,16 +414,16 @@ export class SchemaGenerator extends GeneratorBase { } else { this.emit( `RecordWithStaticFields<${objectType}, ${this.toComment( - arg.description + arg.description, )} ${arg.type .map((t) => this.getArgumentTypeName(t)) - .join(' | ')}>` + .join(' | ')}>`, ); } break; case 'array': throw new Error( - `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}` + `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}`, ); case undefined: this.emitArg(arg, false); @@ -436,14 +436,14 @@ export class SchemaGenerator extends GeneratorBase { mergedArgs.length }, ${namespace}.${ifaceName}.{${mergedArgs .map((a) => a.name) - .join(', ')}}` + .join(', ')}}`, ); } break; case 'single': if (parsed.arguments.length !== 1) { throw new Error( - 'encode: single should imply arguments.length === 1' + 'encode: single should imply arguments.length === 1', ); } this.emitArg(parsed.arguments[0], false); @@ -469,7 +469,7 @@ export class SchemaGenerator extends GeneratorBase { interfaces .map((i) => `(${i}${i.endsWith('_S') ? '' : ''})`) .join('|') + - ';' + ';', ); } } diff --git a/packages/mql-typescript/src/testGenerator.ts b/packages/mql-typescript/src/testGenerator.ts index fe222260..8652af93 100644 --- a/packages/mql-typescript/src/testGenerator.ts +++ b/packages/mql-typescript/src/testGenerator.ts @@ -3,80 +3,91 @@ import { GeneratorBase, YamlFiles } from './generator'; import * as fs from 'fs/promises'; import { Operator } from './metaschema'; import { capitalize, removeNewlines } from './utils'; -import { parseSchema, Schema } from 'mongodb-schema'; -import { JSDOM } from 'jsdom'; -import JSON5 from 'json5'; +import { + SimplifiedSchema, + SimplifiedSchemaType, + SimplifiedSchemaBaseType, +} from 'mongodb-schema'; +import * as bson from 'bson'; type TestType = NonNullable[number]; -class DocsCrawler { - constructor(private readonly url: string) {} - - private getInsertionCode( - element: Element | null | undefined - ): { collectionName: string; documents: unknown[] } | undefined { - const codeSnippet = element?.querySelector('script')?.innerHTML; - - if (codeSnippet !== undefined) { - const insertionCode = - /db\.(?[^\.]*)\.insertMany\((?\[.*])\)/gm.exec( - removeNewlines(JSON.parse(codeSnippet).text as string) - ); - - if (insertionCode && insertionCode.groups) { - return { - collectionName: insertionCode.groups.collectionName, - - // The docs use quoted/unquoted shell syntax inconsistently, so use JSON5 instead of regular JSON - // to parse the documents. - documents: JSON5.parse(insertionCode.groups.documents.trim()), - }; - } +export class TestGenerator extends GeneratorBase { + private schemaBsonTypeToTS( + type: SimplifiedSchemaBaseType['bsonType'], + ): string { + switch (type) { + case 'Binary': + return 'bson.Binary'; + case 'Boolean': + return 'boolean'; + case 'Code': + return 'bson.Code'; + case 'CodeWScope': + return 'bson.Code'; + case 'Date': + return 'Date'; + case 'Decimal128': + return 'bson.Decimal128'; + case 'Double': + return 'bson.Double | number'; + case 'Int32': + return 'bson.Int32'; + case 'Int64': + return 'bson.Int64'; + case 'MaxKey': + return 'bson.MaxKey'; + case 'MinKey': + return 'bson.MinKey'; + case 'Null': + return 'null'; + case 'ObjectId': + return 'bson.ObjectId'; + case 'BSONRegExp': + return 'bson.BSONRegExp'; + case 'String': + return 'string'; + case 'BSONSymbol': + return 'bson.BSONSymbol'; + case 'Timestamp': + return `bson.Timestamp`; + case 'Undefined': + return `undefined`; + case 'Number' as any: + return 'number'; + default: + throw new Error(`Unknown BSON type: ${type}`); } + } - // Sometimes insertion code for the collection will be in the parent examples section. We fallback to it if we can't find it in the current section. - while (element) { - element = element?.parentElement?.closest('section'); - const examples = element?.querySelector("a[href='#examples']"); - if (examples) { - return this.getInsertionCode(element); + private simplifiedTypesToTS(types: SimplifiedSchemaType[]): string { + const mappedTypes = []; + for (const type of types) { + if (type.bsonType === 'Document' && 'fields' in type) { + mappedTypes.push(this.simplifiedSchemaToTS(type.fields)); + } else if (type.bsonType === 'Array' && 'types' in type) { + mappedTypes.push(`Array<${this.simplifiedTypesToTS(type.types)}>`); + } else { + mappedTypes.push(this.schemaBsonTypeToTS(type.bsonType)); } } - return undefined; + return mappedTypes.join(' | '); } - public async getSchema(): Promise< - { schema: Schema; collectionName: string } | undefined - > { - const fragment = new URL(this.url).hash; - if (!fragment) { - return; - } - - const dom = await JSDOM.fromURL(this.url); - const exampleSection = dom.window.document - .querySelector(`a[href='${fragment}']`) - ?.closest('section'); - - const insertionCode = this.getInsertionCode(exampleSection); - - if (!insertionCode) { - return; + private simplifiedSchemaToTS(schema: SimplifiedSchema): string { + let result = '{\n'; + for (const [key, value] of Object.entries(schema)) { + result += `${key}: ${this.simplifiedTypesToTS(value.types)};\n`; } - - return { - schema: await parseSchema(insertionCode.documents), - collectionName: insertionCode.collectionName, - }; + result += '}\n'; + return result; } -} -export class TestGenerator extends GeneratorBase { private async emitTestBody(category: string, test: TestType): Promise { if (!test.link) { this.emit( - `// TODO: No docs reference found for ${category}.${test.name}\n` + `// TODO: No docs reference found for ${category}.${test.name}\n`, ); return; } @@ -86,19 +97,22 @@ export class TestGenerator extends GeneratorBase { return; } - const schema = await new DocsCrawler(test.link).getSchema(); - if (!schema) { + if (!test.schema || typeof test.schema === 'string') { this.emit( - `// TODO: no schema found for ${category}.${test.name} at ${test.link}\n` + `// TODO: no schema found for ${category}.${test.name}${test.schema ? `: ${test.schema}` : ''}\n`, ); return; } - this.emit(`type ${schema.collectionName} = {};\n`); // TODO + const collectionName = Object.keys(test.schema)[0]; + const schema = test.schema[collectionName] as SimplifiedSchema; + this.emit( - `const aggregation: schema.Pipeline<${schema.collectionName}> = [\n` + `type ${collectionName} = ${this.simplifiedSchemaToTS(schema)}\n`, ); + this.emit(`const aggregation: schema.Pipeline<${collectionName}> = [\n`); + for (const stage of test.pipeline) { const json = JSON.stringify(stage, (_, value: any): any => { if ( @@ -113,7 +127,10 @@ export class TestGenerator extends GeneratorBase { }); this.emit( - json.replaceAll(/"(?function[^"]*)"/gm, '$') + json.replaceAll( + /"(?function[^"]*)"/gm, + '$', + ), ); this.emit(',\n'); @@ -147,7 +164,7 @@ export class TestGenerator extends GeneratorBase { for (const test of parsed.tests ?? []) { this.emitComment( test.name ?? `Test ${namespace}.${parsed.name}`, - test.link + test.link, ); this.emit(`function test${i++}() {\n`); diff --git a/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts index 01e3eb85..736184bd 100644 --- a/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts +++ b/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts @@ -5,7 +5,13 @@ import * as schema from '../../out/schema'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/#use--accumulator-to-implement-the--avg-operator} */ function test0() { - type books = {}; + type books = { + _id: number; + title: string; + author: string; + copies: number; + }; + const aggregation: schema.Pipeline = [ { $group: { @@ -41,7 +47,13 @@ function test0() { * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/#use-initargs-to-vary-the-initial-state-by-group} */ function test1() { - type restaurants = {}; + type restaurants = { + _id: number; + name: string; + city: string; + cuisine: string; + }; + const aggregation: schema.Pipeline = [ { $group: { diff --git a/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts b/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts index ebf33314..c912e27c 100644 --- a/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts +++ b/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts @@ -5,7 +5,25 @@ import * as schema from '../../out/schema'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--group-stage} */ function test0() { - // TODO: no schema found for $addToSet.Use in $group Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--group-stage + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { + day: { $dayOfYear: { date: '$date' } }, + year: { $year: { date: '$date' } }, + }, + itemsSold: { $addToSet: '$item' }, + }, + }, + ]; } /** @@ -13,5 +31,27 @@ function test0() { * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--setwindowfields-stage} */ function test1() { - // TODO: no schema found for $addToSet.Use in $setWindowFields Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/#use-in--setwindowfields-stage + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + cakeTypesForState: { + $addToSet: '$type', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; } diff --git a/packages/mql-typescript/tests/accumulator/$avg.spec.ts b/packages/mql-typescript/tests/accumulator/$avg.spec.ts index 98aa73e8..97be14da 100644 --- a/packages/mql-typescript/tests/accumulator/$avg.spec.ts +++ b/packages/mql-typescript/tests/accumulator/$avg.spec.ts @@ -5,7 +5,23 @@ import * as schema from '../../out/schema'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--group-stage} */ function test0() { - // TODO: no schema found for $avg.Use in $group Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--group-stage + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$item', + avgAmount: { $avg: { $multiply: ['$price', '$quantity'] } }, + avgQuantity: { $avg: '$quantity' }, + }, + }, + ]; } /** @@ -13,5 +29,27 @@ function test0() { * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--setwindowfields-stage} */ function test1() { - // TODO: no schema found for $avg.Use in $setWindowFields Stage at https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--setwindowfields-stage + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + averageQuantityForState: { + $avg: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; } diff --git a/packages/mql-typescript/tests/accumulator/$bottom.spec.ts b/packages/mql-typescript/tests/accumulator/$bottom.spec.ts index cb2e323c..836e9ca9 100644 --- a/packages/mql-typescript/tests/accumulator/$bottom.spec.ts +++ b/packages/mql-typescript/tests/accumulator/$bottom.spec.ts @@ -5,7 +5,12 @@ import * as schema from '../../out/schema'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/#find-the-bottom-score} */ function test0() { - type gamescores = {}; + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + const aggregation: schema.Pipeline = [ { $match: { gameId: 'G1' } }, { @@ -24,7 +29,12 @@ function test0() { * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/#finding-the-bottom-score-across-multiple-games} */ function test1() { - type gamescores = {}; + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + const aggregation: schema.Pipeline = [ { $group: { From 1aa36566a2475b9577e0e4b420dfb6a3bc3e3cb6 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 26 May 2025 19:15:51 +0200 Subject: [PATCH 09/26] fix: handle more corner cases; add static schemas for docs that don't have a schema defined --- packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema.ts | 1436 ++++++++------- packages/mql-typescript/package.json | 5 +- packages/mql-typescript/src/cli.ts | 4 +- .../src/{ => driverSchema}/docsCrawler.ts | 144 +- .../driverSchemaGenerator.ts | 57 +- .../src/driverSchema/staticSchemas.ts | 1630 +++++++++++++++++ packages/mql-typescript/src/generator.ts | 136 +- packages/mql-typescript/src/index.ts | 2 +- packages/mql-typescript/src/metaschema.ts | 11 + .../mql-typescript/src/schemaGenerator.ts | 87 +- .../src/{ => testGenerator}/testGenerator.ts | 80 +- .../testGenerator/unsupportedAggregations.ts | 97 + packages/mql-typescript/src/utils.ts | 4 + ...ccumulator.spec.ts => accumulator.spec.ts} | 0 .../{$addToSet.spec.ts => addToSet.spec.ts} | 0 .../accumulator/{$avg.spec.ts => avg.spec.ts} | 0 .../{$bottom.spec.ts => bottom.spec.ts} | 0 .../tests/accumulator/bottomN.spec.ts | 83 + .../tests/accumulator/count.spec.ts | 52 + .../tests/accumulator/covariancePop.spec.ts | 31 + .../tests/accumulator/covarianceSamp.spec.ts | 31 + .../tests/accumulator/denseRank.spec.ts | 51 + .../tests/accumulator/derivative.spec.ts | 33 + .../tests/accumulator/documentNumber.spec.ts | 26 + .../tests/accumulator/expMovingAvg.spec.ts | 51 + .../tests/accumulator/first.spec.ts | 50 + .../tests/accumulator/firstN.spec.ts | 122 ++ .../tests/accumulator/integral.spec.ts | 28 + .../tests/accumulator/last.spec.ts | 50 + .../tests/accumulator/lastN.spec.ts | 92 + .../tests/accumulator/linearFill.spec.ts | 44 + .../tests/accumulator/locf.spec.ts | 21 + .../tests/accumulator/max.spec.ts | 55 + .../tests/accumulator/maxN.spec.ts | 70 + .../tests/accumulator/median.spec.ts | 51 + .../tests/accumulator/mergeObjects.spec.ts | 25 + .../tests/accumulator/min.spec.ts | 49 + .../tests/accumulator/minN.spec.ts | 70 + .../tests/accumulator/percentile.spec.ts | 102 ++ .../tests/accumulator/push.spec.ts | 58 + .../tests/accumulator/rank.spec.ts | 51 + .../tests/accumulator/shift.spec.ts | 59 + .../tests/accumulator/stdDevPop.spec.ts | 48 + .../tests/accumulator/stdDevSamp.spec.ts | 48 + .../tests/accumulator/sum.spec.ts | 58 + .../tests/accumulator/top.spec.ts | 48 + .../tests/accumulator/topN.spec.ts | 83 + .../tests/expression/abs.spec.ts | 21 + .../tests/expression/acos.spec.ts | 26 + .../tests/expression/acosh.spec.ts | 22 + .../tests/expression/add.spec.ts | 39 + .../tests/expression/allElementsTrue.spec.ts | 26 + .../tests/expression/and.spec.ts | 26 + .../tests/expression/anyElementTrue.spec.ts | 26 + .../tests/expression/arrayElemAt.spec.ts | 25 + .../tests/expression/arrayToObject.spec.ts | 64 + .../tests/expression/asin.spec.ts | 26 + .../tests/expression/asinh.spec.ts | 22 + .../tests/expression/atan.spec.ts | 26 + .../tests/expression/atan2.spec.ts | 24 + .../tests/expression/atanh.spec.ts | 22 + .../tests/expression/avg.spec.ts | 27 + .../tests/expression/binarySize.spec.ts | 19 + .../tests/expression/bitAnd.spec.ts | 35 + .../tests/expression/bitNot.spec.ts | 19 + .../tests/expression/bitOr.spec.ts | 35 + .../tests/expression/bitXor.spec.ts | 19 + .../tests/expression/bsonSize.spec.ts | 87 + .../tests/expression/case.spec.ts | 3 + .../tests/expression/ceil.spec.ts | 18 + .../tests/expression/cmp.spec.ts | 22 + .../tests/expression/concat.spec.ts | 24 + .../tests/expression/concatArrays.spec.ts | 19 + .../tests/expression/cond.spec.ts | 26 + .../tests/expression/convert.spec.ts | 68 + .../tests/expression/cos.spec.ts | 28 + .../tests/expression/cosh.spec.ts | 18 + .../tests/expression/dateAdd.spec.ts | 147 ++ .../tests/expression/dateDiff.spec.ts | 107 ++ .../tests/expression/dateFromParts.spec.ts | 40 + .../tests/expression/dateFromString.spec.ts | 81 + .../tests/expression/dateSubtract.spec.ts | 148 ++ .../tests/expression/dateToParts.spec.ts | 29 + .../tests/expression/dateToString.spec.ts | 57 + .../tests/expression/dateTrunc.spec.ts | 64 + .../tests/expression/dayOfMonth.spec.ts | 21 + .../tests/expression/dayOfWeek.spec.ts | 21 + .../tests/expression/dayOfYear.spec.ts | 21 + .../tests/expression/degreesToRadians.spec.ts | 25 + .../tests/expression/divide.spec.ts | 20 + .../tests/expression/eq.spec.ts | 20 + .../tests/expression/exp.spec.ts | 23 + .../tests/expression/filter.spec.ts | 95 + .../tests/expression/first.spec.ts | 10 + .../tests/expression/firstN.spec.ts | 35 + .../tests/expression/floor.spec.ts | 18 + .../tests/expression/function.spec.ts | 62 + .../tests/expression/getField.spec.ts | 75 + .../tests/expression/gt.spec.ts | 20 + .../tests/expression/gte.spec.ts | 22 + .../tests/expression/hour.spec.ts | 21 + .../tests/expression/ifNull.spec.ts | 47 + .../tests/expression/in.spec.ts | 24 + .../tests/expression/indexOfArray.spec.ts | 19 + .../tests/expression/indexOfBytes.spec.ts | 19 + .../tests/expression/indexOfCP.spec.ts | 19 + .../tests/expression/isArray.spec.ts | 31 + .../tests/expression/isNumber.spec.ts | 67 + .../tests/expression/isoDayOfWeek.spec.ts | 25 + .../tests/expression/isoWeek.spec.ts | 25 + .../tests/expression/isoWeekYear.spec.ts | 18 + .../tests/expression/last.spec.ts | 10 + .../tests/expression/lastN.spec.ts | 33 + .../tests/expression/let.spec.ts | 37 + .../tests/expression/literal.spec.ts | 3 + .../tests/expression/ln.spec.ts | 19 + .../tests/expression/log.spec.ts | 22 + .../tests/expression/log10.spec.ts | 18 + .../tests/expression/lt.spec.ts | 20 + .../tests/expression/lte.spec.ts | 22 + .../tests/expression/ltrim.spec.ts | 22 + .../tests/expression/map.spec.ts | 87 + .../tests/expression/max.spec.ts | 27 + .../tests/expression/maxN.spec.ts | 18 + .../tests/expression/median.spec.ts | 31 + .../tests/expression/mergeObjects.spec.ts | 35 + .../tests/expression/meta.spec.ts | 37 + .../tests/expression/millisecond.spec.ts | 21 + .../tests/expression/min.spec.ts | 27 + .../tests/expression/minN.spec.ts | 18 + .../tests/expression/minute.spec.ts | 21 + .../tests/expression/mod.spec.ts | 20 + .../tests/expression/month.spec.ts | 21 + .../tests/expression/multiply.spec.ts | 27 + .../tests/expression/ne.spec.ts | 20 + .../tests/expression/not.spec.ts | 20 + .../tests/expression/objectToArray.spec.ts | 55 + .../tests/expression/or.spec.ts | 25 + .../tests/expression/percentile.spec.ts | 32 + .../tests/expression/pow.spec.ts | 27 + .../tests/expression/radiansToDegrees.spec.ts | 25 + .../tests/expression/rand.spec.ts | 40 + .../tests/expression/range.spec.ts | 25 + .../tests/expression/reduce.spec.ts | 178 ++ .../tests/expression/regexFind.spec.ts | 69 + .../tests/expression/regexFindAll.spec.ts | 139 ++ .../tests/expression/regexMatch.spec.ts | 99 + .../tests/expression/replaceAll.spec.ts | 28 + .../tests/expression/replaceOne.spec.ts | 28 + .../tests/expression/reverseArray.spec.ts | 21 + .../tests/expression/round.spec.ts | 18 + .../tests/expression/rtrim.spec.ts | 22 + .../tests/expression/second.spec.ts | 21 + .../tests/expression/setDifference.spec.ts | 26 + .../tests/expression/setEquals.spec.ts | 26 + .../tests/expression/setField.spec.ts | 145 ++ .../tests/expression/setIntersection.spec.ts | 61 + .../tests/expression/setIsSubset.spec.ts | 26 + .../tests/expression/setUnion.spec.ts | 26 + .../tests/expression/sin.spec.ts | 28 + .../tests/expression/sinh.spec.ts | 18 + .../tests/expression/size.spec.ts | 31 + .../tests/expression/slice.spec.ts | 19 + .../tests/expression/sortArray.spec.ts | 154 ++ .../tests/expression/split.spec.ts | 41 + .../tests/expression/sqrt.spec.ts | 39 + .../tests/expression/stdDevPop.spec.ts | 25 + .../tests/expression/stdDevSamp.spec.ts | 3 + .../tests/expression/strLenBytes.spec.ts | 18 + .../tests/expression/strLenCP.spec.ts | 18 + .../tests/expression/strcasecmp.spec.ts | 25 + .../tests/expression/substr.spec.ts | 26 + .../tests/expression/substrBytes.spec.ts | 47 + .../tests/expression/substrCP.spec.ts | 47 + .../tests/expression/subtract.spec.ts | 67 + .../tests/expression/sum.spec.ts | 27 + .../tests/expression/switch.spec.ts | 47 + .../tests/expression/tan.spec.ts | 25 + .../tests/expression/tanh.spec.ts | 18 + .../tests/expression/toBool.spec.ts | 37 + .../tests/expression/toDate.spec.ts | 22 + .../tests/expression/toDecimal.spec.ts | 20 + .../tests/expression/toDouble.spec.ts | 21 + .../tests/expression/toHashedIndexKey.spec.ts | 18 + .../tests/expression/toInt.spec.ts | 20 + .../tests/expression/toLong.spec.ts | 20 + .../tests/expression/toLower.spec.ts | 25 + .../tests/expression/toObjectId.spec.ts | 20 + .../tests/expression/toString.spec.ts | 21 + .../tests/expression/toUpper.spec.ts | 25 + .../tests/expression/trim.spec.ts | 22 + .../tests/expression/trunc.spec.ts | 18 + .../tests/expression/tsIncrement.spec.ts | 45 + .../tests/expression/tsSecond.spec.ts | 41 + .../tests/expression/type.spec.ts | 27 + .../tests/expression/unsetField.spec.ts | 74 + .../tests/expression/week.spec.ts | 21 + .../tests/expression/year.spec.ts | 21 + .../tests/expression/zip.spec.ts | 71 + 200 files changed, 9955 insertions(+), 828 deletions(-) rename packages/mql-typescript/src/{ => driverSchema}/docsCrawler.ts (65%) rename packages/mql-typescript/src/{ => driverSchema}/driverSchemaGenerator.ts (60%) create mode 100644 packages/mql-typescript/src/driverSchema/staticSchemas.ts rename packages/mql-typescript/src/{ => testGenerator}/testGenerator.ts (65%) create mode 100644 packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts rename packages/mql-typescript/tests/accumulator/{$accumulator.spec.ts => accumulator.spec.ts} (100%) rename packages/mql-typescript/tests/accumulator/{$addToSet.spec.ts => addToSet.spec.ts} (100%) rename packages/mql-typescript/tests/accumulator/{$avg.spec.ts => avg.spec.ts} (100%) rename packages/mql-typescript/tests/accumulator/{$bottom.spec.ts => bottom.spec.ts} (100%) create mode 100644 packages/mql-typescript/tests/accumulator/bottomN.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/count.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/covariancePop.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/denseRank.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/derivative.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/documentNumber.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/first.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/firstN.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/integral.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/last.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/lastN.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/linearFill.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/locf.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/max.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/maxN.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/median.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/min.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/minN.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/percentile.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/push.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/rank.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/shift.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/sum.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/top.spec.ts create mode 100644 packages/mql-typescript/tests/accumulator/topN.spec.ts create mode 100644 packages/mql-typescript/tests/expression/abs.spec.ts create mode 100644 packages/mql-typescript/tests/expression/acos.spec.ts create mode 100644 packages/mql-typescript/tests/expression/acosh.spec.ts create mode 100644 packages/mql-typescript/tests/expression/add.spec.ts create mode 100644 packages/mql-typescript/tests/expression/allElementsTrue.spec.ts create mode 100644 packages/mql-typescript/tests/expression/and.spec.ts create mode 100644 packages/mql-typescript/tests/expression/anyElementTrue.spec.ts create mode 100644 packages/mql-typescript/tests/expression/arrayElemAt.spec.ts create mode 100644 packages/mql-typescript/tests/expression/arrayToObject.spec.ts create mode 100644 packages/mql-typescript/tests/expression/asin.spec.ts create mode 100644 packages/mql-typescript/tests/expression/asinh.spec.ts create mode 100644 packages/mql-typescript/tests/expression/atan.spec.ts create mode 100644 packages/mql-typescript/tests/expression/atan2.spec.ts create mode 100644 packages/mql-typescript/tests/expression/atanh.spec.ts create mode 100644 packages/mql-typescript/tests/expression/avg.spec.ts create mode 100644 packages/mql-typescript/tests/expression/binarySize.spec.ts create mode 100644 packages/mql-typescript/tests/expression/bitAnd.spec.ts create mode 100644 packages/mql-typescript/tests/expression/bitNot.spec.ts create mode 100644 packages/mql-typescript/tests/expression/bitOr.spec.ts create mode 100644 packages/mql-typescript/tests/expression/bitXor.spec.ts create mode 100644 packages/mql-typescript/tests/expression/bsonSize.spec.ts create mode 100644 packages/mql-typescript/tests/expression/case.spec.ts create mode 100644 packages/mql-typescript/tests/expression/ceil.spec.ts create mode 100644 packages/mql-typescript/tests/expression/cmp.spec.ts create mode 100644 packages/mql-typescript/tests/expression/concat.spec.ts create mode 100644 packages/mql-typescript/tests/expression/concatArrays.spec.ts create mode 100644 packages/mql-typescript/tests/expression/cond.spec.ts create mode 100644 packages/mql-typescript/tests/expression/convert.spec.ts create mode 100644 packages/mql-typescript/tests/expression/cos.spec.ts create mode 100644 packages/mql-typescript/tests/expression/cosh.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateAdd.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateDiff.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateFromParts.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateFromString.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateSubtract.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateToParts.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateToString.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dateTrunc.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dayOfMonth.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dayOfWeek.spec.ts create mode 100644 packages/mql-typescript/tests/expression/dayOfYear.spec.ts create mode 100644 packages/mql-typescript/tests/expression/degreesToRadians.spec.ts create mode 100644 packages/mql-typescript/tests/expression/divide.spec.ts create mode 100644 packages/mql-typescript/tests/expression/eq.spec.ts create mode 100644 packages/mql-typescript/tests/expression/exp.spec.ts create mode 100644 packages/mql-typescript/tests/expression/filter.spec.ts create mode 100644 packages/mql-typescript/tests/expression/first.spec.ts create mode 100644 packages/mql-typescript/tests/expression/firstN.spec.ts create mode 100644 packages/mql-typescript/tests/expression/floor.spec.ts create mode 100644 packages/mql-typescript/tests/expression/function.spec.ts create mode 100644 packages/mql-typescript/tests/expression/getField.spec.ts create mode 100644 packages/mql-typescript/tests/expression/gt.spec.ts create mode 100644 packages/mql-typescript/tests/expression/gte.spec.ts create mode 100644 packages/mql-typescript/tests/expression/hour.spec.ts create mode 100644 packages/mql-typescript/tests/expression/ifNull.spec.ts create mode 100644 packages/mql-typescript/tests/expression/in.spec.ts create mode 100644 packages/mql-typescript/tests/expression/indexOfArray.spec.ts create mode 100644 packages/mql-typescript/tests/expression/indexOfBytes.spec.ts create mode 100644 packages/mql-typescript/tests/expression/indexOfCP.spec.ts create mode 100644 packages/mql-typescript/tests/expression/isArray.spec.ts create mode 100644 packages/mql-typescript/tests/expression/isNumber.spec.ts create mode 100644 packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts create mode 100644 packages/mql-typescript/tests/expression/isoWeek.spec.ts create mode 100644 packages/mql-typescript/tests/expression/isoWeekYear.spec.ts create mode 100644 packages/mql-typescript/tests/expression/last.spec.ts create mode 100644 packages/mql-typescript/tests/expression/lastN.spec.ts create mode 100644 packages/mql-typescript/tests/expression/let.spec.ts create mode 100644 packages/mql-typescript/tests/expression/literal.spec.ts create mode 100644 packages/mql-typescript/tests/expression/ln.spec.ts create mode 100644 packages/mql-typescript/tests/expression/log.spec.ts create mode 100644 packages/mql-typescript/tests/expression/log10.spec.ts create mode 100644 packages/mql-typescript/tests/expression/lt.spec.ts create mode 100644 packages/mql-typescript/tests/expression/lte.spec.ts create mode 100644 packages/mql-typescript/tests/expression/ltrim.spec.ts create mode 100644 packages/mql-typescript/tests/expression/map.spec.ts create mode 100644 packages/mql-typescript/tests/expression/max.spec.ts create mode 100644 packages/mql-typescript/tests/expression/maxN.spec.ts create mode 100644 packages/mql-typescript/tests/expression/median.spec.ts create mode 100644 packages/mql-typescript/tests/expression/mergeObjects.spec.ts create mode 100644 packages/mql-typescript/tests/expression/meta.spec.ts create mode 100644 packages/mql-typescript/tests/expression/millisecond.spec.ts create mode 100644 packages/mql-typescript/tests/expression/min.spec.ts create mode 100644 packages/mql-typescript/tests/expression/minN.spec.ts create mode 100644 packages/mql-typescript/tests/expression/minute.spec.ts create mode 100644 packages/mql-typescript/tests/expression/mod.spec.ts create mode 100644 packages/mql-typescript/tests/expression/month.spec.ts create mode 100644 packages/mql-typescript/tests/expression/multiply.spec.ts create mode 100644 packages/mql-typescript/tests/expression/ne.spec.ts create mode 100644 packages/mql-typescript/tests/expression/not.spec.ts create mode 100644 packages/mql-typescript/tests/expression/objectToArray.spec.ts create mode 100644 packages/mql-typescript/tests/expression/or.spec.ts create mode 100644 packages/mql-typescript/tests/expression/percentile.spec.ts create mode 100644 packages/mql-typescript/tests/expression/pow.spec.ts create mode 100644 packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts create mode 100644 packages/mql-typescript/tests/expression/rand.spec.ts create mode 100644 packages/mql-typescript/tests/expression/range.spec.ts create mode 100644 packages/mql-typescript/tests/expression/reduce.spec.ts create mode 100644 packages/mql-typescript/tests/expression/regexFind.spec.ts create mode 100644 packages/mql-typescript/tests/expression/regexFindAll.spec.ts create mode 100644 packages/mql-typescript/tests/expression/regexMatch.spec.ts create mode 100644 packages/mql-typescript/tests/expression/replaceAll.spec.ts create mode 100644 packages/mql-typescript/tests/expression/replaceOne.spec.ts create mode 100644 packages/mql-typescript/tests/expression/reverseArray.spec.ts create mode 100644 packages/mql-typescript/tests/expression/round.spec.ts create mode 100644 packages/mql-typescript/tests/expression/rtrim.spec.ts create mode 100644 packages/mql-typescript/tests/expression/second.spec.ts create mode 100644 packages/mql-typescript/tests/expression/setDifference.spec.ts create mode 100644 packages/mql-typescript/tests/expression/setEquals.spec.ts create mode 100644 packages/mql-typescript/tests/expression/setField.spec.ts create mode 100644 packages/mql-typescript/tests/expression/setIntersection.spec.ts create mode 100644 packages/mql-typescript/tests/expression/setIsSubset.spec.ts create mode 100644 packages/mql-typescript/tests/expression/setUnion.spec.ts create mode 100644 packages/mql-typescript/tests/expression/sin.spec.ts create mode 100644 packages/mql-typescript/tests/expression/sinh.spec.ts create mode 100644 packages/mql-typescript/tests/expression/size.spec.ts create mode 100644 packages/mql-typescript/tests/expression/slice.spec.ts create mode 100644 packages/mql-typescript/tests/expression/sortArray.spec.ts create mode 100644 packages/mql-typescript/tests/expression/split.spec.ts create mode 100644 packages/mql-typescript/tests/expression/sqrt.spec.ts create mode 100644 packages/mql-typescript/tests/expression/stdDevPop.spec.ts create mode 100644 packages/mql-typescript/tests/expression/stdDevSamp.spec.ts create mode 100644 packages/mql-typescript/tests/expression/strLenBytes.spec.ts create mode 100644 packages/mql-typescript/tests/expression/strLenCP.spec.ts create mode 100644 packages/mql-typescript/tests/expression/strcasecmp.spec.ts create mode 100644 packages/mql-typescript/tests/expression/substr.spec.ts create mode 100644 packages/mql-typescript/tests/expression/substrBytes.spec.ts create mode 100644 packages/mql-typescript/tests/expression/substrCP.spec.ts create mode 100644 packages/mql-typescript/tests/expression/subtract.spec.ts create mode 100644 packages/mql-typescript/tests/expression/sum.spec.ts create mode 100644 packages/mql-typescript/tests/expression/switch.spec.ts create mode 100644 packages/mql-typescript/tests/expression/tan.spec.ts create mode 100644 packages/mql-typescript/tests/expression/tanh.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toBool.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toDate.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toDecimal.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toDouble.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toInt.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toLong.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toLower.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toObjectId.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toString.spec.ts create mode 100644 packages/mql-typescript/tests/expression/toUpper.spec.ts create mode 100644 packages/mql-typescript/tests/expression/trim.spec.ts create mode 100644 packages/mql-typescript/tests/expression/trunc.spec.ts create mode 100644 packages/mql-typescript/tests/expression/tsIncrement.spec.ts create mode 100644 packages/mql-typescript/tests/expression/tsSecond.spec.ts create mode 100644 packages/mql-typescript/tests/expression/type.spec.ts create mode 100644 packages/mql-typescript/tests/expression/unsetField.spec.ts create mode 100644 packages/mql-typescript/tests/expression/week.spec.ts create mode 100644 packages/mql-typescript/tests/expression/year.spec.ts create mode 100644 packages/mql-typescript/tests/expression/zip.spec.ts diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 56a801b2..c027132e 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 56a801b2570876050f63058eface5b8cd645bca8 +Subproject commit c027132ee06556598a03496908ee29a11d7a6398 diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 4c958036..5c78c354 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -1,5 +1,5 @@ import type * as bson from 'bson'; -import type { FilterOperators } from 'mongodb'; +import { FilterOperators } from 'mongodb'; type Condition = AlternativeType | FilterOperators; type AlternativeType = @@ -15,7 +15,7 @@ type RecordWithStaticFields, TValue> = T & { // TBD: Nested fields type AFieldPath = KeysOfAType & string; type FieldExpression = { [k: string]: FieldPath }; -export namespace AccumulatorOperators { +export namespace Aggregation.Accumulator { /** * A type describing the `$accumulator` operator. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/} @@ -349,7 +349,7 @@ export namespace AccumulatorOperators { /** * An expression that resolves to the array from which to return n elements. */ - input: ResolvesToArray; + input: Expression; /** * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns. @@ -682,7 +682,7 @@ export namespace AccumulatorOperators { }; } } -export namespace ExpressionOperators { +export namespace Aggregation.Expression { /** * A type describing the `$abs` operator. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/} @@ -1944,12 +1944,12 @@ export namespace ExpressionOperators { /** * A type describing the `$lastN` operator. - * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN-array-element/} + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator} */ export interface $lastN { /** * Returns a specified number of elements from the end of an array. - * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN-array-element/} + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator} */ $lastN: { /** @@ -1979,7 +1979,7 @@ export namespace ExpressionOperators { * Assignment block for the variables accessible in the in expression. To assign a variable, specify a string for the variable name and assign a valid expression for the value. * The variable assignments have no meaning outside the in expression, not even within the vars block itself. */ - vars: Record; + vars: ExpressionMap; /** * The expression to evaluate. @@ -2523,7 +2523,33 @@ export namespace ExpressionOperators { * - value is the variable that represents the cumulative value of the expression. * - this is the variable that refers to the element being processed. */ - in: Expression; + in: + | Expression< + S & { + /** + * The variable that represents the cumulative value of the expression. + */ + $this: any; + + /** + * The variable that refers to the element being processed. + */ + $value: any; + } + > + | ExpressionMap< + S & { + /** + * The variable that represents the cumulative value of the expression. + */ + $this: any; + + /** + * The variable that refers to the element being processed. + */ + $value: any; + } + >; }; } @@ -3519,7 +3545,7 @@ export namespace ExpressionOperators { }; } } -export namespace QueryOperators { +export namespace Aggregation.Query { /** * A type describing the `$all` operator. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/} @@ -3628,18 +3654,6 @@ export namespace QueryOperators { $centerSphere: unknown[]; } - /** - * A type describing the `$comment` operator. - * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/comment/} - */ - export interface $comment { - /** - * Adds a comment to a query predicate. - * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/comment/} - */ - $comment: string; - } - /** * A type describing the `$elemMatch` operator. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/} @@ -4038,7 +4052,7 @@ export namespace QueryOperators { $where: Javascript; } } -export namespace SearchOperators { +export namespace Aggregation.Search { /** * A type describing the `autocomplete` operator. * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/} @@ -4333,7 +4347,7 @@ export namespace SearchOperators { }; } } -export namespace StageOperators { +export namespace Aggregation.Stage { /** * A type describing the `$addFields` operator. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/} @@ -4752,7 +4766,7 @@ export namespace StageOperators { /** * The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents. */ - _id: Expression; + _id: Expression | ExpressionMap; }, /** * Computed using the accumulator operators. @@ -5200,7 +5214,7 @@ export namespace StageOperators { * Alias for $project stage that removes or excludes fields. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/} */ - $unset: [...FieldPath[]]; + $unset: [...UnprefixedFieldPath[]]; } /** @@ -5281,12 +5295,16 @@ export namespace StageOperators { } } -export type Int = number | bson.Int32; -export type Double = number | bson.Double; -export type Regex = RegExp | bson.BSONRegExp; -export type Long = bigint | bson.Long; -export type Javascript = bson.Code | Function; -export type Number = Int | Long | Double | bson.Decimal128; +export type Int = number | bson.Int32 | { $numberInt: string }; +export type Double = number | bson.Double | { $numberDouble: string }; +export type Decimal = bson.Decimal128 | { $numberDecimal: string }; +export type Regex = + | RegExp + | bson.BSONRegExp + | { pattern: string; options?: string }; +export type Long = bigint | bson.Long | { $numberLong: string }; +export type Javascript = bson.Code | Function | string; +export type Number = Int | Long | Double | Decimal; export type BsonPrimitive = | Number | bson.Binary @@ -5309,6 +5327,9 @@ export type SortBy = unknown; export type GeoPoint = unknown; export type SortSpec = -1 | 1; export type TimeUnit = + | 'year' + | 'quarter' + | 'month' | 'week' | 'day' | 'hour' @@ -5319,118 +5340,101 @@ export type OutCollection = unknown; export type WhenMatched = string; export type WhenNotMatched = string; export type Expression = - | C_expression + | ExpressionOperator | FieldPath | BsonPrimitive | FieldExpression | FieldPath[]; +export type ExpressionMap = { [k: string]: Expression }; export type Stage = - | C_stage - | StageOperators.$addFields - | StageOperators.$bucket - | StageOperators.$bucketAuto - | StageOperators.$changeStream - | StageOperators.$changeStreamSplitLargeEvent - | StageOperators.$collStats - | StageOperators.$count - | StageOperators.$currentOp - | StageOperators.$densify - | StageOperators.$documents - | StageOperators.$facet - | StageOperators.$fill - | StageOperators.$geoNear - | StageOperators.$graphLookup - | StageOperators.$group - | StageOperators.$indexStats - | StageOperators.$limit - | StageOperators.$listLocalSessions - | StageOperators.$listSampledQueries - | StageOperators.$listSearchIndexes - | StageOperators.$listSessions - | StageOperators.$lookup - | StageOperators.$match - | StageOperators.$merge - | StageOperators.$out - | StageOperators.$planCacheStats - | StageOperators.$project - | StageOperators.$redact - | StageOperators.$replaceRoot - | StageOperators.$replaceWith - | StageOperators.$sample - | StageOperators.$search - | StageOperators.$searchMeta - | StageOperators.$set - | StageOperators.$setWindowFields - | StageOperators.$shardedDataDistribution - | StageOperators.$skip - | StageOperators.$sort - | StageOperators.$sortByCount - | StageOperators.$unionWith - | StageOperators.$unset - | StageOperators.$unwind - | StageOperators.$vectorSearch; + | StageOperator + | Aggregation.Stage.$addFields + | Aggregation.Stage.$bucket + | Aggregation.Stage.$bucketAuto + | Aggregation.Stage.$changeStream + | Aggregation.Stage.$changeStreamSplitLargeEvent + | Aggregation.Stage.$collStats + | Aggregation.Stage.$count + | Aggregation.Stage.$currentOp + | Aggregation.Stage.$densify + | Aggregation.Stage.$documents + | Aggregation.Stage.$facet + | Aggregation.Stage.$fill + | Aggregation.Stage.$geoNear + | Aggregation.Stage.$graphLookup + | Aggregation.Stage.$group + | Aggregation.Stage.$indexStats + | Aggregation.Stage.$limit + | Aggregation.Stage.$listLocalSessions + | Aggregation.Stage.$listSampledQueries + | Aggregation.Stage.$listSearchIndexes + | Aggregation.Stage.$listSessions + | Aggregation.Stage.$lookup + | Aggregation.Stage.$match + | Aggregation.Stage.$merge + | Aggregation.Stage.$out + | Aggregation.Stage.$planCacheStats + | Aggregation.Stage.$project + | Aggregation.Stage.$redact + | Aggregation.Stage.$replaceRoot + | Aggregation.Stage.$replaceWith + | Aggregation.Stage.$sample + | Aggregation.Stage.$search + | Aggregation.Stage.$searchMeta + | Aggregation.Stage.$set + | Aggregation.Stage.$setWindowFields + | Aggregation.Stage.$shardedDataDistribution + | Aggregation.Stage.$skip + | Aggregation.Stage.$sort + | Aggregation.Stage.$sortByCount + | Aggregation.Stage.$unionWith + | Aggregation.Stage.$unset + | Aggregation.Stage.$unwind + | Aggregation.Stage.$vectorSearch; export type Pipeline = Stage[]; export type Query = - | C_query + | QueryOperator | Partial<{ [k in keyof S]: Condition }> - | QueryOperators.$and - | QueryOperators.$comment - | QueryOperators.$expr - | QueryOperators.$jsonSchema - | QueryOperators.$nor - | QueryOperators.$or - | QueryOperators.$sampleRate - | QueryOperators.$text - | QueryOperators.$where; + | Aggregation.Query.$and + | Aggregation.Query.$expr + | Aggregation.Query.$jsonSchema + | Aggregation.Query.$nor + | Aggregation.Query.$or + | Aggregation.Query.$sampleRate + | Aggregation.Query.$text + | Aggregation.Query.$where; export type Accumulator = - | AccumulatorOperators.$accumulator - | AccumulatorOperators.$addToSet - | AccumulatorOperators.$avg - | AccumulatorOperators.$bottom - | AccumulatorOperators.$bottomN - | AccumulatorOperators.$count - | AccumulatorOperators.$first - | AccumulatorOperators.$firstN - | AccumulatorOperators.$last - | AccumulatorOperators.$lastN - | AccumulatorOperators.$max - | AccumulatorOperators.$maxN - | AccumulatorOperators.$median - | AccumulatorOperators.$mergeObjects - | AccumulatorOperators.$min - | AccumulatorOperators.$minN - | AccumulatorOperators.$percentile - | AccumulatorOperators.$push - | AccumulatorOperators.$stdDevPop - | AccumulatorOperators.$stdDevSamp - | AccumulatorOperators.$sum - | AccumulatorOperators.$top - | AccumulatorOperators.$topN; -export type SearchOperator = - | SearchOperators.Autocomplete - | SearchOperators.Compound - | SearchOperators.EmbeddedDocument - | SearchOperators.Equals - | SearchOperators.Exists - | SearchOperators.Facet - | SearchOperators.GeoShape - | SearchOperators.GeoWithin - | SearchOperators.In - | SearchOperators.MoreLikeThis - | SearchOperators.Near - | SearchOperators.Phrase - | SearchOperators.QueryString - | SearchOperators.Range - | SearchOperators.Regex - | SearchOperators.Text - | SearchOperators.Wildcard; + | Aggregation.Accumulator.$accumulator + | Aggregation.Accumulator.$addToSet + | Aggregation.Accumulator.$avg + | Aggregation.Accumulator.$bottom + | Aggregation.Accumulator.$bottomN + | Aggregation.Accumulator.$count + | Aggregation.Accumulator.$first + | Aggregation.Accumulator.$firstN + | Aggregation.Accumulator.$last + | Aggregation.Accumulator.$lastN + | Aggregation.Accumulator.$max + | Aggregation.Accumulator.$maxN + | Aggregation.Accumulator.$median + | Aggregation.Accumulator.$mergeObjects + | Aggregation.Accumulator.$min + | Aggregation.Accumulator.$minN + | Aggregation.Accumulator.$percentile + | Aggregation.Accumulator.$push + | Aggregation.Accumulator.$stdDevPop + | Aggregation.Accumulator.$stdDevSamp + | Aggregation.Accumulator.$sum + | Aggregation.Accumulator.$top + | Aggregation.Accumulator.$topN; export type Geometry = - | QueryOperators.$box - | QueryOperators.$center - | QueryOperators.$centerSphere - | QueryOperators.$geometry - | QueryOperators.$polygon; + | Aggregation.Query.$box + | Aggregation.Query.$center + | Aggregation.Query.$centerSphere + | Aggregation.Query.$geometry + | Aggregation.Query.$polygon; export type FieldPath = `$${AFieldPath}`; +export type UnprefixedFieldPath = AFieldPath; export type NumberFieldPath = `$${AFieldPath}`; export type DoubleFieldPath = `$${AFieldPath}`; export type StringFieldPath = `$${AFieldPath}`; @@ -5446,625 +5450,619 @@ export type JavascriptFieldPath = `$${AFieldPath}`; export type IntFieldPath = `$${AFieldPath}`; export type TimestampFieldPath = `$${AFieldPath}`; export type LongFieldPath = `$${AFieldPath}`; -export type DecimalFieldPath = `$${AFieldPath}`; +export type DecimalFieldPath = `$${AFieldPath}`; export type ResolvesToNumber = + | ResolvesToAny | NumberFieldPath | Number - | ExpressionOperators.$abs - | ExpressionOperators.$avg - | ExpressionOperators.$pow - | ExpressionOperators.$sum; + | ResolvesToInt + | ResolvesToDouble + | ResolvesToLong + | ResolvesToDecimal + | Aggregation.Expression.$abs + | Aggregation.Expression.$avg + | Aggregation.Expression.$pow + | Aggregation.Expression.$sum; export type ResolvesToDouble = + | ResolvesToAny | DoubleFieldPath | Double - | ExpressionOperators.$acos - | ExpressionOperators.$acosh - | ExpressionOperators.$add - | ExpressionOperators.$asin - | ExpressionOperators.$asinh - | ExpressionOperators.$atan - | ExpressionOperators.$atan2 - | ExpressionOperators.$atanh - | ExpressionOperators.$cos - | ExpressionOperators.$cosh - | ExpressionOperators.$degreesToRadians - | ExpressionOperators.$divide - | ExpressionOperators.$exp - | ExpressionOperators.$ln - | ExpressionOperators.$log - | ExpressionOperators.$log10 - | ExpressionOperators.$median - | ExpressionOperators.$radiansToDegrees - | ExpressionOperators.$rand - | ExpressionOperators.$round - | ExpressionOperators.$sin - | ExpressionOperators.$sinh - | ExpressionOperators.$sqrt - | ExpressionOperators.$stdDevPop - | ExpressionOperators.$stdDevSamp - | ExpressionOperators.$subtract - | ExpressionOperators.$tan - | ExpressionOperators.$tanh - | ExpressionOperators.$toDouble - | QueryOperators.$rand; + | Aggregation.Expression.$acos + | Aggregation.Expression.$acosh + | Aggregation.Expression.$add + | Aggregation.Expression.$asin + | Aggregation.Expression.$asinh + | Aggregation.Expression.$atan + | Aggregation.Expression.$atan2 + | Aggregation.Expression.$atanh + | Aggregation.Expression.$cos + | Aggregation.Expression.$cosh + | Aggregation.Expression.$degreesToRadians + | Aggregation.Expression.$divide + | Aggregation.Expression.$exp + | Aggregation.Expression.$ln + | Aggregation.Expression.$log + | Aggregation.Expression.$log10 + | Aggregation.Expression.$median + | Aggregation.Expression.$radiansToDegrees + | Aggregation.Expression.$rand + | Aggregation.Expression.$round + | Aggregation.Expression.$sin + | Aggregation.Expression.$sinh + | Aggregation.Expression.$sqrt + | Aggregation.Expression.$stdDevPop + | Aggregation.Expression.$stdDevSamp + | Aggregation.Expression.$subtract + | Aggregation.Expression.$tan + | Aggregation.Expression.$tanh + | Aggregation.Expression.$toDouble + | Aggregation.Query.$rand; export type ResolvesToString = + | ResolvesToAny | StringFieldPath | string - | ExpressionOperators.$concat - | ExpressionOperators.$dateToString - | ExpressionOperators.$ltrim - | ExpressionOperators.$replaceAll - | ExpressionOperators.$replaceOne - | ExpressionOperators.$rtrim - | ExpressionOperators.$substr - | ExpressionOperators.$substrBytes - | ExpressionOperators.$substrCP - | ExpressionOperators.$toLower - | ExpressionOperators.$toString - | ExpressionOperators.$toUpper - | ExpressionOperators.$trim - | ExpressionOperators.$trunc - | ExpressionOperators.$type; + | Aggregation.Expression.$concat + | Aggregation.Expression.$dateToString + | Aggregation.Expression.$ltrim + | Aggregation.Expression.$replaceAll + | Aggregation.Expression.$replaceOne + | Aggregation.Expression.$rtrim + | Aggregation.Expression.$substr + | Aggregation.Expression.$substrBytes + | Aggregation.Expression.$substrCP + | Aggregation.Expression.$toLower + | Aggregation.Expression.$toString + | Aggregation.Expression.$toUpper + | Aggregation.Expression.$trim + | Aggregation.Expression.$trunc + | Aggregation.Expression.$type; export type ResolvesToObject = + | '$$ROOT' + | ResolvesToAny | ObjectFieldPath | Record - | ExpressionOperators.$arrayToObject - | ExpressionOperators.$dateToParts - | ExpressionOperators.$mergeObjects - | ExpressionOperators.$regexFind - | ExpressionOperators.$setField - | ExpressionOperators.$unsetField; + | Aggregation.Expression.$arrayToObject + | Aggregation.Expression.$dateToParts + | Aggregation.Expression.$mergeObjects + | Aggregation.Expression.$regexFind + | Aggregation.Expression.$setField + | Aggregation.Expression.$unsetField; export type ResolvesToArray = + | ResolvesToAny | ArrayFieldPath | unknown[] - | ExpressionOperators.$concatArrays - | ExpressionOperators.$filter - | ExpressionOperators.$firstN - | ExpressionOperators.$lastN - | ExpressionOperators.$map - | ExpressionOperators.$maxN - | ExpressionOperators.$minN - | ExpressionOperators.$objectToArray - | ExpressionOperators.$percentile - | ExpressionOperators.$range - | ExpressionOperators.$regexFindAll - | ExpressionOperators.$reverseArray - | ExpressionOperators.$setDifference - | ExpressionOperators.$setIntersection - | ExpressionOperators.$setUnion - | ExpressionOperators.$slice - | ExpressionOperators.$sortArray - | ExpressionOperators.$split - | ExpressionOperators.$zip; -export type ResolvesToBinData = BinDataFieldPath | bson.Binary; + | Aggregation.Expression.$concatArrays + | Aggregation.Expression.$filter + | Aggregation.Expression.$firstN + | Aggregation.Expression.$lastN + | Aggregation.Expression.$map + | Aggregation.Expression.$maxN + | Aggregation.Expression.$minN + | Aggregation.Expression.$objectToArray + | Aggregation.Expression.$percentile + | Aggregation.Expression.$range + | Aggregation.Expression.$regexFindAll + | Aggregation.Expression.$reverseArray + | Aggregation.Expression.$setDifference + | Aggregation.Expression.$setIntersection + | Aggregation.Expression.$setUnion + | Aggregation.Expression.$slice + | Aggregation.Expression.$sortArray + | Aggregation.Expression.$split + | Aggregation.Expression.$zip; +export type ResolvesToBinData = + | ResolvesToAny + | BinDataFieldPath + | bson.Binary; export type ResolvesToObjectId = + | ResolvesToAny | ObjectIdFieldPath | bson.ObjectId - | ExpressionOperators.$toObjectId; + | Aggregation.Expression.$toObjectId; export type ResolvesToBool = + | ResolvesToAny | BoolFieldPath | boolean - | ExpressionOperators.$allElementsTrue - | ExpressionOperators.$and - | ExpressionOperators.$anyElementTrue - | ExpressionOperators.$eq - | ExpressionOperators.$gt - | ExpressionOperators.$gte - | ExpressionOperators.$in - | ExpressionOperators.$isArray - | ExpressionOperators.$isNumber - | ExpressionOperators.$lt - | ExpressionOperators.$lte - | ExpressionOperators.$ne - | ExpressionOperators.$not - | ExpressionOperators.$or - | ExpressionOperators.$regexMatch - | ExpressionOperators.$setEquals - | ExpressionOperators.$setIsSubset - | ExpressionOperators.$toBool; + | Aggregation.Expression.$allElementsTrue + | Aggregation.Expression.$and + | Aggregation.Expression.$anyElementTrue + | Aggregation.Expression.$eq + | Aggregation.Expression.$gt + | Aggregation.Expression.$gte + | Aggregation.Expression.$in + | Aggregation.Expression.$isArray + | Aggregation.Expression.$isNumber + | Aggregation.Expression.$lt + | Aggregation.Expression.$lte + | Aggregation.Expression.$ne + | Aggregation.Expression.$not + | Aggregation.Expression.$or + | Aggregation.Expression.$regexMatch + | Aggregation.Expression.$setEquals + | Aggregation.Expression.$setIsSubset + | Aggregation.Expression.$toBool; export type ResolvesToDate = + | '$$NOW' + | ResolvesToAny | DateFieldPath | Date - | ExpressionOperators.$add - | ExpressionOperators.$dateAdd - | ExpressionOperators.$dateFromParts - | ExpressionOperators.$dateFromString - | ExpressionOperators.$dateSubtract - | ExpressionOperators.$dateTrunc - | ExpressionOperators.$subtract - | ExpressionOperators.$toDate; -export type ResolvesToNull = NullFieldPath | null; -export type ResolvesToRegex = RegexFieldPath | Regex; -export type ResolvesToJavascript = JavascriptFieldPath | Javascript; + | Aggregation.Expression.$add + | Aggregation.Expression.$dateAdd + | Aggregation.Expression.$dateFromParts + | Aggregation.Expression.$dateFromString + | Aggregation.Expression.$dateSubtract + | Aggregation.Expression.$dateTrunc + | Aggregation.Expression.$subtract + | Aggregation.Expression.$toDate; +export type ResolvesToNull = ResolvesToAny | NullFieldPath | null; +export type ResolvesToRegex = ResolvesToAny | RegexFieldPath | Regex; +export type ResolvesToJavascript = + | ResolvesToAny + | JavascriptFieldPath + | Javascript; export type ResolvesToInt = + | ResolvesToAny | IntFieldPath | Int - | ExpressionOperators.$add - | ExpressionOperators.$binarySize - | ExpressionOperators.$bitAnd - | ExpressionOperators.$bitNot - | ExpressionOperators.$bitOr - | ExpressionOperators.$bitXor - | ExpressionOperators.$bsonSize - | ExpressionOperators.$ceil - | ExpressionOperators.$cmp - | ExpressionOperators.$dateDiff - | ExpressionOperators.$dayOfMonth - | ExpressionOperators.$dayOfWeek - | ExpressionOperators.$dayOfYear - | ExpressionOperators.$floor - | ExpressionOperators.$hour - | ExpressionOperators.$indexOfArray - | ExpressionOperators.$indexOfBytes - | ExpressionOperators.$indexOfCP - | ExpressionOperators.$isoDayOfWeek - | ExpressionOperators.$isoWeek - | ExpressionOperators.$isoWeekYear - | ExpressionOperators.$millisecond - | ExpressionOperators.$minute - | ExpressionOperators.$mod - | ExpressionOperators.$month - | ExpressionOperators.$round - | ExpressionOperators.$second - | ExpressionOperators.$size - | ExpressionOperators.$strLenBytes - | ExpressionOperators.$strLenCP - | ExpressionOperators.$strcasecmp - | ExpressionOperators.$subtract - | ExpressionOperators.$toInt - | ExpressionOperators.$week - | ExpressionOperators.$year; -export type ResolvesToTimestamp = TimestampFieldPath | bson.Timestamp; + | Aggregation.Expression.$add + | Aggregation.Expression.$binarySize + | Aggregation.Expression.$bitAnd + | Aggregation.Expression.$bitNot + | Aggregation.Expression.$bitOr + | Aggregation.Expression.$bitXor + | Aggregation.Expression.$bsonSize + | Aggregation.Expression.$ceil + | Aggregation.Expression.$cmp + | Aggregation.Expression.$dateDiff + | Aggregation.Expression.$dayOfMonth + | Aggregation.Expression.$dayOfWeek + | Aggregation.Expression.$dayOfYear + | Aggregation.Expression.$floor + | Aggregation.Expression.$hour + | Aggregation.Expression.$indexOfArray + | Aggregation.Expression.$indexOfBytes + | Aggregation.Expression.$indexOfCP + | Aggregation.Expression.$isoDayOfWeek + | Aggregation.Expression.$isoWeek + | Aggregation.Expression.$isoWeekYear + | Aggregation.Expression.$millisecond + | Aggregation.Expression.$minute + | Aggregation.Expression.$mod + | Aggregation.Expression.$month + | Aggregation.Expression.$round + | Aggregation.Expression.$second + | Aggregation.Expression.$size + | Aggregation.Expression.$strLenBytes + | Aggregation.Expression.$strLenCP + | Aggregation.Expression.$strcasecmp + | Aggregation.Expression.$subtract + | Aggregation.Expression.$toInt + | Aggregation.Expression.$week + | Aggregation.Expression.$year; +export type ResolvesToTimestamp = + | ResolvesToAny + | TimestampFieldPath + | bson.Timestamp + | '$clusterTime'; export type ResolvesToLong = + | ResolvesToAny | LongFieldPath | Long - | ExpressionOperators.$add - | ExpressionOperators.$bitAnd - | ExpressionOperators.$bitNot - | ExpressionOperators.$bitOr - | ExpressionOperators.$bitXor - | ExpressionOperators.$round - | ExpressionOperators.$subtract - | ExpressionOperators.$toHashedIndexKey - | ExpressionOperators.$toLong - | ExpressionOperators.$tsIncrement - | ExpressionOperators.$tsSecond; + | Aggregation.Expression.$add + | Aggregation.Expression.$bitAnd + | Aggregation.Expression.$bitNot + | Aggregation.Expression.$bitOr + | Aggregation.Expression.$bitXor + | Aggregation.Expression.$round + | Aggregation.Expression.$subtract + | Aggregation.Expression.$toHashedIndexKey + | Aggregation.Expression.$toLong + | Aggregation.Expression.$tsIncrement + | Aggregation.Expression.$tsSecond; export type ResolvesToDecimal = + | ResolvesToAny | DecimalFieldPath - | bson.Decimal128 - | ExpressionOperators.$acos - | ExpressionOperators.$acosh - | ExpressionOperators.$add - | ExpressionOperators.$asin - | ExpressionOperators.$asinh - | ExpressionOperators.$atan - | ExpressionOperators.$atan2 - | ExpressionOperators.$atanh - | ExpressionOperators.$cos - | ExpressionOperators.$cosh - | ExpressionOperators.$degreesToRadians - | ExpressionOperators.$multiply - | ExpressionOperators.$radiansToDegrees - | ExpressionOperators.$round - | ExpressionOperators.$sin - | ExpressionOperators.$sinh - | ExpressionOperators.$subtract - | ExpressionOperators.$tan - | ExpressionOperators.$tanh - | ExpressionOperators.$toDecimal; -export type C_accumulator = - | AccumulatorOperators.$accumulator - | AccumulatorOperators.$addToSet - | AccumulatorOperators.$addToSet - | AccumulatorOperators.$avg - | AccumulatorOperators.$avg - | AccumulatorOperators.$bottom - | AccumulatorOperators.$bottom - | AccumulatorOperators.$bottomN - | AccumulatorOperators.$bottomN - | AccumulatorOperators.$count - | AccumulatorOperators.$count - | AccumulatorOperators.$covariancePop - | AccumulatorOperators.$covarianceSamp - | AccumulatorOperators.$denseRank - | AccumulatorOperators.$derivative - | AccumulatorOperators.$documentNumber - | AccumulatorOperators.$expMovingAvg - | AccumulatorOperators.$first - | AccumulatorOperators.$first - | AccumulatorOperators.$firstN - | AccumulatorOperators.$firstN - | AccumulatorOperators.$integral - | AccumulatorOperators.$last - | AccumulatorOperators.$last - | AccumulatorOperators.$lastN - | AccumulatorOperators.$lastN - | AccumulatorOperators.$linearFill - | AccumulatorOperators.$locf - | AccumulatorOperators.$max - | AccumulatorOperators.$max - | AccumulatorOperators.$maxN - | AccumulatorOperators.$maxN - | AccumulatorOperators.$median - | AccumulatorOperators.$median - | AccumulatorOperators.$mergeObjects - | AccumulatorOperators.$min - | AccumulatorOperators.$min - | AccumulatorOperators.$minN - | AccumulatorOperators.$minN - | AccumulatorOperators.$percentile - | AccumulatorOperators.$percentile - | AccumulatorOperators.$push - | AccumulatorOperators.$push - | AccumulatorOperators.$rank - | AccumulatorOperators.$shift - | AccumulatorOperators.$stdDevPop - | AccumulatorOperators.$stdDevPop - | AccumulatorOperators.$stdDevSamp - | AccumulatorOperators.$stdDevSamp - | AccumulatorOperators.$sum - | AccumulatorOperators.$sum - | AccumulatorOperators.$top - | AccumulatorOperators.$topN; + | Decimal + | Aggregation.Expression.$acos + | Aggregation.Expression.$acosh + | Aggregation.Expression.$add + | Aggregation.Expression.$asin + | Aggregation.Expression.$asinh + | Aggregation.Expression.$atan + | Aggregation.Expression.$atan2 + | Aggregation.Expression.$atanh + | Aggregation.Expression.$cos + | Aggregation.Expression.$cosh + | Aggregation.Expression.$degreesToRadians + | Aggregation.Expression.$multiply + | Aggregation.Expression.$radiansToDegrees + | Aggregation.Expression.$round + | Aggregation.Expression.$sin + | Aggregation.Expression.$sinh + | Aggregation.Expression.$subtract + | Aggregation.Expression.$tan + | Aggregation.Expression.$tanh + | Aggregation.Expression.$toDecimal; +export type AccumulatorOperator = + | Aggregation.Accumulator.$accumulator + | Aggregation.Accumulator.$addToSet + | Aggregation.Accumulator.$avg + | Aggregation.Accumulator.$bottom + | Aggregation.Accumulator.$bottomN + | Aggregation.Accumulator.$count + | Aggregation.Accumulator.$covariancePop + | Aggregation.Accumulator.$covarianceSamp + | Aggregation.Accumulator.$denseRank + | Aggregation.Accumulator.$derivative + | Aggregation.Accumulator.$documentNumber + | Aggregation.Accumulator.$expMovingAvg + | Aggregation.Accumulator.$first + | Aggregation.Accumulator.$firstN + | Aggregation.Accumulator.$integral + | Aggregation.Accumulator.$last + | Aggregation.Accumulator.$lastN + | Aggregation.Accumulator.$linearFill + | Aggregation.Accumulator.$locf + | Aggregation.Accumulator.$max + | Aggregation.Accumulator.$maxN + | Aggregation.Accumulator.$median + | Aggregation.Accumulator.$mergeObjects + | Aggregation.Accumulator.$min + | Aggregation.Accumulator.$minN + | Aggregation.Accumulator.$percentile + | Aggregation.Accumulator.$push + | Aggregation.Accumulator.$rank + | Aggregation.Accumulator.$shift + | Aggregation.Accumulator.$stdDevPop + | Aggregation.Accumulator.$stdDevSamp + | Aggregation.Accumulator.$sum + | Aggregation.Accumulator.$top + | Aggregation.Accumulator.$topN; export type Window = - | AccumulatorOperators.$addToSet - | AccumulatorOperators.$avg - | AccumulatorOperators.$bottom - | AccumulatorOperators.$bottomN - | AccumulatorOperators.$count - | AccumulatorOperators.$covariancePop - | AccumulatorOperators.$covarianceSamp - | AccumulatorOperators.$denseRank - | AccumulatorOperators.$derivative - | AccumulatorOperators.$documentNumber - | AccumulatorOperators.$expMovingAvg - | AccumulatorOperators.$first - | AccumulatorOperators.$firstN - | AccumulatorOperators.$integral - | AccumulatorOperators.$last - | AccumulatorOperators.$lastN - | AccumulatorOperators.$linearFill - | AccumulatorOperators.$locf - | AccumulatorOperators.$max - | AccumulatorOperators.$maxN - | AccumulatorOperators.$median - | AccumulatorOperators.$min - | AccumulatorOperators.$minN - | AccumulatorOperators.$percentile - | AccumulatorOperators.$push - | AccumulatorOperators.$rank - | AccumulatorOperators.$shift - | AccumulatorOperators.$stdDevPop - | AccumulatorOperators.$stdDevSamp - | AccumulatorOperators.$sum; -export type C_expression = - | ExpressionOperators.$abs - | ExpressionOperators.$acos - | ExpressionOperators.$acos - | ExpressionOperators.$acosh - | ExpressionOperators.$acosh - | ExpressionOperators.$add - | ExpressionOperators.$add - | ExpressionOperators.$add - | ExpressionOperators.$add - | ExpressionOperators.$add - | ExpressionOperators.$allElementsTrue - | ExpressionOperators.$and - | ExpressionOperators.$anyElementTrue - | ExpressionOperators.$arrayElemAt - | ExpressionOperators.$arrayToObject - | ExpressionOperators.$asin - | ExpressionOperators.$asin - | ExpressionOperators.$asinh - | ExpressionOperators.$asinh - | ExpressionOperators.$atan - | ExpressionOperators.$atan - | ExpressionOperators.$atan2 - | ExpressionOperators.$atan2 - | ExpressionOperators.$atanh - | ExpressionOperators.$atanh - | ExpressionOperators.$avg - | ExpressionOperators.$binarySize - | ExpressionOperators.$bitAnd - | ExpressionOperators.$bitAnd - | ExpressionOperators.$bitNot - | ExpressionOperators.$bitNot - | ExpressionOperators.$bitOr - | ExpressionOperators.$bitOr - | ExpressionOperators.$bitXor - | ExpressionOperators.$bitXor - | ExpressionOperators.$bsonSize - | ExpressionOperators.$case - | ExpressionOperators.$ceil - | ExpressionOperators.$cmp - | ExpressionOperators.$concat - | ExpressionOperators.$concatArrays - | ExpressionOperators.$cond - | ExpressionOperators.$convert - | ExpressionOperators.$cos - | ExpressionOperators.$cos - | ExpressionOperators.$cosh - | ExpressionOperators.$cosh - | ExpressionOperators.$dateAdd - | ExpressionOperators.$dateDiff - | ExpressionOperators.$dateFromParts - | ExpressionOperators.$dateFromString - | ExpressionOperators.$dateSubtract - | ExpressionOperators.$dateToParts - | ExpressionOperators.$dateToString - | ExpressionOperators.$dateTrunc - | ExpressionOperators.$dayOfMonth - | ExpressionOperators.$dayOfWeek - | ExpressionOperators.$dayOfYear - | ExpressionOperators.$degreesToRadians - | ExpressionOperators.$degreesToRadians - | ExpressionOperators.$divide - | ExpressionOperators.$eq - | ExpressionOperators.$exp - | ExpressionOperators.$filter - | ExpressionOperators.$first - | ExpressionOperators.$firstN - | ExpressionOperators.$floor - | ExpressionOperators.$function - | ExpressionOperators.$getField - | ExpressionOperators.$gt - | ExpressionOperators.$gte - | ExpressionOperators.$hour - | ExpressionOperators.$ifNull - | ExpressionOperators.$in - | ExpressionOperators.$indexOfArray - | ExpressionOperators.$indexOfBytes - | ExpressionOperators.$indexOfCP - | ExpressionOperators.$isArray - | ExpressionOperators.$isNumber - | ExpressionOperators.$isoDayOfWeek - | ExpressionOperators.$isoWeek - | ExpressionOperators.$isoWeekYear - | ExpressionOperators.$last - | ExpressionOperators.$lastN - | ExpressionOperators.$let - | ExpressionOperators.$literal - | ExpressionOperators.$ln - | ExpressionOperators.$log - | ExpressionOperators.$log10 - | ExpressionOperators.$lt - | ExpressionOperators.$lte - | ExpressionOperators.$ltrim - | ExpressionOperators.$map - | ExpressionOperators.$max - | ExpressionOperators.$maxN - | ExpressionOperators.$median - | ExpressionOperators.$mergeObjects - | ExpressionOperators.$meta - | ExpressionOperators.$millisecond - | ExpressionOperators.$min - | ExpressionOperators.$minN - | ExpressionOperators.$minute - | ExpressionOperators.$mod - | ExpressionOperators.$month - | ExpressionOperators.$multiply - | ExpressionOperators.$ne - | ExpressionOperators.$not - | ExpressionOperators.$objectToArray - | ExpressionOperators.$or - | ExpressionOperators.$percentile - | ExpressionOperators.$pow - | ExpressionOperators.$radiansToDegrees - | ExpressionOperators.$radiansToDegrees - | ExpressionOperators.$rand - | ExpressionOperators.$range - | ExpressionOperators.$reduce - | ExpressionOperators.$regexFind - | ExpressionOperators.$regexFindAll - | ExpressionOperators.$regexMatch - | ExpressionOperators.$replaceAll - | ExpressionOperators.$replaceOne - | ExpressionOperators.$reverseArray - | ExpressionOperators.$round - | ExpressionOperators.$round - | ExpressionOperators.$round - | ExpressionOperators.$round - | ExpressionOperators.$rtrim - | ExpressionOperators.$second - | ExpressionOperators.$setDifference - | ExpressionOperators.$setEquals - | ExpressionOperators.$setField - | ExpressionOperators.$setIntersection - | ExpressionOperators.$setIsSubset - | ExpressionOperators.$setUnion - | ExpressionOperators.$sin - | ExpressionOperators.$sin - | ExpressionOperators.$sinh - | ExpressionOperators.$sinh - | ExpressionOperators.$size - | ExpressionOperators.$slice - | ExpressionOperators.$sortArray - | ExpressionOperators.$split - | ExpressionOperators.$sqrt - | ExpressionOperators.$stdDevPop - | ExpressionOperators.$stdDevSamp - | ExpressionOperators.$strLenBytes - | ExpressionOperators.$strLenCP - | ExpressionOperators.$strcasecmp - | ExpressionOperators.$substr - | ExpressionOperators.$substrBytes - | ExpressionOperators.$substrCP - | ExpressionOperators.$subtract - | ExpressionOperators.$subtract - | ExpressionOperators.$subtract - | ExpressionOperators.$subtract - | ExpressionOperators.$subtract - | ExpressionOperators.$sum - | ExpressionOperators.$switch - | ExpressionOperators.$tan - | ExpressionOperators.$tan - | ExpressionOperators.$tanh - | ExpressionOperators.$tanh - | ExpressionOperators.$toBool - | ExpressionOperators.$toDate - | ExpressionOperators.$toDecimal - | ExpressionOperators.$toDouble - | ExpressionOperators.$toHashedIndexKey - | ExpressionOperators.$toInt - | ExpressionOperators.$toLong - | ExpressionOperators.$toLower - | ExpressionOperators.$toObjectId - | ExpressionOperators.$toString - | ExpressionOperators.$toUpper - | ExpressionOperators.$trim - | ExpressionOperators.$trunc - | ExpressionOperators.$tsIncrement - | ExpressionOperators.$tsSecond - | ExpressionOperators.$type - | ExpressionOperators.$unsetField - | ExpressionOperators.$week - | ExpressionOperators.$year - | ExpressionOperators.$zip; + | Aggregation.Accumulator.$addToSet + | Aggregation.Accumulator.$avg + | Aggregation.Accumulator.$bottom + | Aggregation.Accumulator.$bottomN + | Aggregation.Accumulator.$count + | Aggregation.Accumulator.$covariancePop + | Aggregation.Accumulator.$covarianceSamp + | Aggregation.Accumulator.$denseRank + | Aggregation.Accumulator.$derivative + | Aggregation.Accumulator.$documentNumber + | Aggregation.Accumulator.$expMovingAvg + | Aggregation.Accumulator.$first + | Aggregation.Accumulator.$firstN + | Aggregation.Accumulator.$integral + | Aggregation.Accumulator.$last + | Aggregation.Accumulator.$lastN + | Aggregation.Accumulator.$linearFill + | Aggregation.Accumulator.$locf + | Aggregation.Accumulator.$max + | Aggregation.Accumulator.$maxN + | Aggregation.Accumulator.$median + | Aggregation.Accumulator.$min + | Aggregation.Accumulator.$minN + | Aggregation.Accumulator.$percentile + | Aggregation.Accumulator.$push + | Aggregation.Accumulator.$rank + | Aggregation.Accumulator.$shift + | Aggregation.Accumulator.$stdDevPop + | Aggregation.Accumulator.$stdDevSamp + | Aggregation.Accumulator.$sum; +export type ExpressionOperator = + | Aggregation.Expression.$abs + | Aggregation.Expression.$acos + | Aggregation.Expression.$acosh + | Aggregation.Expression.$add + | Aggregation.Expression.$allElementsTrue + | Aggregation.Expression.$and + | Aggregation.Expression.$anyElementTrue + | Aggregation.Expression.$arrayElemAt + | Aggregation.Expression.$arrayToObject + | Aggregation.Expression.$asin + | Aggregation.Expression.$asinh + | Aggregation.Expression.$atan + | Aggregation.Expression.$atan2 + | Aggregation.Expression.$atanh + | Aggregation.Expression.$avg + | Aggregation.Expression.$binarySize + | Aggregation.Expression.$bitAnd + | Aggregation.Expression.$bitNot + | Aggregation.Expression.$bitOr + | Aggregation.Expression.$bitXor + | Aggregation.Expression.$bsonSize + | Aggregation.Expression.$case + | Aggregation.Expression.$ceil + | Aggregation.Expression.$cmp + | Aggregation.Expression.$concat + | Aggregation.Expression.$concatArrays + | Aggregation.Expression.$cond + | Aggregation.Expression.$convert + | Aggregation.Expression.$cos + | Aggregation.Expression.$cosh + | Aggregation.Expression.$dateAdd + | Aggregation.Expression.$dateDiff + | Aggregation.Expression.$dateFromParts + | Aggregation.Expression.$dateFromString + | Aggregation.Expression.$dateSubtract + | Aggregation.Expression.$dateToParts + | Aggregation.Expression.$dateToString + | Aggregation.Expression.$dateTrunc + | Aggregation.Expression.$dayOfMonth + | Aggregation.Expression.$dayOfWeek + | Aggregation.Expression.$dayOfYear + | Aggregation.Expression.$degreesToRadians + | Aggregation.Expression.$divide + | Aggregation.Expression.$eq + | Aggregation.Expression.$exp + | Aggregation.Expression.$filter + | Aggregation.Expression.$first + | Aggregation.Expression.$firstN + | Aggregation.Expression.$floor + | Aggregation.Expression.$function + | Aggregation.Expression.$getField + | Aggregation.Expression.$gt + | Aggregation.Expression.$gte + | Aggregation.Expression.$hour + | Aggregation.Expression.$ifNull + | Aggregation.Expression.$in + | Aggregation.Expression.$indexOfArray + | Aggregation.Expression.$indexOfBytes + | Aggregation.Expression.$indexOfCP + | Aggregation.Expression.$isArray + | Aggregation.Expression.$isNumber + | Aggregation.Expression.$isoDayOfWeek + | Aggregation.Expression.$isoWeek + | Aggregation.Expression.$isoWeekYear + | Aggregation.Expression.$last + | Aggregation.Expression.$lastN + | Aggregation.Expression.$let + | Aggregation.Expression.$literal + | Aggregation.Expression.$ln + | Aggregation.Expression.$log + | Aggregation.Expression.$log10 + | Aggregation.Expression.$lt + | Aggregation.Expression.$lte + | Aggregation.Expression.$ltrim + | Aggregation.Expression.$map + | Aggregation.Expression.$max + | Aggregation.Expression.$maxN + | Aggregation.Expression.$median + | Aggregation.Expression.$mergeObjects + | Aggregation.Expression.$meta + | Aggregation.Expression.$millisecond + | Aggregation.Expression.$min + | Aggregation.Expression.$minN + | Aggregation.Expression.$minute + | Aggregation.Expression.$mod + | Aggregation.Expression.$month + | Aggregation.Expression.$multiply + | Aggregation.Expression.$ne + | Aggregation.Expression.$not + | Aggregation.Expression.$objectToArray + | Aggregation.Expression.$or + | Aggregation.Expression.$percentile + | Aggregation.Expression.$pow + | Aggregation.Expression.$radiansToDegrees + | Aggregation.Expression.$rand + | Aggregation.Expression.$range + | Aggregation.Expression.$reduce + | Aggregation.Expression.$regexFind + | Aggregation.Expression.$regexFindAll + | Aggregation.Expression.$regexMatch + | Aggregation.Expression.$replaceAll + | Aggregation.Expression.$replaceOne + | Aggregation.Expression.$reverseArray + | Aggregation.Expression.$round + | Aggregation.Expression.$rtrim + | Aggregation.Expression.$second + | Aggregation.Expression.$setDifference + | Aggregation.Expression.$setEquals + | Aggregation.Expression.$setField + | Aggregation.Expression.$setIntersection + | Aggregation.Expression.$setIsSubset + | Aggregation.Expression.$setUnion + | Aggregation.Expression.$sin + | Aggregation.Expression.$sinh + | Aggregation.Expression.$size + | Aggregation.Expression.$slice + | Aggregation.Expression.$sortArray + | Aggregation.Expression.$split + | Aggregation.Expression.$sqrt + | Aggregation.Expression.$stdDevPop + | Aggregation.Expression.$stdDevSamp + | Aggregation.Expression.$strLenBytes + | Aggregation.Expression.$strLenCP + | Aggregation.Expression.$strcasecmp + | Aggregation.Expression.$substr + | Aggregation.Expression.$substrBytes + | Aggregation.Expression.$substrCP + | Aggregation.Expression.$subtract + | Aggregation.Expression.$sum + | Aggregation.Expression.$switch + | Aggregation.Expression.$tan + | Aggregation.Expression.$tanh + | Aggregation.Expression.$toBool + | Aggregation.Expression.$toDate + | Aggregation.Expression.$toDecimal + | Aggregation.Expression.$toDouble + | Aggregation.Expression.$toHashedIndexKey + | Aggregation.Expression.$toInt + | Aggregation.Expression.$toLong + | Aggregation.Expression.$toLower + | Aggregation.Expression.$toObjectId + | Aggregation.Expression.$toString + | Aggregation.Expression.$toUpper + | Aggregation.Expression.$trim + | Aggregation.Expression.$trunc + | Aggregation.Expression.$tsIncrement + | Aggregation.Expression.$tsSecond + | Aggregation.Expression.$type + | Aggregation.Expression.$unsetField + | Aggregation.Expression.$week + | Aggregation.Expression.$year + | Aggregation.Expression.$zip; export type ResolvesToAny = - | ExpressionOperators.$arrayElemAt - | ExpressionOperators.$cond - | ExpressionOperators.$convert - | ExpressionOperators.$first - | ExpressionOperators.$function - | ExpressionOperators.$getField - | ExpressionOperators.$ifNull - | ExpressionOperators.$last - | ExpressionOperators.$let - | ExpressionOperators.$literal - | ExpressionOperators.$max - | ExpressionOperators.$meta - | ExpressionOperators.$min - | ExpressionOperators.$reduce - | ExpressionOperators.$switch; -export type SwitchBranch = ExpressionOperators.$case; + | Aggregation.Expression.$arrayElemAt + | Aggregation.Expression.$cond + | Aggregation.Expression.$convert + | Aggregation.Expression.$first + | Aggregation.Expression.$function + | Aggregation.Expression.$getField + | Aggregation.Expression.$ifNull + | Aggregation.Expression.$last + | Aggregation.Expression.$let + | Aggregation.Expression.$literal + | Aggregation.Expression.$max + | Aggregation.Expression.$meta + | Aggregation.Expression.$min + | Aggregation.Expression.$reduce + | Aggregation.Expression.$switch; +export type SwitchBranch = Aggregation.Expression.$case; export type FieldQuery = - | QueryOperators.$all - | QueryOperators.$bitsAllClear - | QueryOperators.$bitsAllSet - | QueryOperators.$bitsAnyClear - | QueryOperators.$bitsAnySet - | QueryOperators.$elemMatch - | QueryOperators.$eq - | QueryOperators.$exists - | QueryOperators.$geoIntersects - | QueryOperators.$geoWithin - | QueryOperators.$gt - | QueryOperators.$gte - | QueryOperators.$in - | QueryOperators.$lt - | QueryOperators.$lte - | QueryOperators.$maxDistance - | QueryOperators.$minDistance - | QueryOperators.$mod - | QueryOperators.$ne - | QueryOperators.$near - | QueryOperators.$nearSphere - | QueryOperators.$nin - | QueryOperators.$not - | QueryOperators.$regex - | QueryOperators.$size - | QueryOperators.$type; -export type C_query = - | QueryOperators.$all - | QueryOperators.$and - | QueryOperators.$bitsAllClear - | QueryOperators.$bitsAllSet - | QueryOperators.$bitsAnyClear - | QueryOperators.$bitsAnySet - | QueryOperators.$box - | QueryOperators.$center - | QueryOperators.$centerSphere - | QueryOperators.$comment - | QueryOperators.$elemMatch - | QueryOperators.$eq - | QueryOperators.$exists - | QueryOperators.$expr - | QueryOperators.$geoIntersects - | QueryOperators.$geoWithin - | QueryOperators.$geometry - | QueryOperators.$gt - | QueryOperators.$gte - | QueryOperators.$in - | QueryOperators.$jsonSchema - | QueryOperators.$lt - | QueryOperators.$lte - | QueryOperators.$maxDistance - | QueryOperators.$minDistance - | QueryOperators.$mod - | QueryOperators.$ne - | QueryOperators.$near - | QueryOperators.$nearSphere - | QueryOperators.$nin - | QueryOperators.$nor - | QueryOperators.$not - | QueryOperators.$or - | QueryOperators.$polygon - | QueryOperators.$rand - | QueryOperators.$regex - | QueryOperators.$sampleRate - | QueryOperators.$size - | QueryOperators.$text - | QueryOperators.$type - | QueryOperators.$where; -export type C_search = - | SearchOperators.Autocomplete - | SearchOperators.Compound - | SearchOperators.EmbeddedDocument - | SearchOperators.Equals - | SearchOperators.Exists - | SearchOperators.Facet - | SearchOperators.GeoShape - | SearchOperators.GeoWithin - | SearchOperators.In - | SearchOperators.MoreLikeThis - | SearchOperators.Near - | SearchOperators.Phrase - | SearchOperators.QueryString - | SearchOperators.Range - | SearchOperators.Regex - | SearchOperators.Text - | SearchOperators.Wildcard; -export type C_stage = - | StageOperators.$addFields - | StageOperators.$bucket - | StageOperators.$bucketAuto - | StageOperators.$changeStream - | StageOperators.$changeStreamSplitLargeEvent - | StageOperators.$collStats - | StageOperators.$count - | StageOperators.$currentOp - | StageOperators.$densify - | StageOperators.$documents - | StageOperators.$facet - | StageOperators.$fill - | StageOperators.$geoNear - | StageOperators.$graphLookup - | StageOperators.$group - | StageOperators.$indexStats - | StageOperators.$limit - | StageOperators.$listLocalSessions - | StageOperators.$listSampledQueries - | StageOperators.$listSearchIndexes - | StageOperators.$listSessions - | StageOperators.$lookup - | StageOperators.$match - | StageOperators.$merge - | StageOperators.$out - | StageOperators.$planCacheStats - | StageOperators.$project - | StageOperators.$redact - | StageOperators.$replaceRoot - | StageOperators.$replaceWith - | StageOperators.$sample - | StageOperators.$search - | StageOperators.$searchMeta - | StageOperators.$set - | StageOperators.$setWindowFields - | StageOperators.$shardedDataDistribution - | StageOperators.$skip - | StageOperators.$sort - | StageOperators.$sortByCount - | StageOperators.$unionWith - | StageOperators.$unset - | StageOperators.$unwind - | StageOperators.$vectorSearch; + | Aggregation.Query.$all + | Aggregation.Query.$bitsAllClear + | Aggregation.Query.$bitsAllSet + | Aggregation.Query.$bitsAnyClear + | Aggregation.Query.$bitsAnySet + | Aggregation.Query.$elemMatch + | Aggregation.Query.$eq + | Aggregation.Query.$exists + | Aggregation.Query.$geoIntersects + | Aggregation.Query.$geoWithin + | Aggregation.Query.$gt + | Aggregation.Query.$gte + | Aggregation.Query.$in + | Aggregation.Query.$lt + | Aggregation.Query.$lte + | Aggregation.Query.$maxDistance + | Aggregation.Query.$minDistance + | Aggregation.Query.$mod + | Aggregation.Query.$ne + | Aggregation.Query.$near + | Aggregation.Query.$nearSphere + | Aggregation.Query.$nin + | Aggregation.Query.$not + | Aggregation.Query.$regex + | Aggregation.Query.$size + | Aggregation.Query.$type; +export type QueryOperator = + | Aggregation.Query.$all + | Aggregation.Query.$and + | Aggregation.Query.$bitsAllClear + | Aggregation.Query.$bitsAllSet + | Aggregation.Query.$bitsAnyClear + | Aggregation.Query.$bitsAnySet + | Aggregation.Query.$box + | Aggregation.Query.$center + | Aggregation.Query.$centerSphere + | Aggregation.Query.$elemMatch + | Aggregation.Query.$eq + | Aggregation.Query.$exists + | Aggregation.Query.$expr + | Aggregation.Query.$geoIntersects + | Aggregation.Query.$geoWithin + | Aggregation.Query.$geometry + | Aggregation.Query.$gt + | Aggregation.Query.$gte + | Aggregation.Query.$in + | Aggregation.Query.$jsonSchema + | Aggregation.Query.$lt + | Aggregation.Query.$lte + | Aggregation.Query.$maxDistance + | Aggregation.Query.$minDistance + | Aggregation.Query.$mod + | Aggregation.Query.$ne + | Aggregation.Query.$near + | Aggregation.Query.$nearSphere + | Aggregation.Query.$nin + | Aggregation.Query.$nor + | Aggregation.Query.$not + | Aggregation.Query.$or + | Aggregation.Query.$polygon + | Aggregation.Query.$rand + | Aggregation.Query.$regex + | Aggregation.Query.$sampleRate + | Aggregation.Query.$size + | Aggregation.Query.$text + | Aggregation.Query.$type + | Aggregation.Query.$where; +export type SearchOperator = + | Aggregation.Search.Autocomplete + | Aggregation.Search.Autocomplete + | Aggregation.Search.Compound + | Aggregation.Search.Compound + | Aggregation.Search.EmbeddedDocument + | Aggregation.Search.EmbeddedDocument + | Aggregation.Search.Equals + | Aggregation.Search.Equals + | Aggregation.Search.Exists + | Aggregation.Search.Exists + | Aggregation.Search.Facet + | Aggregation.Search.Facet + | Aggregation.Search.GeoShape + | Aggregation.Search.GeoShape + | Aggregation.Search.GeoWithin + | Aggregation.Search.GeoWithin + | Aggregation.Search.In + | Aggregation.Search.In + | Aggregation.Search.MoreLikeThis + | Aggregation.Search.MoreLikeThis + | Aggregation.Search.Near + | Aggregation.Search.Near + | Aggregation.Search.Phrase + | Aggregation.Search.Phrase + | Aggregation.Search.QueryString + | Aggregation.Search.QueryString + | Aggregation.Search.Range + | Aggregation.Search.Range + | Aggregation.Search.Regex + | Aggregation.Search.Regex + | Aggregation.Search.Text + | Aggregation.Search.Text + | Aggregation.Search.Wildcard + | Aggregation.Search.Wildcard; +export type StageOperator = + | Aggregation.Stage.$addFields + | Aggregation.Stage.$bucket + | Aggregation.Stage.$bucketAuto + | Aggregation.Stage.$changeStream + | Aggregation.Stage.$changeStreamSplitLargeEvent + | Aggregation.Stage.$collStats + | Aggregation.Stage.$count + | Aggregation.Stage.$currentOp + | Aggregation.Stage.$densify + | Aggregation.Stage.$documents + | Aggregation.Stage.$facet + | Aggregation.Stage.$fill + | Aggregation.Stage.$geoNear + | Aggregation.Stage.$graphLookup + | Aggregation.Stage.$group + | Aggregation.Stage.$indexStats + | Aggregation.Stage.$limit + | Aggregation.Stage.$listLocalSessions + | Aggregation.Stage.$listSampledQueries + | Aggregation.Stage.$listSearchIndexes + | Aggregation.Stage.$listSessions + | Aggregation.Stage.$lookup + | Aggregation.Stage.$match + | Aggregation.Stage.$merge + | Aggregation.Stage.$out + | Aggregation.Stage.$planCacheStats + | Aggregation.Stage.$project + | Aggregation.Stage.$redact + | Aggregation.Stage.$replaceRoot + | Aggregation.Stage.$replaceWith + | Aggregation.Stage.$sample + | Aggregation.Stage.$search + | Aggregation.Stage.$searchMeta + | Aggregation.Stage.$set + | Aggregation.Stage.$setWindowFields + | Aggregation.Stage.$shardedDataDistribution + | Aggregation.Stage.$skip + | Aggregation.Stage.$sort + | Aggregation.Stage.$sortByCount + | Aggregation.Stage.$unionWith + | Aggregation.Stage.$unset + | Aggregation.Stage.$unwind + | Aggregation.Stage.$vectorSearch; diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index e694583e..54b34aa1 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -43,10 +43,7 @@ "depcheck": "depcheck", "check": "npm run typecheck && npm run lint && npm run depcheck", "check-ci": "npm run check", - "test": "mocha", - "test-cov": "nyc -x \"**/*.spec.*\" --reporter=lcov --reporter=text --reporter=html npm run test", - "test-watch": "npm run test -- --watch", - "test-ci": "npm run test-cov", + "test": "tsc --noEmit tests/**/*.ts", "reformat": "npm run prettier -- --write .", "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", "pregenerate-schema": "npm run extract-metaschema", diff --git a/packages/mql-typescript/src/cli.ts b/packages/mql-typescript/src/cli.ts index 9e50062e..714eb6ff 100644 --- a/packages/mql-typescript/src/cli.ts +++ b/packages/mql-typescript/src/cli.ts @@ -1,7 +1,7 @@ import yargs from 'yargs'; import { SchemaGenerator } from './schemaGenerator'; -import { TestGenerator } from './testGenerator'; -import { DriverSchemaGenerator } from './driverSchemaGenerator'; +import { TestGenerator } from './testGenerator/testGenerator'; +import { DriverSchemaGenerator } from './driverSchema/driverSchemaGenerator'; async function main() { const argv = await yargs diff --git a/packages/mql-typescript/src/docsCrawler.ts b/packages/mql-typescript/src/driverSchema/docsCrawler.ts similarity index 65% rename from packages/mql-typescript/src/docsCrawler.ts rename to packages/mql-typescript/src/driverSchema/docsCrawler.ts index cddb97e8..4a7a1c9f 100644 --- a/packages/mql-typescript/src/docsCrawler.ts +++ b/packages/mql-typescript/src/driverSchema/docsCrawler.ts @@ -1,5 +1,5 @@ import JSON5 from 'json5'; -import { removeNewlines } from './utils'; +import { removeNewlines, removeTrailingComments } from '../utils'; import { getSimplifiedSchema } from 'mongodb-schema'; import type { SimplifiedSchema } from 'mongodb-schema'; import { JSDOM, VirtualConsole } from 'jsdom'; @@ -58,7 +58,7 @@ class IsoDateProcessor extends RegexCustomTypeProcessor { s || '00' }.${ms || '000'}${tz || 'Z'}`; const date = new Date(normalized); - // Make sur we're in the range 0000-01-01T00:00:00.000Z - 9999-12-31T23:59:59.999Z + // Make surd we're in the range 0000-01-01T00:00:00.000Z - 9999-12-31T23:59:59.999Z if ( date.getTime() >= -62167219200000 && date.getTime() <= 253402300799999 @@ -91,9 +91,19 @@ class ObjectIdProcessor extends RegexCustomTypeProcessor { } } +class UUIDProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bUUID\\(\\s*"([^"]*)"\\s*\\)'); + } + + public reviveCore(value: string): any { + return new BSON.UUID(value); + } +} + class NumberDecimalProcessor extends RegexCustomTypeProcessor { constructor() { - super('\\b(?:NumberDecimal|Decimal128)\\(\\s*"([^"]*)"\\s*\\)'); + super('\\b(?:NumberDecimal|Decimal128)\\(\\s*"?([^"]*)"?\\s*\\)'); } public reviveCore(value: string): any { @@ -152,7 +162,7 @@ class BinDataProcessor extends CustomTypeProcessor { class NumberIntProcessor extends RegexCustomTypeProcessor { constructor() { - super('\\bNumberInt\\(\\s*(\\d*)\\s*\\)'); + super('\\b(?:NumberInt|Int32)\\(\\s*"?(\\d*)\\"?\\s*\\)'); } public reviveCore(value: string): any { @@ -160,6 +170,33 @@ class NumberIntProcessor extends RegexCustomTypeProcessor { } } +class NumberLongProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bNumberLong\\(\\s*"?([\\d\.]*)"?\\s*\\)'); + } + + public reviveCore(value: string): any { + return new BSON.Long(value); + } +} + +class TimestampProcessor extends RegexCustomTypeProcessor { + constructor() { + super('\\bTimestamp\\(\\s*(\\d*,\\s*\\d*)\\s*\\)'); + } + + public reviveCore(value: string): any { + const match = /(?\d*),\s(?\d*)/.exec(value); + + if (match && match.groups) { + const { t, i } = match.groups; + return new BSON.Timestamp({ t: parseInt(t, 10), i: parseInt(i, 10) }); + } + + throw new Error(`Invalid Timestamp format: ${value}`); + } +} + export class DocsCrawler { constructor(private readonly url: string) { this.virtualConsole = new VirtualConsole(); @@ -172,7 +209,14 @@ export class DocsCrawler { private fuzzyParse(json: string): any[] | undefined { try { - return JSON5.parse(json) as any[]; + const result = JSON5.parse(json); + if (Array.isArray(result)) { + return result; + } + + if (typeof result === 'object') { + return [result]; + } } catch { // Ignore parse errors } @@ -189,17 +233,20 @@ export class DocsCrawler { } // Insert commas between array elements - json = json.replace(/\}\{/g, '},{'); + json = json.replace(/\}\s*\{/g, '},{'); const processors: CustomTypeProcessor[] = [ new IsoDateProcessor(), new DateProcessor(), new ObjectIdProcessor(), + new UUIDProcessor(), new NumberDecimalProcessor(), new UndefinedProcessor(), new NullProcessor(), new BinDataProcessor(), new NumberIntProcessor(), + new NumberLongProcessor(), + new TimestampProcessor(), ]; for (const processor of processors) { @@ -209,7 +256,7 @@ export class DocsCrawler { try { // The docs use quoted/unquoted shell syntax inconsistently, so use JSON5 instead of regular JSON // to parse the documents. - return JSON5.parse(json, (key, value) => { + const result = JSON5.parse(json, (key, value) => { for (const processor of processors) { if (processor.canRevive(value)) { return processor.revive(value); @@ -217,7 +264,17 @@ export class DocsCrawler { } return value; - }) as any[]; + }); + + if (Array.isArray(result)) { + return result; + } + + if (typeof result === 'object') { + return [result]; + } + + throw new Error(`Unexpected json output: ${result}`); } catch (e) { const message = e instanceof Error ? e.message : String(e); console.error('Failed to parse JSON', json, message); @@ -227,23 +284,44 @@ export class DocsCrawler { private getInsertionCode( element: Element | null | undefined, + extendedSearch = false, ): { collectionName: string; documents: unknown[] } | undefined { - const codeSnippetJson = element?.querySelector('script')?.innerHTML; + if (!element) { + return undefined; + } - if (codeSnippetJson !== undefined) { - let codeSnippet = removeNewlines( - JSON.parse(codeSnippetJson).text as string, - ); + // For concrete examples we only want the first code snippet as the second + // typically shows the output. Conversely, for the "Examples" section, we want + // all code snippets as it's possible that the first one is not the insertion code. + // E.g. https://www.mongodb.com/docs/manual/reference/operator/query/text/#examples + const snippets = [...element.querySelectorAll('script')].slice( + 0, + extendedSearch ? 2 : 1, + ); + + for (const snippet of snippets) { + let codeSnippet = JSON.parse(snippet.innerHTML).text as string; + + codeSnippet = removeTrailingComments(codeSnippet); + codeSnippet = removeNewlines(codeSnippet); let collectionName: string | undefined = undefined; const insertionCode = - /db\.(?[^.]*)\.(insertMany|insertOne)\(\s*(?(?:\[|{).*(?:]|}))\s*\)/gm.exec( + /db(?:\..*)?\.(?[^.]*)\.(insertMany|insertOne)\s*\(\s*(?(?:\[|{).*(?:]|}))\s*\)/gm.exec( codeSnippet, ); if (insertionCode && insertionCode.groups) { collectionName = insertionCode.groups.collectionName; codeSnippet = insertionCode.groups.documents; + } else { + const aggregationDocs = + /db\.aggregate\(\s*\[\s*{\s*\$documents:\s*(?\[.*])\s*},\s*{\s*\$/gm.exec( + codeSnippet, + ); + if (aggregationDocs && aggregationDocs.groups) { + codeSnippet = aggregationDocs.groups.documents; + } } const documents = this.fuzzyParse(codeSnippet); @@ -263,9 +341,11 @@ export class DocsCrawler { // Sometimes insertion code for the collection will be in the parent examples section. We fallback to it if we can't find it in the current section. while (element) { element = element?.parentElement?.closest('section'); - const examples = element?.querySelector("a[href='#examples']"); + const examples = + element?.querySelector("a[href='#examples']") ?? + element?.querySelector("a[href='#example']"); if (examples) { - return this.getInsertionCode(element); + return this.getInsertionCode(element, true); } } @@ -280,22 +360,28 @@ export class DocsCrawler { return; } - const dom = await JSDOM.fromURL(this.url, { - virtualConsole: this.virtualConsole, - }); - const exampleSection = dom.window.document - .querySelector(`a[href='${fragment}']:not([target])`) - ?.closest('section'); + try { + const dom = await JSDOM.fromURL(this.url, { + virtualConsole: this.virtualConsole, + }); + const exampleSection = dom.window.document + .querySelector(`a[href='${fragment}']:not([target])`) + ?.closest('section'); - const insertionCode = this.getInsertionCode(exampleSection); + const insertionCode = this.getInsertionCode(exampleSection); - if (!insertionCode) { + if (!insertionCode) { + return; + } + + return { + schema: await getSimplifiedSchema(insertionCode.documents), + collectionName: insertionCode.collectionName, + }; + } catch (e) { + const message = e instanceof Error ? e.message : String(e); + console.error('Failed to parse schema', this.url, message); return; } - - return { - schema: await getSimplifiedSchema(insertionCode.documents), - collectionName: insertionCode.collectionName, - }; } } diff --git a/packages/mql-typescript/src/driverSchemaGenerator.ts b/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts similarity index 60% rename from packages/mql-typescript/src/driverSchemaGenerator.ts rename to packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts index 444b355e..6076a702 100644 --- a/packages/mql-typescript/src/driverSchemaGenerator.ts +++ b/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts @@ -1,13 +1,16 @@ -import { GeneratorBase, YamlFiles } from './generator'; -import { Operator } from './metaschema'; +import { GeneratorBase, YamlFiles } from '../generator'; +import { Operator } from '../metaschema'; import * as yaml from 'js-yaml'; import * as fs from 'fs/promises'; import { DocsCrawler } from './docsCrawler'; +import { spawn } from 'child_process'; +import path from 'path'; +import { getStaticSchema } from './staticSchemas'; type TestType = NonNullable[number]; export class DriverSchemaGenerator extends GeneratorBase { - private async getYamlSchema(test: TestType): Promise { + private async getSchemaFromDocs(test: TestType): Promise { if (!test.link) { console.error(`No docs reference found for ${test.name}`); return '// TODO: No docs reference found'; @@ -19,6 +22,7 @@ export class DriverSchemaGenerator extends GeneratorBase { const docsCrawler = new DocsCrawler(test.link); const schema = await docsCrawler.getSchema(); + if (!schema) { console.error( `Could not extract schema for ${test.name} at ${test.link}`, @@ -31,20 +35,27 @@ export class DriverSchemaGenerator extends GeneratorBase { }; } - private async updateTestSchema(test: TestType, rawYaml: any): Promise { + private async updateTestSchema({ + category, + operator, + test, + rawYaml, + }: { + category: string; + operator: string; + test: TestType; + rawYaml: any; + }): Promise { const yamlTest = rawYaml.tests.find( (t: { name: string }) => t.name === test.name, ); - yamlTest.schema = await this.getYamlSchema(test); + yamlTest.schema = + getStaticSchema({ category, operator, test: test.name! }) ?? + (await this.getSchemaFromDocs(test)); } override async generateImpl(yamlFiles: YamlFiles): Promise { - const problematicTests = [ - // 'https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/#example', - '', - ]; - for await (const file of yamlFiles) { for await (const operator of file.operators()) { const parsed = Operator.parse(operator.yaml); @@ -57,10 +68,12 @@ export class DriverSchemaGenerator extends GeneratorBase { } for (const test of parsed.tests ?? []) { - // if (!test.link || !problematicTests.includes(test.link)) { - // continue; - // } - await this.updateTestSchema(test, operatorYaml); + await this.updateTestSchema({ + category: file.category, + operator: operatorYaml.name, + test, + rawYaml: operatorYaml, + }); } let updatedYaml = yaml.dump(operatorYaml, { @@ -74,5 +87,21 @@ export class DriverSchemaGenerator extends GeneratorBase { await fs.writeFile(operator.path, updatedYaml, 'utf8'); } } + + const process = spawn('yamlfix', [ + '-c', + path.join(this.configDir, '.yamlfix.toml'), + this.configDir, + ]); + + await new Promise((resolve, reject) => { + process.once('exit', (code) => { + if (code !== 0) { + reject(new Error(`yamlfix exited with code ${code}`)); + } else { + resolve(undefined); + } + }); + }); } } diff --git a/packages/mql-typescript/src/driverSchema/staticSchemas.ts b/packages/mql-typescript/src/driverSchema/staticSchemas.ts new file mode 100644 index 00000000..bc98b516 --- /dev/null +++ b/packages/mql-typescript/src/driverSchema/staticSchemas.ts @@ -0,0 +1,1630 @@ +import { SimplifiedSchema } from 'mongodb-schema'; +import { types } from 'util'; + +interface SchemaInfo { + collectionName: string; + schema: SimplifiedSchema; +} + +const geoPolygonSchema: SchemaInfo = { + collectionName: 'places', + schema: { + loc: { + types: [ + { + bsonType: 'Document', + fields: { + type: { + types: [{ bsonType: 'String' }], + }, + coordinates: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Array', + types: [{ bsonType: 'Double' }], + }, + ], + }, + ], + }, + ], + }, + }, + }, + ], + }, + }, +}; + +const geoPointSchema: SchemaInfo = { + collectionName: 'places', + schema: { + location: { + types: [ + { + bsonType: 'Document', + fields: { + type: { + types: [{ bsonType: 'String' }], + }, + coordinates: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Double', + }, + ], + }, + ], + }, + }, + }, + ], + }, + }, +}; + +const inventorySchema: SchemaInfo = { + collectionName: 'inventory', + schema: { + price: { + types: [{ bsonType: 'Double' }], + }, + qty: { + types: [{ bsonType: 'Int32' }, { bsonType: 'Undefined' }], + }, + sale: { + types: [{ bsonType: 'Boolean' }], + }, + }, +}; + +const mflixMoviesSchema: SchemaInfo = { + collectionName: 'movies', + schema: { + _id: { + types: [ + { + bsonType: 'Document', + fields: { $oid: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + title: { types: [{ bsonType: 'String' }] }, + year: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + runtime: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + released: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + ], + }, + poster: { types: [{ bsonType: 'String' }] }, + plot: { types: [{ bsonType: 'String' }] }, + fullplot: { types: [{ bsonType: 'String' }] }, + lastupdated: { types: [{ bsonType: 'String' }] }, + type: { types: [{ bsonType: 'String' }] }, + directors: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, + imdb: { + types: [ + { + bsonType: 'Document', + fields: { + rating: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDouble: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + votes: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + id: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + }, + }, + ], + }, + cast: { types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }] }, + countries: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, + genres: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, + tomatoes: { + types: [ + { + bsonType: 'Document', + fields: { + viewer: { + types: [ + { + bsonType: 'Document', + fields: { + rating: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDouble: { + types: [{ bsonType: 'String' }], + }, + }, + }, + ], + }, + numReviews: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + ], + }, + lastUpdated: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + num_mflix_comments: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + }, +}; + +const sampleSuppliesSalesSchema: SchemaInfo = { + collectionName: 'sales', + schema: { + _id: { + types: [ + { + bsonType: 'Document', + fields: { $oid: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + saleDate: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + ], + }, + items: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Document', + fields: { + name: { types: [{ bsonType: 'String' }] }, + tags: { + types: [ + { bsonType: 'Array', types: [{ bsonType: 'String' }] }, + ], + }, + price: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + quantity: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + ], + }, + ], + }, + storeLocation: { types: [{ bsonType: 'String' }] }, + customer: { + types: [ + { + bsonType: 'Document', + fields: { + gender: { types: [{ bsonType: 'String' }] }, + age: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + email: { types: [{ bsonType: 'String' }] }, + satisfaction: { + types: [ + { + bsonType: 'Document', + fields: { $numberInt: { types: [{ bsonType: 'String' }] } }, + }, + ], + }, + }, + }, + ], + }, + couponUsed: { types: [{ bsonType: 'Boolean' }] }, + purchaseMethod: { types: [{ bsonType: 'String' }] }, + }, +}; + +const listingsAndReviewsSchema: SchemaInfo = { + collectionName: 'listingsAndReviews', + schema: { + _id: { + types: [ + { + bsonType: 'String', + }, + ], + }, + listing_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + name: { + types: [ + { + bsonType: 'String', + }, + ], + }, + summary: { + types: [ + { + bsonType: 'String', + }, + ], + }, + interaction: { + types: [ + { + bsonType: 'String', + }, + ], + }, + house_rules: { + types: [ + { + bsonType: 'String', + }, + ], + }, + property_type: { + types: [ + { + bsonType: 'String', + }, + ], + }, + room_type: { + types: [ + { + bsonType: 'String', + }, + ], + }, + bed_type: { + types: [ + { + bsonType: 'String', + }, + ], + }, + minimum_nights: { + types: [ + { + bsonType: 'String', + }, + ], + }, + maximum_nights: { + types: [ + { + bsonType: 'String', + }, + ], + }, + cancellation_policy: { + types: [ + { + bsonType: 'String', + }, + ], + }, + last_scraped: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + calendar_last_scraped: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + first_review: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + last_review: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + accommodates: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + bedrooms: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + beds: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + number_of_reviews: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + bathrooms: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + amenities: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'String', + }, + ], + }, + ], + }, + price: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + security_deposit: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + cleaning_fee: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + extra_people: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + guests_included: { + types: [ + { + bsonType: 'Document', + fields: { + $numberDecimal: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + images: { + types: [ + { + bsonType: 'Document', + fields: { + thumbnail_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + medium_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + picture_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + xl_picture_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + host: { + types: [ + { + bsonType: 'Document', + fields: { + host_id: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_name: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_location: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_about: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_response_time: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_thumbnail_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_picture_url: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_neighbourhood: { + types: [ + { + bsonType: 'String', + }, + ], + }, + host_response_rate: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + host_is_superhost: { + types: [ + { + bsonType: 'Boolean', + }, + ], + }, + host_has_profile_pic: { + types: [ + { + bsonType: 'Boolean', + }, + ], + }, + host_identity_verified: { + types: [ + { + bsonType: 'Boolean', + }, + ], + }, + host_listings_count: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + host_total_listings_count: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + host_verifications: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'String', + }, + ], + }, + ], + }, + }, + }, + ], + }, + address: { + types: [ + { + bsonType: 'Document', + fields: { + street: { + types: [ + { + bsonType: 'String', + }, + ], + }, + suburb: { + types: [ + { + bsonType: 'String', + }, + ], + }, + government_area: { + types: [ + { + bsonType: 'String', + }, + ], + }, + market: { + types: [ + { + bsonType: 'String', + }, + ], + }, + country: { + types: [ + { + bsonType: 'String', + }, + ], + }, + country_code: { + types: [ + { + bsonType: 'String', + }, + ], + }, + location: { + types: [ + { + bsonType: 'Document', + fields: { + type: { + types: [ + { + bsonType: 'String', + }, + ], + }, + coordinates: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Document', + fields: { + $numberDouble: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + ], + }, + is_location_exact: { + types: [ + { + bsonType: 'Boolean', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + availability: { + types: [ + { + bsonType: 'Document', + fields: { + availability_30: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + availability_60: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + availability_90: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + availability_365: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + review_scores: { + types: [ + { + bsonType: 'Document', + fields: { + review_scores_accuracy: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + review_scores_cleanliness: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + review_scores_checkin: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + review_scores_communication: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + review_scores_location: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + review_scores_value: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + review_scores_rating: { + types: [ + { + bsonType: 'Document', + fields: { + $numberInt: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + reviews: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Document', + fields: { + _id: { + types: [ + { + bsonType: 'String', + }, + ], + }, + date: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Document', + fields: { + $numberLong: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + listing_id: { + types: [ + { + bsonType: 'String', + }, + ], + }, + reviewer_id: { + types: [ + { + bsonType: 'String', + }, + ], + }, + reviewer_name: { + types: [ + { + bsonType: 'String', + }, + ], + }, + comments: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + ], + }, + }, +}; + +const analyticsCustomersSchema: SchemaInfo = { + collectionName: 'customers', + schema: { + username: { + types: [ + { + bsonType: 'String', + }, + ], + }, + name: { + types: [ + { + bsonType: 'String', + }, + ], + }, + address: { + types: [ + { + bsonType: 'String', + }, + ], + }, + birthdate: { + types: [ + { + bsonType: 'Document', + fields: { + $date: { + types: [ + { + bsonType: 'Double', + }, + ], + }, + }, + }, + ], + }, + email: { + types: [ + { + bsonType: 'String', + }, + ], + }, + accounts: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'Double', + }, + ], + }, + ], + }, + tier_and_details: { + types: [ + { + bsonType: 'Document', + fields: { + b5f19cb532fa436a9be2cf1d7d1cac8a: { + types: [ + { + bsonType: 'Document', + fields: { + tier: { + types: [ + { + bsonType: 'String', + }, + ], + }, + benefits: { + types: [ + { + bsonType: 'Array', + types: [ + { + bsonType: 'String', + }, + ], + }, + ], + }, + active: { + types: [ + { + bsonType: 'Boolean', + }, + ], + }, + id: { + types: [ + { + bsonType: 'String', + }, + ], + }, + }, + }, + ], + }, + }, + }, + ], + }, + }, +}; + +const dummySchema: SchemaInfo = { + collectionName: 'TestCollection', + schema: { + _id: { + types: [ + { + bsonType: 'ObjectId', + }, + ], + }, + }, +}; + +type SchemaMap = { + [key: string]: SchemaMap | SchemaInfo; +}; + +const staticSchemas: SchemaMap = { + expression: { + dateFromParts: { + Example: { + collectionName: 'sales', + schema: { + _id: { + types: [{ bsonType: 'ObjectId' }], + }, + }, + }, + }, + setIntersection: { + ['Retrieve Documents for Roles Granted to the Current User']: { + collectionName: 'budget', + schema: { + _id: { + types: [{ bsonType: 'Int32' }], + }, + allowedRoles: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, + comment: { + types: [{ bsonType: 'String' }], + }, + yearlyBudget: { + types: [{ bsonType: 'Double' }], + }, + cloudBudget: { + types: [{ bsonType: 'Double' }, { bsonType: 'Undefined' }], + }, + salesEventsBudget: { + types: [{ bsonType: 'Double' }, { bsonType: 'Undefined' }], + }, + }, + }, + }, + dateAdd: { + 'Filter on a Date Range': { + collectionName: 'shipping', + schema: { + custId: { + types: [{ bsonType: 'Int32' }], + }, + purchaseDate: { + types: [{ bsonType: 'Date' }], + }, + deliveryDate: { + types: [{ bsonType: 'Date' }], + }, + }, + }, + }, + }, + query: { + and: inventorySchema, + exists: { + ['Exists and Not Equal To']: inventorySchema, + }, + geoIntersects: geoPolygonSchema, + geoWithin: geoPointSchema, + jsonSchema: { + collectionName: 'TestCollection', + schema: { + name: { + types: [{ bsonType: 'String' }], + }, + major: { + types: [{ bsonType: 'String' }], + }, + gpa: { + types: [{ bsonType: 'Double' }], + }, + address: { + types: [ + { + bsonType: 'Document', + fields: { + street: { types: [{ bsonType: 'String' }] }, + zipcode: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + near: geoPointSchema, + nearSphere: geoPointSchema, + nor: inventorySchema, + not: inventorySchema, + or: { + ['$or Clauses']: inventorySchema, + ['Error Handling']: { + collectionName: 'example', + schema: { + x: { + types: [{ bsonType: 'Int32' }], + }, + }, + }, + }, + sampleRate: dummySchema, + size: inventorySchema, + }, + search: { + autocomplete: mflixMoviesSchema, + embeddedDocument: sampleSuppliesSalesSchema, + facet: mflixMoviesSchema, + geoShape: listingsAndReviewsSchema, + geoWithin: listingsAndReviewsSchema, + in: analyticsCustomersSchema, + moreLikeThis: mflixMoviesSchema, + near: { + Number: mflixMoviesSchema, + Date: mflixMoviesSchema, + ['GeoJSON Point']: listingsAndReviewsSchema, + Compound: listingsAndReviewsSchema, + }, + phrase: mflixMoviesSchema, + queryString: mflixMoviesSchema, + range: mflixMoviesSchema, + regex: mflixMoviesSchema, + text: mflixMoviesSchema, + wildcard: mflixMoviesSchema, + }, + stage: { + sort: { + collectionName: 'users', + schema: { + age: { types: [{ bsonType: 'Int32' }] }, + posts: { types: [{ bsonType: 'Int32' }] }, + name: { types: [{ bsonType: 'String' }] }, + }, + }, + bucketAuto: { + collectionName: 'artwork', + schema: { + _id: { types: [{ bsonType: 'Int32' }] }, + title: { types: [{ bsonType: 'String' }] }, + artist: { types: [{ bsonType: 'String' }] }, + year: { types: [{ bsonType: 'Int32' }] }, + price: { types: [{ bsonType: 'Decimal128' }] }, + dimensions: { + types: [ + { + bsonType: 'Document', + fields: { + height: { types: [{ bsonType: 'Int32' }] }, + width: { types: [{ bsonType: 'Int32' }] }, + units: { types: [{ bsonType: 'String' }] }, + }, + }, + ], + }, + }, + }, + changeStream: { + collectionName: 'names', + schema: { + _id: { + types: [{ bsonType: 'ObjectId' }], + }, + }, + }, + changeStreamSplitLargeEvent: { + collectionName: 'myCollection', + schema: { + _id: { types: [{ bsonType: 'Int32' }] }, + largeField: { types: [{ bsonType: 'String' }] }, + }, + }, + collStats: dummySchema, + currentOp: dummySchema, + limit: dummySchema, + listLocalSessions: dummySchema, + listSampledQueries: dummySchema, + listSearchIndexes: dummySchema, + listSessions: dummySchema, + search: mflixMoviesSchema, + searchMeta: mflixMoviesSchema, + shardedDataDistribution: dummySchema, + skip: dummySchema, + }, +}; + +export function getStaticSchema({ + category, + operator, + test, +}: { + category: string; + operator: string; + test: string; +}): + | { + [collectionName: string]: SimplifiedSchema; + } + | undefined { + if (operator.startsWith('$')) { + operator = operator.slice(1); + } + return getStaticSchemaByKeys([category, operator, test], staticSchemas); +} + +function getStaticSchemaByKeys( + keys: string[], + map: SchemaMap, +): { [collectionName: string]: SimplifiedSchema } | undefined { + if (keys.length === 0) { + return undefined; + } + + const [key, ...rest] = keys; + const value = map[key]; + if (typeof value === 'object') { + if ('collectionName' in value && typeof value.collectionName === 'string') { + return { + [value.collectionName]: value.schema as SimplifiedSchema, + }; + } + + return getStaticSchemaByKeys(rest, value as SchemaMap); + } + + return undefined; +} diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index 92846598..64f7b3d3 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -7,16 +7,56 @@ import * as bson from 'bson'; export type YamlFiles = ReturnType; +class BsonDate extends Date { + constructor(value: string | number | Date) { + if (typeof value === 'string') { + const number = Number(value); + if (!Number.isNaN(number)) { + value = number; + } + } + super(value); + } + + toString(): string { + if (this.getTime() === 0) { + return '0'; + } + + return this.toISOString(); + } +} + export abstract class GeneratorBase { private outputBuffer: StringWriter | undefined; private outputStream?: NodeJS.WritableStream; + constructor() { + if ('implicit' in yaml.DEFAULT_SCHEMA) { + const implicit = yaml.DEFAULT_SCHEMA.implicit as yaml.Type[]; + const timestamp = implicit.find((type) => type.instanceOf === Date); + if (timestamp) { + timestamp.instanceOf = null; + timestamp.predicate = (data) => { + return data instanceof Date && !(data instanceof BsonDate); + }; + } + } + } + public static loadOptions: yaml.LoadOptions = { schema: yaml.DEFAULT_SCHEMA.extend([ new yaml.Type('!bson_utcdatetime', { kind: 'scalar', construct(data) { - return new Date(data); + return new BsonDate(data); + }, + instanceOf: BsonDate, + represent(data) { + if (data instanceof BsonDate) { + return data.toString(); + } + throw new Error(`Expected Date, but got ${data.constructor.name}`); }, }), new yaml.Type('!bson_objectId', { @@ -24,53 +64,125 @@ export abstract class GeneratorBase { construct(data) { return bson.ObjectId.createFromHexString(data); }, + predicate(data) { + return data instanceof bson.ObjectId; + }, + represent(data) { + if (data instanceof bson.ObjectId) { + return data.toHexString(); + } + + throw new Error( + `Expected bson.ObjectId, but got ${data.constructor.name}`, + ); + }, }), new yaml.Type('!bson_uuid', { kind: 'scalar', construct(data) { return bson.UUID.createFromHexString(data); }, + predicate(data) { + return data instanceof bson.UUID; + }, + represent(data) { + if (data instanceof bson.UUID) { + return data.toHexString(); + } + + throw new Error( + `Expected bson.UUID, but got ${data.constructor.name}`, + ); + }, }), new yaml.Type('!bson_regex', { kind: 'scalar', construct(data) { return new bson.BSONRegExp(data); }, + predicate(data) { + return data instanceof bson.BSONRegExp && !data.options; + }, + represent(data) { + if (data instanceof bson.BSONRegExp) { + return data.pattern; + } + + throw new Error( + `Expected bson.BSONRegExp, but got ${data.constructor.name}`, + ); + }, }), new yaml.Type('!bson_regex', { kind: 'sequence', construct([data, flags]) { return new bson.BSONRegExp(data, flags); }, + predicate(data) { + return data instanceof bson.BSONRegExp && !!data.options; + }, + represent(data) { + if (data instanceof bson.BSONRegExp) { + return [data.pattern, data.options]; + } + + throw new Error( + `Expected bson.BSONRegExp, but got ${data.constructor.name}`, + ); + }, }), new yaml.Type('!bson_binary', { kind: 'scalar', - construct([data]) { + construct(data) { return bson.Binary.createFromBase64(data); }, + predicate(data) { + return data instanceof bson.Binary; + }, + represent(data) { + if (data instanceof bson.Binary) { + return data.toString('base64'); + } + + throw new Error( + `Expected bson.Binary, but got ${data.constructor.name}`, + ); + }, }), new yaml.Type('!bson_decimal128', { kind: 'scalar', - construct([data]) { + construct(data) { return bson.Decimal128.fromString(data); }, + predicate(data) { + return data instanceof bson.Decimal128; + }, + represent(data) { + if (data instanceof bson.Decimal128) { + return data.toString(); + } + + throw new Error( + `Expected bson.Decimal128, but got ${data.constructor.name}`, + ); + }, }), ]), }; + protected configDir = path.join( + __dirname, + '..', + 'mongo-php-library', + 'generator', + 'config', + ); + private async *listCategories(): AsyncIterable<{ category: string; folder: string; }> { - const configDir = path.join( - __dirname, - '..', - 'mongo-php-library', - 'generator', - 'config', - ); - - for await (const folder of await fs.readdir(configDir, { + for await (const folder of await fs.readdir(this.configDir, { withFileTypes: true, })) { if (folder.isDirectory()) { diff --git a/packages/mql-typescript/src/index.ts b/packages/mql-typescript/src/index.ts index 18046888..118fa4c2 100644 --- a/packages/mql-typescript/src/index.ts +++ b/packages/mql-typescript/src/index.ts @@ -1,2 +1,2 @@ export { SchemaGenerator } from './schemaGenerator'; -export { TestGenerator } from './testGenerator'; +export { TestGenerator } from './testGenerator/testGenerator'; diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts index 3948cc9e..fd515496 100644 --- a/packages/mql-typescript/src/metaschema.ts +++ b/packages/mql-typescript/src/metaschema.ts @@ -50,8 +50,10 @@ export const Operator = z 'pipeline', 'window', 'expression', + 'expressionMap', 'geometry', 'fieldPath', + 'unprefixedFieldPath', 'timeUnit', 'sortSpec', 'any', @@ -128,6 +130,14 @@ export const Operator = z .union([z.array(z.any()), z.boolean(), z.number(), z.string()]) .optional(), mergeObject: z.boolean().default(false), + syntheticVariables: z + .array( + z.object({ + name: z.string().regex(new RegExp('^[$]?[a-zA-Z0-9]*$')), + description: z.string().optional(), + }), + ) + .optional(), }) .strict(), ) @@ -161,6 +171,7 @@ export const Operator = z 'Double', 'Int32', 'Int64', + 'Long', 'MaxKey', 'MinKey', 'Null', diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schemaGenerator.ts index dc2e88da..0b443050 100644 --- a/packages/mql-typescript/src/schemaGenerator.ts +++ b/packages/mql-typescript/src/schemaGenerator.ts @@ -7,6 +7,10 @@ type ArgType = NonNullable< typeof Operator._type.arguments >[number]['type'][number]; +type SyntheticVariables = NonNullable< + typeof Operator._type.arguments +>[number]['syntheticVariables']; + export class SchemaGenerator extends GeneratorBase { constructor() { super(); @@ -27,7 +31,6 @@ export class SchemaGenerator extends GeneratorBase { date: 'Date', null: 'null', timestamp: 'bson.Timestamp', - decimal: 'bson.Decimal128', array: 'unknown[]', binData: 'bson.Binary', objectId: 'bson.ObjectId', @@ -36,11 +39,16 @@ export class SchemaGenerator extends GeneratorBase { }; private typeMappings: Record = { - int: ['number', 'bson.Int32'], - double: ['number', 'bson.Double'], - regex: ['RegExp', 'bson.BSONRegExp'], - long: ['bigint', 'bson.Long'], - javascript: ['bson.Code', 'Function'], + int: ['number', 'bson.Int32', '{ $numberInt: string }'], + double: ['number', 'bson.Double', '{ $numberDouble: string }'], + decimal: ['bson.Decimal128', '{ $numberDecimal: string }'], + regex: [ + 'RegExp', + 'bson.BSONRegExp', + '{ pattern: string, options?: string }', + ], + long: ['bigint', 'bson.Long', '{ $numberLong: string }'], + javascript: ['bson.Code', 'Function', 'string'], number: [ this.toTypeName('int'), @@ -73,6 +81,9 @@ export class SchemaGenerator extends GeneratorBase { geoPoint: ['unknown'], sortSpec: ['-1', '1'], timeUnit: [ + '"year"', + '"quarter"', + '"month"', '"week"', '"day"', '"hour"', @@ -85,24 +96,26 @@ export class SchemaGenerator extends GeneratorBase { whenNotMatched: ['string'], expression_S: [ - this.toTypeName('C_expression'), + this.toTypeName('ExpressionOperator'), this.toTypeName('fieldPath'), this.toTypeName('bsonPrimitive'), 'FieldExpression', 'FieldPath[]', ], - stage_S: [this.toTypeName('C_stage')], + expressionMap_S: [`{ [k: string]: ${this.toTypeName('Expression')} }`], + stage_S: [this.toTypeName('StageOperator')], pipeline_S: [this.toTypeName('stage[]')], query_S: [ - this.toTypeName('C_query'), + this.toTypeName('QueryOperator'), 'Partial<{ [k in keyof S]: Condition }>', ], accumulator_S: [], - searchOperator_S: [], + // searchOperator_S: [], geometry_S: [], // Need to be adjusted to match the real schema fieldPath_S: ['`$${AFieldPath}`'], + unprefixedFieldPath_S: ['AFieldPath'], numberFieldPath_S: [this.toTypeFieldTypeName('number')], doubleFieldPath_S: [this.toTypeFieldTypeName('double')], stringFieldPath_S: [this.toTypeFieldTypeName('string')], @@ -121,66 +134,89 @@ export class SchemaGenerator extends GeneratorBase { decimalFieldPath_S: [this.toTypeFieldTypeName('decimal')], resolvesToNumber_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('numberFieldPath'), this.toTypeName('number'), + this.toTypeName('resolvesToInt'), + this.toTypeName('resolvesToDouble'), + this.toTypeName('resolvesToLong'), + this.toTypeName('resolvesToDecimal'), ], resolvesToDouble_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('doubleFieldPath'), this.toTypeName('double'), ], resolvesToString_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('stringFieldPath'), this.toTypeName('string'), ], resolvesToObject_S: [ + "'$$ROOT'", + this.toTypeName('resolvesToAny'), this.toTypeName('objectFieldPath'), this.toTypeName('object'), ], resolvesToArray_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('arrayFieldPath'), this.toTypeName('array'), ], resolvesToBinData_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('binDataFieldPath'), this.toTypeName('binData'), ], resolvesToObjectId_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('objectIdFieldPath'), this.toTypeName('objectId'), ], resolvesToBool_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('boolFieldPath'), this.toTypeName('bool'), ], resolvesToDate_S: [ + "'$$NOW'", + this.toTypeName('resolvesToAny'), this.toTypeName('dateFieldPath'), this.toTypeName('date'), ], resolvesToNull_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('nullFieldPath'), this.toTypeName('null'), ], resolvesToRegex_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('regexFieldPath'), this.toTypeName('regex'), ], resolvesToJavascript_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('javascriptFieldPath'), this.toTypeName('javascript'), ], resolvesToInt_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('intFieldPath'), this.toTypeName('int'), ], resolvesToTimestamp_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('timestampFieldPath'), this.toTypeName('timestamp'), + "'$clusterTime'", ], resolvesToLong_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('longFieldPath'), this.toTypeName('long'), ], resolvesToDecimal_S: [ + this.toTypeName('resolvesToAny'), this.toTypeName('decimalFieldPath'), this.toTypeName('decimal'), ], @@ -208,13 +244,25 @@ export class SchemaGenerator extends GeneratorBase { `); } - private getArgumentTypeName(type: ArgType): string | undefined { + private getArgumentTypeName( + type: ArgType, + syntheticVariables?: SyntheticVariables, + ): string | undefined { if (this.typeMappings[type]) { return this.toTypeName(type); } if (this.typeMappings[`${type}_S`]) { - return this.toTypeName(`${type}`); + let genericArg = 'S'; + if (syntheticVariables) { + // If we have synthetic variables for this argument, we need to construct a temporary type and merge it with S + const syntheticFields = syntheticVariables + .map((v) => `${this.toComment(v.description)}$${v.name}: any`) + .join(';\n'); + + genericArg = `S & { ${syntheticFields}; }`; + } + return this.toTypeName(`${type}<${genericArg}>`); } if (this.trivialTypeMappings[type]) { @@ -233,7 +281,7 @@ export class SchemaGenerator extends GeneratorBase { } for (const type of arg.type) { - const name = this.getArgumentTypeName(type); + const name = this.getArgumentTypeName(type, arg.syntheticVariables); if (!name) { throw new Error(`Unknown type ${type}`); @@ -316,7 +364,7 @@ export class SchemaGenerator extends GeneratorBase { this.emitHeader(); for await (const file of yamlFiles) { - const namespace = `${capitalize(file.category)}Operators`; + const namespace = `Aggregation.${capitalize(file.category)}`; this.emit(`export namespace ${namespace} {\n`); for await (const operator of file.operators()) { @@ -337,12 +385,11 @@ export class SchemaGenerator extends GeneratorBase { `${namespace}.${ifaceName}`, ); } - for (const type of parsed.type) { - // TODO: why? - (this.typeMappings[`C_${file.category}_S`] ??= []).push( - `${namespace}.${ifaceName}`, - ); - } + + (this.typeMappings[`${file.category}Operator_S`] ??= []).push( + `${namespace}.${ifaceName}`, + ); + if (!parsed.arguments) { this.emit(`Record`); } else { diff --git a/packages/mql-typescript/src/testGenerator.ts b/packages/mql-typescript/src/testGenerator/testGenerator.ts similarity index 65% rename from packages/mql-typescript/src/testGenerator.ts rename to packages/mql-typescript/src/testGenerator/testGenerator.ts index 8652af93..44886a8a 100644 --- a/packages/mql-typescript/src/testGenerator.ts +++ b/packages/mql-typescript/src/testGenerator/testGenerator.ts @@ -1,15 +1,15 @@ import path from 'path'; -import { GeneratorBase, YamlFiles } from './generator'; +import { GeneratorBase, YamlFiles } from '../generator'; import * as fs from 'fs/promises'; -import { Operator } from './metaschema'; -import { capitalize, removeNewlines } from './utils'; +import { Operator } from '../metaschema'; +import { capitalize, removeNewlines } from '../utils'; import { SimplifiedSchema, SimplifiedSchemaType, SimplifiedSchemaBaseType, } from 'mongodb-schema'; +import { unsupportedAggregations } from './unsupportedAggregations'; -import * as bson from 'bson'; type TestType = NonNullable[number]; export class TestGenerator extends GeneratorBase { @@ -33,8 +33,9 @@ export class TestGenerator extends GeneratorBase { return 'bson.Double | number'; case 'Int32': return 'bson.Int32'; + case 'Long' as any: case 'Int64': - return 'bson.Int64'; + return 'bson.Long'; case 'MaxKey': return 'bson.MaxKey'; case 'MinKey': @@ -78,28 +79,32 @@ export class TestGenerator extends GeneratorBase { private simplifiedSchemaToTS(schema: SimplifiedSchema): string { let result = '{\n'; for (const [key, value] of Object.entries(schema)) { - result += `${key}: ${this.simplifiedTypesToTS(value.types)};\n`; + result += `'${key}': ${this.simplifiedTypesToTS(value.types)};\n`; } result += '}\n'; return result; } - private async emitTestBody(category: string, test: TestType): Promise { + private async emitTestBody( + category: string, + operator: string, + test: TestType, + ): Promise { if (!test.link) { this.emit( - `// TODO: No docs reference found for ${category}.${test.name}\n`, + `// TODO: No docs reference found for ${operator}.${test.name}\n`, ); return; } if (!test.pipeline) { - this.emit(`// TODO: No pipeline found for ${category}.${test.name}\n`); + this.emit(`// TODO: No pipeline found for ${operator}.${test.name}\n`); return; } if (!test.schema || typeof test.schema === 'string') { this.emit( - `// TODO: no schema found for ${category}.${test.name}${test.schema ? `: ${test.schema}` : ''}\n`, + `// TODO: no schema found for ${operator}.${test.name}${test.schema ? `: ${test.schema}` : ''}\n`, ); return; } @@ -113,9 +118,11 @@ export class TestGenerator extends GeneratorBase { this.emit(`const aggregation: schema.Pipeline<${collectionName}> = [\n`); - for (const stage of test.pipeline) { + for (let i = 0; i < test.pipeline.length; i++) { + const stage = test.pipeline[i]; const json = JSON.stringify(stage, (_, value: any): any => { if ( + value && typeof value === 'object' && '$code' in value && typeof value.$code === 'string' @@ -126,13 +133,26 @@ export class TestGenerator extends GeneratorBase { return value; }); - this.emit( - json.replaceAll( - /"(?function[^"]*)"/gm, - '$', - ), - ); + const test2 = unsupportedAggregations[category]; + // Some pipelines project to new types, which is not supported by the static type system. + // In this case, we typecast to any to suppress the type error. + const unsupportedStage = + unsupportedAggregations[category]?.[operator]?.[test.name!]; + const isUnsupportedStage = + unsupportedStage && i >= unsupportedStage.stage; + + if (isUnsupportedStage) { + this.emitComment( + `This stage is unsupported by the static type system, so we're casting it to 'any' (${unsupportedStage.comment ?? 'it may involve a projected field'}).`, + ); + } + + this.emit(json); + + if (isUnsupportedStage) { + this.emit(' as any'); + } this.emit(',\n'); } @@ -140,25 +160,33 @@ export class TestGenerator extends GeneratorBase { } protected override async generateImpl(yamlFiles: YamlFiles): Promise { - const whitelisted = ['$accumulator', '$addToSet', '$avg', '$bottom']; // TODO: whitelist all - for await (const file of yamlFiles) { + if (file.category !== 'expression') { + // TODO: enable for others + continue; + } + const namespace = `${capitalize(file.category)}Operators`; - const basePath = path.resolve(__dirname, '..', 'tests', file.category); + const basePath = path.resolve( + __dirname, + '..', + '..', + 'tests', + file.category, + ); fs.mkdir(basePath, { recursive: true }); for await (const operator of file.operators()) { const parsed = Operator.parse(operator.yaml); - if (whitelisted.indexOf(parsed.name) === -1) { - // TODO: enable for others - return; - } - const filePath = path.join(basePath, `${parsed.name}.spec.ts`); + const operatorName = parsed.name.replace(/^\$/, ''); + + const filePath = path.join(basePath, `${operatorName}.spec.ts`); this.emitToFile(filePath); this.emit(`import * as schema from '../../out/schema';\n\n`); + this.emit("import * as bson from 'bson';\n\n"); let i = 0; for (const test of parsed.tests ?? []) { @@ -168,7 +196,7 @@ export class TestGenerator extends GeneratorBase { ); this.emit(`function test${i++}() {\n`); - await this.emitTestBody(parsed.name, test); + await this.emitTestBody(file.category, operatorName, test); this.emit('}\n\n'); } diff --git a/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts b/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts new file mode 100644 index 00000000..385acf9e --- /dev/null +++ b/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts @@ -0,0 +1,97 @@ +const nestedFieldsExplanation = + 'this test accesses nested fields, which is not currently supported'; + +export const unsupportedAggregations: { + [category: string]: { + [operator: string]: { + [test: string]: { stage: number; comment?: string }; + }; + }; +} = { + accumulator: { + derivative: { + Example: { stage: 1 }, + }, + }, + expression: { + arrayToObject: { + ['$objectToArray and $arrayToObject Example']: { stage: 1 }, + }, + convert: { + Example: { stage: 1 }, + }, + dateDiff: { + 'Elapsed Time': { stage: 1 }, + }, + dateSubtract: { + 'Filter by Relative Dates': { stage: 1 }, + }, + let: { + Example: { + stage: 0, + comment: + '$multiply references a variable that is not available statically', + }, + }, + map: { + 'Add to Each Element of an Array': { + stage: 0, + comment: + '$map references the variable names defined in the `as` field, which is not available statically', + }, + 'Truncate Each Array Element': { + stage: 0, + comment: + '$map references the variable names defined in the `as` field, which is not available statically', + }, + 'Convert Celsius Temperatures to Fahrenheit': { + stage: 0, + comment: + '$map references the variable names defined in the `as` field, which is not available statically', + }, + }, + objectToArray: { + '$objectToArray to Sum Nested Fields': { stage: 1 }, + }, + pow: { + Example: { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + reduce: { + Multiplication: { stage: 1 }, + 'Computing a Multiple Reductions': { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + regexFindAll: { + 'Use Captured Groupings to Parse User Name': { stage: 1 }, + }, + setIntersection: { + 'Retrieve Documents for Roles Granted to the Current User': { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + split: { + Example: { stage: 1 }, + }, + sqrt: { + Example: { stage: 0, comment: nestedFieldsExplanation }, + }, + stdDevPop: { + 'Use in $project Stage': { stage: 0, comment: nestedFieldsExplanation }, + }, + toBool: { + Example: { stage: 1 }, + }, + zip: { + 'Filtering and Preserving Indexes': { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + }, +}; diff --git a/packages/mql-typescript/src/utils.ts b/packages/mql-typescript/src/utils.ts index 63d2a0e0..8c1a3492 100644 --- a/packages/mql-typescript/src/utils.ts +++ b/packages/mql-typescript/src/utils.ts @@ -17,3 +17,7 @@ export function capitalize(str: string): string { export function removeNewlines(str: string): string { return str.replace(/\r?\n|\r/gm, ''); } + +export function removeTrailingComments(str: string): string { + return str.replace(/\/\/.*\r?\n/gm, ''); +} diff --git a/packages/mql-typescript/tests/accumulator/$accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts similarity index 100% rename from packages/mql-typescript/tests/accumulator/$accumulator.spec.ts rename to packages/mql-typescript/tests/accumulator/accumulator.spec.ts diff --git a/packages/mql-typescript/tests/accumulator/$addToSet.spec.ts b/packages/mql-typescript/tests/accumulator/addToSet.spec.ts similarity index 100% rename from packages/mql-typescript/tests/accumulator/$addToSet.spec.ts rename to packages/mql-typescript/tests/accumulator/addToSet.spec.ts diff --git a/packages/mql-typescript/tests/accumulator/$avg.spec.ts b/packages/mql-typescript/tests/accumulator/avg.spec.ts similarity index 100% rename from packages/mql-typescript/tests/accumulator/$avg.spec.ts rename to packages/mql-typescript/tests/accumulator/avg.spec.ts diff --git a/packages/mql-typescript/tests/accumulator/$bottom.spec.ts b/packages/mql-typescript/tests/accumulator/bottom.spec.ts similarity index 100% rename from packages/mql-typescript/tests/accumulator/$bottom.spec.ts rename to packages/mql-typescript/tests/accumulator/bottom.spec.ts diff --git a/packages/mql-typescript/tests/accumulator/bottomN.spec.ts b/packages/mql-typescript/tests/accumulator/bottomN.spec.ts new file mode 100644 index 00000000..deaaed84 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/bottomN.spec.ts @@ -0,0 +1,83 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Three Lowest Scores + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/#find-the-three-lowest-scores} + */ +function test0() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + playerId: { + $bottomN: { + output: ['$playerId', '$score'], + sortBy: { score: -1 }, + n: 3, + }, + }, + }, + }, + ]; +} + +/** + * Finding the Three Lowest Score Documents Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/#finding-the-three-lowest-score-documents-across-multiple-games} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + playerId: { + $bottomN: { + output: ['$playerId', '$score'], + sortBy: { score: -1 }, + n: 3, + }, + }, + }, + }, + ]; +} + +/** + * Computing n Based on the Group Key for $group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/#computing-n-based-on-the-group-key-for--group} + */ +function test2() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { gameId: '$gameId' }, + gamescores: { + $bottomN: { + output: '$score', + n: { $cond: { if: { $eq: ['$gameId', 'G2'] }, then: 1, else: 3 } }, + sortBy: { score: -1 }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/count.spec.ts b/packages/mql-typescript/tests/accumulator/count.spec.ts new file mode 100644 index 00000000..0f8f6563 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/count.spec.ts @@ -0,0 +1,52 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/#use-in--group-stage} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { _id: '$state', countNumberOfDocumentsForState: { $count: {} } }, + }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + countNumberOfDocumentsForState: { + $count: {}, + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts b/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts new file mode 100644 index 00000000..b89e7902 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts @@ -0,0 +1,31 @@ +import * as schema from '../../out/schema'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/#example} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + covariancePopForState: { + $covariancePop: [{ $year: { date: '$orderDate' } }, '$quantity'], + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts b/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts new file mode 100644 index 00000000..0a98c743 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts @@ -0,0 +1,31 @@ +import * as schema from '../../out/schema'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/#example} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + covarianceSampForState: { + $covarianceSamp: [{ $year: { date: '$orderDate' } }, '$quantity'], + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/denseRank.spec.ts b/packages/mql-typescript/tests/accumulator/denseRank.spec.ts new file mode 100644 index 00000000..093c9eb6 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/denseRank.spec.ts @@ -0,0 +1,51 @@ +import * as schema from '../../out/schema'; + +/** + * Dense Rank Partitions by an Integer Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/#dense-rank-partitions-by-an-integer-field} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { quantity: -1 }, + output: { denseRankQuantityForState: { $denseRank: {} } }, + }, + }, + ]; +} + +/** + * Dense Rank Partitions by a Date Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/#dense-rank-partitions-by-a-date-field} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { denseRankOrderDateForState: { $denseRank: {} } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/derivative.spec.ts b/packages/mql-typescript/tests/accumulator/derivative.spec.ts new file mode 100644 index 00000000..b514a6e0 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/derivative.spec.ts @@ -0,0 +1,33 @@ +import * as schema from '../../out/schema'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/#example} + */ +function test0() { + type deliveryFleet = { + truckID: string; + timeStamp: Date; + miles: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$truckID', + sortBy: { timeStamp: 1 }, + output: { + truckAverageSpeed: { + $derivative: { input: '$miles', unit: 'hour' }, + window: { range: [-30, 0], unit: 'second' }, + }, + }, + }, + }, + + /** + * This stage is unsupported by the static type system (it may involve a projection), so we're casting it to 'any'. + */ + { $match: { truckAverageSpeed: { $gt: 50 } } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts b/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts new file mode 100644 index 00000000..3f49b7eb --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +/** + * Document Number for Each State + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/#document-number-for-each-state} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { quantity: -1 }, + output: { documentNumberForState: { $documentNumber: {} } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts b/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts new file mode 100644 index 00000000..89e32f35 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts @@ -0,0 +1,51 @@ +import * as schema from '../../out/schema'; + +/** + * Exponential Moving Average Using N + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/#exponential-moving-average-using-n} + */ +function test0() { + type stockPrices = { + stock: string; + date: Date; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$stock', + sortBy: { date: 1 }, + output: { + expMovingAvgForStock: { $expMovingAvg: { input: '$price', N: 2 } }, + }, + }, + }, + ]; +} + +/** + * Exponential Moving Average Using alpha + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/#exponential-moving-average-using-alpha} + */ +function test1() { + type stockPrices = { + stock: string; + date: Date; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$stock', + sortBy: { date: 1 }, + output: { + expMovingAvgForStock: { + $expMovingAvg: { input: '$price', alpha: 0.75 }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/first.spec.ts b/packages/mql-typescript/tests/accumulator/first.spec.ts new file mode 100644 index 00000000..40b2d890 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/first.spec.ts @@ -0,0 +1,50 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/#use-in--group-stage} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $sort: { item: 1, date: 1 } }, + { $group: { _id: '$item', firstSale: { $first: '$date' } } }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + firstOrderTypeForState: { + $first: '$type', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/firstN.spec.ts b/packages/mql-typescript/tests/accumulator/firstN.spec.ts new file mode 100644 index 00000000..a7a14810 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/firstN.spec.ts @@ -0,0 +1,122 @@ +import * as schema from '../../out/schema'; + +/** + * Null and Missing Values + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#null-and-missing-values} + */ +function test0() { + type TestCollection = { + playerId: string; + gameId: string; + score: number | null; + }; + + const aggregation: schema.Pipeline = [ + { + $documents: [ + { playerId: 'PlayerA', gameId: 'G1', score: 1 }, + { playerId: 'PlayerB', gameId: 'G1', score: 2 }, + { playerId: 'PlayerC', gameId: 'G1', score: 3 }, + { playerId: 'PlayerD', gameId: 'G1' }, + { playerId: 'PlayerE', gameId: 'G1', score: null }, + ], + }, + { + $group: { + _id: '$gameId', + firstFiveScores: { $firstN: { input: '$score', n: 5 } }, + }, + }, + ]; +} + +/** + * Find the First Three Player Scores for a Single Game + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#find-the-first-three-player-scores-for-a-single-game} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + firstThreeScores: { $firstN: { input: ['$playerId', '$score'], n: 3 } }, + }, + }, + ]; +} + +/** + * Finding the First Three Player Scores Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#finding-the-first-three-player-scores-across-multiple-games} + */ +function test2() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + playerId: { $firstN: { input: ['$playerId', '$score'], n: 3 } }, + }, + }, + ]; +} + +/** + * Using $sort With $firstN + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#using--sort-with--firstn} + */ +function test3() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $sort: { score: -1 } }, + { + $group: { + _id: '$gameId', + playerId: { $firstN: { input: ['$playerId', '$score'], n: 3 } }, + }, + }, + ]; +} + +/** + * Computing n Based on the Group Key for $group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#computing-n-based-on-the-group-key-for--group} + */ +function test4() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { gameId: '$gameId' }, + gamescores: { + $firstN: { + input: '$score', + n: { $cond: { if: { $eq: ['$gameId', 'G2'] }, then: 1, else: 3 } }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/integral.spec.ts b/packages/mql-typescript/tests/accumulator/integral.spec.ts new file mode 100644 index 00000000..9cff56da --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/integral.spec.ts @@ -0,0 +1,28 @@ +import * as schema from '../../out/schema'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/#example} + */ +function test0() { + type powerConsumption = { + powerMeterID: string; + timeStamp: Date; + kilowatts: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$powerMeterID', + sortBy: { timeStamp: 1 }, + output: { + powerMeterKilowattHours: { + $integral: { input: '$kilowatts', unit: 'hour' }, + window: { range: ['unbounded', 'current'], unit: 'hour' }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/last.spec.ts b/packages/mql-typescript/tests/accumulator/last.spec.ts new file mode 100644 index 00000000..28677b4e --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/last.spec.ts @@ -0,0 +1,50 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/#use-in--group-stage} + */ +function test0() { + type sales = { + _id: number; + item: string; + date: Date; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { $sort: { item: 1, date: 1 } }, + { $group: { _id: '$item', lastSalesDate: { $last: '$date' } } }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + lastOrderTypeForState: { + $last: '$type', + window: { documents: ['current', 'unbounded'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/lastN.spec.ts b/packages/mql-typescript/tests/accumulator/lastN.spec.ts new file mode 100644 index 00000000..9c85d469 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/lastN.spec.ts @@ -0,0 +1,92 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Last Three Player Scores for a Single Game + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#find-the-last-three-player-scores-for-a-single-game} + */ +function test0() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + lastThreeScores: { $lastN: { input: ['$playerId', '$score'], n: 3 } }, + }, + }, + ]; +} + +/** + * Finding the Last Three Player Scores Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#finding-the-last-three-player-scores-across-multiple-games} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + playerId: { $lastN: { input: ['$playerId', '$score'], n: 3 } }, + }, + }, + ]; +} + +/** + * Using $sort With $lastN + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#using--sort-with--lastn} + */ +function test2() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $sort: { score: -1 } }, + { + $group: { + _id: '$gameId', + playerId: { $lastN: { input: ['$playerId', '$score'], n: 3 } }, + }, + }, + ]; +} + +/** + * Computing n Based on the Group Key for $group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#computing-n-based-on-the-group-key-for--group} + */ +function test3() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { gameId: '$gameId' }, + gamescores: { + $lastN: { + input: '$score', + n: { $cond: { if: { $eq: ['$gameId', 'G2'] }, then: 1, else: 3 } }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/linearFill.spec.ts b/packages/mql-typescript/tests/accumulator/linearFill.spec.ts new file mode 100644 index 00000000..f3b1d1f8 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/linearFill.spec.ts @@ -0,0 +1,44 @@ +import * as schema from '../../out/schema'; + +/** + * Fill Missing Values with Linear Interpolation + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/#fill-missing-values-with-linear-interpolation} + */ +function test0() { + type stock = { + time: Date; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + sortBy: { time: 1 }, + output: { price: { $linearFill: '$price' } }, + }, + }, + ]; +} + +/** + * Use Multiple Fill Methods in a Single Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/#use-multiple-fill-methods-in-a-single-stage} + */ +function test1() { + type stock = { + time: Date; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + sortBy: { time: 1 }, + output: { + linearFillPrice: { $linearFill: '$price' }, + locfPrice: { $locf: '$price' }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/locf.spec.ts b/packages/mql-typescript/tests/accumulator/locf.spec.ts new file mode 100644 index 00000000..aff23ab8 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/locf.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +/** + * Fill Missing Values with the Last Observed Value + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/#fill-missing-values-with-the-last-observed-value} + */ +function test0() { + type stock = { + time: Date; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + sortBy: { time: 1 }, + output: { price: { $locf: '$price' } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/max.spec.ts b/packages/mql-typescript/tests/accumulator/max.spec.ts new file mode 100644 index 00000000..45235678 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/max.spec.ts @@ -0,0 +1,55 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/#use-in--group-stage} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$item', + maxTotalAmount: { $max: { $multiply: ['$price', '$quantity'] } }, + maxQuantity: { $max: '$quantity' }, + }, + }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + maximumQuantityForState: { + $max: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/maxN.spec.ts b/packages/mql-typescript/tests/accumulator/maxN.spec.ts new file mode 100644 index 00000000..2f5fcf91 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/maxN.spec.ts @@ -0,0 +1,70 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Maximum Three Scores for a Single Game + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/#find-the-maximum-three-scores-for-a-single-game} + */ +function test0() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + maxThreeScores: { $maxN: { input: ['$score', '$playerId'], n: 3 } }, + }, + }, + ]; +} + +/** + * Finding the Maximum Three Scores Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/#finding-the-maximum-three-scores-across-multiple-games} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + maxScores: { $maxN: { input: ['$score', '$playerId'], n: 3 } }, + }, + }, + ]; +} + +/** + * Computing n Based on the Group Key for $group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/#computing-n-based-on-the-group-key-for--group} + */ +function test2() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { gameId: '$gameId' }, + gamescores: { + $maxN: { + input: ['$score', '$playerId'], + n: { $cond: { if: { $eq: ['$gameId', 'G2'] }, then: 1, else: 3 } }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/median.spec.ts b/packages/mql-typescript/tests/accumulator/median.spec.ts new file mode 100644 index 00000000..3a387b5e --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/median.spec.ts @@ -0,0 +1,51 @@ +import * as schema from '../../out/schema'; + +/** + * Use $median as an Accumulator + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/#use-operatorname-as-an-accumulator} + */ +function test0() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: null, + test01_median: { $median: { input: '$test01', method: 'approximate' } }, + }, + }, + ]; +} + +/** + * Use $median in a $setWindowField Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/#use-operatorname-in-a--setwindowfield-stage} + */ +function test1() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + sortBy: { test01: 1 }, + output: { + test01_median: { + $median: { input: '$test01', method: 'approximate' }, + window: { range: [-3, 3] }, + }, + }, + }, + }, + { $project: { _id: 0, studentId: 1, test01_median: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts b/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts new file mode 100644 index 00000000..587be070 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +/** + * $mergeObjects as an Accumulator + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/#-mergeobjects-as-an-accumulator} + */ +function test0() { + type sales = { + _id: number; + year: number; + item: string; + quantity: { + '2017Q1': number; + '2017Q2': number; + '2016Q1': number; + '2016Q2': number; + '2016Q3': number; + '2016Q4': number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$item', mergedSales: { $mergeObjects: '$quantity' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/min.spec.ts b/packages/mql-typescript/tests/accumulator/min.spec.ts new file mode 100644 index 00000000..27b630e4 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/min.spec.ts @@ -0,0 +1,49 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/#use-in--group-stage} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$item', minQuantity: { $min: '$quantity' } } }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + minimumQuantityForState: { + $min: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/minN.spec.ts b/packages/mql-typescript/tests/accumulator/minN.spec.ts new file mode 100644 index 00000000..34d2e503 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/minN.spec.ts @@ -0,0 +1,70 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Minimum Three Scores for a Single Game + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/#find-the-minimum-three-scores-for-a-single-game} + */ +function test0() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + minScores: { $minN: { input: ['$score', '$playerId'], n: 3 } }, + }, + }, + ]; +} + +/** + * Finding the Minimum Three Documents Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/#finding-the-minimum-three-documents-across-multiple-games} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + minScores: { $minN: { input: ['$score', '$playerId'], n: 3 } }, + }, + }, + ]; +} + +/** + * Computing n Based on the Group Key for $group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/#computing-n-based-on-the-group-key-for--group} + */ +function test2() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { gameId: '$gameId' }, + gamescores: { + $minN: { + input: ['$score', '$playerId'], + n: { $cond: { if: { $eq: ['$gameId', 'G2'] }, then: 1, else: 3 } }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/percentile.spec.ts b/packages/mql-typescript/tests/accumulator/percentile.spec.ts new file mode 100644 index 00000000..0b72e1e5 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/percentile.spec.ts @@ -0,0 +1,102 @@ +import * as schema from '../../out/schema'; + +/** + * Calculate a Single Value as an Accumulator + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/#calculate-a-single-value-as-an-accumulator} + */ +function test0() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: null, + test01_percentiles: { + $percentile: { input: '$test01', p: [0.95], method: 'approximate' }, + }, + }, + }, + ]; +} + +/** + * Calculate Multiple Values as an Accumulator + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/#calculate-multiple-values-as-an-accumulator} + */ +function test1() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: null, + test01_percentiles: { + $percentile: { + input: '$test01', + p: [0.5, 0.75, 0.9, 0.95], + method: 'approximate', + }, + }, + test02_percentiles: { + $percentile: { + input: '$test02', + p: [0.5, 0.75, 0.9, 0.95], + method: 'approximate', + }, + }, + test03_percentiles: { + $percentile: { + input: '$test03', + p: [0.5, 0.75, 0.9, 0.95], + method: 'approximate', + }, + }, + test03_percent_alt: { + $percentile: { + input: '$test03', + p: [0.9, 0.5, 0.75, 0.95], + method: 'approximate', + }, + }, + }, + }, + ]; +} + +/** + * Use $percentile in a $setWindowField Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/#use-operatorname-in-a--setwindowfield-stage} + */ +function test2() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + sortBy: { test01: 1 }, + output: { + test01_95percentile: { + $percentile: { input: '$test01', p: [0.95], method: 'approximate' }, + window: { range: [-3, 3] }, + }, + }, + }, + }, + { $project: { _id: 0, studentId: 1, test01_95percentile: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/push.spec.ts b/packages/mql-typescript/tests/accumulator/push.spec.ts new file mode 100644 index 00000000..9ce463e4 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/push.spec.ts @@ -0,0 +1,58 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/#use-in--group-stage} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $sort: { date: 1, item: 1 } }, + { + $group: { + _id: { + day: { $dayOfYear: { date: '$date' } }, + year: { $year: { date: '$date' } }, + }, + itemsSold: { $push: { item: '$item', quantity: '$quantity' } }, + }, + }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + quantitiesForState: { + $push: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/rank.spec.ts b/packages/mql-typescript/tests/accumulator/rank.spec.ts new file mode 100644 index 00000000..3690887f --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/rank.spec.ts @@ -0,0 +1,51 @@ +import * as schema from '../../out/schema'; + +/** + * Rank Partitions by an Integer Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/#rank-partitions-by-an-integer-field} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { quantity: -1 }, + output: { rankQuantityForState: { $rank: {} } }, + }, + }, + ]; +} + +/** + * Rank Partitions by a Date Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/#rank-partitions-by-a-date-field} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { rankOrderDateForState: { $rank: {} } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/shift.spec.ts b/packages/mql-typescript/tests/accumulator/shift.spec.ts new file mode 100644 index 00000000..7adad772 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/shift.spec.ts @@ -0,0 +1,59 @@ +import * as schema from '../../out/schema'; + +/** + * Shift Using a Positive Integer + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/#shift-using-a-positive-integer} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { quantity: -1 }, + output: { + shiftQuantityForState: { + $shift: { output: '$quantity', by: 1, default: 'Not available' }, + }, + }, + }, + }, + ]; +} + +/** + * Shift Using a Negative Integer + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/#shift-using-a-negative-integer} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { quantity: -1 }, + output: { + shiftQuantityForState: { + $shift: { output: '$quantity', by: -1, default: 'Not available' }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts b/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts new file mode 100644 index 00000000..63ab692c --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts @@ -0,0 +1,48 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/#use-in--group-stage} + */ +function test0() { + type users = { + _id: number; + name: string; + quiz: number; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$quiz', stdDev: { $stdDevPop: '$score' } } }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + stdDevPopQuantityForState: { + $stdDevPop: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts b/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts new file mode 100644 index 00000000..93786f54 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts @@ -0,0 +1,48 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/#use-in--group-stage} + */ +function test0() { + type TestCollection = { + _id: number; + username: string; + age: number; + }; + + const aggregation: schema.Pipeline = [ + { $sample: { size: 100 } }, + { $group: { _id: null, ageStdDev: { $stdDevSamp: '$age' } } }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + stdDevSampQuantityForState: { + $stdDevSamp: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/sum.spec.ts b/packages/mql-typescript/tests/accumulator/sum.spec.ts new file mode 100644 index 00000000..6686e4fc --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/sum.spec.ts @@ -0,0 +1,58 @@ +import * as schema from '../../out/schema'; + +/** + * Use in $group Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/#use-in--group-stage} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { + day: { $dayOfYear: { date: '$date' } }, + year: { $year: { date: '$date' } }, + }, + totalAmount: { $sum: { $multiply: ['$price', '$quantity'] } }, + count: { $sum: 1 }, + }, + }, + ]; +} + +/** + * Use in $setWindowFields Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/#use-in--setwindowfields-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + sumQuantityForState: { + $sum: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/top.spec.ts b/packages/mql-typescript/tests/accumulator/top.spec.ts new file mode 100644 index 00000000..69825b6f --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/top.spec.ts @@ -0,0 +1,48 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Top Score + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/#find-the-top-score} + */ +function test0() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + playerId: { + $top: { output: ['$playerId', '$score'], sortBy: { score: -1 } }, + }, + }, + }, + ]; +} + +/** + * Find the Top Score Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/#find-the-top-score-across-multiple-games} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + playerId: { + $top: { output: ['$playerId', '$score'], sortBy: { score: -1 } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/accumulator/topN.spec.ts b/packages/mql-typescript/tests/accumulator/topN.spec.ts new file mode 100644 index 00000000..3519d047 --- /dev/null +++ b/packages/mql-typescript/tests/accumulator/topN.spec.ts @@ -0,0 +1,83 @@ +import * as schema from '../../out/schema'; + +/** + * Find the Three Highest Scores + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/#find-the-three-highest-scores} + */ +function test0() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { gameId: 'G1' } }, + { + $group: { + _id: '$gameId', + playerId: { + $topN: { + output: ['$playerId', '$score'], + sortBy: { score: -1 }, + n: 3, + }, + }, + }, + }, + ]; +} + +/** + * Finding the Three Highest Score Documents Across Multiple Games + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/#finding-the-three-highest-score-documents-across-multiple-games} + */ +function test1() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$gameId', + playerId: { + $topN: { + output: ['$playerId', '$score'], + sortBy: { score: -1 }, + n: 3, + }, + }, + }, + }, + ]; +} + +/** + * Computing n Based on the Group Key for $group + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/#computing-n-based-on-the-group-key-for--group} + */ +function test2() { + type gamescores = { + playerId: string; + gameId: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { gameId: '$gameId' }, + gamescores: { + $topN: { + output: '$score', + n: { $cond: { if: { $eq: ['$gameId', 'G2'] }, then: 1, else: 3 } }, + sortBy: { score: -1 }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/abs.spec.ts b/packages/mql-typescript/tests/expression/abs.spec.ts new file mode 100644 index 00000000..0cdd5c80 --- /dev/null +++ b/packages/mql-typescript/tests/expression/abs.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/#example} + */ +function test0() { + type temperatureChange = { + _id: number; + startTemp: number; + endTemp: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { delta: { $abs: { $subtract: ['$startTemp', '$endTemp'] } } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/acos.spec.ts b/packages/mql-typescript/tests/expression/acos.spec.ts new file mode 100644 index 00000000..77e80d99 --- /dev/null +++ b/packages/mql-typescript/tests/expression/acos.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + side_a: bson.Decimal128; + side_b: bson.Decimal128; + hypotenuse: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + angle_a: { + $radiansToDegrees: { $acos: { $divide: ['$side_b', '$hypotenuse'] } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/acosh.spec.ts b/packages/mql-typescript/tests/expression/acosh.spec.ts new file mode 100644 index 00000000..a71d4026 --- /dev/null +++ b/packages/mql-typescript/tests/expression/acosh.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + 'x-coordinate': bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + 'y-coordinate': { $radiansToDegrees: { $acosh: '$x-coordinate' } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/add.spec.ts b/packages/mql-typescript/tests/expression/add.spec.ts new file mode 100644 index 00000000..4f15fd0f --- /dev/null +++ b/packages/mql-typescript/tests/expression/add.spec.ts @@ -0,0 +1,39 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Add Numbers + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/#add-numbers} + */ +function test0() { + type TestCollection = { + _id: number; + item: string; + price: number; + fee: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, total: { $add: ['$price', '$fee'] } } }, + ]; +} + +/** + * Perform Addition on a Date + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/#perform-addition-on-a-date} + */ +function test1() { + type TestCollection = { + _id: number; + item: string; + price: number; + fee: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, billing_date: { $add: ['$date', 259200000] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts b/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts new file mode 100644 index 00000000..f8b683b2 --- /dev/null +++ b/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/#example} + */ +function test0() { + type survey = { + _id: number; + responses: Array< + boolean | Array | number | string | null | undefined + >; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + responses: 1, + isAllTrue: { $allElementsTrue: ['$responses'] }, + _id: 0, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/and.spec.ts b/packages/mql-typescript/tests/expression/and.spec.ts new file mode 100644 index 00000000..a91b1cd6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/and.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + qty: 1, + result: { $and: [{ $gt: ['$qty', 100] }, { $lt: ['$qty', 250] }] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts b/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts new file mode 100644 index 00000000..128817ab --- /dev/null +++ b/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/#example} + */ +function test0() { + type survey = { + _id: number; + responses: Array< + boolean | Array | number | string | null | undefined + >; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + responses: 1, + isAnyTrue: { $anyElementTrue: ['$responses'] }, + _id: 0, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts b/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts new file mode 100644 index 00000000..72f4f66d --- /dev/null +++ b/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/#example} + */ +function test0() { + type TestCollection = { + _id: number; + name: string; + favorites: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + name: 1, + first: { $arrayElemAt: ['$favorites', 0] }, + last: { $arrayElemAt: ['$favorites', -1] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/arrayToObject.spec.ts b/packages/mql-typescript/tests/expression/arrayToObject.spec.ts new file mode 100644 index 00000000..c69998dd --- /dev/null +++ b/packages/mql-typescript/tests/expression/arrayToObject.spec.ts @@ -0,0 +1,64 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * $arrayToObject Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/#-arraytoobject--example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + dimensions: Array< + | Array + | { + k: string; + v: number | string; + } + >; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, dimensions: { $arrayToObject: ['$dimensions'] } } }, + ]; +} + +/** + * $objectToArray and $arrayToObject Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/#-objecttoarray----arraytoobject-example} + */ +function test1() { + type inventory = { + _id: number; + item: string; + instock: { + warehouse1: number; + warehouse2: number; + warehouse3: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { instock: { $objectToArray: '$instock' } } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $addFields: { + instock: { + $concatArrays: [ + '$instock', + [{ k: 'total', v: { $sum: ['$instock.v'] } }], + ], + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $addFields: { instock: { $arrayToObject: ['$instock'] } } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/asin.spec.ts b/packages/mql-typescript/tests/expression/asin.spec.ts new file mode 100644 index 00000000..39f21092 --- /dev/null +++ b/packages/mql-typescript/tests/expression/asin.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + side_a: bson.Decimal128; + side_b: bson.Decimal128; + hypotenuse: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + angle_a: { + $radiansToDegrees: { $asin: { $divide: ['$side_a', '$hypotenuse'] } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/asinh.spec.ts b/packages/mql-typescript/tests/expression/asinh.spec.ts new file mode 100644 index 00000000..9f0b4304 --- /dev/null +++ b/packages/mql-typescript/tests/expression/asinh.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + 'x-coordinate': bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + 'y-coordinate': { $radiansToDegrees: { $asinh: '$x-coordinate' } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/atan.spec.ts b/packages/mql-typescript/tests/expression/atan.spec.ts new file mode 100644 index 00000000..06f2f773 --- /dev/null +++ b/packages/mql-typescript/tests/expression/atan.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + side_a: bson.Decimal128; + side_b: bson.Decimal128; + hypotenuse: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + angle_a: { + $radiansToDegrees: { $atan: { $divide: ['$side_b', '$side_a'] } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/atan2.spec.ts b/packages/mql-typescript/tests/expression/atan2.spec.ts new file mode 100644 index 00000000..90dac134 --- /dev/null +++ b/packages/mql-typescript/tests/expression/atan2.spec.ts @@ -0,0 +1,24 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + side_a: bson.Decimal128; + side_b: bson.Decimal128; + hypotenuse: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + angle_a: { $radiansToDegrees: { $atan2: ['$side_b', '$side_a'] } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/atanh.spec.ts b/packages/mql-typescript/tests/expression/atanh.spec.ts new file mode 100644 index 00000000..3eb4c167 --- /dev/null +++ b/packages/mql-typescript/tests/expression/atanh.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + 'x-coordinate': bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + 'y-coordinate': { $radiansToDegrees: { $atanh: '$x-coordinate' } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/avg.spec.ts b/packages/mql-typescript/tests/expression/avg.spec.ts new file mode 100644 index 00000000..7d6876d5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/avg.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/#use-in--project-stage} + */ +function test0() { + type TestCollection = { + _id: number; + quizzes: Array; + labs: Array; + final: number; + midterm: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + quizAvg: { $avg: '$quizzes' }, + labAvg: { $avg: '$labs' }, + examAvg: { $avg: ['$final', '$midterm'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/binarySize.spec.ts b/packages/mql-typescript/tests/expression/binarySize.spec.ts new file mode 100644 index 00000000..0ffea7ec --- /dev/null +++ b/packages/mql-typescript/tests/expression/binarySize.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/#example} + */ +function test0() { + type images = { + _id: number; + name: string; + binary: bson.Binary; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: '$name', imageSize: { $binarySize: '$binary' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/bitAnd.spec.ts b/packages/mql-typescript/tests/expression/bitAnd.spec.ts new file mode 100644 index 00000000..e79272b7 --- /dev/null +++ b/packages/mql-typescript/tests/expression/bitAnd.spec.ts @@ -0,0 +1,35 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Bitwise AND with Two Integers + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/#bitwise-and-with-two-integers} + */ +function test0() { + type switches = { + _id: number; + a: bson.Int32; + b: bson.Int32; + }; + + const aggregation: schema.Pipeline = [ + { $project: { result: { $bitAnd: ['$a', '$b'] } } }, + ]; +} + +/** + * Bitwise AND with a Long and Integer + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/#bitwise-and-with-a-long-and-integer} + */ +function test1() { + type switches = { + _id: number; + a: bson.Int32; + b: bson.Int32; + }; + + const aggregation: schema.Pipeline = [ + { $project: { result: { $bitAnd: ['$a', { $numberLong: '63' }] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/bitNot.spec.ts b/packages/mql-typescript/tests/expression/bitNot.spec.ts new file mode 100644 index 00000000..6f2f5a66 --- /dev/null +++ b/packages/mql-typescript/tests/expression/bitNot.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/#example} + */ +function test0() { + type switches = { + _id: number; + a: bson.Int32; + b: bson.Int32; + }; + + const aggregation: schema.Pipeline = [ + { $project: { result: { $bitNot: '$a' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/bitOr.spec.ts b/packages/mql-typescript/tests/expression/bitOr.spec.ts new file mode 100644 index 00000000..552d41e6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/bitOr.spec.ts @@ -0,0 +1,35 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Bitwise OR with Two Integers + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/#bitwise-or-with-two-integers} + */ +function test0() { + type switches = { + _id: number; + a: bson.Int32; + b: bson.Int32; + }; + + const aggregation: schema.Pipeline = [ + { $project: { result: { $bitOr: ['$a', '$b'] } } }, + ]; +} + +/** + * Bitwise OR with a Long and Integer + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/#bitwise-or-with-a-long-and-integer} + */ +function test1() { + type switches = { + _id: number; + a: bson.Int32; + b: bson.Int32; + }; + + const aggregation: schema.Pipeline = [ + { $project: { result: { $bitOr: ['$a', { $numberLong: '63' }] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/bitXor.spec.ts b/packages/mql-typescript/tests/expression/bitXor.spec.ts new file mode 100644 index 00000000..5f78999a --- /dev/null +++ b/packages/mql-typescript/tests/expression/bitXor.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/#example} + */ +function test0() { + type switches = { + _id: number; + a: bson.Int32; + b: bson.Int32; + }; + + const aggregation: schema.Pipeline = [ + { $project: { result: { $bitXor: ['$a', '$b'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/bsonSize.spec.ts b/packages/mql-typescript/tests/expression/bsonSize.spec.ts new file mode 100644 index 00000000..6d7de377 --- /dev/null +++ b/packages/mql-typescript/tests/expression/bsonSize.spec.ts @@ -0,0 +1,87 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Return Sizes of Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/#return-sizes-of-documents} + */ +function test0() { + type employees = { + _id: number; + name: string; + email: string; + position: string; + current_task: { + project_id: number; + project_name: string; + project_duration: number; + hours: number; + notes: string; + } | null; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: 1, object_size: { $bsonSize: '$$ROOT' } } }, + ]; +} + +/** + * Return Combined Size of All Documents in a Collection + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/#return-combined-size-of-all-documents-in-a-collection} + */ +function test1() { + type employees = { + _id: number; + name: string; + email: string; + position: string; + current_task: { + project_id: number; + project_name: string; + project_duration: number; + hours: number; + notes: string; + } | null; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: null, + combined_object_size: { $sum: { $bsonSize: '$$ROOT' } }, + }, + }, + ]; +} + +/** + * Return Document with Largest Specified Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/#return-document-with-largest-specified-field} + */ +function test2() { + type employees = { + _id: number; + name: string; + email: string; + position: string; + current_task: { + project_id: number; + project_name: string; + project_duration: number; + hours: number; + notes: string; + } | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + name: '$name', + task_object_size: { $bsonSize: '$current_task' }, + }, + }, + { $sort: { task_object_size: -1 } }, + { $limit: 1 }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/case.spec.ts b/packages/mql-typescript/tests/expression/case.spec.ts new file mode 100644 index 00000000..84425253 --- /dev/null +++ b/packages/mql-typescript/tests/expression/case.spec.ts @@ -0,0 +1,3 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/ceil.spec.ts b/packages/mql-typescript/tests/expression/ceil.spec.ts new file mode 100644 index 00000000..324825cd --- /dev/null +++ b/packages/mql-typescript/tests/expression/ceil.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/#example} + */ +function test0() { + type samples = { + _id: number; + value: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { value: 1, ceilingValue: { $ceil: '$value' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/cmp.spec.ts b/packages/mql-typescript/tests/expression/cmp.spec.ts new file mode 100644 index 00000000..f9585fb9 --- /dev/null +++ b/packages/mql-typescript/tests/expression/cmp.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, qty: 1, cmpTo250: { $cmp: ['$qty', 250] }, _id: 0 }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/concat.spec.ts b/packages/mql-typescript/tests/expression/concat.spec.ts new file mode 100644 index 00000000..711632c3 --- /dev/null +++ b/packages/mql-typescript/tests/expression/concat.spec.ts @@ -0,0 +1,24 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + itemDescription: { $concat: ['$item', ' - ', '$description'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/concatArrays.spec.ts b/packages/mql-typescript/tests/expression/concatArrays.spec.ts new file mode 100644 index 00000000..4199bef5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/concatArrays.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/#example} + */ +function test0() { + type warehouses = { + _id: number; + instock: Array; + ordered: Array; + }; + + const aggregation: schema.Pipeline = [ + { $project: { items: { $concatArrays: ['$instock', '$ordered'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/cond.spec.ts b/packages/mql-typescript/tests/expression/cond.spec.ts new file mode 100644 index 00000000..66b19ecc --- /dev/null +++ b/packages/mql-typescript/tests/expression/cond.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/#example} + */ +function test0() { + type TestCollection = { + _id: number; + item: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + discount: { + $cond: { if: { $gte: ['$qty', 250] }, then: 30, else: 20 }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/convert.spec.ts b/packages/mql-typescript/tests/expression/convert.spec.ts new file mode 100644 index 00000000..02e6573e --- /dev/null +++ b/packages/mql-typescript/tests/expression/convert.spec.ts @@ -0,0 +1,68 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: number; + price: bson.Decimal128 | number | string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + convertedPrice: { + $convert: { + input: '$price', + to: 'decimal', + onError: 'Error', + onNull: { $numberDecimal: '0' }, + }, + }, + convertedQty: { + $convert: { + input: '$qty', + to: 'int', + onError: { + $concat: [ + 'Could not convert ', + { $toString: '$qty' }, + ' to type integer.', + ], + }, + onNull: 0, + }, + }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $project: { + totalPrice: { + $switch: { + branches: [ + { + case: { $eq: [{ $type: '$convertedPrice' }, 'string'] }, + then: 'NaN', + }, + { + case: { $eq: [{ $type: '$convertedQty' }, 'string'] }, + then: 'NaN', + }, + ], + default: { $multiply: ['$convertedPrice', '$convertedQty'] }, + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/cos.spec.ts b/packages/mql-typescript/tests/expression/cos.spec.ts new file mode 100644 index 00000000..86f88912 --- /dev/null +++ b/packages/mql-typescript/tests/expression/cos.spec.ts @@ -0,0 +1,28 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + angle_a: bson.Decimal128; + hypotenuse: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + side_a: { + $multiply: [ + { $cos: { $degreesToRadians: '$angle_a' } }, + '$hypotenuse', + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/cosh.spec.ts b/packages/mql-typescript/tests/expression/cosh.spec.ts new file mode 100644 index 00000000..12d1d59b --- /dev/null +++ b/packages/mql-typescript/tests/expression/cosh.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/#example} + */ +function test0() { + type trigonometry = { + _id: bson.ObjectId; + angle: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { cosh_output: { $cosh: { $degreesToRadians: '$angle' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateAdd.spec.ts b/packages/mql-typescript/tests/expression/dateAdd.spec.ts new file mode 100644 index 00000000..ccd5326a --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateAdd.spec.ts @@ -0,0 +1,147 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Add a Future Date + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/#add-a-future-date} + */ +function test0() { + type shipping = { + custId: number; + purchaseDate: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + expectedDeliveryDate: { + $dateAdd: { startDate: '$purchaseDate', unit: 'day', amount: 3 }, + }, + }, + }, + { $merge: { into: 'shipping' } }, + ]; +} + +/** + * Filter on a Date Range + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/#filter-on-a-date-range} + */ +function test1() { + type shipping = { + custId: number; + purchaseDate: Date; + deliveryDate: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { + $gt: [ + '$deliveryDate', + { + $dateAdd: { startDate: '$purchaseDate', unit: 'day', amount: 5 }, + }, + ], + }, + }, + }, + { + $project: { + _id: 0, + custId: 1, + purchased: { + $dateToString: { format: '%Y-%m-%d', date: '$purchaseDate' }, + }, + delivery: { + $dateToString: { format: '%Y-%m-%d', date: '$deliveryDate' }, + }, + }, + }, + ]; +} + +/** + * Adjust for Daylight Savings Time + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/#adjust-for-daylight-savings-time} + */ +function test2() { + type billing = { + location: string; + login: Date; + logout: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + location: 1, + start: { $dateToString: { format: '%Y-%m-%d %H:%M', date: '$login' } }, + days: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateAdd: { + startDate: '$login', + unit: 'day', + amount: 1, + timezone: '$location', + }, + }, + }, + }, + hours: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateAdd: { + startDate: '$login', + unit: 'hour', + amount: 24, + timezone: '$location', + }, + }, + }, + }, + startTZInfo: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: '$login', + timezone: '$location', + }, + }, + daysTZInfo: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateAdd: { + startDate: '$login', + unit: 'day', + amount: 1, + timezone: '$location', + }, + }, + timezone: '$location', + }, + }, + hoursTZInfo: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateAdd: { + startDate: '$login', + unit: 'hour', + amount: 24, + timezone: '$location', + }, + }, + timezone: '$location', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateDiff.spec.ts b/packages/mql-typescript/tests/expression/dateDiff.spec.ts new file mode 100644 index 00000000..b076bc10 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateDiff.spec.ts @@ -0,0 +1,107 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Elapsed Time + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/#elapsed-time} + */ +function test0() { + type orders = { + custId: number; + purchased: Date; + delivered: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: null, + averageTime: { + $avg: { + $dateDiff: { + startDate: '$purchased', + endDate: '$delivered', + unit: 'day', + }, + }, + }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $project: { _id: 0, numDays: { $trunc: ['$averageTime', 1] } } } as any, + ]; +} + +/** + * Result Precision + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/#result-precision} + */ +function test1() { + type subscriptions = { + custId: number; + start: Date; + end: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + Start: '$start', + End: '$end', + years: { + $dateDiff: { startDate: '$start', endDate: '$end', unit: 'year' }, + }, + months: { + $dateDiff: { startDate: '$start', endDate: '$end', unit: 'month' }, + }, + days: { + $dateDiff: { startDate: '$start', endDate: '$end', unit: 'day' }, + }, + _id: 0, + }, + }, + ]; +} + +/** + * Weeks Per Month + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/#weeks-per-month} + */ +function test2() { + type months = { + month: string; + start: Date; + end: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + wks_default: { + $dateDiff: { startDate: '$start', endDate: '$end', unit: 'week' }, + }, + wks_monday: { + $dateDiff: { + startDate: '$start', + endDate: '$end', + unit: 'week', + startOfWeek: 'Monday', + }, + }, + wks_friday: { + $dateDiff: { + startDate: '$start', + endDate: '$end', + unit: 'week', + startOfWeek: 'fri', + }, + }, + _id: 0, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateFromParts.spec.ts b/packages/mql-typescript/tests/expression/dateFromParts.spec.ts new file mode 100644 index 00000000..a768274f --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateFromParts.spec.ts @@ -0,0 +1,40 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/#example} + */ +function test0() { + type sales = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + date: { $dateFromParts: { year: 2017, month: 2, day: 8, hour: 12 } }, + date_iso: { + $dateFromParts: { + isoWeekYear: 2017, + isoWeek: 6, + isoDayOfWeek: 3, + hour: 12, + }, + }, + date_timezone: { + $dateFromParts: { + year: 2016, + month: 12, + day: 31, + hour: 23, + minute: 46, + second: 12, + timezone: 'America/New_York', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateFromString.spec.ts b/packages/mql-typescript/tests/expression/dateFromString.spec.ts new file mode 100644 index 00000000..c82c0c57 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateFromString.spec.ts @@ -0,0 +1,81 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Converting Dates + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/#converting-dates} + */ +function test0() { + type logmessages = { + _id: number; + date: string; + timezone: string; + message: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + date: { + $dateFromString: { + dateString: '$date', + timezone: 'America/New_York', + }, + }, + }, + }, + ]; +} + +/** + * onError + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/#onerror} + */ +function test1() { + type TestCollection = { + _id: number; + date: string; + timezone: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + date: { + $dateFromString: { + dateString: '$date', + timezone: '$timezone', + onError: '$date', + }, + }, + }, + }, + ]; +} + +/** + * onNull + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/#onnull} + */ +function test2() { + type TestCollection = { + _id: number; + date: string | null; + timezone: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + date: { + $dateFromString: { + dateString: '$date', + timezone: '$timezone', + onNull: '1970-01-01T00:00:00.000Z', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateSubtract.spec.ts b/packages/mql-typescript/tests/expression/dateSubtract.spec.ts new file mode 100644 index 00000000..50a293f6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateSubtract.spec.ts @@ -0,0 +1,148 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Subtract A Fixed Amount + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/#subtract-a-fixed-amount} + */ +function test0() { + type connectionTime = { + custId: number; + login: Date; + logout: Date; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $expr: { $eq: [{ $month: { date: '$logout' } }, 1] } } }, + { + $project: { + logoutTime: { + $dateSubtract: { startDate: '$logout', unit: 'hour', amount: 3 }, + }, + }, + }, + { $merge: { into: 'connectionTime' } }, + ]; +} + +/** + * Filter by Relative Dates + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/#filter-by-relative-dates} + */ +function test1() { + type connectionTime = { + custId: number; + login: Date; + logout: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { + $gt: [ + '$logoutTime', + { $dateSubtract: { startDate: '$$NOW', unit: 'week', amount: 1 } }, + ], + }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $project: { + _id: 0, + custId: 1, + loggedOut: { + $dateToString: { format: '%Y-%m-%d', date: '$logoutTime' }, + }, + }, + } as any, + ]; +} + +/** + * Adjust for Daylight Savings Time + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/#adjust-for-daylight-savings-time} + */ +function test2() { + type billing = { + location: string; + login: Date; + logout: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + location: 1, + start: { $dateToString: { format: '%Y-%m-%d %H:%M', date: '$login' } }, + days: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateSubtract: { + startDate: '$login', + unit: 'day', + amount: 1, + timezone: '$location', + }, + }, + }, + }, + hours: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateSubtract: { + startDate: '$login', + unit: 'hour', + amount: 24, + timezone: '$location', + }, + }, + }, + }, + startTZInfo: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: '$login', + timezone: '$location', + }, + }, + daysTZInfo: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateSubtract: { + startDate: '$login', + unit: 'day', + amount: 1, + timezone: '$location', + }, + }, + timezone: '$location', + }, + }, + hoursTZInfo: { + $dateToString: { + format: '%Y-%m-%d %H:%M', + date: { + $dateSubtract: { + startDate: '$login', + unit: 'hour', + amount: 24, + timezone: '$location', + }, + }, + timezone: '$location', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateToParts.spec.ts b/packages/mql-typescript/tests/expression/dateToParts.spec.ts new file mode 100644 index 00000000..05cafe59 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateToParts.spec.ts @@ -0,0 +1,29 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + date: { $dateToParts: { date: '$date' } }, + date_iso: { $dateToParts: { date: '$date', iso8601: true } }, + date_timezone: { + $dateToParts: { date: '$date', timezone: 'America/New_York' }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateToString.spec.ts b/packages/mql-typescript/tests/expression/dateToString.spec.ts new file mode 100644 index 00000000..46f2e0f6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateToString.spec.ts @@ -0,0 +1,57 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + yearMonthDayUTC: { + $dateToString: { format: '%Y-%m-%d', date: '$date' }, + }, + timewithOffsetNY: { + $dateToString: { + format: '%H:%M:%S:%L%z', + date: '$date', + timezone: 'America/New_York', + }, + }, + timewithOffset430: { + $dateToString: { + format: '%H:%M:%S:%L%z', + date: '$date', + timezone: '+04:30', + }, + }, + minutesOffsetNY: { + $dateToString: { + format: '%Z', + date: '$date', + timezone: 'America/New_York', + }, + }, + minutesOffset430: { + $dateToString: { format: '%Z', date: '$date', timezone: '+04:30' }, + }, + abbreviated_month: { + $dateToString: { format: '%b', date: '$date', timezone: '+04:30' }, + }, + full_month: { + $dateToString: { format: '%B', date: '$date', timezone: '+04:30' }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dateTrunc.spec.ts b/packages/mql-typescript/tests/expression/dateTrunc.spec.ts new file mode 100644 index 00000000..aa2118f6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dateTrunc.spec.ts @@ -0,0 +1,64 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Truncate Order Dates in a $project Pipeline Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/#truncate-order-dates-in-a--project-pipeline-stage} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 1, + orderDate: 1, + truncatedOrderDate: { + $dateTrunc: { + date: '$orderDate', + unit: 'week', + binSize: 2, + timezone: 'America/Los_Angeles', + startOfWeek: 'Monday', + }, + }, + }, + }, + ]; +} + +/** + * Truncate Order Dates and Obtain Quantity Sum in a $group Pipeline Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/#truncate-order-dates-and-obtain-quantity-sum-in-a--group-pipeline-stage} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { + truncatedOrderDate: { + $dateTrunc: { date: '$orderDate', unit: 'month', binSize: 6 }, + }, + }, + sumQuantity: { $sum: '$quantity' }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts b/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts new file mode 100644 index 00000000..8b964756 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { day: { $dayOfMonth: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts b/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts new file mode 100644 index 00000000..26d88989 --- /dev/null +++ b/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { dayOfWeek: { $dayOfWeek: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/dayOfYear.spec.ts b/packages/mql-typescript/tests/expression/dayOfYear.spec.ts new file mode 100644 index 00000000..329da40f --- /dev/null +++ b/packages/mql-typescript/tests/expression/dayOfYear.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { dayOfYear: { $dayOfYear: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts b/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts new file mode 100644 index 00000000..7db66102 --- /dev/null +++ b/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/#example} + */ +function test0() { + type TestCollection = { + angle_a: bson.Decimal128; + angle_b: bson.Decimal128; + angle_c: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + angle_a_rad: { $degreesToRadians: '$angle_a' }, + angle_b_rad: { $degreesToRadians: '$angle_b' }, + angle_c_rad: { $degreesToRadians: '$angle_c' }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/divide.spec.ts b/packages/mql-typescript/tests/expression/divide.spec.ts new file mode 100644 index 00000000..71c4bbb7 --- /dev/null +++ b/packages/mql-typescript/tests/expression/divide.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/#examples} + */ +function test0() { + type conferencePlanning = { + _id: number; + city: string; + hours: number; + tasks: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { city: 1, workdays: { $divide: ['$hours', 8] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/eq.spec.ts b/packages/mql-typescript/tests/expression/eq.spec.ts new file mode 100644 index 00000000..3aafc571 --- /dev/null +++ b/packages/mql-typescript/tests/expression/eq.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, qty: 1, qtyEq250: { $eq: ['$qty', 250] }, _id: 0 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/exp.spec.ts b/packages/mql-typescript/tests/expression/exp.spec.ts new file mode 100644 index 00000000..a8709fb5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/exp.spec.ts @@ -0,0 +1,23 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/#example} + */ +function test0() { + type accounts = { + _id: number; + interestRate: number; + presentValue: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + effectiveRate: { $subtract: [{ $exp: '$interestRate' }, 1] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/filter.spec.ts b/packages/mql-typescript/tests/expression/filter.spec.ts new file mode 100644 index 00000000..27cadb88 --- /dev/null +++ b/packages/mql-typescript/tests/expression/filter.spec.ts @@ -0,0 +1,95 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/#examples} + */ +function test0() { + type sales = { + _id: number; + items: Array<{ + item_id: number; + quantity: number; + price: number; + name: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + items: { + $filter: { + input: '$items', + as: 'item', + cond: { $gte: ['$$item.price', 100] }, + }, + }, + }, + }, + ]; +} + +/** + * Using the limit field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/#use-the-limit-field} + */ +function test1() { + type sales = { + _id: number; + items: Array<{ + item_id: number; + quantity: number; + price: number; + name: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + items: { + $filter: { + input: '$items', + cond: { $gte: ['$$item.price', 100] }, + as: 'item', + limit: 1, + }, + }, + }, + }, + ]; +} + +/** + * limit Greater than Possible Matches + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/#limit-greater-than-possible-matches} + */ +function test2() { + type sales = { + _id: number; + items: Array<{ + item_id: number; + quantity: number; + price: number; + name: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + items: { + $filter: { + input: '$items', + cond: { $gte: ['$$item.price', 100] }, + as: 'item', + limit: 5, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/first.spec.ts b/packages/mql-typescript/tests/expression/first.spec.ts new file mode 100644 index 00000000..5399b57d --- /dev/null +++ b/packages/mql-typescript/tests/expression/first.spec.ts @@ -0,0 +1,10 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $addFields Stage + */ +function test0() { + // TODO: No docs reference found for first.Use in $addFields Stage +} diff --git a/packages/mql-typescript/tests/expression/firstN.spec.ts b/packages/mql-typescript/tests/expression/firstN.spec.ts new file mode 100644 index 00000000..d3f0b6df --- /dev/null +++ b/packages/mql-typescript/tests/expression/firstN.spec.ts @@ -0,0 +1,35 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#example} + */ +function test0() { + type games = { + playerId: number; + score: Array; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { firstScores: { $firstN: { n: 3, input: '$score' } } } }, + ]; +} + +/** + * Using $firstN as an Aggregation Expression + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/#using--firstn-as-an-aggregation-expression} + */ +function test1() { + type TestCollection = { + array: Array; + }; + + const aggregation: schema.Pipeline = [ + { $documents: [{ array: [10, 20, 30, 40] }] }, + { + $project: { firstThreeElements: { $firstN: { input: '$array', n: 3 } } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/floor.spec.ts b/packages/mql-typescript/tests/expression/floor.spec.ts new file mode 100644 index 00000000..747c2aab --- /dev/null +++ b/packages/mql-typescript/tests/expression/floor.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/#example} + */ +function test0() { + type samples = { + _id: number; + value: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { value: 1, floorValue: { $floor: '$value' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/function.spec.ts b/packages/mql-typescript/tests/expression/function.spec.ts new file mode 100644 index 00000000..4343c890 --- /dev/null +++ b/packages/mql-typescript/tests/expression/function.spec.ts @@ -0,0 +1,62 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Usage Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/#example-1--usage-example} + */ +function test0() { + type players = { + _id: number; + name: string; + scores: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + isFound: { + $function: { + body: 'function(name) { return hex_md5(name) == "15b0a220baa16331e8d80e15367677ad"}', + args: ['$name'], + lang: 'js', + }, + }, + message: { + $function: { + body: 'function(name, scores) { let total = Array.sum(scores); return `Hello ${name}. Your total score is ${total}.`}', + args: ['$name', '$scores'], + lang: 'js', + }, + }, + }, + }, + ]; +} + +/** + * Alternative to $where + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/#example-2--alternative-to--where} + */ +function test1() { + type players = { + _id: number; + name: string; + scores: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { + $function: { + body: 'function(name) { return hex_md5(name) == "15b0a220baa16331e8d80e15367677ad";}', + args: ['$name'], + lang: 'js', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/getField.spec.ts b/packages/mql-typescript/tests/expression/getField.spec.ts new file mode 100644 index 00000000..dc3a5406 --- /dev/null +++ b/packages/mql-typescript/tests/expression/getField.spec.ts @@ -0,0 +1,75 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Query Fields that Contain Periods + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/#query-fields-that-contain-periods--.-} + */ +function test0() { + type inventory = { + _id: number; + item: string; + 'price.usd': number; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { $expr: { $gt: [{ $getField: { field: 'price.usd' } }, 200] } }, + }, + ]; +} + +/** + * Query Fields that Start with a Dollar Sign + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/#query-fields-that-start-with-a-dollar-sign----} + */ +function test1() { + type inventory = { + _id: number; + item: string; + $price: number; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { $gt: [{ $getField: { field: { $literal: '$price' } } }, 200] }, + }, + }, + ]; +} + +/** + * Query a Field in a Sub-document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/#query-a-field-in-a-sub-document} + */ +function test2() { + type inventory = { + _id: number; + item: string; + 'price.usd': number; + quantity: { + $large: number; + $medium: number; + $small: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { + $lte: [ + { + $getField: { field: { $literal: '$small' }, input: '$quantity' }, + }, + 20, + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/gt.spec.ts b/packages/mql-typescript/tests/expression/gt.spec.ts new file mode 100644 index 00000000..3aa16ae1 --- /dev/null +++ b/packages/mql-typescript/tests/expression/gt.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, qty: 1, qtyGt250: { $gt: ['$qty', 250] }, _id: 0 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/gte.spec.ts b/packages/mql-typescript/tests/expression/gte.spec.ts new file mode 100644 index 00000000..fca950c6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/gte.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, qty: 1, qtyGte250: { $gte: ['$qty', 250] }, _id: 0 }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/hour.spec.ts b/packages/mql-typescript/tests/expression/hour.spec.ts new file mode 100644 index 00000000..d815f524 --- /dev/null +++ b/packages/mql-typescript/tests/expression/hour.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { hour: { $hour: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/ifNull.spec.ts b/packages/mql-typescript/tests/expression/ifNull.spec.ts new file mode 100644 index 00000000..b2caecf6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/ifNull.spec.ts @@ -0,0 +1,47 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Single Input Expression + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/#single-input-expression} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string | null; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + description: { $ifNull: ['$description', 'Unspecified'] }, + }, + }, + ]; +} + +/** + * Multiple Input Expressions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/#multiple-input-expressions} + */ +function test1() { + type inventory = { + _id: number; + item: string; + description: string | null; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + value: { $ifNull: ['$description', '$quantity', 'Unspecified'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/in.spec.ts b/packages/mql-typescript/tests/expression/in.spec.ts new file mode 100644 index 00000000..68535df1 --- /dev/null +++ b/packages/mql-typescript/tests/expression/in.spec.ts @@ -0,0 +1,24 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/#example} + */ +function test0() { + type TestCollection = { + _id: number; + location: string; + in_stock: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + 'store location': '$location', + 'has bananas': { $in: ['bananas', '$in_stock'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/indexOfArray.spec.ts b/packages/mql-typescript/tests/expression/indexOfArray.spec.ts new file mode 100644 index 00000000..47a0b3ac --- /dev/null +++ b/packages/mql-typescript/tests/expression/indexOfArray.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/#example} + */ +function test0() { + type inventory = { + _id: number; + items: Array | null; + amount: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { index: { $indexOfArray: ['$items', 2] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts b/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts new file mode 100644 index 00000000..90b6ace4 --- /dev/null +++ b/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/#examples} + */ +function test0() { + type inventory = { + _id: number; + item: string | null; + amount: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { byteLocation: { $indexOfBytes: ['$item', 'foo'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/indexOfCP.spec.ts b/packages/mql-typescript/tests/expression/indexOfCP.spec.ts new file mode 100644 index 00000000..4538322c --- /dev/null +++ b/packages/mql-typescript/tests/expression/indexOfCP.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Examples + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/#examples} + */ +function test0() { + type inventory = { + _id: number; + item: string | null; + amount: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { cpLocation: { $indexOfCP: ['$item', 'foo'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/isArray.spec.ts b/packages/mql-typescript/tests/expression/isArray.spec.ts new file mode 100644 index 00000000..230030e2 --- /dev/null +++ b/packages/mql-typescript/tests/expression/isArray.spec.ts @@ -0,0 +1,31 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/#example} + */ +function test0() { + type warehouses = { + _id: number; + instock: Array; + ordered: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + items: { + $cond: { + if: { + $and: [{ $isArray: ['$instock'] }, { $isArray: ['$ordered'] }], + }, + then: { $concatArrays: ['$instock', '$ordered'] }, + else: 'One or more fields is not an array.', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/isNumber.spec.ts b/packages/mql-typescript/tests/expression/isNumber.spec.ts new file mode 100644 index 00000000..e772f5e9 --- /dev/null +++ b/packages/mql-typescript/tests/expression/isNumber.spec.ts @@ -0,0 +1,67 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use $isNumber to Check if a Field is Numeric + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/#use--isnumber-to-check-if-a-field-is-numeric} + */ +function test0() { + type sensors = { + _id: number; + reading: + | bson.Decimal128 + | bson.Long + | bson.Int32 + | number + | string + | Array; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + isNumber: { $isNumber: '$reading' }, + hasType: { $type: '$reading' }, + }, + }, + ]; +} + +/** + * Conditionally Modify Fields using $isNumber + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/#conditionally-modify-fields-using--isnumber} + */ +function test1() { + type grades = { + student_id: number; + class_id: string; + class_desc: string; + grade: string | number; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + points: { + $cond: { + if: { $isNumber: '$grade' }, + then: '$grade', + else: { + $switch: { + branches: [ + { case: { $eq: ['$grade', 'A'] }, then: 4 }, + { case: { $eq: ['$grade', 'B'] }, then: 3 }, + { case: { $eq: ['$grade', 'C'] }, then: 2 }, + { case: { $eq: ['$grade', 'D'] }, then: 1 }, + { case: { $eq: ['$grade', 'F'] }, then: 0 }, + ], + }, + }, + }, + }, + }, + }, + { $group: { _id: '$student_id', GPA: { $avg: '$points' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts b/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts new file mode 100644 index 00000000..b6c85a3d --- /dev/null +++ b/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/#example} + */ +function test0() { + type birthdays = { + _id: number; + name: string; + birthday: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + name: '$name', + dayOfWeek: { $isoDayOfWeek: { date: '$birthday' } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/isoWeek.spec.ts b/packages/mql-typescript/tests/expression/isoWeek.spec.ts new file mode 100644 index 00000000..64da535e --- /dev/null +++ b/packages/mql-typescript/tests/expression/isoWeek.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/#example} + */ +function test0() { + type deliveries = { + _id: number; + date: Date; + city: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + city: '$city', + weekNumber: { $isoWeek: { date: '$date' } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts b/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts new file mode 100644 index 00000000..52926c08 --- /dev/null +++ b/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/#example} + */ +function test0() { + type TestCollection = { + _id: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { yearNumber: { $isoWeekYear: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/last.spec.ts b/packages/mql-typescript/tests/expression/last.spec.ts new file mode 100644 index 00000000..0f68cdb7 --- /dev/null +++ b/packages/mql-typescript/tests/expression/last.spec.ts @@ -0,0 +1,10 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $addFields Stage + */ +function test0() { + // TODO: No docs reference found for last.Use in $addFields Stage +} diff --git a/packages/mql-typescript/tests/expression/lastN.spec.ts b/packages/mql-typescript/tests/expression/lastN.spec.ts new file mode 100644 index 00000000..1799b05b --- /dev/null +++ b/packages/mql-typescript/tests/expression/lastN.spec.ts @@ -0,0 +1,33 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#example} + */ +function test0() { + type games = { + playerId: number; + score: Array; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { lastScores: { $lastN: { n: 3, input: '$score' } } } }, + ]; +} + +/** + * Using $lastN as an Aggregation Expression + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#using--lastn-as-an-aggregation-expression} + */ +function test1() { + type TestCollection = { + array: Array; + }; + + const aggregation: schema.Pipeline = [ + { $documents: [{ array: [10, 20, 30, 40] }] }, + { $project: { lastThreeElements: { $lastN: { input: '$array', n: 3 } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/let.spec.ts b/packages/mql-typescript/tests/expression/let.spec.ts new file mode 100644 index 00000000..2da4ddf2 --- /dev/null +++ b/packages/mql-typescript/tests/expression/let.spec.ts @@ -0,0 +1,37 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/#example} + */ +function test0() { + type TestCollection = { + _id: number; + price: number; + tax: number; + applyDiscount: boolean; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($multiply references a variable that is not available statically). + */ + { + $project: { + finalTotal: { + $let: { + vars: { + total: { $add: ['$price', '$tax'] }, + discounted: { + $cond: { if: '$applyDiscount', then: 0.9, else: 1 }, + }, + }, + in: { $multiply: ['$$total', '$$discounted'] }, + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/literal.spec.ts b/packages/mql-typescript/tests/expression/literal.spec.ts new file mode 100644 index 00000000..84425253 --- /dev/null +++ b/packages/mql-typescript/tests/expression/literal.spec.ts @@ -0,0 +1,3 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/ln.spec.ts b/packages/mql-typescript/tests/expression/ln.spec.ts new file mode 100644 index 00000000..e5f30629 --- /dev/null +++ b/packages/mql-typescript/tests/expression/ln.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/#example} + */ +function test0() { + type TestCollection = { + _id: number; + year: string; + sales: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { x: '$year', y: { $ln: '$sales' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/log.spec.ts b/packages/mql-typescript/tests/expression/log.spec.ts new file mode 100644 index 00000000..c826f0ec --- /dev/null +++ b/packages/mql-typescript/tests/expression/log.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/#example} + */ +function test0() { + type integers = { + _id: number; + int: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + bitsNeeded: { $floor: { $add: [1, { $log: ['$int', 2] }] } }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/log10.spec.ts b/packages/mql-typescript/tests/expression/log10.spec.ts new file mode 100644 index 00000000..a1c6937d --- /dev/null +++ b/packages/mql-typescript/tests/expression/log10.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/#example} + */ +function test0() { + type samples = { + _id: number; + H3O: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { pH: { $multiply: [-1, { $log10: '$H3O' }] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/lt.spec.ts b/packages/mql-typescript/tests/expression/lt.spec.ts new file mode 100644 index 00000000..4b3ee879 --- /dev/null +++ b/packages/mql-typescript/tests/expression/lt.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, qty: 1, qtyLt250: { $lt: ['$qty', 250] }, _id: 0 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/lte.spec.ts b/packages/mql-typescript/tests/expression/lte.spec.ts new file mode 100644 index 00000000..bdbcfcea --- /dev/null +++ b/packages/mql-typescript/tests/expression/lte.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, qty: 1, qtyLte250: { $lte: ['$qty', 250] }, _id: 0 }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/ltrim.spec.ts b/packages/mql-typescript/tests/expression/ltrim.spec.ts new file mode 100644 index 00000000..70e55057 --- /dev/null +++ b/packages/mql-typescript/tests/expression/ltrim.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, description: { $ltrim: { input: '$description' } } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/map.spec.ts b/packages/mql-typescript/tests/expression/map.spec.ts new file mode 100644 index 00000000..9d613bce --- /dev/null +++ b/packages/mql-typescript/tests/expression/map.spec.ts @@ -0,0 +1,87 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Add to Each Element of an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/#add-to-each-element-of-an-array} + */ +function test0() { + type grades = { + quizzes: Array; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($map references the variable names defined in the `as` field, which is not available statically). + */ + { + $project: { + adjustedGrades: { + $map: { + input: '$quizzes', + as: 'grade', + in: { $add: ['$$grade', 2] }, + }, + }, + }, + } as any, + ]; +} + +/** + * Truncate Each Array Element + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/#truncate-each-array-element} + */ +function test1() { + type deliveries = { + city: string; + distances: Array; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($map references the variable names defined in the `as` field, which is not available statically). + */ + { + $project: { + city: '$city', + integerValues: { + $map: { + input: '$distances', + as: 'decimalValue', + in: { $trunc: ['$$decimalValue'] }, + }, + }, + }, + } as any, + ]; +} + +/** + * Convert Celsius Temperatures to Fahrenheit + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/#convert-celsius-temperatures-to-fahrenheit} + */ +function test2() { + type temperatures = { + date: Date; + tempsC: Array; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($map references the variable names defined in the `as` field, which is not available statically). + */ + { + $addFields: { + tempsF: { + $map: { + input: '$tempsC', + as: 'tempInCelsius', + in: { $add: [{ $multiply: ['$$tempInCelsius', 1.8] }, 32] }, + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/max.spec.ts b/packages/mql-typescript/tests/expression/max.spec.ts new file mode 100644 index 00000000..9bd776d2 --- /dev/null +++ b/packages/mql-typescript/tests/expression/max.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/#use-in--project-stage} + */ +function test0() { + type TestCollection = { + _id: number; + quizzes: Array; + labs: Array; + final: number; + midterm: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + quizMax: { $max: ['$quizzes'] }, + labMax: { $max: ['$labs'] }, + examMax: { $max: ['$final', '$midterm'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/maxN.spec.ts b/packages/mql-typescript/tests/expression/maxN.spec.ts new file mode 100644 index 00000000..71d0bf4e --- /dev/null +++ b/packages/mql-typescript/tests/expression/maxN.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/#example} + */ +function test0() { + type scores = { + playerId: number; + score: Array; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { maxScores: { $maxN: { n: 2, input: '$score' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/median.spec.ts b/packages/mql-typescript/tests/expression/median.spec.ts new file mode 100644 index 00000000..6eee5a0a --- /dev/null +++ b/packages/mql-typescript/tests/expression/median.spec.ts @@ -0,0 +1,31 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use $median in a $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/#use-operatorname-in-a--project-stage} + */ +function test0() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + studentId: 1, + testMedians: { + $median: { + input: ['$test01', '$test02', '$test03'], + method: 'approximate', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/mergeObjects.spec.ts b/packages/mql-typescript/tests/expression/mergeObjects.spec.ts new file mode 100644 index 00000000..a6f6b71e --- /dev/null +++ b/packages/mql-typescript/tests/expression/mergeObjects.spec.ts @@ -0,0 +1,35 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * $mergeObjects + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/#-mergeobjects} + */ +function test0() { + type orders = { + _id: number; + item: string; + price: number; + ordered: number; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'items', + localField: 'item', + foreignField: 'item', + as: 'fromItems', + }, + }, + { + $replaceRoot: { + newRoot: { + $mergeObjects: [{ $arrayElemAt: ['$fromItems', 0] }, '$$ROOT'], + }, + }, + }, + { $project: { fromItems: 0 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/meta.spec.ts b/packages/mql-typescript/tests/expression/meta.spec.ts new file mode 100644 index 00000000..3d346482 --- /dev/null +++ b/packages/mql-typescript/tests/expression/meta.spec.ts @@ -0,0 +1,37 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * textScore + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/#-meta---textscore-} + */ +function test0() { + type articles = { + _id: number; + title: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'cake' } } }, + { $group: { _id: { $meta: 'textScore' }, count: { $sum: 1 } } }, + ]; +} + +/** + * indexKey + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/#-meta---indexkey-} + */ +function test1() { + type orders = { + item: string; + price: bson.Decimal128; + quantity: number; + type: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { type: 'apparel' } }, + { $addFields: { idxKey: { $meta: 'indexKey' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/millisecond.spec.ts b/packages/mql-typescript/tests/expression/millisecond.spec.ts new file mode 100644 index 00000000..157acdcc --- /dev/null +++ b/packages/mql-typescript/tests/expression/millisecond.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { milliseconds: { $millisecond: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/min.spec.ts b/packages/mql-typescript/tests/expression/min.spec.ts new file mode 100644 index 00000000..a498d5b7 --- /dev/null +++ b/packages/mql-typescript/tests/expression/min.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/#use-in--project-stage} + */ +function test0() { + type TestCollection = { + _id: number; + quizzes: Array; + labs: Array; + final: number; + midterm: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + quizMin: { $min: ['$quizzes'] }, + labMin: { $min: ['$labs'] }, + examMin: { $min: ['$final', '$midterm'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/minN.spec.ts b/packages/mql-typescript/tests/expression/minN.spec.ts new file mode 100644 index 00000000..8bf69d49 --- /dev/null +++ b/packages/mql-typescript/tests/expression/minN.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/#example} + */ +function test0() { + type scores = { + playerId: number; + score: Array; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { minScores: { $minN: { n: 2, input: '$score' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/minute.spec.ts b/packages/mql-typescript/tests/expression/minute.spec.ts new file mode 100644 index 00000000..dbb79cca --- /dev/null +++ b/packages/mql-typescript/tests/expression/minute.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { minutes: { $minute: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/mod.spec.ts b/packages/mql-typescript/tests/expression/mod.spec.ts new file mode 100644 index 00000000..ddfab5f1 --- /dev/null +++ b/packages/mql-typescript/tests/expression/mod.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/#example} + */ +function test0() { + type conferencePlanning = { + _id: number; + city: string; + hours: number; + tasks: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { remainder: { $mod: ['$hours', '$tasks'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/month.spec.ts b/packages/mql-typescript/tests/expression/month.spec.ts new file mode 100644 index 00000000..a089d82d --- /dev/null +++ b/packages/mql-typescript/tests/expression/month.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { month: { $month: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/multiply.spec.ts b/packages/mql-typescript/tests/expression/multiply.spec.ts new file mode 100644 index 00000000..896fdbcb --- /dev/null +++ b/packages/mql-typescript/tests/expression/multiply.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + date: 1, + item: 1, + total: { $multiply: ['$price', '$quantity'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/ne.spec.ts b/packages/mql-typescript/tests/expression/ne.spec.ts new file mode 100644 index 00000000..a0a6a2bc --- /dev/null +++ b/packages/mql-typescript/tests/expression/ne.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, qty: 1, qtyNe250: { $ne: ['$qty', 250] }, _id: 0 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/not.spec.ts b/packages/mql-typescript/tests/expression/not.spec.ts new file mode 100644 index 00000000..62dc4bcd --- /dev/null +++ b/packages/mql-typescript/tests/expression/not.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, result: { $not: [{ $gt: ['$qty', 250] }] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/objectToArray.spec.ts b/packages/mql-typescript/tests/expression/objectToArray.spec.ts new file mode 100644 index 00000000..4917a36a --- /dev/null +++ b/packages/mql-typescript/tests/expression/objectToArray.spec.ts @@ -0,0 +1,55 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * $objectToArray Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/#-objecttoarray-example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + dimensions: { + l: number; + w: number; + uom: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, dimensions: { $objectToArray: '$dimensions' } } }, + ]; +} + +/** + * $objectToArray to Sum Nested Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/#-objecttoarray-to-sum-nested-fields} + */ +function test1() { + type inventory = { + _id: number; + item: string; + instock: { + warehouse1: number; + warehouse2: number; + warehouse3: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $project: { warehouses: { $objectToArray: '$instock' } } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $unwind: { path: '$warehouses' } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $group: { _id: '$warehouses.k', total: { $sum: '$warehouses.v' } }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/or.spec.ts b/packages/mql-typescript/tests/expression/or.spec.ts new file mode 100644 index 00000000..3d252eb5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/or.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + result: { $or: [{ $gt: ['$qty', 250] }, { $lt: ['$qty', 200] }] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/percentile.spec.ts b/packages/mql-typescript/tests/expression/percentile.spec.ts new file mode 100644 index 00000000..d7e916e8 --- /dev/null +++ b/packages/mql-typescript/tests/expression/percentile.spec.ts @@ -0,0 +1,32 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use $percentile in a $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/#use-operatorname-in-a--project-stage} + */ +function test0() { + type testScores = { + studentId: string; + test01: number; + test02: number; + test03: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + studentId: 1, + testPercentiles: { + $percentile: { + input: ['$test01', '$test02', '$test03'], + p: [0.5, 0.95], + method: 'approximate', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/pow.spec.ts b/packages/mql-typescript/tests/expression/pow.spec.ts new file mode 100644 index 00000000..3f7afe65 --- /dev/null +++ b/packages/mql-typescript/tests/expression/pow.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/#example} + */ +function test0() { + type quizzes = { + _id: number; + scores: Array<{ + name: string; + score: number; + quiz: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { variance: { $pow: [{ $stdDevPop: ['$scores.score'] }, 2] } }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts b/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts new file mode 100644 index 00000000..df55ea9a --- /dev/null +++ b/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/#example} + */ +function test0() { + type TestCollection = { + angle_a: bson.Decimal128; + angle_b: bson.Decimal128; + angle_c: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + angle_a_deg: { $radiansToDegrees: '$angle_a' }, + angle_b_deg: { $radiansToDegrees: '$angle_b' }, + angle_c_deg: { $radiansToDegrees: '$angle_c' }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/rand.spec.ts b/packages/mql-typescript/tests/expression/rand.spec.ts new file mode 100644 index 00000000..bd4e56e5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/rand.spec.ts @@ -0,0 +1,40 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Generate Random Data Points + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/#generate-random-data-points} + */ +function test0() { + type donors = { + donorId: number; + amount: number; + frequency: number; + }; + + const aggregation: schema.Pipeline = [ + { $set: { amount: { $multiply: [{ $rand: {} }, 100] } } }, + { $set: { amount: { $floor: '$amount' } } }, + { $merge: { into: 'donors' } }, + ]; +} + +/** + * Select Random Items From a Collection + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/#select-random-items-from-a-collection} + */ +function test1() { + type voters = { + name: string; + voterId: number; + district: number; + registered: boolean; + }; + + const aggregation: schema.Pipeline = [ + { $match: { district: 3 } }, + { $match: { $expr: { $lt: [0.5, { $rand: {} }] } } }, + { $project: { _id: 0, name: 1, registered: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/range.spec.ts b/packages/mql-typescript/tests/expression/range.spec.ts new file mode 100644 index 00000000..7216ae92 --- /dev/null +++ b/packages/mql-typescript/tests/expression/range.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/#example} + */ +function test0() { + type distances = { + _id: number; + city: string; + distance: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + city: 1, + 'Rest stops': { $range: [0, '$distance', 25] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/reduce.spec.ts b/packages/mql-typescript/tests/expression/reduce.spec.ts new file mode 100644 index 00000000..131a7569 --- /dev/null +++ b/packages/mql-typescript/tests/expression/reduce.spec.ts @@ -0,0 +1,178 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Multiplication + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/#multiplication} + */ +function test0() { + type events = { + _id: number; + type: string; + experimentId: string; + description: string; + eventNum: number; + probability: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$experimentId', + probabilityArr: { $push: '$probability' }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $project: { + description: 1, + results: { + $reduce: { + input: '$probabilityArr', + initialValue: 1, + in: { $multiply: ['$$value', '$$this'] }, + }, + }, + }, + } as any, + ]; +} + +/** + * Discounted Merchandise + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/#discounted-merchandise} + */ +function test1() { + type clothes = { + _id: number; + productId: string; + description: string; + color: string; + size: string; + price: number; + discounts: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + discountedPrice: { + $reduce: { + input: '$discounts', + initialValue: '$price', + in: { $multiply: ['$$value', { $subtract: [1, '$$this'] }] }, + }, + }, + }, + }, + ]; +} + +/** + * String Concatenation + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/#string-concatenation} + */ +function test2() { + type people = { + _id: number; + name: string; + hobbies: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { hobbies: { $gt: [] } } }, + { + $project: { + name: 1, + bio: { + $reduce: { + input: '$hobbies', + initialValue: 'My hobbies include:', + in: { + $concat: [ + '$$value', + { + $cond: { + if: { $eq: ['$$value', 'My hobbies include:'] }, + then: ' ', + else: ', ', + }, + }, + '$$this', + ], + }, + }, + }, + }, + }, + ]; +} + +/** + * Array Concatenation + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/#array-concatenation} + */ +function test3() { + type matrices = { + _id: number; + arr: Array>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + collapsed: { + $reduce: { + input: '$arr', + initialValue: [], + in: { $concatArrays: ['$$value', '$$this'] }, + }, + }, + }, + }, + ]; +} + +/** + * Computing a Multiple Reductions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/#computing-a-multiple-reductions} + */ +function test4() { + type events = { + _id: number; + type: string; + experimentId: string; + description: string; + eventNum: number; + probability: number; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + results: { + $reduce: { + input: '$arr', + initialValue: [], + in: { + collapsed: { $concatArrays: ['$$value.collapsed', '$$this'] }, + firstValues: { + $concatArrays: [ + '$$value.firstValues', + { $slice: ['$$this', 1] }, + ], + }, + }, + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/regexFind.spec.ts b/packages/mql-typescript/tests/expression/regexFind.spec.ts new file mode 100644 index 00000000..94f165aa --- /dev/null +++ b/packages/mql-typescript/tests/expression/regexFind.spec.ts @@ -0,0 +1,69 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * $regexFind and Its Options + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/#-regexfind-and-its-options} + */ +function test0() { + type products = { + _id: number; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + returnObject: { + $regexFind: { + input: '$description', + regex: { pattern: 'line', options: '' }, + }, + }, + }, + }, + ]; +} + +/** + * i Option + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/#i-option} + */ +function test1() { + type products = { + _id: number; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + returnObject: { + $regexFind: { + input: '$description', + regex: { pattern: 'line', options: 'i' }, + }, + }, + }, + }, + { + $addFields: { + returnObject: { + $regexFind: { input: '$description', regex: 'line', options: 'i' }, + }, + }, + }, + { + $addFields: { + returnObject: { + $regexFind: { + input: '$description', + regex: { pattern: 'line', options: '' }, + options: 'i', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts new file mode 100644 index 00000000..4ddc1ab7 --- /dev/null +++ b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts @@ -0,0 +1,139 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * $regexFindAll and Its Options + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/#-regexfindall-and-its-options} + */ +function test0() { + type products = { + _id: number; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + returnObject: { + $regexFindAll: { + input: '$description', + regex: { pattern: 'line', options: '' }, + }, + }, + }, + }, + ]; +} + +/** + * i Option + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/#i-option} + */ +function test1() { + type products = { + _id: number; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + returnObject: { + $regexFindAll: { + input: '$description', + regex: { pattern: 'line', options: 'i' }, + }, + }, + }, + }, + { + $addFields: { + returnObject: { + $regexFindAll: { input: '$description', regex: 'line', options: 'i' }, + }, + }, + }, + { + $addFields: { + returnObject: { + $regexFindAll: { + input: '$description', + regex: { pattern: 'line', options: '' }, + options: 'i', + }, + }, + }, + }, + ]; +} + +/** + * Use $regexFindAll to Parse Email from String + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/#use--regexfindall-to-parse-email-from-string} + */ +function test2() { + type feedback = { + _id: number; + comment: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + email: { + $regexFindAll: { + input: '$comment', + regex: { + pattern: '[a-z0-9_.+-]+@[a-z0-9_.+-]+\\.[a-z0-9_.+-]+', + options: 'i', + }, + }, + }, + }, + }, + { $set: { email: '$email.match' } }, + ]; +} + +/** + * Use Captured Groupings to Parse User Name + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/#use-captured-groupings-to-parse-user-name} + */ +function test3() { + type feedback = { + _id: number; + comment: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + names: { + $regexFindAll: { + input: '$comment', + regex: { + pattern: '([a-z0-9_.+-]+)@[a-z0-9_.+-]+\\.[a-z0-9_.+-]+', + options: 'i', + }, + }, + }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $set: { + names: { + $reduce: { + input: '$names.captures', + initialValue: [], + in: { $concatArrays: ['$$value', '$$this'] }, + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/regexMatch.spec.ts b/packages/mql-typescript/tests/expression/regexMatch.spec.ts new file mode 100644 index 00000000..eea98c47 --- /dev/null +++ b/packages/mql-typescript/tests/expression/regexMatch.spec.ts @@ -0,0 +1,99 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * $regexMatch and Its Options + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/#-regexmatch-and-its-options} + */ +function test0() { + type products = { + _id: number; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + result: { + $regexMatch: { + input: '$description', + regex: { pattern: 'line', options: '' }, + }, + }, + }, + }, + ]; +} + +/** + * i Option + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/#i-option} + */ +function test1() { + type products = { + _id: number; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + result: { + $regexMatch: { + input: '$description', + regex: { pattern: 'line', options: 'i' }, + }, + }, + }, + }, + { + $addFields: { + result: { + $regexMatch: { input: '$description', regex: 'line', options: 'i' }, + }, + }, + }, + { + $addFields: { + result: { + $regexMatch: { + input: '$description', + regex: { pattern: 'line', options: '' }, + options: 'i', + }, + }, + }, + }, + ]; +} + +/** + * Use $regexMatch to Check Email Address + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/#use--regexmatch-to-check-email-address} + */ +function test2() { + type feedback = { + _id: number; + comment: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + category: { + $cond: { + if: { + $regexMatch: { + input: '$comment', + regex: { pattern: '[a-z0-9_.+-]+@mongodb.com', options: 'i' }, + }, + }, + then: 'Employee', + else: 'External', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/replaceAll.spec.ts b/packages/mql-typescript/tests/expression/replaceAll.spec.ts new file mode 100644 index 00000000..ff319d68 --- /dev/null +++ b/packages/mql-typescript/tests/expression/replaceAll.spec.ts @@ -0,0 +1,28 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: { + $replaceAll: { + input: '$item', + find: 'blue paint', + replacement: 'red paint', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/replaceOne.spec.ts b/packages/mql-typescript/tests/expression/replaceOne.spec.ts new file mode 100644 index 00000000..3a1e7209 --- /dev/null +++ b/packages/mql-typescript/tests/expression/replaceOne.spec.ts @@ -0,0 +1,28 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: { + $replaceOne: { + input: '$item', + find: 'blue paint', + replacement: 'red paint', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/reverseArray.spec.ts b/packages/mql-typescript/tests/expression/reverseArray.spec.ts new file mode 100644 index 00000000..0b97c527 --- /dev/null +++ b/packages/mql-typescript/tests/expression/reverseArray.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/#example} + */ +function test0() { + type TestCollection = { + _id: number; + name: string; + favorites: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { name: 1, reverseFavorites: { $reverseArray: '$favorites' } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/round.spec.ts b/packages/mql-typescript/tests/expression/round.spec.ts new file mode 100644 index 00000000..ec5919a2 --- /dev/null +++ b/packages/mql-typescript/tests/expression/round.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/#example} + */ +function test0() { + type samples = { + _id: number; + value: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { roundedValue: { $round: ['$value', 1] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/rtrim.spec.ts b/packages/mql-typescript/tests/expression/rtrim.spec.ts new file mode 100644 index 00000000..0c570290 --- /dev/null +++ b/packages/mql-typescript/tests/expression/rtrim.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, description: { $rtrim: { input: '$description' } } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/second.spec.ts b/packages/mql-typescript/tests/expression/second.spec.ts new file mode 100644 index 00000000..9b7d5e68 --- /dev/null +++ b/packages/mql-typescript/tests/expression/second.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { seconds: { $second: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/setDifference.spec.ts b/packages/mql-typescript/tests/expression/setDifference.spec.ts new file mode 100644 index 00000000..058ae9e3 --- /dev/null +++ b/packages/mql-typescript/tests/expression/setDifference.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/#example} + */ +function test0() { + type flowers = { + _id: number; + flowerFieldA: Array; + flowerFieldB: Array>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + flowerFieldA: 1, + flowerFieldB: 1, + inBOnly: { $setDifference: ['$flowerFieldB', '$flowerFieldA'] }, + _id: 0, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/setEquals.spec.ts b/packages/mql-typescript/tests/expression/setEquals.spec.ts new file mode 100644 index 00000000..e1791df6 --- /dev/null +++ b/packages/mql-typescript/tests/expression/setEquals.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/#example} + */ +function test0() { + type bakeryOrders = { + _id: number; + cakes: Array; + cupcakes: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + cakes: 1, + cupcakes: 1, + sameFlavors: { $setEquals: ['$cakes', '$cupcakes'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/setField.spec.ts b/packages/mql-typescript/tests/expression/setField.spec.ts new file mode 100644 index 00000000..2ff25942 --- /dev/null +++ b/packages/mql-typescript/tests/expression/setField.spec.ts @@ -0,0 +1,145 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Add Fields that Contain Periods + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#add-fields-that-contain-periods--.-} + */ +function test0() { + type inventory = { + _id: number; + item: string; + price: number; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $setField: { field: 'price.usd', input: '$$ROOT', value: '$price' }, + }, + }, + { $unset: ['price'] }, + ]; +} + +/** + * Add Fields that Start with a Dollar Sign + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#add-fields-that-start-with-a-dollar-sign----} + */ +function test1() { + type inventory = { + _id: number; + item: string; + price: number; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $setField: { + field: { $literal: '$price' }, + input: '$$ROOT', + value: '$price', + }, + }, + }, + { $unset: ['price'] }, + ]; +} + +/** + * Update Fields that Contain Periods + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#update-fields-that-contain-periods--.-} + */ +function test2() { + type inventory = { + _id: number; + item: string; + qty: number; + 'price.usd': number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { _id: 1 } }, + { + $replaceWith: { + $setField: { field: 'price.usd', input: '$$ROOT', value: 49.99 }, + }, + }, + ]; +} + +/** + * Update Fields that Start with a Dollar Sign + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#update-fields-that-start-with-a-dollar-sign----} + */ +function test3() { + type inventory = { + _id: number; + item: string; + qty: number; + $price: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { _id: 1 } }, + { + $replaceWith: { + $setField: { + field: { $literal: '$price' }, + input: '$$ROOT', + value: 49.99, + }, + }, + }, + ]; +} + +/** + * Remove Fields that Contain Periods + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#remove-fields-that-contain-periods--.-} + */ +function test4() { + type inventory = { + _id: number; + item: string; + qty: number; + 'price.usd': number; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $setField: { field: 'price.usd', input: '$$ROOT', value: '$$REMOVE' }, + }, + }, + ]; +} + +/** + * Remove Fields that Start with a Dollar Sign + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/#remove-fields-that-start-with-a-dollar-sign----} + */ +function test5() { + type inventory = { + _id: number; + item: string; + price: number; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $setField: { + field: { $literal: '$price' }, + input: '$$ROOT', + value: '$$REMOVE', + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/setIntersection.spec.ts b/packages/mql-typescript/tests/expression/setIntersection.spec.ts new file mode 100644 index 00000000..045cb112 --- /dev/null +++ b/packages/mql-typescript/tests/expression/setIntersection.spec.ts @@ -0,0 +1,61 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Elements Array Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/#elements-array-example} + */ +function test0() { + type flowers = { + _id: number; + flowerFieldA: Array; + flowerFieldB: Array>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + flowerFieldA: 1, + flowerFieldB: 1, + commonToBoth: { $setIntersection: ['$flowerFieldA', '$flowerFieldB'] }, + _id: 0, + }, + }, + ]; +} + +/** + * Retrieve Documents for Roles Granted to the Current User + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/#retrieve-documents-for-roles-granted-to-the-current-user} + */ +function test1() { + type budget = { + _id: bson.Int32; + allowedRoles: Array; + comment: string; + yearlyBudget: bson.Double | number; + cloudBudget: bson.Double | number | undefined; + salesEventsBudget: bson.Double | number | undefined; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $match: { + $expr: { + $not: [ + { + $eq: [ + { $setIntersection: ['$allowedRoles', '$$USER_ROLES.role'] }, + [], + ], + }, + ], + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/setIsSubset.spec.ts b/packages/mql-typescript/tests/expression/setIsSubset.spec.ts new file mode 100644 index 00000000..a31499db --- /dev/null +++ b/packages/mql-typescript/tests/expression/setIsSubset.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/#example} + */ +function test0() { + type flowers = { + _id: number; + flowerFieldA: Array; + flowerFieldB: Array>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + flowerFieldA: 1, + flowerFieldB: 1, + AisSubset: { $setIsSubset: ['$flowerFieldA', '$flowerFieldB'] }, + _id: 0, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/setUnion.spec.ts b/packages/mql-typescript/tests/expression/setUnion.spec.ts new file mode 100644 index 00000000..9c7308f5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/setUnion.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/#example} + */ +function test0() { + type flowers = { + _id: number; + flowerFieldA: Array; + flowerFieldB: Array>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + flowerFieldA: 1, + flowerFieldB: 1, + allValues: { $setUnion: ['$flowerFieldA', '$flowerFieldB'] }, + _id: 0, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/sin.spec.ts b/packages/mql-typescript/tests/expression/sin.spec.ts new file mode 100644 index 00000000..24e485b5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/sin.spec.ts @@ -0,0 +1,28 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + angle_a: bson.Decimal128; + hypotenuse: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + side_b: { + $multiply: [ + { $sin: { $degreesToRadians: '$angle_a' } }, + '$hypotenuse', + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/sinh.spec.ts b/packages/mql-typescript/tests/expression/sinh.spec.ts new file mode 100644 index 00000000..1c33e41f --- /dev/null +++ b/packages/mql-typescript/tests/expression/sinh.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/#example} + */ +function test0() { + type trigonometry = { + _id: bson.ObjectId; + angle: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { sinh_output: { $sinh: { $degreesToRadians: '$angle' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/size.spec.ts b/packages/mql-typescript/tests/expression/size.spec.ts new file mode 100644 index 00000000..ae32f4ac --- /dev/null +++ b/packages/mql-typescript/tests/expression/size.spec.ts @@ -0,0 +1,31 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + description: string; + colors: Array | string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + numberOfColors: { + $cond: { + if: { $isArray: ['$colors'] }, + then: { $size: '$colors' }, + else: 'NA', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/slice.spec.ts b/packages/mql-typescript/tests/expression/slice.spec.ts new file mode 100644 index 00000000..4283ecec --- /dev/null +++ b/packages/mql-typescript/tests/expression/slice.spec.ts @@ -0,0 +1,19 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/#example} + */ +function test0() { + type TestCollection = { + _id: number; + name: string; + favorites: Array; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: 1, threeFavorites: { $slice: ['$favorites', 3] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/sortArray.spec.ts b/packages/mql-typescript/tests/expression/sortArray.spec.ts new file mode 100644 index 00000000..1194bef7 --- /dev/null +++ b/packages/mql-typescript/tests/expression/sortArray.spec.ts @@ -0,0 +1,154 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Sort on a Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/#sort-on-a-field} + */ +function test0() { + type engineers = { + team: Array<{ + name: string; + age: number; + address: { + street: string; + city: string; + }; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + result: { $sortArray: { input: '$team', sortBy: { name: 1 } } }, + }, + }, + ]; +} + +/** + * Sort on a Subfield + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/#sort-on-a-subfield} + */ +function test1() { + type engineers = { + team: Array<{ + name: string; + age: number; + address: { + street: string; + city: string; + }; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + result: { + $sortArray: { input: '$team', sortBy: { 'address.city': -1 } }, + }, + }, + }, + ]; +} + +/** + * Sort on Multiple Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/#sort-on-multiple-fields} + */ +function test2() { + type engineers = { + team: Array<{ + name: string; + age: number; + address: { + street: string; + city: string; + }; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + result: { + $sortArray: { input: '$team', sortBy: { age: -1, name: 1 } }, + }, + }, + }, + ]; +} + +/** + * Sort an Array of Integers + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/#sort-an-array-of-integers} + */ +function test3() { + type engineers = { + team: Array<{ + name: string; + age: number; + address: { + street: string; + city: string; + }; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + result: { $sortArray: { input: [1, 4, 1, 6, 12, 5], sortBy: 1 } }, + }, + }, + ]; +} + +/** + * Sort on Mixed Type Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/#sort-on-mixed-type-fields} + */ +function test4() { + type engineers = { + team: Array<{ + name: string; + age: number; + address: { + street: string; + city: string; + }; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + result: { + $sortArray: { + input: [ + 20, + 4, + { a: 'Free' }, + 6, + 21, + 5, + 'Gratis', + { a: null }, + { a: { sale: true, price: 19 } }, + { $numberDecimal: '10.23' }, + { a: 'On sale' }, + ], + sortBy: 1, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/split.spec.ts b/packages/mql-typescript/tests/expression/split.spec.ts new file mode 100644 index 00000000..d269ba90 --- /dev/null +++ b/packages/mql-typescript/tests/expression/split.spec.ts @@ -0,0 +1,41 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/#example} + */ +function test0() { + type deliveries = { + _id: number; + city: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { city_state: { $split: ['$city', ', '] }, qty: 1 } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $unwind: { path: '$city_state' } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $match: { city_state: { pattern: '[A-Z]{2}', options: '' } } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $group: { _id: { state: '$city_state' }, total_qty: { $sum: '$qty' } }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $sort: { total_qty: -1 } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/sqrt.spec.ts b/packages/mql-typescript/tests/expression/sqrt.spec.ts new file mode 100644 index 00000000..71bfb7bc --- /dev/null +++ b/packages/mql-typescript/tests/expression/sqrt.spec.ts @@ -0,0 +1,39 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/#example} + */ +function test0() { + type TestCollection = { + _id: number; + p1: { + x: number; + y: number; + }; + p2: { + x: number; + y: number; + }; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + distance: { + $sqrt: { + $add: [ + { $pow: [{ $subtract: ['$p2.y', '$p1.y'] }, 2] }, + { $pow: [{ $subtract: ['$p2.x', '$p1.x'] }, 2] }, + ], + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/stdDevPop.spec.ts b/packages/mql-typescript/tests/expression/stdDevPop.spec.ts new file mode 100644 index 00000000..d3518b13 --- /dev/null +++ b/packages/mql-typescript/tests/expression/stdDevPop.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/#use-in--project-stage} + */ +function test0() { + type quizzes = { + _id: number; + scores: Array<{ + name: string; + score: number; + quiz: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $project: { stdDev: { $stdDevPop: ['$scores.score'] } } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts b/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts new file mode 100644 index 00000000..84425253 --- /dev/null +++ b/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts @@ -0,0 +1,3 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/strLenBytes.spec.ts b/packages/mql-typescript/tests/expression/strLenBytes.spec.ts new file mode 100644 index 00000000..0c2b2bc5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/strLenBytes.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Single-Byte and Multibyte Character Set + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/#single-byte-and-multibyte-character-set} + */ +function test0() { + type food = { + _id: number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: 1, length: { $strLenBytes: '$name' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/strLenCP.spec.ts b/packages/mql-typescript/tests/expression/strLenCP.spec.ts new file mode 100644 index 00000000..4f2a4a98 --- /dev/null +++ b/packages/mql-typescript/tests/expression/strLenCP.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Single-Byte and Multibyte Character Set + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/#single-byte-and-multibyte-character-set} + */ +function test0() { + type food = { + _id: number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: 1, length: { $strLenCP: '$name' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/strcasecmp.spec.ts b/packages/mql-typescript/tests/expression/strcasecmp.spec.ts new file mode 100644 index 00000000..e7268568 --- /dev/null +++ b/packages/mql-typescript/tests/expression/strcasecmp.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + comparisonResult: { $strcasecmp: ['$quarter', '13q4'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/substr.spec.ts b/packages/mql-typescript/tests/expression/substr.spec.ts new file mode 100644 index 00000000..83a013c5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/substr.spec.ts @@ -0,0 +1,26 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + yearSubstring: { $substr: ['$quarter', 0, 2] }, + quarterSubtring: { $substr: ['$quarter', 2, -1] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/substrBytes.spec.ts b/packages/mql-typescript/tests/expression/substrBytes.spec.ts new file mode 100644 index 00000000..53ce9ac5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/substrBytes.spec.ts @@ -0,0 +1,47 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Single-Byte Character Set + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/#single-byte-character-set} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + yearSubstring: { $substrBytes: ['$quarter', 0, 2] }, + quarterSubtring: { + $substrBytes: [ + '$quarter', + 2, + { $subtract: [{ $strLenBytes: '$quarter' }, 2] }, + ], + }, + }, + }, + ]; +} + +/** + * Single-Byte and Multibyte Character Set + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/#single-byte-and-multibyte-character-set} + */ +function test1() { + type food = { + _id: number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: 1, menuCode: { $substrBytes: ['$name', 0, 3] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/substrCP.spec.ts b/packages/mql-typescript/tests/expression/substrCP.spec.ts new file mode 100644 index 00000000..e60bf74f --- /dev/null +++ b/packages/mql-typescript/tests/expression/substrCP.spec.ts @@ -0,0 +1,47 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Single-Byte Character Set + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/#single-byte-character-set} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + yearSubstring: { $substrCP: ['$quarter', 0, 2] }, + quarterSubtring: { + $substrCP: [ + '$quarter', + 2, + { $subtract: [{ $strLenCP: '$quarter' }, 2] }, + ], + }, + }, + }, + ]; +} + +/** + * Single-Byte and Multibyte Character Set + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/#single-byte-and-multibyte-character-set} + */ +function test1() { + type food = { + _id: number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $project: { name: 1, menuCode: { $substrCP: ['$name', 0, 3] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/subtract.spec.ts b/packages/mql-typescript/tests/expression/subtract.spec.ts new file mode 100644 index 00000000..2d9f625c --- /dev/null +++ b/packages/mql-typescript/tests/expression/subtract.spec.ts @@ -0,0 +1,67 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Subtract Numbers + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/#subtract-numbers} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + fee: number; + discount: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: 1, + total: { $subtract: [{ $add: ['$price', '$fee'] }, '$discount'] }, + }, + }, + ]; +} + +/** + * Subtract Two Dates + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/#subtract-two-dates} + */ +function test1() { + type sales = { + _id: number; + item: string; + price: number; + fee: number; + discount: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, dateDifference: { $subtract: ['$$NOW', '$date'] } }, + }, + ]; +} + +/** + * Subtract Milliseconds from a Date + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/#subtract-milliseconds-from-a-date} + */ +function test2() { + type sales = { + _id: number; + item: string; + price: number; + fee: number; + discount: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { item: 1, dateDifference: { $subtract: ['$date', 300000] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/sum.spec.ts b/packages/mql-typescript/tests/expression/sum.spec.ts new file mode 100644 index 00000000..e4b0204f --- /dev/null +++ b/packages/mql-typescript/tests/expression/sum.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Use in $project Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/#use-in--project-stage} + */ +function test0() { + type TestCollection = { + _id: number; + quizzes: Array; + labs: Array; + final: number; + midterm: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + quizTotal: { $sum: ['$quizzes'] }, + labTotal: { $sum: ['$labs'] }, + examTotal: { $sum: ['$final', '$midterm'] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/switch.spec.ts b/packages/mql-typescript/tests/expression/switch.spec.ts new file mode 100644 index 00000000..f92fc020 --- /dev/null +++ b/packages/mql-typescript/tests/expression/switch.spec.ts @@ -0,0 +1,47 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/#example} + */ +function test0() { + type TestCollection = { + _id: number; + name: string; + scores: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + name: 1, + summary: { + $switch: { + branches: [ + { + case: { $gte: [{ $avg: ['$scores'] }, 90] }, + then: 'Doing great!', + }, + { + case: { + $and: [ + { $gte: [{ $avg: ['$scores'] }, 80] }, + { $lt: [{ $avg: ['$scores'] }, 90] }, + ], + }, + then: 'Doing pretty well.', + }, + { + case: { $lt: [{ $avg: ['$scores'] }, 80] }, + then: 'Needs improvement.', + }, + ], + default: 'No scores found.', + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/tan.spec.ts b/packages/mql-typescript/tests/expression/tan.spec.ts new file mode 100644 index 00000000..db3bf971 --- /dev/null +++ b/packages/mql-typescript/tests/expression/tan.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + angle_a: bson.Decimal128; + side_a: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + side_b: { + $multiply: [{ $tan: { $degreesToRadians: '$angle_a' } }, '$side_a'], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/tanh.spec.ts b/packages/mql-typescript/tests/expression/tanh.spec.ts new file mode 100644 index 00000000..bf1b3f5e --- /dev/null +++ b/packages/mql-typescript/tests/expression/tanh.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/#example} + */ +function test0() { + type trigonometry = { + _id: bson.ObjectId; + angle: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { tanh_output: { $tanh: { $degreesToRadians: '$angle' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toBool.spec.ts b/packages/mql-typescript/tests/expression/toBool.spec.ts new file mode 100644 index 00000000..6dd97ca5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/toBool.spec.ts @@ -0,0 +1,37 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: number; + shipped: string | number | boolean; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + convertedShippedFlag: { + $switch: { + branches: [ + { case: { $eq: ['$shipped', 'false'] }, then: false }, + { case: { $eq: ['$shipped', ''] }, then: false }, + ], + default: { $toBool: '$shipped' }, + }, + }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $match: { convertedShippedFlag: false } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toDate.spec.ts b/packages/mql-typescript/tests/expression/toDate.spec.ts new file mode 100644 index 00000000..21c90c52 --- /dev/null +++ b/packages/mql-typescript/tests/expression/toDate.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: number; + price: number; + order_date: Date | string; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { convertedDate: { $toDate: '$order_date' } } }, + { $sort: { convertedDate: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toDecimal.spec.ts b/packages/mql-typescript/tests/expression/toDecimal.spec.ts new file mode 100644 index 00000000..664ce48d --- /dev/null +++ b/packages/mql-typescript/tests/expression/toDecimal.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: number; + price: number | bson.Decimal128 | string; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { convertedPrice: { $toDecimal: '$price' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toDouble.spec.ts b/packages/mql-typescript/tests/expression/toDouble.spec.ts new file mode 100644 index 00000000..f41659ca --- /dev/null +++ b/packages/mql-typescript/tests/expression/toDouble.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/#example} + */ +function test0() { + type weather = { + _id: number; + date: Date; + temp: string; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { degrees: { $toDouble: { $substrBytes: ['$temp', 0, 4] } } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts b/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts new file mode 100644 index 00000000..0d7e219c --- /dev/null +++ b/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/#example} + */ +function test0() { + type TestCollection = { + val: string; + }; + + const aggregation: schema.Pipeline = [ + { $documents: [{ val: 'string to hash' }] }, + { $addFields: { hashedVal: { $toHashedIndexKey: '$val' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toInt.spec.ts b/packages/mql-typescript/tests/expression/toInt.spec.ts new file mode 100644 index 00000000..b145edf9 --- /dev/null +++ b/packages/mql-typescript/tests/expression/toInt.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: string; + price: number | bson.Decimal128 | string; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { convertedQty: { $toInt: '$qty' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toLong.spec.ts b/packages/mql-typescript/tests/expression/toLong.spec.ts new file mode 100644 index 00000000..7a806952 --- /dev/null +++ b/packages/mql-typescript/tests/expression/toLong.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: string | bson.Int32 | bson.Long; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { convertedQty: { $toLong: '$qty' } } }, + { $sort: { convertedQty: -1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toLower.spec.ts b/packages/mql-typescript/tests/expression/toLower.spec.ts new file mode 100644 index 00000000..08771e6e --- /dev/null +++ b/packages/mql-typescript/tests/expression/toLower.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: { $toLower: '$item' }, + description: { $toLower: '$description' }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toObjectId.spec.ts b/packages/mql-typescript/tests/expression/toObjectId.spec.ts new file mode 100644 index 00000000..b19dacf4 --- /dev/null +++ b/packages/mql-typescript/tests/expression/toObjectId.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/#example} + */ +function test0() { + type orders = { + _id: string | bson.ObjectId; + item: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { convertedId: { $toObjectId: '$_id' } } }, + { $sort: { convertedId: -1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toString.spec.ts b/packages/mql-typescript/tests/expression/toString.spec.ts new file mode 100644 index 00000000..e333a49f --- /dev/null +++ b/packages/mql-typescript/tests/expression/toString.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + qty: number; + zipcode: number | string; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { convertedZipCode: { $toString: '$zipcode' } } }, + { $sort: { convertedZipCode: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/toUpper.spec.ts b/packages/mql-typescript/tests/expression/toUpper.spec.ts new file mode 100644 index 00000000..895d46f5 --- /dev/null +++ b/packages/mql-typescript/tests/expression/toUpper.spec.ts @@ -0,0 +1,25 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + item: { $toUpper: '$item' }, + description: { $toUpper: '$description' }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/trim.spec.ts b/packages/mql-typescript/tests/expression/trim.spec.ts new file mode 100644 index 00000000..4b4dbcd8 --- /dev/null +++ b/packages/mql-typescript/tests/expression/trim.spec.ts @@ -0,0 +1,22 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/#example} + */ +function test0() { + type inventory = { + _id: number; + item: string; + quarter: string; + description: string | null; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { item: 1, description: { $trim: { input: '$description' } } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/trunc.spec.ts b/packages/mql-typescript/tests/expression/trunc.spec.ts new file mode 100644 index 00000000..1ac1fd25 --- /dev/null +++ b/packages/mql-typescript/tests/expression/trunc.spec.ts @@ -0,0 +1,18 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/#example} + */ +function test0() { + type samples = { + _id: number; + value: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { truncatedValue: { $trunc: ['$value', 1] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/tsIncrement.spec.ts b/packages/mql-typescript/tests/expression/tsIncrement.spec.ts new file mode 100644 index 00000000..c8229f5c --- /dev/null +++ b/packages/mql-typescript/tests/expression/tsIncrement.spec.ts @@ -0,0 +1,45 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Obtain the Incrementing Ordinal from a Timestamp Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/#obtain-the-incrementing-ordinal-from-a-timestamp-field} + */ +function test0() { + type stockSales = { + _id: number; + symbol: string; + saleTimestamp: bson.Timestamp; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + saleTimestamp: 1, + saleIncrement: { $tsIncrement: '$saleTimestamp' }, + }, + }, + ]; +} + +/** + * Use $tsSecond in a Change Stream Cursor to Monitor Collection Changes + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/#use--tssecond-in-a-change-stream-cursor-to-monitor-collection-changes} + */ +function test1() { + type stockSales = { + _id: number; + symbol: string; + saleTimestamp: bson.Timestamp; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { $eq: [{ $mod: [{ $tsIncrement: '$clusterTime' }, 2] }, 0] }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/tsSecond.spec.ts b/packages/mql-typescript/tests/expression/tsSecond.spec.ts new file mode 100644 index 00000000..50511014 --- /dev/null +++ b/packages/mql-typescript/tests/expression/tsSecond.spec.ts @@ -0,0 +1,41 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Obtain the Number of Seconds from a Timestamp Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/#obtain-the-number-of-seconds-from-a-timestamp-field} + */ +function test0() { + type stockSales = { + _id: number; + symbol: string; + saleTimestamp: bson.Timestamp; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: 0, + saleTimestamp: 1, + saleSeconds: { $tsSecond: '$saleTimestamp' }, + }, + }, + ]; +} + +/** + * Use $tsSecond in a Change Stream Cursor to Monitor Collection Changes + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/#use--tssecond-in-a-change-stream-cursor-to-monitor-collection-changes} + */ +function test1() { + type stockSales = { + _id: number; + symbol: string; + saleTimestamp: bson.Timestamp; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { clusterTimeSeconds: { $tsSecond: '$clusterTime' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/type.spec.ts b/packages/mql-typescript/tests/expression/type.spec.ts new file mode 100644 index 00000000..8e55cfd3 --- /dev/null +++ b/packages/mql-typescript/tests/expression/type.spec.ts @@ -0,0 +1,27 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/#example} + */ +function test0() { + type TestCollection = { + _id: number; + a: + | number + | Array + | { + a: string; + b: string; + c: string; + } + | string + | bson.Long; + }; + + const aggregation: schema.Pipeline = [ + { $project: { a: { $type: '$a' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/unsetField.spec.ts b/packages/mql-typescript/tests/expression/unsetField.spec.ts new file mode 100644 index 00000000..57d3b61a --- /dev/null +++ b/packages/mql-typescript/tests/expression/unsetField.spec.ts @@ -0,0 +1,74 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Remove Fields that Contain Periods + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/#remove-fields-that-contain-periods--.-} + */ +function test0() { + type inventory = { + _id: number; + item: string; + qty: number; + 'price.usd': number; + }; + + const aggregation: schema.Pipeline = [ + { $replaceWith: { $unsetField: { field: 'price.usd', input: '$$ROOT' } } }, + ]; +} + +/** + * Remove Fields that Start with a Dollar Sign + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/#remove-fields-that-start-with-a-dollar-sign----} + */ +function test1() { + type inventory = { + _id: number; + item: string; + qty: number; + $price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $unsetField: { field: { $literal: '$price' }, input: '$$ROOT' }, + }, + }, + ]; +} + +/** + * Remove A Subfield + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/#remove-a-subfield} + */ +function test2() { + type inventory = { + _id: number; + item: string; + qty: number; + price: { + usd: number; + euro: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $setField: { + field: 'price', + input: '$$ROOT', + value: { + $unsetField: { + field: 'euro', + input: { $getField: { field: 'price' } }, + }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/week.spec.ts b/packages/mql-typescript/tests/expression/week.spec.ts new file mode 100644 index 00000000..7be99971 --- /dev/null +++ b/packages/mql-typescript/tests/expression/week.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { week: { $week: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/year.spec.ts b/packages/mql-typescript/tests/expression/year.spec.ts new file mode 100644 index 00000000..95f193bc --- /dev/null +++ b/packages/mql-typescript/tests/expression/year.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/#example} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $project: { year: { $year: { date: '$date' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/expression/zip.spec.ts b/packages/mql-typescript/tests/expression/zip.spec.ts new file mode 100644 index 00000000..6c891b13 --- /dev/null +++ b/packages/mql-typescript/tests/expression/zip.spec.ts @@ -0,0 +1,71 @@ +import * as schema from '../../out/schema'; + +import * as bson from 'bson'; + +/** + * Matrix Transposition + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/#matrix-transposition} + */ +function test0() { + type matrices = { + matrix: Array>; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + _id: false, + transposed: { + $zip: { + inputs: [ + { $arrayElemAt: ['$matrix', 0] }, + { $arrayElemAt: ['$matrix', 1] }, + { $arrayElemAt: ['$matrix', 2] }, + ], + }, + }, + }, + }, + ]; +} + +/** + * Filtering and Preserving Indexes + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/#filtering-and-preserving-indexes} + */ +function test1() { + type pages = { + category: string; + pages: Array<{ + title: string; + reviews: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: false, + pages: { + $filter: { + input: { + $zip: { + inputs: ['$pages', { $range: [0, { $size: '$pages' }] }], + }, + }, + as: 'pageWithIndex', + cond: { + $let: { + vars: { page: { $arrayElemAt: ['$$pageWithIndex', 0] } }, + in: { $gte: ['$$page.reviews', 1] }, + }, + }, + }, + }, + }, + } as any, + ]; +} From 7778b59245a060ab59ef820d41def43f9194eb4a Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Tue, 3 Jun 2025 23:22:25 +0200 Subject: [PATCH 10/26] generate tests for query --- .gitignore | 5 +- packages/mql-typescript/.vscode/launch.json | 54 +++++++++ packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema.ts | 6 +- packages/mql-typescript/src/cli.ts | 35 ++++-- .../src/driverSchema/docsCrawler.ts | 2 +- .../src/driverSchema/staticSchemas.ts | 19 ++- packages/mql-typescript/src/generator.ts | 38 ++++-- .../mql-typescript/src/schemaGenerator.ts | 4 +- .../src/testGenerator/testGenerator.ts | 61 +++++++--- .../testGenerator/unsupportedAggregations.ts | 8 ++ .../tests/accumulator/accumulator.spec.ts | 48 ++------ .../tests/accumulator/addToSet.spec.ts | 1 + .../tests/accumulator/avg.spec.ts | 1 + .../tests/accumulator/bottom.spec.ts | 1 + .../tests/accumulator/bottomN.spec.ts | 1 + .../tests/accumulator/count.spec.ts | 1 + .../tests/accumulator/covariancePop.spec.ts | 1 + .../tests/accumulator/covarianceSamp.spec.ts | 1 + .../tests/accumulator/denseRank.spec.ts | 1 + .../tests/accumulator/derivative.spec.ts | 3 +- .../tests/accumulator/documentNumber.spec.ts | 1 + .../tests/accumulator/expMovingAvg.spec.ts | 1 + .../tests/accumulator/first.spec.ts | 1 + .../tests/accumulator/firstN.spec.ts | 1 + .../tests/accumulator/integral.spec.ts | 1 + .../tests/accumulator/last.spec.ts | 1 + .../tests/accumulator/lastN.spec.ts | 1 + .../tests/accumulator/linearFill.spec.ts | 1 + .../tests/accumulator/locf.spec.ts | 1 + .../tests/accumulator/max.spec.ts | 1 + .../tests/accumulator/maxN.spec.ts | 1 + .../tests/accumulator/median.spec.ts | 1 + .../tests/accumulator/mergeObjects.spec.ts | 1 + .../tests/accumulator/min.spec.ts | 1 + .../tests/accumulator/minN.spec.ts | 1 + .../tests/accumulator/percentile.spec.ts | 1 + .../tests/accumulator/push.spec.ts | 1 + .../tests/accumulator/rank.spec.ts | 1 + .../tests/accumulator/shift.spec.ts | 1 + .../tests/accumulator/stdDevPop.spec.ts | 1 + .../tests/accumulator/stdDevSamp.spec.ts | 5 +- .../tests/accumulator/sum.spec.ts | 1 + .../tests/accumulator/top.spec.ts | 1 + .../tests/accumulator/topN.spec.ts | 1 + .../tests/expression/abs.spec.ts | 1 - .../tests/expression/acos.spec.ts | 1 - .../tests/expression/acosh.spec.ts | 1 - .../tests/expression/add.spec.ts | 9 +- .../tests/expression/allElementsTrue.spec.ts | 1 - .../tests/expression/and.spec.ts | 1 - .../tests/expression/anyElementTrue.spec.ts | 1 - .../tests/expression/arrayElemAt.spec.ts | 5 +- .../tests/expression/arrayToObject.spec.ts | 1 - .../tests/expression/asin.spec.ts | 1 - .../tests/expression/asinh.spec.ts | 1 - .../tests/expression/atan.spec.ts | 1 - .../tests/expression/atan2.spec.ts | 1 - .../tests/expression/atanh.spec.ts | 1 - .../tests/expression/avg.spec.ts | 1 - .../tests/expression/binarySize.spec.ts | 1 - .../tests/expression/bitAnd.spec.ts | 9 +- .../tests/expression/bitNot.spec.ts | 5 +- .../tests/expression/bitOr.spec.ts | 9 +- .../tests/expression/bitXor.spec.ts | 5 +- .../tests/expression/bsonSize.spec.ts | 1 - .../tests/expression/case.spec.ts | 1 - .../tests/expression/ceil.spec.ts | 1 - .../tests/expression/cmp.spec.ts | 1 - .../tests/expression/concat.spec.ts | 1 - .../tests/expression/concatArrays.spec.ts | 1 - .../tests/expression/cond.spec.ts | 5 +- .../tests/expression/convert.spec.ts | 22 +++- .../tests/expression/cos.spec.ts | 1 - .../tests/expression/cosh.spec.ts | 1 - .../tests/expression/dateAdd.spec.ts | 3 +- .../tests/expression/dateDiff.spec.ts | 1 - .../tests/expression/dateFromParts.spec.ts | 1 - .../tests/expression/dateFromString.spec.ts | 3 +- .../tests/expression/dateSubtract.spec.ts | 1 - .../tests/expression/dateToParts.spec.ts | 1 - .../tests/expression/dateToString.spec.ts | 1 - .../tests/expression/dateTrunc.spec.ts | 1 - .../tests/expression/dayOfMonth.spec.ts | 1 - .../tests/expression/dayOfWeek.spec.ts | 1 - .../tests/expression/dayOfYear.spec.ts | 1 - .../tests/expression/degreesToRadians.spec.ts | 1 - .../tests/expression/divide.spec.ts | 1 - .../tests/expression/eq.spec.ts | 1 - .../tests/expression/exp.spec.ts | 1 - .../tests/expression/filter.spec.ts | 1 - .../tests/expression/first.spec.ts | 1 - .../tests/expression/firstN.spec.ts | 1 - .../tests/expression/floor.spec.ts | 1 - .../tests/expression/function.spec.ts | 1 - .../tests/expression/getField.spec.ts | 1 - .../tests/expression/gt.spec.ts | 1 - .../tests/expression/gte.spec.ts | 1 - .../tests/expression/hour.spec.ts | 1 - .../tests/expression/ifNull.spec.ts | 1 - .../tests/expression/in.spec.ts | 1 - .../tests/expression/indexOfArray.spec.ts | 1 - .../tests/expression/indexOfBytes.spec.ts | 1 - .../tests/expression/indexOfCP.spec.ts | 1 - .../tests/expression/isArray.spec.ts | 1 - .../tests/expression/isNumber.spec.ts | 2 +- .../tests/expression/isoDayOfWeek.spec.ts | 1 - .../tests/expression/isoWeek.spec.ts | 1 - .../tests/expression/isoWeekYear.spec.ts | 1 - .../tests/expression/last.spec.ts | 1 - .../tests/expression/lastN.spec.ts | 1 - .../tests/expression/let.spec.ts | 5 +- .../tests/expression/literal.spec.ts | 1 - .../tests/expression/ln.spec.ts | 5 +- .../tests/expression/log.spec.ts | 1 - .../tests/expression/log10.spec.ts | 1 - .../tests/expression/lt.spec.ts | 1 - .../tests/expression/lte.spec.ts | 1 - .../tests/expression/ltrim.spec.ts | 1 - .../tests/expression/map.spec.ts | 1 - .../tests/expression/max.spec.ts | 1 - .../tests/expression/maxN.spec.ts | 1 - .../tests/expression/median.spec.ts | 1 - .../tests/expression/mergeObjects.spec.ts | 1 - .../tests/expression/meta.spec.ts | 1 - .../tests/expression/millisecond.spec.ts | 1 - .../tests/expression/min.spec.ts | 1 - .../tests/expression/minN.spec.ts | 1 - .../tests/expression/minute.spec.ts | 1 - .../tests/expression/mod.spec.ts | 1 - .../tests/expression/month.spec.ts | 1 - .../tests/expression/multiply.spec.ts | 1 - .../tests/expression/ne.spec.ts | 1 - .../tests/expression/not.spec.ts | 1 - .../tests/expression/objectToArray.spec.ts | 1 - .../tests/expression/or.spec.ts | 1 - .../tests/expression/percentile.spec.ts | 1 - .../tests/expression/pow.spec.ts | 1 - .../tests/expression/radiansToDegrees.spec.ts | 1 - .../tests/expression/rand.spec.ts | 1 - .../tests/expression/range.spec.ts | 1 - .../tests/expression/reduce.spec.ts | 1 - .../tests/expression/regexFind.spec.ts | 1 - .../tests/expression/regexFindAll.spec.ts | 1 - .../tests/expression/regexMatch.spec.ts | 1 - .../tests/expression/replaceAll.spec.ts | 1 - .../tests/expression/replaceOne.spec.ts | 1 - .../tests/expression/reverseArray.spec.ts | 5 +- .../tests/expression/round.spec.ts | 1 - .../tests/expression/rtrim.spec.ts | 1 - .../tests/expression/second.spec.ts | 1 - .../tests/expression/setDifference.spec.ts | 1 - .../tests/expression/setEquals.spec.ts | 1 - .../tests/expression/setField.spec.ts | 3 +- .../tests/expression/setIntersection.spec.ts | 3 +- .../tests/expression/setIsSubset.spec.ts | 1 - .../tests/expression/setUnion.spec.ts | 1 - .../tests/expression/sin.spec.ts | 1 - .../tests/expression/sinh.spec.ts | 1 - .../tests/expression/size.spec.ts | 1 - .../tests/expression/slice.spec.ts | 5 +- .../tests/expression/sortArray.spec.ts | 22 +++- .../tests/expression/split.spec.ts | 1 - .../tests/expression/sqrt.spec.ts | 5 +- .../tests/expression/stdDevPop.spec.ts | 1 - .../tests/expression/stdDevSamp.spec.ts | 1 - .../tests/expression/strLenBytes.spec.ts | 1 - .../tests/expression/strLenCP.spec.ts | 1 - .../tests/expression/strcasecmp.spec.ts | 1 - .../tests/expression/substr.spec.ts | 1 - .../tests/expression/substrBytes.spec.ts | 1 - .../tests/expression/substrCP.spec.ts | 1 - .../tests/expression/subtract.spec.ts | 1 - .../tests/expression/sum.spec.ts | 5 +- .../tests/expression/switch.spec.ts | 1 - .../tests/expression/tan.spec.ts | 1 - .../tests/expression/tanh.spec.ts | 1 - .../tests/expression/toBool.spec.ts | 1 - .../tests/expression/toDate.spec.ts | 1 - .../tests/expression/toDecimal.spec.ts | 1 - .../tests/expression/toDouble.spec.ts | 1 - .../tests/expression/toHashedIndexKey.spec.ts | 1 - .../tests/expression/toInt.spec.ts | 1 - .../tests/expression/toLong.spec.ts | 3 +- .../tests/expression/toLower.spec.ts | 1 - .../tests/expression/toObjectId.spec.ts | 1 - .../tests/expression/toString.spec.ts | 1 - .../tests/expression/toUpper.spec.ts | 1 - .../tests/expression/trim.spec.ts | 1 - .../tests/expression/trunc.spec.ts | 1 - .../tests/expression/tsIncrement.spec.ts | 1 - .../tests/expression/tsSecond.spec.ts | 1 - .../tests/expression/type.spec.ts | 1 - .../tests/expression/unsetField.spec.ts | 1 - .../tests/expression/week.spec.ts | 1 - .../tests/expression/year.spec.ts | 1 - .../tests/expression/zip.spec.ts | 1 - .../mql-typescript/tests/query/all.spec.ts | 53 +++++++++ .../mql-typescript/tests/query/and.spec.ts | 49 ++++++++ .../tests/query/bitsAllClear.spec.ts | 52 ++++++++ .../tests/query/bitsAllSet.spec.ts | 50 ++++++++ .../tests/query/bitsAnyClear.spec.ts | 52 ++++++++ .../tests/query/bitsAnySet.spec.ts | 50 ++++++++ .../mql-typescript/tests/query/box.spec.ts | 2 + .../mql-typescript/tests/query/center.spec.ts | 2 + .../tests/query/centerSphere.spec.ts | 2 + .../tests/query/elemMatch.spec.ts | 59 +++++++++ .../mql-typescript/tests/query/eq.spec.ts | 83 +++++++++++++ .../mql-typescript/tests/query/exists.spec.ts | 38 ++++++ .../mql-typescript/tests/query/expr.spec.ts | 51 ++++++++ .../tests/query/geoIntersects.spec.ts | 80 +++++++++++++ .../tests/query/geoWithin.spec.ts | 80 +++++++++++++ .../tests/query/geometry.spec.ts | 2 + .../mql-typescript/tests/query/gt.spec.ts | 21 ++++ .../mql-typescript/tests/query/gte.spec.ts | 21 ++++ .../mql-typescript/tests/query/in.spec.ts | 43 +++++++ .../tests/query/jsonSchema.spec.ts | 42 +++++++ .../mql-typescript/tests/query/lt.spec.ts | 21 ++++ .../mql-typescript/tests/query/lte.spec.ts | 21 ++++ .../tests/query/maxDistance.spec.ts | 2 + .../tests/query/minDistance.spec.ts | 2 + .../mql-typescript/tests/query/mod.spec.ts | 36 ++++++ .../mql-typescript/tests/query/ne.spec.ts | 21 ++++ .../mql-typescript/tests/query/near.spec.ts | 29 +++++ .../tests/query/nearSphere.spec.ts | 29 +++++ .../mql-typescript/tests/query/nin.spec.ts | 34 ++++++ .../mql-typescript/tests/query/nor.spec.ts | 67 +++++++++++ .../mql-typescript/tests/query/not.spec.ts | 38 ++++++ .../mql-typescript/tests/query/or.spec.ts | 41 +++++++ .../tests/query/polygon.spec.ts | 2 + .../mql-typescript/tests/query/rand.spec.ts | 20 ++++ .../mql-typescript/tests/query/regex.spec.ts | 34 ++++++ .../tests/query/sampleRate.spec.ts | 17 +++ .../mql-typescript/tests/query/size.spec.ts | 20 ++++ .../mql-typescript/tests/query/text.spec.ts | 112 ++++++++++++++++++ .../mql-typescript/tests/query/type.spec.ts | 71 +++++++++++ .../mql-typescript/tests/query/where.spec.ts | 35 ++++++ 237 files changed, 1795 insertions(+), 279 deletions(-) create mode 100644 packages/mql-typescript/.vscode/launch.json create mode 100644 packages/mql-typescript/tests/query/all.spec.ts create mode 100644 packages/mql-typescript/tests/query/and.spec.ts create mode 100644 packages/mql-typescript/tests/query/bitsAllClear.spec.ts create mode 100644 packages/mql-typescript/tests/query/bitsAllSet.spec.ts create mode 100644 packages/mql-typescript/tests/query/bitsAnyClear.spec.ts create mode 100644 packages/mql-typescript/tests/query/bitsAnySet.spec.ts create mode 100644 packages/mql-typescript/tests/query/box.spec.ts create mode 100644 packages/mql-typescript/tests/query/center.spec.ts create mode 100644 packages/mql-typescript/tests/query/centerSphere.spec.ts create mode 100644 packages/mql-typescript/tests/query/elemMatch.spec.ts create mode 100644 packages/mql-typescript/tests/query/eq.spec.ts create mode 100644 packages/mql-typescript/tests/query/exists.spec.ts create mode 100644 packages/mql-typescript/tests/query/expr.spec.ts create mode 100644 packages/mql-typescript/tests/query/geoIntersects.spec.ts create mode 100644 packages/mql-typescript/tests/query/geoWithin.spec.ts create mode 100644 packages/mql-typescript/tests/query/geometry.spec.ts create mode 100644 packages/mql-typescript/tests/query/gt.spec.ts create mode 100644 packages/mql-typescript/tests/query/gte.spec.ts create mode 100644 packages/mql-typescript/tests/query/in.spec.ts create mode 100644 packages/mql-typescript/tests/query/jsonSchema.spec.ts create mode 100644 packages/mql-typescript/tests/query/lt.spec.ts create mode 100644 packages/mql-typescript/tests/query/lte.spec.ts create mode 100644 packages/mql-typescript/tests/query/maxDistance.spec.ts create mode 100644 packages/mql-typescript/tests/query/minDistance.spec.ts create mode 100644 packages/mql-typescript/tests/query/mod.spec.ts create mode 100644 packages/mql-typescript/tests/query/ne.spec.ts create mode 100644 packages/mql-typescript/tests/query/near.spec.ts create mode 100644 packages/mql-typescript/tests/query/nearSphere.spec.ts create mode 100644 packages/mql-typescript/tests/query/nin.spec.ts create mode 100644 packages/mql-typescript/tests/query/nor.spec.ts create mode 100644 packages/mql-typescript/tests/query/not.spec.ts create mode 100644 packages/mql-typescript/tests/query/or.spec.ts create mode 100644 packages/mql-typescript/tests/query/polygon.spec.ts create mode 100644 packages/mql-typescript/tests/query/rand.spec.ts create mode 100644 packages/mql-typescript/tests/query/regex.spec.ts create mode 100644 packages/mql-typescript/tests/query/sampleRate.spec.ts create mode 100644 packages/mql-typescript/tests/query/size.spec.ts create mode 100644 packages/mql-typescript/tests/query/text.spec.ts create mode 100644 packages/mql-typescript/tests/query/type.spec.ts create mode 100644 packages/mql-typescript/tests/query/where.spec.ts diff --git a/.gitignore b/.gitignore index ea64e2b8..e5103b47 100644 --- a/.gitignore +++ b/.gitignore @@ -12,8 +12,7 @@ report.json .compiled-sources expansions.yml .nvmrc -.vscode -!.vscode/extentions.json +.vscode/settings.json .migration-cache lerna-debug.log packages/**/*.tgz @@ -28,4 +27,4 @@ coverage env-vars.sh mongocryptd.pid mongodb-csfle -.esm-wrapper.mjs \ No newline at end of file +.esm-wrapper.mjs diff --git a/packages/mql-typescript/.vscode/launch.json b/packages/mql-typescript/.vscode/launch.json new file mode 100644 index 00000000..88b85bd7 --- /dev/null +++ b/packages/mql-typescript/.vscode/launch.json @@ -0,0 +1,54 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Run CLI", + "skipFiles": ["/**"], + "program": "${workspaceFolder}/bin/runner.js", + "args": ["${input:command}"], + "preLaunchTask": "npm: compile", + "outFiles": ["${workspaceFolder}/dist/**/*.js"] + }, + { + "type": "node", + "request": "launch", + "name": "Run CLI with filters", + "skipFiles": ["/**"], + "program": "${workspaceFolder}/bin/runner.js", + "args": [ + "${input:command}", + "--category", + "${input:categoryFilter}", + "--operator", + "${input:operatorFilter}" + ], + "preLaunchTask": "npm: compile", + "outFiles": ["${workspaceFolder}/dist/**/*.js"] + } + ], + "inputs": [ + { + "id": "command", + "type": "pickString", + "description": "Select the command to run.", + "options": ["schema", "driver-schema", "tests"], + "default": "schema" + }, + { + "id": "categoryFilter", + "type": "pickString", + "description": "Select the category filter to apply.", + "options": ["accumulator", "expression", "query", "search", "stage"] + }, + { + "id": "operatorFilter", + "type": "promptString", + "description": "Enter the operator filter to apply" + } + ] +} diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index c027132e..7978e4fc 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit c027132ee06556598a03496908ee29a11d7a6398 +Subproject commit 7978e4fcf6fb84a46d97e6119f9a80b2b09419d6 diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 5c78c354..05b0ac80 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -1,10 +1,10 @@ import type * as bson from 'bson'; import { FilterOperators } from 'mongodb'; -type Condition = AlternativeType | FilterOperators; +type Condition = AlternativeType | FilterOperators | QueryOperator; type AlternativeType = T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; -type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; +type RegExpOrString = T extends string ? Regex | T : T; type KeysOfAType = { [k in keyof T]: NonNullable extends Type ? k : never; }[keyof T]; @@ -3675,7 +3675,7 @@ export namespace Aggregation.Query { * Matches values that are equal to a specified value. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/} */ - $eq: any; + $eq: Expression; } /** diff --git a/packages/mql-typescript/src/cli.ts b/packages/mql-typescript/src/cli.ts index 714eb6ff..a16ff0d7 100644 --- a/packages/mql-typescript/src/cli.ts +++ b/packages/mql-typescript/src/cli.ts @@ -2,6 +2,7 @@ import yargs from 'yargs'; import { SchemaGenerator } from './schemaGenerator'; import { TestGenerator } from './testGenerator/testGenerator'; import { DriverSchemaGenerator } from './driverSchema/driverSchemaGenerator'; +import { GeneratorBase } from './generator'; async function main() { const argv = await yargs @@ -13,36 +14,46 @@ async function main() { .command( 'driver-schema', 'Updates the php driver definitions with the schema for the tests', + { + category: { + type: 'string', + choices: ['accumulator', 'expression', 'query', 'search', 'stage'], + description: + 'The category of the operator to update. If not provided, all categories will be updated.', + }, + operator: { + type: 'string', + description: + 'The operator to update the schema for. If not provided, all operators will be updated.', + }, + }, ) .demandCommand(1, 'A command must be provided') .help().argv; const [command] = argv._.map(String); + const categoryFilter = argv.category as string | undefined; + const operatorFilter = argv.operator as string | undefined; + + let generator: GeneratorBase; switch (command) { case 'schema': - { - const schemaGenerator = new SchemaGenerator(); - await schemaGenerator.generate(); - } + generator = new SchemaGenerator(); break; case 'tests': - { - const testGenerator = new TestGenerator(); - await testGenerator.generate(); - } + generator = new TestGenerator(); break; case 'driver-schema': - { - const driverSchemaGenerator = new DriverSchemaGenerator(); - await driverSchemaGenerator.generate(); - } + generator = new DriverSchemaGenerator(); break; default: throw new Error( `Unknown command: ${command}. See '${argv.$0} --help' for more information.`, ); } + + await generator.generate(categoryFilter, operatorFilter); } main().catch((err) => { diff --git a/packages/mql-typescript/src/driverSchema/docsCrawler.ts b/packages/mql-typescript/src/driverSchema/docsCrawler.ts index 4a7a1c9f..0e44853c 100644 --- a/packages/mql-typescript/src/driverSchema/docsCrawler.ts +++ b/packages/mql-typescript/src/driverSchema/docsCrawler.ts @@ -58,7 +58,7 @@ class IsoDateProcessor extends RegexCustomTypeProcessor { s || '00' }.${ms || '000'}${tz || 'Z'}`; const date = new Date(normalized); - // Make surd we're in the range 0000-01-01T00:00:00.000Z - 9999-12-31T23:59:59.999Z + // Make sure we're in the range 0000-01-01T00:00:00.000Z - 9999-12-31T23:59:59.999Z if ( date.getTime() >= -62167219200000 && date.getTime() <= 253402300799999 diff --git a/packages/mql-typescript/src/driverSchema/staticSchemas.ts b/packages/mql-typescript/src/driverSchema/staticSchemas.ts index bc98b516..551ca02e 100644 --- a/packages/mql-typescript/src/driverSchema/staticSchemas.ts +++ b/packages/mql-typescript/src/driverSchema/staticSchemas.ts @@ -81,9 +81,15 @@ const inventorySchema: SchemaInfo = { qty: { types: [{ bsonType: 'Int32' }, { bsonType: 'Undefined' }], }, + quantity: { + types: [{ bsonType: 'Int32' }, { bsonType: 'Undefined' }], + }, sale: { types: [{ bsonType: 'Boolean' }], }, + tags: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, }, }; @@ -1458,11 +1464,18 @@ const staticSchemas: SchemaMap = { }, query: { and: inventorySchema, - exists: { - ['Exists and Not Equal To']: inventorySchema, + eq: { + ['Regex Match Behaviour']: { + collectionName: 'companies', + schema: { + _id: { types: [{ bsonType: 'Int32' }] }, + company: { types: [{ bsonType: 'String' }] }, + }, + }, }, + exists: inventorySchema, geoIntersects: geoPolygonSchema, - geoWithin: geoPointSchema, + geoWithin: geoPolygonSchema, jsonSchema: { collectionName: 'TestCollection', schema: { diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index 64f7b3d3..abd35716 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -32,6 +32,9 @@ export abstract class GeneratorBase { private outputStream?: NodeJS.WritableStream; constructor() { + // The default YAML schema will represent BsonDate using the Date representation because + // it's a subclass of Date. We find the implicit type for Date and modify it to use predicate + // instead of instanceOf, so it will only match Date instances that are not BsonDate. if ('implicit' in yaml.DEFAULT_SCHEMA) { const implicit = yaml.DEFAULT_SCHEMA.implicit as yaml.Type[]; const timestamp = implicit.find((type) => type.instanceOf === Date); @@ -178,14 +181,16 @@ export abstract class GeneratorBase { 'config', ); - private async *listCategories(): AsyncIterable<{ + private async *listCategories( + filterRegex: RegExp | undefined, + ): AsyncIterable<{ category: string; folder: string; }> { for await (const folder of await fs.readdir(this.configDir, { withFileTypes: true, })) { - if (folder.isDirectory()) { + if (folder.isDirectory() && filterRegex?.test(folder.name) !== false) { yield { category: folder.name, folder: path.join(folder.parentPath, folder.name), @@ -194,18 +199,27 @@ export abstract class GeneratorBase { } } - private async *listSourceYAMLFiles(): AsyncIterable<{ + private async *listSourceYAMLFiles( + categoryRegex: RegExp | undefined, + operatorRegex: RegExp | undefined, + ): AsyncIterable<{ category: string; operators: () => AsyncIterable<{ yaml: unknown; path: string }>; }> { - for await (const { category, folder } of this.listCategories()) { + for await (const { category, folder } of this.listCategories( + categoryRegex, + )) { yield { category, operators: async function* () { for await (const file of await fs.readdir(folder, { withFileTypes: true, })) { - if (file.isFile() && file.name.endsWith('.yaml')) { + if ( + file.isFile() && + file.name.endsWith('.yaml') && + operatorRegex?.test(file.name) !== false + ) { const filePath = path.join(file.parentPath, file.name); const content = await fs.readFile(filePath, 'utf8'); const parsed = yaml.load(content, GeneratorBase.loadOptions); @@ -261,8 +275,18 @@ export abstract class GeneratorBase { protected abstract generateImpl(iterable: YamlFiles): Promise; - public generate(): Promise { - const files = this.listSourceYAMLFiles(); + public generate( + categoryFilter?: string, + operatorFilter?: string, + ): Promise { + const categoryRegex = categoryFilter + ? new RegExp(categoryFilter) + : undefined; + const operatorRegex = operatorFilter + ? new RegExp(operatorFilter) + : undefined; + + const files = this.listSourceYAMLFiles(categoryRegex, operatorRegex); return this.generateImpl(files); } } diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schemaGenerator.ts index 0b443050..0b22f8e2 100644 --- a/packages/mql-typescript/src/schemaGenerator.ts +++ b/packages/mql-typescript/src/schemaGenerator.ts @@ -227,10 +227,10 @@ export class SchemaGenerator extends GeneratorBase { import type * as bson from 'bson'; import { FilterOperators } from 'mongodb'; - type Condition = AlternativeType | FilterOperators; + type Condition = AlternativeType | FilterOperators | QueryOperator; type AlternativeType = T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; - type RegExpOrString = T extends string ? bson.BSONRegExp | RegExp | T : T; + type RegExpOrString = T extends string ? Regex | T : T; type KeysOfAType = { [k in keyof T]: NonNullable extends Type ? k : never; }[keyof T]; diff --git a/packages/mql-typescript/src/testGenerator/testGenerator.ts b/packages/mql-typescript/src/testGenerator/testGenerator.ts index 44886a8a..cee00fdd 100644 --- a/packages/mql-typescript/src/testGenerator/testGenerator.ts +++ b/packages/mql-typescript/src/testGenerator/testGenerator.ts @@ -9,6 +9,7 @@ import { SimplifiedSchemaBaseType, } from 'mongodb-schema'; import { unsupportedAggregations } from './unsupportedAggregations'; +import * as bson from 'bson'; type TestType = NonNullable[number]; @@ -32,7 +33,7 @@ export class TestGenerator extends GeneratorBase { case 'Double': return 'bson.Double | number'; case 'Int32': - return 'bson.Int32'; + return 'bson.Int32 | number'; case 'Long' as any: case 'Int64': return 'bson.Long'; @@ -85,6 +86,38 @@ export class TestGenerator extends GeneratorBase { return result; } + private stageToTS(stage: any): string { + switch (typeof stage) { + case 'object': + if (stage === null) { + return 'null'; + } + + if (Array.isArray(stage)) { + return `[${stage.map((s) => this.stageToTS(s)).join(', ')}]`; + } + + if (stage instanceof bson.Binary) { + return `bson.Binary.createFromBase64('${stage.toString('base64')}', ${stage.sub_type})`; + } + + if ('$code' in stage && typeof stage.$code === 'string') { + return JSON.stringify(removeNewlines(stage.$code)); + } + + let result = '{'; + for (const [key, value] of Object.entries(stage)) { + result += `${JSON.stringify(key)}: ${this.stageToTS(value)},`; + } + result += '}'; + return result; + case 'undefined': + return 'undefined'; + default: + return JSON.stringify(stage); + } + } + private async emitTestBody( category: string, operator: string, @@ -120,20 +153,6 @@ export class TestGenerator extends GeneratorBase { for (let i = 0; i < test.pipeline.length; i++) { const stage = test.pipeline[i]; - const json = JSON.stringify(stage, (_, value: any): any => { - if ( - value && - typeof value === 'object' && - '$code' in value && - typeof value.$code === 'string' - ) { - return removeNewlines(value.$code); - } - - return value; - }); - - const test2 = unsupportedAggregations[category]; // Some pipelines project to new types, which is not supported by the static type system. // In this case, we typecast to any to suppress the type error. @@ -148,7 +167,9 @@ export class TestGenerator extends GeneratorBase { ); } - this.emit(json); + const temp = this.stageToTS(stage); + + this.emit(this.stageToTS(stage)); if (isUnsupportedStage) { this.emit(' as any'); @@ -161,7 +182,11 @@ export class TestGenerator extends GeneratorBase { protected override async generateImpl(yamlFiles: YamlFiles): Promise { for await (const file of yamlFiles) { - if (file.category !== 'expression') { + if ( + file.category !== 'query' && + file.category !== 'expression' && + file.category !== 'accumulator' + ) { // TODO: enable for others continue; } @@ -185,7 +210,7 @@ export class TestGenerator extends GeneratorBase { const filePath = path.join(basePath, `${operatorName}.spec.ts`); this.emitToFile(filePath); - this.emit(`import * as schema from '../../out/schema';\n\n`); + this.emit("import * as schema from '../../out/schema';\n"); this.emit("import * as bson from 'bson';\n\n"); let i = 0; diff --git a/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts b/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts index 385acf9e..fdbf0ad7 100644 --- a/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts +++ b/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts @@ -94,4 +94,12 @@ export const unsupportedAggregations: { }, }, }, + query: { + eq: { + 'Field in Embedded Document Equals a Value': { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + }, }; diff --git a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts index 736184bd..9479b73f 100644 --- a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts +++ b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use $accumulator to Implement the $avg Operator @@ -18,22 +19,13 @@ function test0() { _id: '$author', avgCopies: { $accumulator: { - init: function () { - return { count: 0, sum: 0 }; - }, - accumulate: function (state, numCopies) { - return { count: state.count + 1, sum: state.sum + numCopies }; - }, + init: 'function() { return { count: 0, sum: 0 }}', + accumulate: + 'function(state, numCopies) { return { count: state.count + 1, sum: state.sum + numCopies }}', accumulateArgs: ['$copies'], - merge: function (state1, state2) { - return { - count: state1.count + state2.count, - sum: state1.sum + state2.sum, - }; - }, - finalize: function (state) { - return state.sum / state.count; - }, + merge: + 'function(state1, state2) { return { count: state1.count + state2.count, sum: state1.sum + state2.sum }}', + finalize: 'function(state) { return (state.sum / state.count)}', lang: 'js', }, }, @@ -60,28 +52,14 @@ function test1() { _id: { city: '$city' }, restaurants: { $accumulator: { - init: function (city, userProfileCity) { - return { max: city === userProfileCity ? 3 : 1, restaurants: [] }; - }, + init: 'function(city, userProfileCity) { return { max: city === userProfileCity ? 3 : 1, restaurants: [] }}', initArgs: ['$city', 'Bettles'], - accumulate: function (state, restaurantName) { - if (state.restaurants.length < state.max) { - state.restaurants.push(restaurantName); - } - return state; - }, + accumulate: + 'function(state, restaurantName) { if (state.restaurants.length < state.max) { state.restaurants.push(restaurantName); } return state;}', accumulateArgs: ['$name'], - merge: function (state1, state2) { - return { - max: state1.max, - restaurants: state1.restaurants - .concat(state2.restaurants) - .slice(0, state1.max), - }; - }, - finalize: function (state) { - return state.restaurants; - }, + merge: + 'function(state1, state2) { return { max: state1.max, restaurants: state1.restaurants.concat(state2.restaurants).slice(0, state1.max) }}', + finalize: 'function(state) { return state.restaurants}', lang: 'js', }, }, diff --git a/packages/mql-typescript/tests/accumulator/addToSet.spec.ts b/packages/mql-typescript/tests/accumulator/addToSet.spec.ts index c912e27c..12eae363 100644 --- a/packages/mql-typescript/tests/accumulator/addToSet.spec.ts +++ b/packages/mql-typescript/tests/accumulator/addToSet.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/avg.spec.ts b/packages/mql-typescript/tests/accumulator/avg.spec.ts index 97be14da..23b06329 100644 --- a/packages/mql-typescript/tests/accumulator/avg.spec.ts +++ b/packages/mql-typescript/tests/accumulator/avg.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/bottom.spec.ts b/packages/mql-typescript/tests/accumulator/bottom.spec.ts index 836e9ca9..a44c62cb 100644 --- a/packages/mql-typescript/tests/accumulator/bottom.spec.ts +++ b/packages/mql-typescript/tests/accumulator/bottom.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Bottom Score diff --git a/packages/mql-typescript/tests/accumulator/bottomN.spec.ts b/packages/mql-typescript/tests/accumulator/bottomN.spec.ts index deaaed84..7f14d240 100644 --- a/packages/mql-typescript/tests/accumulator/bottomN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/bottomN.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Three Lowest Scores diff --git a/packages/mql-typescript/tests/accumulator/count.spec.ts b/packages/mql-typescript/tests/accumulator/count.spec.ts index 0f8f6563..9fd9e056 100644 --- a/packages/mql-typescript/tests/accumulator/count.spec.ts +++ b/packages/mql-typescript/tests/accumulator/count.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts b/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts index b89e7902..fcee94e0 100644 --- a/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts +++ b/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Example diff --git a/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts b/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts index 0a98c743..9814d962 100644 --- a/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts +++ b/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Example diff --git a/packages/mql-typescript/tests/accumulator/denseRank.spec.ts b/packages/mql-typescript/tests/accumulator/denseRank.spec.ts index 093c9eb6..8c67d70a 100644 --- a/packages/mql-typescript/tests/accumulator/denseRank.spec.ts +++ b/packages/mql-typescript/tests/accumulator/denseRank.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Dense Rank Partitions by an Integer Field diff --git a/packages/mql-typescript/tests/accumulator/derivative.spec.ts b/packages/mql-typescript/tests/accumulator/derivative.spec.ts index b514a6e0..1271fb87 100644 --- a/packages/mql-typescript/tests/accumulator/derivative.spec.ts +++ b/packages/mql-typescript/tests/accumulator/derivative.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Example @@ -26,7 +27,7 @@ function test0() { }, /** - * This stage is unsupported by the static type system (it may involve a projection), so we're casting it to 'any'. + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). */ { $match: { truckAverageSpeed: { $gt: 50 } } } as any, ]; diff --git a/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts b/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts index 3f49b7eb..8d700b0d 100644 --- a/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts +++ b/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Document Number for Each State diff --git a/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts b/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts index 89e32f35..f80c9fae 100644 --- a/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts +++ b/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Exponential Moving Average Using N diff --git a/packages/mql-typescript/tests/accumulator/first.spec.ts b/packages/mql-typescript/tests/accumulator/first.spec.ts index 40b2d890..4ea40497 100644 --- a/packages/mql-typescript/tests/accumulator/first.spec.ts +++ b/packages/mql-typescript/tests/accumulator/first.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/firstN.spec.ts b/packages/mql-typescript/tests/accumulator/firstN.spec.ts index a7a14810..fb674ebd 100644 --- a/packages/mql-typescript/tests/accumulator/firstN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/firstN.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Null and Missing Values diff --git a/packages/mql-typescript/tests/accumulator/integral.spec.ts b/packages/mql-typescript/tests/accumulator/integral.spec.ts index 9cff56da..b1a1dc69 100644 --- a/packages/mql-typescript/tests/accumulator/integral.spec.ts +++ b/packages/mql-typescript/tests/accumulator/integral.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Example diff --git a/packages/mql-typescript/tests/accumulator/last.spec.ts b/packages/mql-typescript/tests/accumulator/last.spec.ts index 28677b4e..232c1726 100644 --- a/packages/mql-typescript/tests/accumulator/last.spec.ts +++ b/packages/mql-typescript/tests/accumulator/last.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/lastN.spec.ts b/packages/mql-typescript/tests/accumulator/lastN.spec.ts index 9c85d469..d698de98 100644 --- a/packages/mql-typescript/tests/accumulator/lastN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/lastN.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Last Three Player Scores for a Single Game diff --git a/packages/mql-typescript/tests/accumulator/linearFill.spec.ts b/packages/mql-typescript/tests/accumulator/linearFill.spec.ts index f3b1d1f8..8528ebf0 100644 --- a/packages/mql-typescript/tests/accumulator/linearFill.spec.ts +++ b/packages/mql-typescript/tests/accumulator/linearFill.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Fill Missing Values with Linear Interpolation diff --git a/packages/mql-typescript/tests/accumulator/locf.spec.ts b/packages/mql-typescript/tests/accumulator/locf.spec.ts index aff23ab8..3dda84a6 100644 --- a/packages/mql-typescript/tests/accumulator/locf.spec.ts +++ b/packages/mql-typescript/tests/accumulator/locf.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Fill Missing Values with the Last Observed Value diff --git a/packages/mql-typescript/tests/accumulator/max.spec.ts b/packages/mql-typescript/tests/accumulator/max.spec.ts index 45235678..140ce308 100644 --- a/packages/mql-typescript/tests/accumulator/max.spec.ts +++ b/packages/mql-typescript/tests/accumulator/max.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/maxN.spec.ts b/packages/mql-typescript/tests/accumulator/maxN.spec.ts index 2f5fcf91..139ba56d 100644 --- a/packages/mql-typescript/tests/accumulator/maxN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/maxN.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Maximum Three Scores for a Single Game diff --git a/packages/mql-typescript/tests/accumulator/median.spec.ts b/packages/mql-typescript/tests/accumulator/median.spec.ts index 3a387b5e..eca33b34 100644 --- a/packages/mql-typescript/tests/accumulator/median.spec.ts +++ b/packages/mql-typescript/tests/accumulator/median.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use $median as an Accumulator diff --git a/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts b/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts index 587be070..9b035b18 100644 --- a/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts +++ b/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * $mergeObjects as an Accumulator diff --git a/packages/mql-typescript/tests/accumulator/min.spec.ts b/packages/mql-typescript/tests/accumulator/min.spec.ts index 27b630e4..2de7e3e8 100644 --- a/packages/mql-typescript/tests/accumulator/min.spec.ts +++ b/packages/mql-typescript/tests/accumulator/min.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/minN.spec.ts b/packages/mql-typescript/tests/accumulator/minN.spec.ts index 34d2e503..b235aa50 100644 --- a/packages/mql-typescript/tests/accumulator/minN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/minN.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Minimum Three Scores for a Single Game diff --git a/packages/mql-typescript/tests/accumulator/percentile.spec.ts b/packages/mql-typescript/tests/accumulator/percentile.spec.ts index 0b72e1e5..3c9062cf 100644 --- a/packages/mql-typescript/tests/accumulator/percentile.spec.ts +++ b/packages/mql-typescript/tests/accumulator/percentile.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Calculate a Single Value as an Accumulator diff --git a/packages/mql-typescript/tests/accumulator/push.spec.ts b/packages/mql-typescript/tests/accumulator/push.spec.ts index 9ce463e4..875d4db6 100644 --- a/packages/mql-typescript/tests/accumulator/push.spec.ts +++ b/packages/mql-typescript/tests/accumulator/push.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/rank.spec.ts b/packages/mql-typescript/tests/accumulator/rank.spec.ts index 3690887f..a6de9abd 100644 --- a/packages/mql-typescript/tests/accumulator/rank.spec.ts +++ b/packages/mql-typescript/tests/accumulator/rank.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Rank Partitions by an Integer Field diff --git a/packages/mql-typescript/tests/accumulator/shift.spec.ts b/packages/mql-typescript/tests/accumulator/shift.spec.ts index 7adad772..dbe85d1c 100644 --- a/packages/mql-typescript/tests/accumulator/shift.spec.ts +++ b/packages/mql-typescript/tests/accumulator/shift.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Shift Using a Positive Integer diff --git a/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts b/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts index 63ab692c..cbe179bf 100644 --- a/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts +++ b/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts b/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts index 93786f54..2797feed 100644 --- a/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts +++ b/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts @@ -1,17 +1,18 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/#use-in--group-stage} */ function test0() { - type TestCollection = { + type users = { _id: number; username: string; age: number; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $sample: { size: 100 } }, { $group: { _id: null, ageStdDev: { $stdDevSamp: '$age' } } }, ]; diff --git a/packages/mql-typescript/tests/accumulator/sum.spec.ts b/packages/mql-typescript/tests/accumulator/sum.spec.ts index 6686e4fc..7f0f2085 100644 --- a/packages/mql-typescript/tests/accumulator/sum.spec.ts +++ b/packages/mql-typescript/tests/accumulator/sum.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Use in $group Stage diff --git a/packages/mql-typescript/tests/accumulator/top.spec.ts b/packages/mql-typescript/tests/accumulator/top.spec.ts index 69825b6f..71ad4209 100644 --- a/packages/mql-typescript/tests/accumulator/top.spec.ts +++ b/packages/mql-typescript/tests/accumulator/top.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Top Score diff --git a/packages/mql-typescript/tests/accumulator/topN.spec.ts b/packages/mql-typescript/tests/accumulator/topN.spec.ts index 3519d047..03c2400c 100644 --- a/packages/mql-typescript/tests/accumulator/topN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/topN.spec.ts @@ -1,4 +1,5 @@ import * as schema from '../../out/schema'; +import * as bson from 'bson'; /** * Find the Three Highest Scores diff --git a/packages/mql-typescript/tests/expression/abs.spec.ts b/packages/mql-typescript/tests/expression/abs.spec.ts index 0cdd5c80..d454b5b3 100644 --- a/packages/mql-typescript/tests/expression/abs.spec.ts +++ b/packages/mql-typescript/tests/expression/abs.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/acos.spec.ts b/packages/mql-typescript/tests/expression/acos.spec.ts index 77e80d99..a283e0cc 100644 --- a/packages/mql-typescript/tests/expression/acos.spec.ts +++ b/packages/mql-typescript/tests/expression/acos.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/acosh.spec.ts b/packages/mql-typescript/tests/expression/acosh.spec.ts index a71d4026..fce2463f 100644 --- a/packages/mql-typescript/tests/expression/acosh.spec.ts +++ b/packages/mql-typescript/tests/expression/acosh.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/add.spec.ts b/packages/mql-typescript/tests/expression/add.spec.ts index 4f15fd0f..4c584058 100644 --- a/packages/mql-typescript/tests/expression/add.spec.ts +++ b/packages/mql-typescript/tests/expression/add.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,7 +6,7 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/#add-numbers} */ function test0() { - type TestCollection = { + type sales = { _id: number; item: string; price: number; @@ -15,7 +14,7 @@ function test0() { date: Date; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { item: 1, total: { $add: ['$price', '$fee'] } } }, ]; } @@ -25,7 +24,7 @@ function test0() { * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/#perform-addition-on-a-date} */ function test1() { - type TestCollection = { + type sales = { _id: number; item: string; price: number; @@ -33,7 +32,7 @@ function test1() { date: Date; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { item: 1, billing_date: { $add: ['$date', 259200000] } } }, ]; } diff --git a/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts b/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts index f8b683b2..c28b7721 100644 --- a/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts +++ b/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/and.spec.ts b/packages/mql-typescript/tests/expression/and.spec.ts index a91b1cd6..7b4da00e 100644 --- a/packages/mql-typescript/tests/expression/and.spec.ts +++ b/packages/mql-typescript/tests/expression/and.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts b/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts index 128817ab..f06adac3 100644 --- a/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts +++ b/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts b/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts index 72f4f66d..13a935c2 100644 --- a/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts +++ b/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,13 +6,13 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/#example} */ function test0() { - type TestCollection = { + type users = { _id: number; name: string; favorites: Array; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { name: 1, diff --git a/packages/mql-typescript/tests/expression/arrayToObject.spec.ts b/packages/mql-typescript/tests/expression/arrayToObject.spec.ts index c69998dd..8b4118d4 100644 --- a/packages/mql-typescript/tests/expression/arrayToObject.spec.ts +++ b/packages/mql-typescript/tests/expression/arrayToObject.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/asin.spec.ts b/packages/mql-typescript/tests/expression/asin.spec.ts index 39f21092..9fbe6463 100644 --- a/packages/mql-typescript/tests/expression/asin.spec.ts +++ b/packages/mql-typescript/tests/expression/asin.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/asinh.spec.ts b/packages/mql-typescript/tests/expression/asinh.spec.ts index 9f0b4304..abb854cc 100644 --- a/packages/mql-typescript/tests/expression/asinh.spec.ts +++ b/packages/mql-typescript/tests/expression/asinh.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/atan.spec.ts b/packages/mql-typescript/tests/expression/atan.spec.ts index 06f2f773..34e17384 100644 --- a/packages/mql-typescript/tests/expression/atan.spec.ts +++ b/packages/mql-typescript/tests/expression/atan.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/atan2.spec.ts b/packages/mql-typescript/tests/expression/atan2.spec.ts index 90dac134..879d9697 100644 --- a/packages/mql-typescript/tests/expression/atan2.spec.ts +++ b/packages/mql-typescript/tests/expression/atan2.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/atanh.spec.ts b/packages/mql-typescript/tests/expression/atanh.spec.ts index 3eb4c167..54f9ee0e 100644 --- a/packages/mql-typescript/tests/expression/atanh.spec.ts +++ b/packages/mql-typescript/tests/expression/atanh.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/avg.spec.ts b/packages/mql-typescript/tests/expression/avg.spec.ts index 7d6876d5..2b9e3643 100644 --- a/packages/mql-typescript/tests/expression/avg.spec.ts +++ b/packages/mql-typescript/tests/expression/avg.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/binarySize.spec.ts b/packages/mql-typescript/tests/expression/binarySize.spec.ts index 0ffea7ec..e1da33dc 100644 --- a/packages/mql-typescript/tests/expression/binarySize.spec.ts +++ b/packages/mql-typescript/tests/expression/binarySize.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/bitAnd.spec.ts b/packages/mql-typescript/tests/expression/bitAnd.spec.ts index e79272b7..6217a0ef 100644 --- a/packages/mql-typescript/tests/expression/bitAnd.spec.ts +++ b/packages/mql-typescript/tests/expression/bitAnd.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -9,8 +8,8 @@ import * as bson from 'bson'; function test0() { type switches = { _id: number; - a: bson.Int32; - b: bson.Int32; + a: bson.Int32 | number; + b: bson.Int32 | number; }; const aggregation: schema.Pipeline = [ @@ -25,8 +24,8 @@ function test0() { function test1() { type switches = { _id: number; - a: bson.Int32; - b: bson.Int32; + a: bson.Int32 | number; + b: bson.Int32 | number; }; const aggregation: schema.Pipeline = [ diff --git a/packages/mql-typescript/tests/expression/bitNot.spec.ts b/packages/mql-typescript/tests/expression/bitNot.spec.ts index 6f2f5a66..fa772acf 100644 --- a/packages/mql-typescript/tests/expression/bitNot.spec.ts +++ b/packages/mql-typescript/tests/expression/bitNot.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -9,8 +8,8 @@ import * as bson from 'bson'; function test0() { type switches = { _id: number; - a: bson.Int32; - b: bson.Int32; + a: bson.Int32 | number; + b: bson.Int32 | number; }; const aggregation: schema.Pipeline = [ diff --git a/packages/mql-typescript/tests/expression/bitOr.spec.ts b/packages/mql-typescript/tests/expression/bitOr.spec.ts index 552d41e6..7901c5c9 100644 --- a/packages/mql-typescript/tests/expression/bitOr.spec.ts +++ b/packages/mql-typescript/tests/expression/bitOr.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -9,8 +8,8 @@ import * as bson from 'bson'; function test0() { type switches = { _id: number; - a: bson.Int32; - b: bson.Int32; + a: bson.Int32 | number; + b: bson.Int32 | number; }; const aggregation: schema.Pipeline = [ @@ -25,8 +24,8 @@ function test0() { function test1() { type switches = { _id: number; - a: bson.Int32; - b: bson.Int32; + a: bson.Int32 | number; + b: bson.Int32 | number; }; const aggregation: schema.Pipeline = [ diff --git a/packages/mql-typescript/tests/expression/bitXor.spec.ts b/packages/mql-typescript/tests/expression/bitXor.spec.ts index 5f78999a..cb0b2984 100644 --- a/packages/mql-typescript/tests/expression/bitXor.spec.ts +++ b/packages/mql-typescript/tests/expression/bitXor.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -9,8 +8,8 @@ import * as bson from 'bson'; function test0() { type switches = { _id: number; - a: bson.Int32; - b: bson.Int32; + a: bson.Int32 | number; + b: bson.Int32 | number; }; const aggregation: schema.Pipeline = [ diff --git a/packages/mql-typescript/tests/expression/bsonSize.spec.ts b/packages/mql-typescript/tests/expression/bsonSize.spec.ts index 6d7de377..d5800938 100644 --- a/packages/mql-typescript/tests/expression/bsonSize.spec.ts +++ b/packages/mql-typescript/tests/expression/bsonSize.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/case.spec.ts b/packages/mql-typescript/tests/expression/case.spec.ts index 84425253..74f8fb99 100644 --- a/packages/mql-typescript/tests/expression/case.spec.ts +++ b/packages/mql-typescript/tests/expression/case.spec.ts @@ -1,3 +1,2 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/ceil.spec.ts b/packages/mql-typescript/tests/expression/ceil.spec.ts index 324825cd..5234dfde 100644 --- a/packages/mql-typescript/tests/expression/ceil.spec.ts +++ b/packages/mql-typescript/tests/expression/ceil.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cmp.spec.ts b/packages/mql-typescript/tests/expression/cmp.spec.ts index f9585fb9..745303bf 100644 --- a/packages/mql-typescript/tests/expression/cmp.spec.ts +++ b/packages/mql-typescript/tests/expression/cmp.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/concat.spec.ts b/packages/mql-typescript/tests/expression/concat.spec.ts index 711632c3..8cf96c40 100644 --- a/packages/mql-typescript/tests/expression/concat.spec.ts +++ b/packages/mql-typescript/tests/expression/concat.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/concatArrays.spec.ts b/packages/mql-typescript/tests/expression/concatArrays.spec.ts index 4199bef5..1d9f7f43 100644 --- a/packages/mql-typescript/tests/expression/concatArrays.spec.ts +++ b/packages/mql-typescript/tests/expression/concatArrays.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cond.spec.ts b/packages/mql-typescript/tests/expression/cond.spec.ts index 66b19ecc..107e5992 100644 --- a/packages/mql-typescript/tests/expression/cond.spec.ts +++ b/packages/mql-typescript/tests/expression/cond.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,13 +6,13 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/#example} */ function test0() { - type TestCollection = { + type inventory = { _id: number; item: string; qty: number; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { item: 1, diff --git a/packages/mql-typescript/tests/expression/convert.spec.ts b/packages/mql-typescript/tests/expression/convert.spec.ts index 02e6573e..bc53c0ad 100644 --- a/packages/mql-typescript/tests/expression/convert.spec.ts +++ b/packages/mql-typescript/tests/expression/convert.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -22,7 +21,26 @@ function test0() { input: '$price', to: 'decimal', onError: 'Error', - onNull: { $numberDecimal: '0' }, + onNull: { + bytes: { + '0': 0, + '1': 0, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 64, + '15': 48, + }, + }, }, }, convertedQty: { diff --git a/packages/mql-typescript/tests/expression/cos.spec.ts b/packages/mql-typescript/tests/expression/cos.spec.ts index 86f88912..60f7968b 100644 --- a/packages/mql-typescript/tests/expression/cos.spec.ts +++ b/packages/mql-typescript/tests/expression/cos.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cosh.spec.ts b/packages/mql-typescript/tests/expression/cosh.spec.ts index 12d1d59b..cb617f5a 100644 --- a/packages/mql-typescript/tests/expression/cosh.spec.ts +++ b/packages/mql-typescript/tests/expression/cosh.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateAdd.spec.ts b/packages/mql-typescript/tests/expression/dateAdd.spec.ts index ccd5326a..60ae9d20 100644 --- a/packages/mql-typescript/tests/expression/dateAdd.spec.ts +++ b/packages/mql-typescript/tests/expression/dateAdd.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -30,7 +29,7 @@ function test0() { */ function test1() { type shipping = { - custId: number; + custId: bson.Int32 | number; purchaseDate: Date; deliveryDate: Date; }; diff --git a/packages/mql-typescript/tests/expression/dateDiff.spec.ts b/packages/mql-typescript/tests/expression/dateDiff.spec.ts index b076bc10..a93935b1 100644 --- a/packages/mql-typescript/tests/expression/dateDiff.spec.ts +++ b/packages/mql-typescript/tests/expression/dateDiff.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateFromParts.spec.ts b/packages/mql-typescript/tests/expression/dateFromParts.spec.ts index a768274f..86d78a7b 100644 --- a/packages/mql-typescript/tests/expression/dateFromParts.spec.ts +++ b/packages/mql-typescript/tests/expression/dateFromParts.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateFromString.spec.ts b/packages/mql-typescript/tests/expression/dateFromString.spec.ts index c82c0c57..36138279 100644 --- a/packages/mql-typescript/tests/expression/dateFromString.spec.ts +++ b/packages/mql-typescript/tests/expression/dateFromString.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -72,7 +71,7 @@ function test2() { $dateFromString: { dateString: '$date', timezone: '$timezone', - onNull: '1970-01-01T00:00:00.000Z', + onNull: {}, }, }, }, diff --git a/packages/mql-typescript/tests/expression/dateSubtract.spec.ts b/packages/mql-typescript/tests/expression/dateSubtract.spec.ts index 50a293f6..b65ea7c5 100644 --- a/packages/mql-typescript/tests/expression/dateSubtract.spec.ts +++ b/packages/mql-typescript/tests/expression/dateSubtract.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateToParts.spec.ts b/packages/mql-typescript/tests/expression/dateToParts.spec.ts index 05cafe59..d34f7dca 100644 --- a/packages/mql-typescript/tests/expression/dateToParts.spec.ts +++ b/packages/mql-typescript/tests/expression/dateToParts.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateToString.spec.ts b/packages/mql-typescript/tests/expression/dateToString.spec.ts index 46f2e0f6..4031ceaf 100644 --- a/packages/mql-typescript/tests/expression/dateToString.spec.ts +++ b/packages/mql-typescript/tests/expression/dateToString.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateTrunc.spec.ts b/packages/mql-typescript/tests/expression/dateTrunc.spec.ts index aa2118f6..418cfc04 100644 --- a/packages/mql-typescript/tests/expression/dateTrunc.spec.ts +++ b/packages/mql-typescript/tests/expression/dateTrunc.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts b/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts index 8b964756..5294adbd 100644 --- a/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts +++ b/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts b/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts index 26d88989..c0fe354e 100644 --- a/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts +++ b/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dayOfYear.spec.ts b/packages/mql-typescript/tests/expression/dayOfYear.spec.ts index 329da40f..a643947e 100644 --- a/packages/mql-typescript/tests/expression/dayOfYear.spec.ts +++ b/packages/mql-typescript/tests/expression/dayOfYear.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts b/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts index 7db66102..85244a1d 100644 --- a/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts +++ b/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/divide.spec.ts b/packages/mql-typescript/tests/expression/divide.spec.ts index 71c4bbb7..a47d89fc 100644 --- a/packages/mql-typescript/tests/expression/divide.spec.ts +++ b/packages/mql-typescript/tests/expression/divide.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/eq.spec.ts b/packages/mql-typescript/tests/expression/eq.spec.ts index 3aafc571..46072e56 100644 --- a/packages/mql-typescript/tests/expression/eq.spec.ts +++ b/packages/mql-typescript/tests/expression/eq.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/exp.spec.ts b/packages/mql-typescript/tests/expression/exp.spec.ts index a8709fb5..fe518e1f 100644 --- a/packages/mql-typescript/tests/expression/exp.spec.ts +++ b/packages/mql-typescript/tests/expression/exp.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/filter.spec.ts b/packages/mql-typescript/tests/expression/filter.spec.ts index 27cadb88..9b291ad1 100644 --- a/packages/mql-typescript/tests/expression/filter.spec.ts +++ b/packages/mql-typescript/tests/expression/filter.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/first.spec.ts b/packages/mql-typescript/tests/expression/first.spec.ts index 5399b57d..b184ce2a 100644 --- a/packages/mql-typescript/tests/expression/first.spec.ts +++ b/packages/mql-typescript/tests/expression/first.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/firstN.spec.ts b/packages/mql-typescript/tests/expression/firstN.spec.ts index d3f0b6df..cc45c5e9 100644 --- a/packages/mql-typescript/tests/expression/firstN.spec.ts +++ b/packages/mql-typescript/tests/expression/firstN.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/floor.spec.ts b/packages/mql-typescript/tests/expression/floor.spec.ts index 747c2aab..3f1bc29b 100644 --- a/packages/mql-typescript/tests/expression/floor.spec.ts +++ b/packages/mql-typescript/tests/expression/floor.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/function.spec.ts b/packages/mql-typescript/tests/expression/function.spec.ts index 4343c890..d5aa8c18 100644 --- a/packages/mql-typescript/tests/expression/function.spec.ts +++ b/packages/mql-typescript/tests/expression/function.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/getField.spec.ts b/packages/mql-typescript/tests/expression/getField.spec.ts index dc3a5406..755467f1 100644 --- a/packages/mql-typescript/tests/expression/getField.spec.ts +++ b/packages/mql-typescript/tests/expression/getField.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/gt.spec.ts b/packages/mql-typescript/tests/expression/gt.spec.ts index 3aa16ae1..7bda8360 100644 --- a/packages/mql-typescript/tests/expression/gt.spec.ts +++ b/packages/mql-typescript/tests/expression/gt.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/gte.spec.ts b/packages/mql-typescript/tests/expression/gte.spec.ts index fca950c6..8c25417b 100644 --- a/packages/mql-typescript/tests/expression/gte.spec.ts +++ b/packages/mql-typescript/tests/expression/gte.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/hour.spec.ts b/packages/mql-typescript/tests/expression/hour.spec.ts index d815f524..61bbc4ff 100644 --- a/packages/mql-typescript/tests/expression/hour.spec.ts +++ b/packages/mql-typescript/tests/expression/hour.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/ifNull.spec.ts b/packages/mql-typescript/tests/expression/ifNull.spec.ts index b2caecf6..1a3e9b64 100644 --- a/packages/mql-typescript/tests/expression/ifNull.spec.ts +++ b/packages/mql-typescript/tests/expression/ifNull.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/in.spec.ts b/packages/mql-typescript/tests/expression/in.spec.ts index 68535df1..b9ad29e9 100644 --- a/packages/mql-typescript/tests/expression/in.spec.ts +++ b/packages/mql-typescript/tests/expression/in.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/indexOfArray.spec.ts b/packages/mql-typescript/tests/expression/indexOfArray.spec.ts index 47a0b3ac..0f0b9e98 100644 --- a/packages/mql-typescript/tests/expression/indexOfArray.spec.ts +++ b/packages/mql-typescript/tests/expression/indexOfArray.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts b/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts index 90b6ace4..3671758d 100644 --- a/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts +++ b/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/indexOfCP.spec.ts b/packages/mql-typescript/tests/expression/indexOfCP.spec.ts index 4538322c..0219944e 100644 --- a/packages/mql-typescript/tests/expression/indexOfCP.spec.ts +++ b/packages/mql-typescript/tests/expression/indexOfCP.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isArray.spec.ts b/packages/mql-typescript/tests/expression/isArray.spec.ts index 230030e2..d769071a 100644 --- a/packages/mql-typescript/tests/expression/isArray.spec.ts +++ b/packages/mql-typescript/tests/expression/isArray.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isNumber.spec.ts b/packages/mql-typescript/tests/expression/isNumber.spec.ts index e772f5e9..85760bfd 100644 --- a/packages/mql-typescript/tests/expression/isNumber.spec.ts +++ b/packages/mql-typescript/tests/expression/isNumber.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -14,6 +13,7 @@ function test0() { | bson.Long | bson.Int32 | number + | number | string | Array; }; diff --git a/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts b/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts index b6c85a3d..83fe3315 100644 --- a/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts +++ b/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isoWeek.spec.ts b/packages/mql-typescript/tests/expression/isoWeek.spec.ts index 64da535e..3dd1bca0 100644 --- a/packages/mql-typescript/tests/expression/isoWeek.spec.ts +++ b/packages/mql-typescript/tests/expression/isoWeek.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts b/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts index 52926c08..afaac1fd 100644 --- a/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts +++ b/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/last.spec.ts b/packages/mql-typescript/tests/expression/last.spec.ts index 0f68cdb7..f58959de 100644 --- a/packages/mql-typescript/tests/expression/last.spec.ts +++ b/packages/mql-typescript/tests/expression/last.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/lastN.spec.ts b/packages/mql-typescript/tests/expression/lastN.spec.ts index 1799b05b..0585393d 100644 --- a/packages/mql-typescript/tests/expression/lastN.spec.ts +++ b/packages/mql-typescript/tests/expression/lastN.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/let.spec.ts b/packages/mql-typescript/tests/expression/let.spec.ts index 2da4ddf2..65e51a18 100644 --- a/packages/mql-typescript/tests/expression/let.spec.ts +++ b/packages/mql-typescript/tests/expression/let.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,14 +6,14 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/#example} */ function test0() { - type TestCollection = { + type sales = { _id: number; price: number; tax: number; applyDiscount: boolean; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ /** * This stage is unsupported by the static type system, so we're casting it to 'any' ($multiply references a variable that is not available statically). */ diff --git a/packages/mql-typescript/tests/expression/literal.spec.ts b/packages/mql-typescript/tests/expression/literal.spec.ts index 84425253..74f8fb99 100644 --- a/packages/mql-typescript/tests/expression/literal.spec.ts +++ b/packages/mql-typescript/tests/expression/literal.spec.ts @@ -1,3 +1,2 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/ln.spec.ts b/packages/mql-typescript/tests/expression/ln.spec.ts index e5f30629..d17a4b82 100644 --- a/packages/mql-typescript/tests/expression/ln.spec.ts +++ b/packages/mql-typescript/tests/expression/ln.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,13 +6,13 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/#example} */ function test0() { - type TestCollection = { + type sales = { _id: number; year: string; sales: number; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { x: '$year', y: { $ln: '$sales' } } }, ]; } diff --git a/packages/mql-typescript/tests/expression/log.spec.ts b/packages/mql-typescript/tests/expression/log.spec.ts index c826f0ec..b7b857ff 100644 --- a/packages/mql-typescript/tests/expression/log.spec.ts +++ b/packages/mql-typescript/tests/expression/log.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/log10.spec.ts b/packages/mql-typescript/tests/expression/log10.spec.ts index a1c6937d..784ebc0b 100644 --- a/packages/mql-typescript/tests/expression/log10.spec.ts +++ b/packages/mql-typescript/tests/expression/log10.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/lt.spec.ts b/packages/mql-typescript/tests/expression/lt.spec.ts index 4b3ee879..9f5b44a2 100644 --- a/packages/mql-typescript/tests/expression/lt.spec.ts +++ b/packages/mql-typescript/tests/expression/lt.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/lte.spec.ts b/packages/mql-typescript/tests/expression/lte.spec.ts index bdbcfcea..ee106c9d 100644 --- a/packages/mql-typescript/tests/expression/lte.spec.ts +++ b/packages/mql-typescript/tests/expression/lte.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/ltrim.spec.ts b/packages/mql-typescript/tests/expression/ltrim.spec.ts index 70e55057..f11b4b76 100644 --- a/packages/mql-typescript/tests/expression/ltrim.spec.ts +++ b/packages/mql-typescript/tests/expression/ltrim.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/map.spec.ts b/packages/mql-typescript/tests/expression/map.spec.ts index 9d613bce..359e8050 100644 --- a/packages/mql-typescript/tests/expression/map.spec.ts +++ b/packages/mql-typescript/tests/expression/map.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/max.spec.ts b/packages/mql-typescript/tests/expression/max.spec.ts index 9bd776d2..03085169 100644 --- a/packages/mql-typescript/tests/expression/max.spec.ts +++ b/packages/mql-typescript/tests/expression/max.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/maxN.spec.ts b/packages/mql-typescript/tests/expression/maxN.spec.ts index 71d0bf4e..111891b8 100644 --- a/packages/mql-typescript/tests/expression/maxN.spec.ts +++ b/packages/mql-typescript/tests/expression/maxN.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/median.spec.ts b/packages/mql-typescript/tests/expression/median.spec.ts index 6eee5a0a..4c528844 100644 --- a/packages/mql-typescript/tests/expression/median.spec.ts +++ b/packages/mql-typescript/tests/expression/median.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/mergeObjects.spec.ts b/packages/mql-typescript/tests/expression/mergeObjects.spec.ts index a6f6b71e..858bfc41 100644 --- a/packages/mql-typescript/tests/expression/mergeObjects.spec.ts +++ b/packages/mql-typescript/tests/expression/mergeObjects.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/meta.spec.ts b/packages/mql-typescript/tests/expression/meta.spec.ts index 3d346482..3cbea8c4 100644 --- a/packages/mql-typescript/tests/expression/meta.spec.ts +++ b/packages/mql-typescript/tests/expression/meta.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/millisecond.spec.ts b/packages/mql-typescript/tests/expression/millisecond.spec.ts index 157acdcc..a20983e4 100644 --- a/packages/mql-typescript/tests/expression/millisecond.spec.ts +++ b/packages/mql-typescript/tests/expression/millisecond.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/min.spec.ts b/packages/mql-typescript/tests/expression/min.spec.ts index a498d5b7..d23741b3 100644 --- a/packages/mql-typescript/tests/expression/min.spec.ts +++ b/packages/mql-typescript/tests/expression/min.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/minN.spec.ts b/packages/mql-typescript/tests/expression/minN.spec.ts index 8bf69d49..1dda1442 100644 --- a/packages/mql-typescript/tests/expression/minN.spec.ts +++ b/packages/mql-typescript/tests/expression/minN.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/minute.spec.ts b/packages/mql-typescript/tests/expression/minute.spec.ts index dbb79cca..ac3e47fe 100644 --- a/packages/mql-typescript/tests/expression/minute.spec.ts +++ b/packages/mql-typescript/tests/expression/minute.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/mod.spec.ts b/packages/mql-typescript/tests/expression/mod.spec.ts index ddfab5f1..2287bcd9 100644 --- a/packages/mql-typescript/tests/expression/mod.spec.ts +++ b/packages/mql-typescript/tests/expression/mod.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/month.spec.ts b/packages/mql-typescript/tests/expression/month.spec.ts index a089d82d..1901be07 100644 --- a/packages/mql-typescript/tests/expression/month.spec.ts +++ b/packages/mql-typescript/tests/expression/month.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/multiply.spec.ts b/packages/mql-typescript/tests/expression/multiply.spec.ts index 896fdbcb..7e434a55 100644 --- a/packages/mql-typescript/tests/expression/multiply.spec.ts +++ b/packages/mql-typescript/tests/expression/multiply.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/ne.spec.ts b/packages/mql-typescript/tests/expression/ne.spec.ts index a0a6a2bc..41e51051 100644 --- a/packages/mql-typescript/tests/expression/ne.spec.ts +++ b/packages/mql-typescript/tests/expression/ne.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/not.spec.ts b/packages/mql-typescript/tests/expression/not.spec.ts index 62dc4bcd..494c51fb 100644 --- a/packages/mql-typescript/tests/expression/not.spec.ts +++ b/packages/mql-typescript/tests/expression/not.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/objectToArray.spec.ts b/packages/mql-typescript/tests/expression/objectToArray.spec.ts index 4917a36a..4bfd7e7f 100644 --- a/packages/mql-typescript/tests/expression/objectToArray.spec.ts +++ b/packages/mql-typescript/tests/expression/objectToArray.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/or.spec.ts b/packages/mql-typescript/tests/expression/or.spec.ts index 3d252eb5..adc8cae0 100644 --- a/packages/mql-typescript/tests/expression/or.spec.ts +++ b/packages/mql-typescript/tests/expression/or.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/percentile.spec.ts b/packages/mql-typescript/tests/expression/percentile.spec.ts index d7e916e8..34c4d0f0 100644 --- a/packages/mql-typescript/tests/expression/percentile.spec.ts +++ b/packages/mql-typescript/tests/expression/percentile.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/pow.spec.ts b/packages/mql-typescript/tests/expression/pow.spec.ts index 3f7afe65..46486120 100644 --- a/packages/mql-typescript/tests/expression/pow.spec.ts +++ b/packages/mql-typescript/tests/expression/pow.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts b/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts index df55ea9a..bea307f0 100644 --- a/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts +++ b/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/rand.spec.ts b/packages/mql-typescript/tests/expression/rand.spec.ts index bd4e56e5..3e4515a4 100644 --- a/packages/mql-typescript/tests/expression/rand.spec.ts +++ b/packages/mql-typescript/tests/expression/rand.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/range.spec.ts b/packages/mql-typescript/tests/expression/range.spec.ts index 7216ae92..c935e11c 100644 --- a/packages/mql-typescript/tests/expression/range.spec.ts +++ b/packages/mql-typescript/tests/expression/range.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/reduce.spec.ts b/packages/mql-typescript/tests/expression/reduce.spec.ts index 131a7569..1c0d558a 100644 --- a/packages/mql-typescript/tests/expression/reduce.spec.ts +++ b/packages/mql-typescript/tests/expression/reduce.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/regexFind.spec.ts b/packages/mql-typescript/tests/expression/regexFind.spec.ts index 94f165aa..9ef15abf 100644 --- a/packages/mql-typescript/tests/expression/regexFind.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFind.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts index 4ddc1ab7..34e20bb5 100644 --- a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/regexMatch.spec.ts b/packages/mql-typescript/tests/expression/regexMatch.spec.ts index eea98c47..1760035a 100644 --- a/packages/mql-typescript/tests/expression/regexMatch.spec.ts +++ b/packages/mql-typescript/tests/expression/regexMatch.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/replaceAll.spec.ts b/packages/mql-typescript/tests/expression/replaceAll.spec.ts index ff319d68..0277ab93 100644 --- a/packages/mql-typescript/tests/expression/replaceAll.spec.ts +++ b/packages/mql-typescript/tests/expression/replaceAll.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/replaceOne.spec.ts b/packages/mql-typescript/tests/expression/replaceOne.spec.ts index 3a1e7209..ef3a1dba 100644 --- a/packages/mql-typescript/tests/expression/replaceOne.spec.ts +++ b/packages/mql-typescript/tests/expression/replaceOne.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/reverseArray.spec.ts b/packages/mql-typescript/tests/expression/reverseArray.spec.ts index 0b97c527..6efe2fc6 100644 --- a/packages/mql-typescript/tests/expression/reverseArray.spec.ts +++ b/packages/mql-typescript/tests/expression/reverseArray.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,13 +6,13 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/#example} */ function test0() { - type TestCollection = { + type users = { _id: number; name: string; favorites: Array; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { name: 1, reverseFavorites: { $reverseArray: '$favorites' } }, }, diff --git a/packages/mql-typescript/tests/expression/round.spec.ts b/packages/mql-typescript/tests/expression/round.spec.ts index ec5919a2..8d28a6f2 100644 --- a/packages/mql-typescript/tests/expression/round.spec.ts +++ b/packages/mql-typescript/tests/expression/round.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/rtrim.spec.ts b/packages/mql-typescript/tests/expression/rtrim.spec.ts index 0c570290..767b9767 100644 --- a/packages/mql-typescript/tests/expression/rtrim.spec.ts +++ b/packages/mql-typescript/tests/expression/rtrim.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/second.spec.ts b/packages/mql-typescript/tests/expression/second.spec.ts index 9b7d5e68..9af9a4e9 100644 --- a/packages/mql-typescript/tests/expression/second.spec.ts +++ b/packages/mql-typescript/tests/expression/second.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setDifference.spec.ts b/packages/mql-typescript/tests/expression/setDifference.spec.ts index 058ae9e3..a8a96ccf 100644 --- a/packages/mql-typescript/tests/expression/setDifference.spec.ts +++ b/packages/mql-typescript/tests/expression/setDifference.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setEquals.spec.ts b/packages/mql-typescript/tests/expression/setEquals.spec.ts index e1791df6..6d09fb4b 100644 --- a/packages/mql-typescript/tests/expression/setEquals.spec.ts +++ b/packages/mql-typescript/tests/expression/setEquals.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setField.spec.ts b/packages/mql-typescript/tests/expression/setField.spec.ts index 2ff25942..34c6c774 100644 --- a/packages/mql-typescript/tests/expression/setField.spec.ts +++ b/packages/mql-typescript/tests/expression/setField.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -127,8 +126,8 @@ function test5() { type inventory = { _id: number; item: string; - price: number; qty: number; + $price: number; }; const aggregation: schema.Pipeline = [ diff --git a/packages/mql-typescript/tests/expression/setIntersection.spec.ts b/packages/mql-typescript/tests/expression/setIntersection.spec.ts index 045cb112..ada09279 100644 --- a/packages/mql-typescript/tests/expression/setIntersection.spec.ts +++ b/packages/mql-typescript/tests/expression/setIntersection.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -31,7 +30,7 @@ function test0() { */ function test1() { type budget = { - _id: bson.Int32; + _id: bson.Int32 | number; allowedRoles: Array; comment: string; yearlyBudget: bson.Double | number; diff --git a/packages/mql-typescript/tests/expression/setIsSubset.spec.ts b/packages/mql-typescript/tests/expression/setIsSubset.spec.ts index a31499db..0a599b8d 100644 --- a/packages/mql-typescript/tests/expression/setIsSubset.spec.ts +++ b/packages/mql-typescript/tests/expression/setIsSubset.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setUnion.spec.ts b/packages/mql-typescript/tests/expression/setUnion.spec.ts index 9c7308f5..77a573b5 100644 --- a/packages/mql-typescript/tests/expression/setUnion.spec.ts +++ b/packages/mql-typescript/tests/expression/setUnion.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sin.spec.ts b/packages/mql-typescript/tests/expression/sin.spec.ts index 24e485b5..dc661071 100644 --- a/packages/mql-typescript/tests/expression/sin.spec.ts +++ b/packages/mql-typescript/tests/expression/sin.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sinh.spec.ts b/packages/mql-typescript/tests/expression/sinh.spec.ts index 1c33e41f..eebfec60 100644 --- a/packages/mql-typescript/tests/expression/sinh.spec.ts +++ b/packages/mql-typescript/tests/expression/sinh.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/size.spec.ts b/packages/mql-typescript/tests/expression/size.spec.ts index ae32f4ac..22802d93 100644 --- a/packages/mql-typescript/tests/expression/size.spec.ts +++ b/packages/mql-typescript/tests/expression/size.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/slice.spec.ts b/packages/mql-typescript/tests/expression/slice.spec.ts index 4283ecec..8071dab5 100644 --- a/packages/mql-typescript/tests/expression/slice.spec.ts +++ b/packages/mql-typescript/tests/expression/slice.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,13 +6,13 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/#example} */ function test0() { - type TestCollection = { + type users = { _id: number; name: string; favorites: Array; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { name: 1, threeFavorites: { $slice: ['$favorites', 3] } } }, ]; } diff --git a/packages/mql-typescript/tests/expression/sortArray.spec.ts b/packages/mql-typescript/tests/expression/sortArray.spec.ts index 1194bef7..2c8bd34c 100644 --- a/packages/mql-typescript/tests/expression/sortArray.spec.ts +++ b/packages/mql-typescript/tests/expression/sortArray.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -142,7 +141,26 @@ function test4() { 'Gratis', { a: null }, { a: { sale: true, price: 19 } }, - { $numberDecimal: '10.23' }, + { + bytes: { + '0': 255, + '1': 3, + '2': 0, + '3': 0, + '4': 0, + '5': 0, + '6': 0, + '7': 0, + '8': 0, + '9': 0, + '10': 0, + '11': 0, + '12': 0, + '13': 0, + '14': 60, + '15': 48, + }, + }, { a: 'On sale' }, ], sortBy: 1, diff --git a/packages/mql-typescript/tests/expression/split.spec.ts b/packages/mql-typescript/tests/expression/split.spec.ts index d269ba90..c68b88ad 100644 --- a/packages/mql-typescript/tests/expression/split.spec.ts +++ b/packages/mql-typescript/tests/expression/split.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sqrt.spec.ts b/packages/mql-typescript/tests/expression/sqrt.spec.ts index 71bfb7bc..dd2f99cb 100644 --- a/packages/mql-typescript/tests/expression/sqrt.spec.ts +++ b/packages/mql-typescript/tests/expression/sqrt.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,7 +6,7 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/#example} */ function test0() { - type TestCollection = { + type points = { _id: number; p1: { x: number; @@ -19,7 +18,7 @@ function test0() { }; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ /** * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). */ diff --git a/packages/mql-typescript/tests/expression/stdDevPop.spec.ts b/packages/mql-typescript/tests/expression/stdDevPop.spec.ts index d3518b13..96a5ccbc 100644 --- a/packages/mql-typescript/tests/expression/stdDevPop.spec.ts +++ b/packages/mql-typescript/tests/expression/stdDevPop.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts b/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts index 84425253..74f8fb99 100644 --- a/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts +++ b/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts @@ -1,3 +1,2 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/strLenBytes.spec.ts b/packages/mql-typescript/tests/expression/strLenBytes.spec.ts index 0c2b2bc5..8dcdb74f 100644 --- a/packages/mql-typescript/tests/expression/strLenBytes.spec.ts +++ b/packages/mql-typescript/tests/expression/strLenBytes.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/strLenCP.spec.ts b/packages/mql-typescript/tests/expression/strLenCP.spec.ts index 4f2a4a98..5f3f481a 100644 --- a/packages/mql-typescript/tests/expression/strLenCP.spec.ts +++ b/packages/mql-typescript/tests/expression/strLenCP.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/strcasecmp.spec.ts b/packages/mql-typescript/tests/expression/strcasecmp.spec.ts index e7268568..923d8f36 100644 --- a/packages/mql-typescript/tests/expression/strcasecmp.spec.ts +++ b/packages/mql-typescript/tests/expression/strcasecmp.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/substr.spec.ts b/packages/mql-typescript/tests/expression/substr.spec.ts index 83a013c5..c16cb4e1 100644 --- a/packages/mql-typescript/tests/expression/substr.spec.ts +++ b/packages/mql-typescript/tests/expression/substr.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/substrBytes.spec.ts b/packages/mql-typescript/tests/expression/substrBytes.spec.ts index 53ce9ac5..67dce8c0 100644 --- a/packages/mql-typescript/tests/expression/substrBytes.spec.ts +++ b/packages/mql-typescript/tests/expression/substrBytes.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/substrCP.spec.ts b/packages/mql-typescript/tests/expression/substrCP.spec.ts index e60bf74f..bc5c0c40 100644 --- a/packages/mql-typescript/tests/expression/substrCP.spec.ts +++ b/packages/mql-typescript/tests/expression/substrCP.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/subtract.spec.ts b/packages/mql-typescript/tests/expression/subtract.spec.ts index 2d9f625c..a9846122 100644 --- a/packages/mql-typescript/tests/expression/subtract.spec.ts +++ b/packages/mql-typescript/tests/expression/subtract.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sum.spec.ts b/packages/mql-typescript/tests/expression/sum.spec.ts index e4b0204f..831eb3b3 100644 --- a/packages/mql-typescript/tests/expression/sum.spec.ts +++ b/packages/mql-typescript/tests/expression/sum.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -7,7 +6,7 @@ import * as bson from 'bson'; * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/#use-in--project-stage} */ function test0() { - type TestCollection = { + type students = { _id: number; quizzes: Array; labs: Array; @@ -15,7 +14,7 @@ function test0() { midterm: number; }; - const aggregation: schema.Pipeline = [ + const aggregation: schema.Pipeline = [ { $project: { quizTotal: { $sum: ['$quizzes'] }, diff --git a/packages/mql-typescript/tests/expression/switch.spec.ts b/packages/mql-typescript/tests/expression/switch.spec.ts index f92fc020..fae185a5 100644 --- a/packages/mql-typescript/tests/expression/switch.spec.ts +++ b/packages/mql-typescript/tests/expression/switch.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tan.spec.ts b/packages/mql-typescript/tests/expression/tan.spec.ts index db3bf971..ba9e7546 100644 --- a/packages/mql-typescript/tests/expression/tan.spec.ts +++ b/packages/mql-typescript/tests/expression/tan.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tanh.spec.ts b/packages/mql-typescript/tests/expression/tanh.spec.ts index bf1b3f5e..7877ba83 100644 --- a/packages/mql-typescript/tests/expression/tanh.spec.ts +++ b/packages/mql-typescript/tests/expression/tanh.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toBool.spec.ts b/packages/mql-typescript/tests/expression/toBool.spec.ts index 6dd97ca5..e24d1ca8 100644 --- a/packages/mql-typescript/tests/expression/toBool.spec.ts +++ b/packages/mql-typescript/tests/expression/toBool.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toDate.spec.ts b/packages/mql-typescript/tests/expression/toDate.spec.ts index 21c90c52..e3b836b7 100644 --- a/packages/mql-typescript/tests/expression/toDate.spec.ts +++ b/packages/mql-typescript/tests/expression/toDate.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toDecimal.spec.ts b/packages/mql-typescript/tests/expression/toDecimal.spec.ts index 664ce48d..fc461134 100644 --- a/packages/mql-typescript/tests/expression/toDecimal.spec.ts +++ b/packages/mql-typescript/tests/expression/toDecimal.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toDouble.spec.ts b/packages/mql-typescript/tests/expression/toDouble.spec.ts index f41659ca..fc624543 100644 --- a/packages/mql-typescript/tests/expression/toDouble.spec.ts +++ b/packages/mql-typescript/tests/expression/toDouble.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts b/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts index 0d7e219c..5c392326 100644 --- a/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts +++ b/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toInt.spec.ts b/packages/mql-typescript/tests/expression/toInt.spec.ts index b145edf9..66cd59fc 100644 --- a/packages/mql-typescript/tests/expression/toInt.spec.ts +++ b/packages/mql-typescript/tests/expression/toInt.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toLong.spec.ts b/packages/mql-typescript/tests/expression/toLong.spec.ts index 7a806952..662720ea 100644 --- a/packages/mql-typescript/tests/expression/toLong.spec.ts +++ b/packages/mql-typescript/tests/expression/toLong.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** @@ -10,7 +9,7 @@ function test0() { type orders = { _id: number; item: string; - qty: string | bson.Int32 | bson.Long; + qty: string | bson.Int32 | number | bson.Long; }; const aggregation: schema.Pipeline = [ diff --git a/packages/mql-typescript/tests/expression/toLower.spec.ts b/packages/mql-typescript/tests/expression/toLower.spec.ts index 08771e6e..8b00d86e 100644 --- a/packages/mql-typescript/tests/expression/toLower.spec.ts +++ b/packages/mql-typescript/tests/expression/toLower.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toObjectId.spec.ts b/packages/mql-typescript/tests/expression/toObjectId.spec.ts index b19dacf4..a85e8808 100644 --- a/packages/mql-typescript/tests/expression/toObjectId.spec.ts +++ b/packages/mql-typescript/tests/expression/toObjectId.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toString.spec.ts b/packages/mql-typescript/tests/expression/toString.spec.ts index e333a49f..c08b4bec 100644 --- a/packages/mql-typescript/tests/expression/toString.spec.ts +++ b/packages/mql-typescript/tests/expression/toString.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toUpper.spec.ts b/packages/mql-typescript/tests/expression/toUpper.spec.ts index 895d46f5..93718cc9 100644 --- a/packages/mql-typescript/tests/expression/toUpper.spec.ts +++ b/packages/mql-typescript/tests/expression/toUpper.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/trim.spec.ts b/packages/mql-typescript/tests/expression/trim.spec.ts index 4b4dbcd8..8de49736 100644 --- a/packages/mql-typescript/tests/expression/trim.spec.ts +++ b/packages/mql-typescript/tests/expression/trim.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/trunc.spec.ts b/packages/mql-typescript/tests/expression/trunc.spec.ts index 1ac1fd25..207b1884 100644 --- a/packages/mql-typescript/tests/expression/trunc.spec.ts +++ b/packages/mql-typescript/tests/expression/trunc.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tsIncrement.spec.ts b/packages/mql-typescript/tests/expression/tsIncrement.spec.ts index c8229f5c..8c5e13e1 100644 --- a/packages/mql-typescript/tests/expression/tsIncrement.spec.ts +++ b/packages/mql-typescript/tests/expression/tsIncrement.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tsSecond.spec.ts b/packages/mql-typescript/tests/expression/tsSecond.spec.ts index 50511014..fe12935d 100644 --- a/packages/mql-typescript/tests/expression/tsSecond.spec.ts +++ b/packages/mql-typescript/tests/expression/tsSecond.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/type.spec.ts b/packages/mql-typescript/tests/expression/type.spec.ts index 8e55cfd3..1d313813 100644 --- a/packages/mql-typescript/tests/expression/type.spec.ts +++ b/packages/mql-typescript/tests/expression/type.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/unsetField.spec.ts b/packages/mql-typescript/tests/expression/unsetField.spec.ts index 57d3b61a..a76dd6d3 100644 --- a/packages/mql-typescript/tests/expression/unsetField.spec.ts +++ b/packages/mql-typescript/tests/expression/unsetField.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/week.spec.ts b/packages/mql-typescript/tests/expression/week.spec.ts index 7be99971..48e8d9a5 100644 --- a/packages/mql-typescript/tests/expression/week.spec.ts +++ b/packages/mql-typescript/tests/expression/week.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/year.spec.ts b/packages/mql-typescript/tests/expression/year.spec.ts index 95f193bc..7c0df21d 100644 --- a/packages/mql-typescript/tests/expression/year.spec.ts +++ b/packages/mql-typescript/tests/expression/year.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/zip.spec.ts b/packages/mql-typescript/tests/expression/zip.spec.ts index 6c891b13..76ed3f27 100644 --- a/packages/mql-typescript/tests/expression/zip.spec.ts +++ b/packages/mql-typescript/tests/expression/zip.spec.ts @@ -1,5 +1,4 @@ import * as schema from '../../out/schema'; - import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/all.spec.ts b/packages/mql-typescript/tests/query/all.spec.ts new file mode 100644 index 00000000..e279dd89 --- /dev/null +++ b/packages/mql-typescript/tests/query/all.spec.ts @@ -0,0 +1,53 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Use $all to Match Values + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/#use--all-to-match-values} + */ +function test0() { + type inventory = { + _id: bson.ObjectId; + code: string; + tags: Array; + qty: Array<{ + size: string; + num: number; + color: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + { $match: { tags: { $all: ['appliance', 'school', 'book'] } } }, + ]; +} + +/** + * Use $all with $elemMatch + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/#use--all-with--elemmatch} + */ +function test1() { + type inventory = { + _id: bson.ObjectId; + code: string; + tags: Array; + qty: Array<{ + size: string; + num: number; + color: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + qty: { + $all: [ + { $elemMatch: { size: 'M', num: { $gt: 50 } } }, + { $elemMatch: { num: 100, color: 'green' } }, + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/and.spec.ts b/packages/mql-typescript/tests/query/and.spec.ts new file mode 100644 index 00000000..81d83b18 --- /dev/null +++ b/packages/mql-typescript/tests/query/and.spec.ts @@ -0,0 +1,49 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * AND Queries With Multiple Expressions Specifying the Same Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/#and-queries-with-multiple-expressions-specifying-the-same-field} + */ +function test0() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $and: [{ price: { $ne: 1.99 } }, { price: { $exists: true } }], + }, + }, + ]; +} + +/** + * AND Queries With Multiple Expressions Specifying the Same Operator + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/#and-queries-with-multiple-expressions-specifying-the-same-operator} + */ +function test1() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $and: [ + { $or: [{ qty: { $lt: 10 } }, { qty: { $gt: 50 } }] }, + { $or: [{ sale: true }, { price: { $lt: 5 } }] }, + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/bitsAllClear.spec.ts b/packages/mql-typescript/tests/query/bitsAllClear.spec.ts new file mode 100644 index 00000000..6af9331e --- /dev/null +++ b/packages/mql-typescript/tests/query/bitsAllClear.spec.ts @@ -0,0 +1,52 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Bit Position Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/#bit-position-array} + */ +function test0() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAllClear: [1, 5] } } }, + ]; +} + +/** + * Integer Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/#integer-bitmask} + */ +function test1() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAllClear: 35 } } }, + ]; +} + +/** + * BinData Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/#bindata-bitmask} + */ +function test2() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { a: { $bitsAllClear: bson.Binary.createFromBase64('IA==', 0) } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/bitsAllSet.spec.ts b/packages/mql-typescript/tests/query/bitsAllSet.spec.ts new file mode 100644 index 00000000..4ca1e4f5 --- /dev/null +++ b/packages/mql-typescript/tests/query/bitsAllSet.spec.ts @@ -0,0 +1,50 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Bit Position Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/#bit-position-array} + */ +function test0() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAllSet: [1, 5] } } }, + ]; +} + +/** + * Integer Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/#integer-bitmask} + */ +function test1() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAllSet: 50 } } }, + ]; +} + +/** + * BinData Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/#bindata-bitmask} + */ +function test2() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAllSet: bson.Binary.createFromBase64('MA==', 0) } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts b/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts new file mode 100644 index 00000000..7d540b74 --- /dev/null +++ b/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts @@ -0,0 +1,52 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Bit Position Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/#bit-position-array} + */ +function test0() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAnyClear: [1, 5] } } }, + ]; +} + +/** + * Integer Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/#integer-bitmask} + */ +function test1() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAnyClear: 35 } } }, + ]; +} + +/** + * BinData Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/#bindata-bitmask} + */ +function test2() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { a: { $bitsAnyClear: bson.Binary.createFromBase64('MA==', 0) } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/bitsAnySet.spec.ts b/packages/mql-typescript/tests/query/bitsAnySet.spec.ts new file mode 100644 index 00000000..0e383bda --- /dev/null +++ b/packages/mql-typescript/tests/query/bitsAnySet.spec.ts @@ -0,0 +1,50 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Bit Position Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/#bit-position-array} + */ +function test0() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAnySet: [1, 5] } } }, + ]; +} + +/** + * Integer Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/#integer-bitmask} + */ +function test1() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAnySet: 35 } } }, + ]; +} + +/** + * BinData Bitmask + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/#bindata-bitmask} + */ +function test2() { + type collection = { + _id: number; + a: number | bson.Binary; + binaryValueofA: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { a: { $bitsAnySet: bson.Binary.createFromBase64('MA==', 0) } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/box.spec.ts b/packages/mql-typescript/tests/query/box.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/box.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/center.spec.ts b/packages/mql-typescript/tests/query/center.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/center.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/centerSphere.spec.ts b/packages/mql-typescript/tests/query/centerSphere.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/centerSphere.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/elemMatch.spec.ts b/packages/mql-typescript/tests/query/elemMatch.spec.ts new file mode 100644 index 00000000..3ac1c32a --- /dev/null +++ b/packages/mql-typescript/tests/query/elemMatch.spec.ts @@ -0,0 +1,59 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Element Match + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/#element-match} + */ +function test0() { + type TestCollection = { + _id: number; + results: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { results: { $elemMatch: { $gte: 80, $lt: 85 } } } }, + ]; +} + +/** + * Array of Embedded Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/#array-of-embedded-documents} + */ +function test1() { + type survey = { + _id: number; + results: + | Array<{ + product: string; + score: number; + }> + | { + product: string; + score: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + results: { $elemMatch: { product: 'xyz', score: { $gte: 8 } } }, + }, + }, + ]; +} + +/** + * Single Query Condition + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/#single-query-condition} + */ +function test2() { + type TestCollection = { + _id: number; + results: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { results: { $elemMatch: { product: { $ne: 'xyz' } } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/eq.spec.ts b/packages/mql-typescript/tests/query/eq.spec.ts new file mode 100644 index 00000000..f7bddbcf --- /dev/null +++ b/packages/mql-typescript/tests/query/eq.spec.ts @@ -0,0 +1,83 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Equals a Specified Value + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/#equals-a-specified-value} + */ +function test0() { + type inventory = { + _id: number; + item: { + name: string; + code: string; + }; + qty: number; + tags: Array>; + }; + + const aggregation: schema.Pipeline = [ + { $match: { qty: { $eq: 20 } } }, + ]; +} + +/** + * Field in Embedded Document Equals a Value + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/#field-in-embedded-document-equals-a-value} + */ +function test1() { + type inventory = { + _id: number; + item: { + name: string; + code: string; + }; + qty: number; + tags: Array>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $match: { 'item.name': { $eq: 'ab' } } } as any, + ]; +} + +/** + * Equals an Array Value + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/#equals-an-array-value} + */ +function test2() { + type inventory = { + _id: number; + item: { + name: string; + code: string; + }; + qty: number; + tags: Array>; + }; + + const aggregation: schema.Pipeline = [ + { $match: { tags: { $eq: ['A', 'B'] } } }, + ]; +} + +/** + * Regex Match Behaviour + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/#regex-match-behaviour} + */ +function test3() { + type companies = { + _id: bson.Int32 | number; + company: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { company: 'MongoDB' } }, + { $match: { company: { $eq: 'MongoDB' } } }, + { $match: { company: { pattern: '^MongoDB', options: '' } } }, + { $match: { company: { $eq: { pattern: '^MongoDB', options: '' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/exists.spec.ts b/packages/mql-typescript/tests/query/exists.spec.ts new file mode 100644 index 00000000..a064af41 --- /dev/null +++ b/packages/mql-typescript/tests/query/exists.spec.ts @@ -0,0 +1,38 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Exists and Not Equal To + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/#exists-and-not-equal-to} + */ +function test0() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { qty: { $exists: true, $nin: [5, 15] } } }, + ]; +} + +/** + * Null Values + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/#null-values} + */ +function test1() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { qty: { $exists: true } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/expr.spec.ts b/packages/mql-typescript/tests/query/expr.spec.ts new file mode 100644 index 00000000..86ef87c4 --- /dev/null +++ b/packages/mql-typescript/tests/query/expr.spec.ts @@ -0,0 +1,51 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Compare Two Fields from A Single Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/#compare-two-fields-from-a-single-document} + */ +function test0() { + type monthlyBudget = { + _id: number; + category: string; + budget: number; + spent: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $expr: { $gt: ['$spent', '$budget'] } } }, + ]; +} + +/** + * Using $expr With Conditional Statements + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/#use--expr-with-conditional-statements} + */ +function test1() { + type supplies = { + _id: number; + item: string; + qty: bson.Int32 | number; + price: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $expr: { + $lt: [ + { + $cond: { + if: { $gte: ['$qty', 100] }, + then: { $multiply: ['$price', 0.5] }, + else: { $multiply: ['$price', 0.75] }, + }, + }, + 5, + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/geoIntersects.spec.ts b/packages/mql-typescript/tests/query/geoIntersects.spec.ts new file mode 100644 index 00000000..af65644b --- /dev/null +++ b/packages/mql-typescript/tests/query/geoIntersects.spec.ts @@ -0,0 +1,80 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Intersects a Polygon + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/#intersects-a-polygon} + */ +function test0() { + type places = { + loc: { + type: string; + coordinates: Array>>; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + loc: { + $geoIntersects: { + $geometry: { + type: 'Polygon', + coordinates: [ + [ + [0, 0], + [3, 6], + [6, 1], + [0, 0], + ], + ], + }, + }, + }, + }, + }, + ]; +} + +/** + * Intersects a Big Polygon + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/#intersects-a--big--polygon} + */ +function test1() { + type places = { + loc: { + type: string; + coordinates: Array>>; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + loc: { + $geoIntersects: { + $geometry: { + type: 'Polygon', + coordinates: [ + [ + [-100, 60], + [-100, 0], + [-100, -60], + [100, -60], + [100, 60], + [-100, 60], + ], + ], + crs: { + type: 'name', + properties: { + name: 'urn:x-mongodb:crs:strictwinding:EPSG:4326', + }, + }, + }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/geoWithin.spec.ts b/packages/mql-typescript/tests/query/geoWithin.spec.ts new file mode 100644 index 00000000..71d6b9fc --- /dev/null +++ b/packages/mql-typescript/tests/query/geoWithin.spec.ts @@ -0,0 +1,80 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Within a Polygon + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/#within-a-polygon} + */ +function test0() { + type places = { + loc: { + type: string; + coordinates: Array>>; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + loc: { + $geoWithin: { + $geometry: { + type: 'Polygon', + coordinates: [ + [ + [0, 0], + [3, 6], + [6, 1], + [0, 0], + ], + ], + }, + }, + }, + }, + }, + ]; +} + +/** + * Within a Big Polygon + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/#within-a--big--polygon} + */ +function test1() { + type places = { + loc: { + type: string; + coordinates: Array>>; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + loc: { + $geoWithin: { + $geometry: { + type: 'Polygon', + coordinates: [ + [ + [-100, 60], + [-100, 0], + [-100, -60], + [100, -60], + [100, 60], + [-100, 60], + ], + ], + crs: { + type: 'name', + properties: { + name: 'urn:x-mongodb:crs:strictwinding:EPSG:4326', + }, + }, + }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/geometry.spec.ts b/packages/mql-typescript/tests/query/geometry.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/geometry.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/gt.spec.ts b/packages/mql-typescript/tests/query/gt.spec.ts new file mode 100644 index 00000000..cbbc4989 --- /dev/null +++ b/packages/mql-typescript/tests/query/gt.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Match Document Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/#match-document-fields} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + carrier: { + name: string; + fee: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $match: { quantity: { $gt: 20 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/gte.spec.ts b/packages/mql-typescript/tests/query/gte.spec.ts new file mode 100644 index 00000000..411d88de --- /dev/null +++ b/packages/mql-typescript/tests/query/gte.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Match Document Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/#match-document-fields} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + carrier: { + name: string; + fee: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $match: { quantity: { $gte: 20 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/in.spec.ts b/packages/mql-typescript/tests/query/in.spec.ts new file mode 100644 index 00000000..ba123d50 --- /dev/null +++ b/packages/mql-typescript/tests/query/in.spec.ts @@ -0,0 +1,43 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Use the $in Operator to Match Values in an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/#use-the--in-operator-to-match-values} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { tags: { $in: ['home', 'school'] } } }, + ]; +} + +/** + * Use the $in Operator with a Regular Expression + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/#use-the--in-operator-with-a-regular-expression} + */ +function test1() { + type inventory = { + item: string; + quantity: number; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + tags: { + $in: [ + { pattern: '^be', options: '' }, + { pattern: '^st', options: '' }, + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/jsonSchema.spec.ts b/packages/mql-typescript/tests/query/jsonSchema.spec.ts new file mode 100644 index 00000000..c355bdf2 --- /dev/null +++ b/packages/mql-typescript/tests/query/jsonSchema.spec.ts @@ -0,0 +1,42 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/#syntax} + */ +function test0() { + type TestCollection = { + name: string; + major: string; + gpa: bson.Double | number; + address: { + street: string; + zipcode: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $jsonSchema: { + required: ['name', 'major', 'gpa', 'address'], + properties: { + name: { + bsonType: 'string', + description: 'must be a string and is required', + }, + address: { + bsonType: 'object', + required: ['zipcode'], + properties: { + street: { bsonType: 'string' }, + zipcode: { bsonType: 'string' }, + }, + }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/lt.spec.ts b/packages/mql-typescript/tests/query/lt.spec.ts new file mode 100644 index 00000000..35aacf27 --- /dev/null +++ b/packages/mql-typescript/tests/query/lt.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Match Document Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/#match-document-fields} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + carrier: { + name: string; + fee: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $match: { quantity: { $lt: 20 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/lte.spec.ts b/packages/mql-typescript/tests/query/lte.spec.ts new file mode 100644 index 00000000..6b8cfcc3 --- /dev/null +++ b/packages/mql-typescript/tests/query/lte.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Match Document Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/#match-document-fields} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + carrier: { + name: string; + fee: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $match: { quantity: { $lte: 20 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/maxDistance.spec.ts b/packages/mql-typescript/tests/query/maxDistance.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/maxDistance.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/minDistance.spec.ts b/packages/mql-typescript/tests/query/minDistance.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/minDistance.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/mod.spec.ts b/packages/mql-typescript/tests/query/mod.spec.ts new file mode 100644 index 00000000..5173c479 --- /dev/null +++ b/packages/mql-typescript/tests/query/mod.spec.ts @@ -0,0 +1,36 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Use $mod to Select Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/#use--mod-to-select-documents} + */ +function test0() { + type inventory = { + _id: number; + item: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { qty: { $mod: [4, 0] } } }, + ]; +} + +/** + * Floating Point Arguments + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/#floating-point-arguments} + */ +function test1() { + type inventory = { + _id: number; + item: string; + qty: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { qty: { $mod: [4, 0] } } }, + { $match: { qty: { $mod: [4.5, 0] } } }, + { $match: { qty: { $mod: [4.99, 0] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/ne.spec.ts b/packages/mql-typescript/tests/query/ne.spec.ts new file mode 100644 index 00000000..5d8d7a45 --- /dev/null +++ b/packages/mql-typescript/tests/query/ne.spec.ts @@ -0,0 +1,21 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Match Document Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/#match-document-fields-that-are-not-equal} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + carrier: { + name: string; + fee: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $match: { quantity: { $ne: 20 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/near.spec.ts b/packages/mql-typescript/tests/query/near.spec.ts new file mode 100644 index 00000000..2cc7161e --- /dev/null +++ b/packages/mql-typescript/tests/query/near.spec.ts @@ -0,0 +1,29 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Query on GeoJSON Data + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/#query-on-geojson-data} + */ +function test0() { + type places = { + location: { + type: string; + coordinates: Array; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + location: { + $near: { + $geometry: { type: 'Point', coordinates: [-73.9667, 40.78] }, + $minDistance: 1000, + $maxDistance: 5000, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/nearSphere.spec.ts b/packages/mql-typescript/tests/query/nearSphere.spec.ts new file mode 100644 index 00000000..dec7da65 --- /dev/null +++ b/packages/mql-typescript/tests/query/nearSphere.spec.ts @@ -0,0 +1,29 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Specify Center Point Using GeoJSON + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/#specify-center-point-using-geojson} + */ +function test0() { + type places = { + location: { + type: string; + coordinates: Array; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + location: { + $nearSphere: { + $geometry: { type: 'Point', coordinates: [-73.9667, 40.78] }, + $minDistance: 1000, + $maxDistance: 5000, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/nin.spec.ts b/packages/mql-typescript/tests/query/nin.spec.ts new file mode 100644 index 00000000..43b883c0 --- /dev/null +++ b/packages/mql-typescript/tests/query/nin.spec.ts @@ -0,0 +1,34 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Select on Unmatching Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/#select-on-unmatching-documents} + */ +function test0() { + type inventory = { + item: string; + quantity: number; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { quantity: { $nin: [5, 15] } } }, + ]; +} + +/** + * Select on Elements Not in an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/#select-on-elements-not-in-an-array} + */ +function test1() { + type inventory = { + item: string; + quantity: number; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { tags: { $nin: ['school'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/nor.spec.ts b/packages/mql-typescript/tests/query/nor.spec.ts new file mode 100644 index 00000000..ea675575 --- /dev/null +++ b/packages/mql-typescript/tests/query/nor.spec.ts @@ -0,0 +1,67 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Query with Two Expressions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/#-nor-query-with-two-expressions} + */ +function test0() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $nor: [{ price: 1.99 }, { sale: true }] } }, + ]; +} + +/** + * Additional Comparisons + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/#-nor-and-additional-comparisons} + */ +function test1() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { $nor: [{ price: 1.99 }, { qty: { $lt: 20 } }, { sale: true }] }, + }, + ]; +} + +/** + * $nor and $exists + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/#-nor-and--exists} + */ +function test2() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $nor: [ + { price: 1.99 }, + { price: { $exists: false } }, + { sale: true }, + { sale: { $exists: false } }, + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/not.spec.ts b/packages/mql-typescript/tests/query/not.spec.ts new file mode 100644 index 00000000..390308d4 --- /dev/null +++ b/packages/mql-typescript/tests/query/not.spec.ts @@ -0,0 +1,38 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Syntax + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/#syntax} + */ +function test0() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { price: { $not: { $gt: 1.99 } } } }, + ]; +} + +/** + * Regular Expressions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/#regular-expressions} + */ +function test1() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { price: { $not: { pattern: '^p.*', options: '' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/or.spec.ts b/packages/mql-typescript/tests/query/or.spec.ts new file mode 100644 index 00000000..f5c7c8f4 --- /dev/null +++ b/packages/mql-typescript/tests/query/or.spec.ts @@ -0,0 +1,41 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * $or Clauses + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/#-or-clauses-and-indexes} + */ +function test0() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $or: [{ quantity: { $lt: 20 } }, { price: 10 }] } }, + ]; +} + +/** + * Error Handling + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/#error-handling} + */ +function test1() { + type example = { + x: bson.Int32 | number; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $or: [ + { x: { $eq: 0 } }, + { $expr: { $eq: [{ $divide: [1, '$x'] }, 3] } }, + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/query/polygon.spec.ts b/packages/mql-typescript/tests/query/polygon.spec.ts new file mode 100644 index 00000000..74f8fb99 --- /dev/null +++ b/packages/mql-typescript/tests/query/polygon.spec.ts @@ -0,0 +1,2 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/rand.spec.ts b/packages/mql-typescript/tests/query/rand.spec.ts new file mode 100644 index 00000000..4e42360e --- /dev/null +++ b/packages/mql-typescript/tests/query/rand.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Select Random Items From a Collection + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/#select-random-items-from-a-collection} + */ +function test0() { + type voters = { + name: string; + voterId: number; + district: number; + registered: boolean; + }; + + const aggregation: schema.Pipeline = [ + { $match: { district: 3, $expr: { $lt: [0.5, { $rand: {} }] } } }, + { $project: { _id: 0, name: 1, registered: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/regex.spec.ts b/packages/mql-typescript/tests/query/regex.spec.ts new file mode 100644 index 00000000..c1708d7a --- /dev/null +++ b/packages/mql-typescript/tests/query/regex.spec.ts @@ -0,0 +1,34 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Perform a LIKE Match + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/#perform-a-like-match} + */ +function test0() { + type products = { + _id: number; + sku: string; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { sku: { $regex: { pattern: '789$', options: '' } } } }, + ]; +} + +/** + * Perform Case-Insensitive Regular Expression Match + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/#perform-case-insensitive-regular-expression-match} + */ +function test1() { + type products = { + _id: number; + sku: string; + description: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { sku: { $regex: { pattern: '^ABC', options: 'i' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/sampleRate.spec.ts b/packages/mql-typescript/tests/query/sampleRate.spec.ts new file mode 100644 index 00000000..dcbbf171 --- /dev/null +++ b/packages/mql-typescript/tests/query/sampleRate.spec.ts @@ -0,0 +1,17 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/#examples} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $sampleRate: 0.33 } }, + { $count: 'numMatches' }, + ]; +} diff --git a/packages/mql-typescript/tests/query/size.spec.ts b/packages/mql-typescript/tests/query/size.spec.ts new file mode 100644 index 00000000..c5c299cd --- /dev/null +++ b/packages/mql-typescript/tests/query/size.spec.ts @@ -0,0 +1,20 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Query an Array by Array Length + * @see {@link https://www.mongodb.com/docs/manual/tutorial/query-arrays/#query-an-array-by-array-length} + */ +function test0() { + type inventory = { + price: bson.Double | number; + qty: bson.Int32 | number | undefined; + quantity: bson.Int32 | number | undefined; + sale: boolean; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { tags: { $size: 3 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/text.spec.ts b/packages/mql-typescript/tests/query/text.spec.ts new file mode 100644 index 00000000..1610dcf0 --- /dev/null +++ b/packages/mql-typescript/tests/query/text.spec.ts @@ -0,0 +1,112 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Search for a Single Word + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/#-text-with-a-single-word} + */ +function test0() { + type articles = { + _id: number; + subject: string; + author: string; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'coffee' } } }, + ]; +} + +/** + * Query a Different Language + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/#query-a-different-language} + */ +function test1() { + type articles = { + _id: number; + subject: string; + author: string; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'leche', $language: 'es' } } }, + ]; +} + +/** + * Case and Diacritic Insensitive Search + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/#case-and-diacritic-insensitivity} + */ +function test2() { + type articles = { + _id: number; + subject: string; + author: string; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'сы́рники CAFÉS' } } }, + ]; +} + +/** + * Perform Case Sensitive Search + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/#case-sensitivity} + */ +function test3() { + type articles = { + _id: number; + subject: string; + author: string; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'Coffee', $caseSensitive: true } } }, + { + $match: { + $text: { $search: '\\"Café Con Leche\\"', $caseSensitive: true }, + }, + }, + ]; +} + +/** + * Diacritic Sensitive Search + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/#diacritic-sensitivity} + */ +function test4() { + type articles = { + _id: number; + subject: string; + author: string; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'CAFÉ', $diacriticSensitive: true } } }, + ]; +} + +/** + * Text Search Score Examples + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/#relevance-score-examples} + */ +function test5() { + type articles = { + _id: number; + subject: string; + author: string; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'CAFÉ', $diacriticSensitive: true } } }, + { $project: { score: { $meta: 'textScore' } } }, + { $sort: { score: { $meta: 'textScore' } } }, + { $limit: 5 }, + ]; +} diff --git a/packages/mql-typescript/tests/query/type.spec.ts b/packages/mql-typescript/tests/query/type.spec.ts new file mode 100644 index 00000000..f23ff64e --- /dev/null +++ b/packages/mql-typescript/tests/query/type.spec.ts @@ -0,0 +1,71 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Querying by Data Type + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/#querying-by-data-type} + */ +function test0() { + type addressBook = { + _id: number; + address: string; + zipCode: string | number | bson.Long | bson.Int32 | number | Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { zipCode: { $type: [2] } } }, + { $match: { zipCode: { $type: ['string'] } } }, + { $match: { zipCode: { $type: [1] } } }, + { $match: { zipCode: { $type: ['double'] } } }, + { $match: { zipCode: { $type: ['number'] } } }, + ]; +} + +/** + * Querying by Multiple Data Type + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/#querying-by-multiple-data-types} + */ +function test1() { + type grades = { + _id: number; + name: string; + classAverage: string | number | bson.Int32 | number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { classAverage: { $type: [2, 1] } } }, + { $match: { classAverage: { $type: ['string', 'double'] } } }, + ]; +} + +/** + * Querying by MinKey and MaxKey + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/#querying-by-minkey-and-maxkey} + */ +function test2() { + type addressBook = { + _id: number; + address: string; + zipCode: string | number | bson.Long | bson.Int32 | number | Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { zipCode: { $type: ['minKey'] } } }, + { $match: { zipCode: { $type: ['maxKey'] } } }, + ]; +} + +/** + * Querying by Array Type + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/#querying-by-array-type} + */ +function test3() { + type sensorReading = { + _id: number; + readings: Array> | number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { readings: { $type: ['array'] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/query/where.spec.ts b/packages/mql-typescript/tests/query/where.spec.ts new file mode 100644 index 00000000..1c8a2767 --- /dev/null +++ b/packages/mql-typescript/tests/query/where.spec.ts @@ -0,0 +1,35 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/#example} + */ +function test0() { + type players = { + _id: number; + name: string; + username: string; + first_login: string; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $where: + 'function() { return hex_md5(this.name) == "9b53e667f30cd329dca1ec9e6a83e994"}', + }, + }, + { + $match: { + $expr: { + $function: { + body: 'function(name) { return hex_md5(name) == "9b53e667f30cd329dca1ec9e6a83e994";}', + args: ['$name'], + lang: 'js', + }, + }, + }, + }, + ]; +} From 176176d52efda4d70eb87f38e2bc96808dd35b25 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 4 Jun 2025 03:44:22 +0200 Subject: [PATCH 11/26] add search tests --- package-lock.json | 1270 +---------------- packages/mql-typescript/.mocharc.js | 1 - packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema.ts | 207 ++- packages/mql-typescript/package.json | 9 +- .../src/driverSchema/staticSchemas.ts | 7 + packages/mql-typescript/src/metaschema.ts | 1 + .../mql-typescript/src/schemaGenerator.ts | 65 +- .../src/testGenerator/testGenerator.ts | 17 +- .../testGenerator/unsupportedAggregations.ts | 71 + .../tests/search/autocomplete.spec.ts | 452 ++++++ .../tests/search/compound.spec.ts | 143 ++ .../tests/search/embeddedDocument.spec.ts | 299 ++++ .../tests/search/equals.spec.ts | 206 +++ .../tests/search/exists.spec.ts | 78 + .../mql-typescript/tests/search/facet.spec.ts | 97 ++ .../tests/search/geoShape.spec.ts | 644 +++++++++ .../tests/search/geoWithin.spec.ts | 588 ++++++++ .../mql-typescript/tests/search/in.spec.ts | 131 ++ .../tests/search/moreLikeThis.spec.ts | 266 ++++ .../mql-typescript/tests/search/near.spec.ts | 567 ++++++++ .../tests/search/phrase.spec.ts | 284 ++++ .../tests/search/queryString.spec.ts | 76 + .../mql-typescript/tests/search/range.spec.ts | 364 +++++ .../mql-typescript/tests/search/regex.spec.ts | 69 + .../mql-typescript/tests/search/text.spec.ts | 593 ++++++++ .../tests/search/wildcard.spec.ts | 138 ++ 27 files changed, 5351 insertions(+), 1294 deletions(-) delete mode 100644 packages/mql-typescript/.mocharc.js create mode 100644 packages/mql-typescript/tests/search/autocomplete.spec.ts create mode 100644 packages/mql-typescript/tests/search/compound.spec.ts create mode 100644 packages/mql-typescript/tests/search/embeddedDocument.spec.ts create mode 100644 packages/mql-typescript/tests/search/equals.spec.ts create mode 100644 packages/mql-typescript/tests/search/exists.spec.ts create mode 100644 packages/mql-typescript/tests/search/facet.spec.ts create mode 100644 packages/mql-typescript/tests/search/geoShape.spec.ts create mode 100644 packages/mql-typescript/tests/search/geoWithin.spec.ts create mode 100644 packages/mql-typescript/tests/search/in.spec.ts create mode 100644 packages/mql-typescript/tests/search/moreLikeThis.spec.ts create mode 100644 packages/mql-typescript/tests/search/near.spec.ts create mode 100644 packages/mql-typescript/tests/search/phrase.spec.ts create mode 100644 packages/mql-typescript/tests/search/queryString.spec.ts create mode 100644 packages/mql-typescript/tests/search/range.spec.ts create mode 100644 packages/mql-typescript/tests/search/regex.spec.ts create mode 100644 packages/mql-typescript/tests/search/text.spec.ts create mode 100644 packages/mql-typescript/tests/search/wildcard.spec.ts diff --git a/package-lock.json b/package-lock.json index 8da7bf5e..c2c22391 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29332,88 +29332,32 @@ }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", - "@mongodb-js/mocha-config-devtools": "^1.0.5", "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", - "@types/chai": "^4.2.21", + "@types/chai": "^5.2.2", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/mocha": "^9.1.1", "@types/node": "^17.0.35", - "@types/sinon-chai": "^3.2.5", - "chai": "^4.5.0", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", - "mocha": "^8.4.0", - "nyc": "^15.1.0", "prettier": "^3.5.3", - "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" } }, - "packages/mql-typescript/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" - } - }, - "packages/mql-typescript/node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "packages/mql-typescript/node_modules/@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", - "type-detect": "^4.1.0" - } - }, - "packages/mql-typescript/node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "packages/mql-typescript/node_modules/@types/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", "dev": true, "license": "MIT", "dependencies": { "@types/deep-eql": "*" } }, - "packages/mql-typescript/node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT" - }, "packages/mql-typescript/node_modules/@types/node": { "version": "22.14.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", @@ -29424,115 +29368,12 @@ "undici-types": "~6.21.0" } }, - "packages/mql-typescript/node_modules/@types/sinon-chai": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-4.0.0.tgz", - "integrity": "sha512-Uar+qk3TmeFsUWCwtqRNqNUE7vf34+MCJiQJR5M2rd4nCbhtE8RgTiHwN/mVwbfCjhmO6DiOel/MgzHkRMJJFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "*", - "@types/sinon": "*" - } - }, - "packages/mql-typescript/node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "packages/mql-typescript/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==", "license": "Python-2.0" }, - "packages/mql-typescript/node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "packages/mql-typescript/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" - } - }, - "packages/mql-typescript/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": { - "node": ">=6" - } - }, - "packages/mql-typescript/node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "packages/mql-typescript/node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "packages/mql-typescript/node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "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" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, "packages/mql-typescript/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -29547,56 +29388,6 @@ "node": ">=12" } }, - "packages/mql-typescript/node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "packages/mql-typescript/node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "packages/mql-typescript/node_modules/foreground-child": { - "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.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/mql-typescript/node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "packages/mql-typescript/node_modules/form-data": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", @@ -29612,23 +29403,6 @@ "node": ">= 6" } }, - "packages/mql-typescript/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" - } - }, "packages/mql-typescript/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -29681,516 +29455,75 @@ } } }, - "packages/mql-typescript/node_modules/just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true, + "packages/mql-typescript/node_modules/rrweb-cssom": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", + "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", "license": "MIT" }, - "packages/mql-typescript/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", + "packages/mql-typescript/node_modules/tough-cookie": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", + "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", + "license": "BSD-3-Clause", "dependencies": { - "p-locate": "^4.1.0" + "tldts": "^6.1.32" }, "engines": { - "node": ">=8" + "node": ">=16" } }, - "packages/mql-typescript/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, + "packages/mql-typescript/node_modules/tr46": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", + "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "punycode": "^2.3.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, - "packages/mql-typescript/node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true, - "license": "MIT" - }, - "packages/mql-typescript/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "packages/mql-typescript/node_modules/typescript": { + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=14.17" } }, - "packages/mql-typescript/node_modules/mocha": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", - "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", + "packages/mql-typescript/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, + "license": "MIT" + }, + "packages/mql-typescript/node_modules/whatwg-url": { + "version": "14.2.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", + "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", "license": "MIT", "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^10.4.5", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "tr46": "^5.1.0", + "webidl-conversions": "^7.0.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=18" } }, - "packages/mql-typescript/node_modules/mocha/node_modules/glob": { - "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": { - "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" - } - }, - "packages/mql-typescript/node_modules/mocha/node_modules/glob/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": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/mql-typescript/node_modules/mocha/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" - } - }, - "packages/mql-typescript/node_modules/mocha/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": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "packages/mql-typescript/node_modules/nise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", - "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.1", - "@sinonjs/text-encoding": "^0.7.3", - "just-extend": "^6.2.0", - "path-to-regexp": "^8.1.0" - } - }, - "packages/mql-typescript/node_modules/nyc": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", - "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^3.3.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^6.0.2", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, - "engines": { - "node": ">=18" - } - }, - "packages/mql-typescript/node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "packages/mql-typescript/node_modules/nyc/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": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mql-typescript/node_modules/nyc/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mql-typescript/node_modules/nyc/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "license": "ISC" - }, - "packages/mql-typescript/node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mql-typescript/node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "packages/mql-typescript/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": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/mql-typescript/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": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mql-typescript/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/mql-typescript/node_modules/path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "packages/mql-typescript/node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "packages/mql-typescript/node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "packages/mql-typescript/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": { - "node": ">=8" - } - }, - "packages/mql-typescript/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "license": "MIT" - }, - "packages/mql-typescript/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "packages/mql-typescript/node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "packages/mql-typescript/node_modules/sinon": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", - "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.5", - "@sinonjs/samsam": "^8.0.1", - "diff": "^7.0.0", - "nise": "^6.1.1", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "packages/mql-typescript/node_modules/sinon/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "packages/mql-typescript/node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "packages/mql-typescript/node_modules/tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, - "packages/mql-typescript/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "packages/mql-typescript/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "packages/mql-typescript/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/mql-typescript/node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true, - "license": "Apache-2.0" - }, - "packages/mql-typescript/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "license": "MIT", + "packages/mql-typescript/node_modules/yargs": { + "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", @@ -37151,17 +36484,13 @@ "version": "file:packages/mql-typescript", "requires": { "@mongodb-js/eslint-config-devtools": "0.9.11", - "@mongodb-js/mocha-config-devtools": "^1.0.5", "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", - "@types/chai": "^4.2.21", + "@types/chai": "^5.2.2", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/mocha": "^9.1.1", "@types/node": "^17.0.35", - "@types/sinon-chai": "^3.2.5", "bson": "^6.10.3", - "chai": "^4.5.0", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", @@ -37170,69 +36499,24 @@ "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", "json5": "^2.2.3", - "mocha": "^8.4.0", "mongodb": "^6.9.0", "mongodb-schema": "^12.5.2", - "nyc": "^15.1.0", - "prettier": "^3.5.3", - "sinon": "^9.2.3", - "ts-node": "^10.9.2", - "typescript": "^5.0.4", - "yargs": "^17.7.2", - "zod": "^3.24.2" - }, - "dependencies": { - "@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.1" - } - }, - "@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", - "type-detect": "^4.1.0" - }, - "dependencies": { - "type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true - } - } - }, + "prettier": "^3.5.3", + "ts-node": "^10.9.2", + "typescript": "^5.0.4", + "yargs": "^17.7.2", + "zod": "^3.24.2" + }, + "dependencies": { "@types/chai": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.1.tgz", - "integrity": "sha512-iu1JLYmGmITRzUgNiLMZD3WCoFzpYtueuyAgHTXqgwSRAMIlFTnZqG6/xenkpUGRJEzSfklUTI4GNSzks/dc0w==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", "dev": true, "requires": { "@types/deep-eql": "*" } }, - "@types/mocha": { - "version": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true - }, "@types/node": { "version": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", @@ -37241,81 +36525,11 @@ "undici-types": "~6.21.0" } }, - "@types/sinon-chai": { - "version": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-4.0.0.tgz", - "integrity": "sha512-Uar+qk3TmeFsUWCwtqRNqNUE7vf34+MCJiQJR5M2rd4nCbhtE8RgTiHwN/mVwbfCjhmO6DiOel/MgzHkRMJJFg==", - "dev": true, - "requires": { - "@types/chai": "*", - "@types/sinon": "*" - } - }, - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, - "assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true - }, - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chai": { - "version": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, - "requires": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - } - }, - "check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true - }, - "chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.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" - } - }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -37326,36 +36540,6 @@ "wrap-ansi": "^7.0.0" } }, - "deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true - }, - "diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true - }, - "foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - } - } - }, "form-data": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", @@ -37367,19 +36551,6 @@ "mime-types": "^2.1.12" } }, - "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, - "requires": { - "@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" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -37415,326 +36586,11 @@ "xml-name-validator": "^5.0.0" } }, - "just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "dev": true - }, - "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, - "requires": { - "p-locate": "^4.1.0" - } - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - } - }, - "loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true - }, - "minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true - }, - "mocha": { - "version": "https://registry.npmjs.org/mocha/-/mocha-11.1.0.tgz", - "integrity": "sha512-8uJR5RTC2NgpY3GrYcgpZrsEd9zKbPDpob1RezyR2upGHRQtHWofmzTMzTMSV6dru3tj5Ukt0+Vnq1qhFEEwAg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^10.4.5", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "requires": { - "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" - }, - "dependencies": { - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "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, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "nise": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", - "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.1", - "@sinonjs/text-encoding": "^0.7.3", - "just-extend": "^6.2.0", - "path-to-regexp": "^8.1.0" - } - }, - "nyc": { - "version": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", - "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", - "dev": true, - "requires": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^3.3.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^6.0.2", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "dependencies": { - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "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, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "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==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "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, - "requires": { - "p-try": "^2.0.0" - } - }, - "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, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-to-regexp": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", - "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", - "dev": true - }, - "pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "dev": true - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "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 - }, "rrweb-cssom": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==" }, - "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - }, - "serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "sinon": { - "version": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", - "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", - "dev": true, - "requires": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.5", - "@sinonjs/samsam": "^8.0.1", - "diff": "^7.0.0", - "nise": "^6.1.1", - "supports-color": "^7.2.0" - }, - "dependencies": { - "diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true - } - } - }, "tough-cookie": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", @@ -37772,12 +36628,6 @@ "webidl-conversions": "^7.0.0" } }, - "workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true - }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", diff --git a/packages/mql-typescript/.mocharc.js b/packages/mql-typescript/.mocharc.js deleted file mode 100644 index 64afeb1f..00000000 --- a/packages/mql-typescript/.mocharc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@mongodb-js/mocha-config-devtools'); diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 7978e4fc..b9b1d19f 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 7978e4fcf6fb84a46d97e6119f9a80b2b09419d6 +Subproject commit b9b1d19f73fb8df972051136af80f0b61a87cee8 diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 05b0ac80..740dd6b5 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -15,6 +15,11 @@ type RecordWithStaticFields, TValue> = T & { // TBD: Nested fields type AFieldPath = KeysOfAType & string; type FieldExpression = { [k: string]: FieldPath }; + +type MultiAnalyzerSpec = { + value: KeysOfAType; + multi: string; +}; export namespace Aggregation.Accumulator { /** * A type describing the `$accumulator` operator. @@ -2176,7 +2181,7 @@ export namespace Aggregation.Expression { /** * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it. */ - input: ResolvesToNumber | unknown[]; + input: ResolvesToNumber | ResolvesToNumber[]; /** * The method that mongod uses to calculate the 50th percentile value. The method must be 'approximate'. @@ -2417,7 +2422,7 @@ export namespace Aggregation.Expression { /** * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it. */ - input: ResolvesToNumber | unknown[]; + input: ResolvesToNumber | ResolvesToNumber[]; /** * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive. @@ -3579,7 +3584,7 @@ export namespace Aggregation.Query { * Matches numeric or binary values in which a set of bit positions all have a value of 0. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/} */ - $bitsAllClear: Int | bson.Binary | unknown[]; + $bitsAllClear: (Int | bson.Binary) | (Int | bson.Binary)[]; } /** @@ -3591,7 +3596,7 @@ export namespace Aggregation.Query { * Matches numeric or binary values in which a set of bit positions all have a value of 1. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/} */ - $bitsAllSet: Int | bson.Binary | unknown[]; + $bitsAllSet: (Int | bson.Binary) | (Int | bson.Binary)[]; } /** @@ -3603,7 +3608,7 @@ export namespace Aggregation.Query { * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/} */ - $bitsAnyClear: Int | bson.Binary | unknown[]; + $bitsAnyClear: (Int | bson.Binary) | (Int | bson.Binary)[]; } /** @@ -3615,7 +3620,7 @@ export namespace Aggregation.Query { * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/} */ - $bitsAnySet: Int | bson.Binary | unknown[]; + $bitsAnySet: (Int | bson.Binary) | (Int | bson.Binary)[]; } /** @@ -3711,7 +3716,7 @@ export namespace Aggregation.Query { * Selects geometries that intersect with a GeoJSON geometry. The 2dsphere index supports $geoIntersects. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/} */ - $geoIntersects: Geometry; + $geoIntersects: Geometry & {}; } /** @@ -3723,7 +3728,7 @@ export namespace Aggregation.Query { * Selects geometries within a bounding GeoJSON geometry. The 2dsphere and 2d indexes support $geoWithin. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/} */ - $geoWithin: Geometry; + $geoWithin: Geometry & {}; } /** @@ -3871,7 +3876,17 @@ export namespace Aggregation.Query { * Returns geospatial objects in proximity to a point. Requires a geospatial index. The 2dsphere and 2d indexes support $near. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/} */ - $near: Geometry; + $near: Geometry & { + /** + * Distance in meters. Limits the results to those documents that are at most the specified distance from the center point. + */ + $maxDistance?: Number; + + /** + * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point. + */ + $minDistance?: Number; + }; } /** @@ -3883,7 +3898,17 @@ export namespace Aggregation.Query { * Returns geospatial objects in proximity to a point on a sphere. Requires a geospatial index. The 2dsphere and 2d indexes support $nearSphere. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/} */ - $nearSphere: Geometry; + $nearSphere: Geometry & { + /** + * Distance in meters. + */ + $maxDistance?: Number; + + /** + * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point. + */ + $minDistance?: Number; + }; } /** @@ -4066,7 +4091,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/} */ autocomplete: { - path: SearchPath; + path: SearchPath; query: string; tokenOrder?: string; fuzzy?: Record; @@ -4086,10 +4111,10 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/} */ compound: { - must?: SearchOperator | unknown[]; - mustNot?: SearchOperator | unknown[]; - should?: SearchOperator | unknown[]; - filter?: SearchOperator | unknown[]; + must?: SearchOperator | SearchOperator[]; + mustNot?: SearchOperator | SearchOperator[]; + should?: SearchOperator | SearchOperator[]; + filter?: SearchOperator | SearchOperator[]; minimumShouldMatch?: Int; score?: SearchScore; }; @@ -4108,7 +4133,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/} */ embeddedDocument: { - path: SearchPath; + path: SearchPath; operator: SearchOperator; score?: SearchScore; }; @@ -4124,7 +4149,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/} */ equals: { - path: SearchPath; + path: SearchPath; value: | bson.Binary | boolean @@ -4146,7 +4171,7 @@ export namespace Aggregation.Search { * The exists operator tests if a path to a specified indexed field name exists in a document. * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/} */ - exists: { path: SearchPath; score?: SearchScore }; + exists: { path: SearchPath; score?: SearchScore }; } /** @@ -4173,7 +4198,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/} */ geoShape: { - path: SearchPath; + path: SearchPath; relation: string; geometry: Geometry; score?: SearchScore; @@ -4192,7 +4217,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/} */ geoWithin: { - path: SearchPath; + path: SearchPath; box?: Record; circle?: Record; geometry?: Geometry; @@ -4209,7 +4234,7 @@ export namespace Aggregation.Search { * The in operator performs a search for an array of BSON values in a field. * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/} */ - in: { path: SearchPath; value: any | unknown[]; score?: SearchScore }; + in: { path: SearchPath; value: any | any[]; score?: SearchScore }; } /** @@ -4224,7 +4249,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/} */ moreLikeThis: { - like: Record | unknown[]; + like: Record | Record[]; score?: SearchScore; }; } @@ -4239,7 +4264,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/} */ near: { - path: SearchPath; + path: SearchPath; origin: Date | Number | Geometry; pivot: Number; score?: SearchScore; @@ -4256,8 +4281,8 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/} */ phrase: { - path: SearchPath; - query: string | unknown[]; + path: SearchPath; + query: string | string[]; slop?: Int; synonyms?: string; score?: SearchScore; @@ -4269,7 +4294,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/} */ export interface QueryString { - queryString: { defaultPath: SearchPath; query: string }; + queryString: { defaultPath: SearchPath; query: string }; } /** @@ -4283,7 +4308,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/} */ range: { - path: SearchPath; + path: SearchPath; gt?: Date | Number | string | bson.ObjectId; gte?: Date | Number | string | bson.ObjectId; lt?: Date | Number | string | bson.ObjectId; @@ -4303,7 +4328,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/} */ regex: { - path: SearchPath; + path: SearchPath; query: string; allowAnalyzedField?: boolean; score?: SearchScore; @@ -4321,7 +4346,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/} */ text: { - path: SearchPath; + path: SearchPath; query: string; fuzzy?: Record; matchCriteria?: string; @@ -4340,7 +4365,7 @@ export namespace Aggregation.Search { * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/} */ wildcard: { - path: SearchPath; + path: SearchPath; query: string; allowAnalyzedField?: boolean; score?: SearchScore; @@ -4718,7 +4743,7 @@ export namespace Aggregation.Stage { /** * Expression that specifies the value of the connectFromField with which to start the recursive search. Optionally, startWith may be array of values, each of which is individually followed through the traversal process. */ - startWith: Expression | unknown[]; + startWith: Expression | Expression[]; /** * Field name whose value $graphLookup uses to recursively match against the connectToField of other documents in the collection. If the value is an array, each element is individually followed through the traversal process. @@ -4954,7 +4979,7 @@ export namespace Aggregation.Stage { /** * Field or fields that act as a unique identifier for a document. The identifier determines if a results document matches an existing document in the output collection. */ - on?: string | unknown[]; + on?: string | string[]; /** * Specifies variables for use in the whenMatched pipeline. @@ -5073,7 +5098,59 @@ export namespace Aggregation.Stage { * NOTE: $search is only available for MongoDB Atlas clusters, and is not available for self-managed deployments. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/} */ - $search: SearchOperator; + $search: SearchOperator & { + /** + * Name of the Atlas Search index to use. If omitted, defaults to "default". + */ + index?: string; + + /** + * Specifies the highlighting options for displaying search terms in their original context. + */ + highlight?: SearchHighlight; + + /** + * Parallelize search across segments on dedicated search nodes. + * If you don't have separate search nodes on your cluster, + * Atlas Search ignores this flag. If omitted, defaults to false. + */ + concurrent?: boolean; + + /** + * Document that specifies the count options for retrieving a count of the results. + */ + count?: Record; + + /** + * Reference point for retrieving results. searchAfter returns documents starting immediately following the specified reference point. + */ + searchAfter?: string; + + /** + * Reference point for retrieving results. searchBefore returns documents starting immediately before the specified reference point. + */ + searchBefore?: string; + + /** + * Flag that specifies whether to retrieve a detailed breakdown of the score for the documents in the results. If omitted, defaults to false. + */ + scoreDetails?: boolean; + + /** + * Document that specifies the fields to sort the Atlas Search results by in ascending or descending order. + */ + sort?: Record; + + /** + * Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from Atlas Search. + */ + returnStoredSource?: boolean; + + /** + * Document that specifies the tracking option to retrieve analytics information on the search terms. + */ + tracking?: Record; + }; } /** @@ -5086,7 +5163,17 @@ export namespace Aggregation.Stage { * NOTE: $searchMeta is only available for MongoDB Atlas clusters running MongoDB v4.4.9 or higher, and is not available for self-managed deployments. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/} */ - $searchMeta: SearchOperator; + $searchMeta: SearchOperator & { + /** + * Name of the Atlas Search index to use. If omitted, defaults to default. + */ + index?: string; + + /** + * Document that specifies the count options for retrieving a count of the results. + */ + count?: Record; + }; } /** @@ -5304,6 +5391,18 @@ export type Regex = | { pattern: string; options?: string }; export type Long = bigint | bson.Long | { $numberLong: string }; export type Javascript = bson.Code | Function | string; +export type Geometry = + | { type: 'Point'; coordinates: number[] } + | { type: 'MultiPoint'; coordinates: number[][] } + | { type: 'LineString'; coordinates: number[][] } + | { type: 'MultiLineString'; coordinates: number[][][] } + | { type: 'Polygon'; coordinates: number[][][] } + | { type: 'MultiPolygon'; coordinates: number[][][][] } + | Aggregation.Query.$box + | Aggregation.Query.$center + | Aggregation.Query.$centerSphere + | Aggregation.Query.$geometry + | Aggregation.Query.$polygon; export type Number = Int | Long | Double | Decimal; export type BsonPrimitive = | Number @@ -5316,7 +5415,10 @@ export type BsonPrimitive = | Regex | Javascript | bson.Timestamp; -export type SearchPath = string | string[]; +export type SearchPath = + | UnprefixedFieldPath + | UnprefixedFieldPath[] + | { wildcard: string }; export type SearchScore = unknown; export type Granularity = string; export type FullDocument = string; @@ -5427,12 +5529,18 @@ export type Accumulator = | Aggregation.Accumulator.$sum | Aggregation.Accumulator.$top | Aggregation.Accumulator.$topN; -export type Geometry = - | Aggregation.Query.$box - | Aggregation.Query.$center - | Aggregation.Query.$centerSphere - | Aggregation.Query.$geometry - | Aggregation.Query.$polygon; +export type SearchHighlight = { + path: + | UnprefixedFieldPath + | UnprefixedFieldPath[] + | { wildcard: string } + | '*' + | MultiAnalyzerSpec + | (UnprefixedFieldPath | MultiAnalyzerSpec)[]; + + maxCharsToExamine?: number; + maxNumPassages?: number; +}; export type FieldPath = `$${AFieldPath}`; export type UnprefixedFieldPath = AFieldPath; export type NumberFieldPath = `$${AFieldPath}`; @@ -5988,39 +6096,22 @@ export type QueryOperator = | Aggregation.Query.$type | Aggregation.Query.$where; export type SearchOperator = - | Aggregation.Search.Autocomplete | Aggregation.Search.Autocomplete | Aggregation.Search.Compound - | Aggregation.Search.Compound - | Aggregation.Search.EmbeddedDocument | Aggregation.Search.EmbeddedDocument | Aggregation.Search.Equals - | Aggregation.Search.Equals | Aggregation.Search.Exists - | Aggregation.Search.Exists - | Aggregation.Search.Facet | Aggregation.Search.Facet | Aggregation.Search.GeoShape - | Aggregation.Search.GeoShape - | Aggregation.Search.GeoWithin | Aggregation.Search.GeoWithin | Aggregation.Search.In - | Aggregation.Search.In | Aggregation.Search.MoreLikeThis - | Aggregation.Search.MoreLikeThis - | Aggregation.Search.Near | Aggregation.Search.Near | Aggregation.Search.Phrase - | Aggregation.Search.Phrase - | Aggregation.Search.QueryString | Aggregation.Search.QueryString | Aggregation.Search.Range - | Aggregation.Search.Range | Aggregation.Search.Regex - | Aggregation.Search.Regex - | Aggregation.Search.Text | Aggregation.Search.Text - | Aggregation.Search.Wildcard | Aggregation.Search.Wildcard; export type StageOperator = | Aggregation.Stage.$addFields diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 54b34aa1..cac7aae5 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -55,25 +55,18 @@ }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", - "@mongodb-js/mocha-config-devtools": "^1.0.5", "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", - "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/mocha": "^9.1.1", "@types/node": "^17.0.35", - "@types/sinon-chai": "^3.2.5", - "chai": "^4.5.0", + "@types/chai": "^5.2.2", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", - "mocha": "^8.4.0", - "nyc": "^15.1.0", "prettier": "^3.5.3", - "sinon": "^9.2.3", "ts-node": "^10.9.2", "typescript": "^5.0.4" }, diff --git a/packages/mql-typescript/src/driverSchema/staticSchemas.ts b/packages/mql-typescript/src/driverSchema/staticSchemas.ts index 551ca02e..10ceb0f9 100644 --- a/packages/mql-typescript/src/driverSchema/staticSchemas.ts +++ b/packages/mql-typescript/src/driverSchema/staticSchemas.ts @@ -1281,6 +1281,13 @@ const listingsAndReviewsSchema: SchemaInfo = { const analyticsCustomersSchema: SchemaInfo = { collectionName: 'customers', schema: { + _id: { + types: [ + { + bsonType: 'ObjectId', + }, + ], + }, username: { types: [ { diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts index fd515496..6a166ca5 100644 --- a/packages/mql-typescript/src/metaschema.ts +++ b/packages/mql-typescript/src/metaschema.ts @@ -118,6 +118,7 @@ export const Operator = z 'searchPath', 'searchScore', 'searchOperator', + 'searchHighlight', ]), ), description: z.string().optional(), diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schemaGenerator.ts index 0b22f8e2..5a2c6789 100644 --- a/packages/mql-typescript/src/schemaGenerator.ts +++ b/packages/mql-typescript/src/schemaGenerator.ts @@ -49,6 +49,14 @@ export class SchemaGenerator extends GeneratorBase { ], long: ['bigint', 'bson.Long', '{ $numberLong: string }'], javascript: ['bson.Code', 'Function', 'string'], + geometry_S: [ + '{type: "Point", coordinates: number[] }', + '{type:"MultiPoint", coordinates: number[][] }', + '{type:"LineString", coordinates: number[][] }', + '{type:"MultiLineString", coordinates: number[][][] }', + '{type:"Polygon", coordinates: number[][][] }', + '{type:"MultiPolygon", coordinates: number[][][][] }', + ], number: [ this.toTypeName('int'), @@ -70,7 +78,11 @@ export class SchemaGenerator extends GeneratorBase { ], // Can be improved: - searchPath: ['string', 'string[]'], + searchPath_S: [ + 'UnprefixedFieldPath', + 'UnprefixedFieldPath[]', + '{ wildcard: string }', + ], searchScore: ['unknown'], granularity: ['string'], fullDocument: ['string'], @@ -110,8 +122,20 @@ export class SchemaGenerator extends GeneratorBase { 'Partial<{ [k in keyof S]: Condition }>', ], accumulator_S: [], - // searchOperator_S: [], - geometry_S: [], + searchHighlight_S: [ + `{ + path: + | UnprefixedFieldPath + | UnprefixedFieldPath[] + | { wildcard: string } + | '*' + | MultiAnalyzerSpec + | (UnprefixedFieldPath | MultiAnalyzerSpec)[]; + + maxCharsToExamine?: number; + maxNumPassages?: number; + }`, + ], // Need to be adjusted to match the real schema fieldPath_S: ['`$${AFieldPath}`'], @@ -241,6 +265,11 @@ export class SchemaGenerator extends GeneratorBase { // TBD: Nested fields type AFieldPath = KeysOfAType & string; type FieldExpression = { [k: string]: FieldPath }; + + type MultiAnalyzerSpec = { + value: KeysOfAType; + multi: string; + }; `); } @@ -280,14 +309,26 @@ export class SchemaGenerator extends GeneratorBase { this.emit(`${arg.name}${arg.optional ? '?' : ''}: `); } - for (const type of arg.type) { - const name = this.getArgumentTypeName(type, arg.syntheticVariables); - - if (!name) { - throw new Error(`Unknown type ${type}`); + const allowsArrays = arg.type.includes('array'); + const argTypes = arg.type + .filter((t) => t !== 'array') + .map((type) => { + const name = this.getArgumentTypeName(type, arg.syntheticVariables); + if (!name) { + throw new Error(`Unknown type ${type}`); + } + return name; + }) + .join(' | '); + + if (allowsArrays) { + if (arg.type.length > 1) { + this.emit(`(${argTypes}) | (${argTypes})[]`); + } else { + this.emit('unknown[]'); } - - this.emit(`| ${name}`); + } else { + this.emit(argTypes); } } @@ -474,6 +515,8 @@ export class SchemaGenerator extends GeneratorBase { ); case undefined: this.emitArg(arg, false); + this.emit(' & '); + this.emit(objectType); break; } break; @@ -513,7 +556,7 @@ export class SchemaGenerator extends GeneratorBase { `\nexport type ${this.toTypeName(name)}${ isTemplated ? '' : '' } = |` + - interfaces + [...new Set(interfaces)] .map((i) => `(${i}${i.endsWith('_S') ? '' : ''})`) .join('|') + ';', diff --git a/packages/mql-typescript/src/testGenerator/testGenerator.ts b/packages/mql-typescript/src/testGenerator/testGenerator.ts index cee00fdd..e96a0c3e 100644 --- a/packages/mql-typescript/src/testGenerator/testGenerator.ts +++ b/packages/mql-typescript/src/testGenerator/testGenerator.ts @@ -101,6 +101,14 @@ export class TestGenerator extends GeneratorBase { return `bson.Binary.createFromBase64('${stage.toString('base64')}', ${stage.sub_type})`; } + if (stage instanceof bson.ObjectId) { + return `bson.ObjectId.createFromHexString('${stage.toHexString()}')`; + } + + if (stage instanceof Date) { + return `new Date('${stage.toISOString()}')`; + } + if ('$code' in stage && typeof stage.$code === 'string') { return JSON.stringify(removeNewlines(stage.$code)); } @@ -167,8 +175,6 @@ export class TestGenerator extends GeneratorBase { ); } - const temp = this.stageToTS(stage); - this.emit(this.stageToTS(stage)); if (isUnsupportedStage) { @@ -183,9 +189,10 @@ export class TestGenerator extends GeneratorBase { protected override async generateImpl(yamlFiles: YamlFiles): Promise { for await (const file of yamlFiles) { if ( - file.category !== 'query' && - file.category !== 'expression' && - file.category !== 'accumulator' + // file.category !== 'query' && + // file.category !== 'expression' && + // file.category !== 'accumulator' && + file.category !== 'search' ) { // TODO: enable for others continue; diff --git a/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts b/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts index fdbf0ad7..a42b2f9f 100644 --- a/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts +++ b/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts @@ -102,4 +102,75 @@ export const unsupportedAggregations: { }, }, }, + search: { + embeddedDocument: { + 'Query for Matching Embedded Documents Only': { + stage: 2, + comment: nestedFieldsExplanation, + }, + Basic: { + stage: 0, + comment: nestedFieldsExplanation, + }, + Facet: { + stage: 0, + comment: nestedFieldsExplanation, + }, + ['Query and Sort']: { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + facet: { + Facet: { + stage: 2, + comment: + 'this uses $$SEARCH_META, which is a synthetic field not available statically', + }, + }, + geoShape: { + Disjoint: { + stage: 0, + comment: nestedFieldsExplanation, + }, + Intersect: { + stage: 0, + comment: nestedFieldsExplanation, + }, + Within: { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + exists: { + Embedded: { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + geoWithin: { + box: { + stage: 0, + comment: nestedFieldsExplanation, + }, + circle: { + stage: 0, + comment: nestedFieldsExplanation, + }, + geometry: { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + near: { + ['GeoJSON Point']: { + stage: 0, + comment: nestedFieldsExplanation, + }, + Compound: { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + }, }; diff --git a/packages/mql-typescript/tests/search/autocomplete.spec.ts b/packages/mql-typescript/tests/search/autocomplete.spec.ts new file mode 100644 index 00000000..e6f293b0 --- /dev/null +++ b/packages/mql-typescript/tests/search/autocomplete.spec.ts @@ -0,0 +1,452 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Basic + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#basic-example} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { autocomplete: { query: 'off', path: 'title' } } }, + { $limit: 10 }, + { $project: { _id: 0, title: 1 } }, + ]; +} + +/** + * Fuzzy + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#fuzzy-example} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + autocomplete: { + query: 'pre', + path: 'title', + fuzzy: { maxEdits: 1, prefixLength: 1, maxExpansions: 256 }, + }, + }, + }, + { $limit: 10 }, + { $project: { _id: 0, title: 1 } }, + ]; +} + +/** + * Token Order any + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#simple-any-example} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + autocomplete: { query: 'men with', path: 'title', tokenOrder: 'any' }, + }, + }, + { $limit: 4 }, + { $project: { _id: 0, title: 1 } }, + ]; +} + +/** + * Token Order sequential + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#simple-sequential-example} + */ +function test3() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + autocomplete: { + query: 'men with', + path: 'title', + tokenOrder: 'sequential', + }, + }, + }, + { $limit: 4 }, + { $project: { _id: 0, title: 1 } }, + ]; +} + +/** + * Highlighting + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#highlighting-example} + */ +function test4() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + autocomplete: { query: 'ger', path: 'title' }, + highlight: { path: 'title' }, + }, + }, + { $limit: 5 }, + { + $project: { + score: { $meta: 'searchScore' }, + _id: 0, + title: 1, + highlights: { $meta: 'searchHighlights' }, + }, + }, + ]; +} + +/** + * Across Multiple Fields + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#search-across-multiple-fields} + */ +function test5() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + should: [ + { autocomplete: { query: 'inter', path: 'title' } }, + { autocomplete: { query: 'inter', path: 'plot' } }, + ], + minimumShouldMatch: 1, + }, + }, + }, + { $limit: 10 }, + { $project: { _id: 0, title: 1, plot: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/compound.spec.ts b/packages/mql-typescript/tests/search/compound.spec.ts new file mode 100644 index 00000000..e901aa04 --- /dev/null +++ b/packages/mql-typescript/tests/search/compound.spec.ts @@ -0,0 +1,143 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * must and mustNot + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/#must-and-mustnot-example} + */ +function test0() { + type TestCollection = { + _id: number; + type: string; + description: string; + category: string; + in_stock: boolean; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [{ text: { query: 'varieties', path: 'description' } }], + mustNot: [{ text: { query: 'apples', path: 'description' } }], + }, + }, + }, + ]; +} + +/** + * must and should + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/#must-and-should-example} + */ +function test1() { + type TestCollection = { + _id: number; + type: string; + description: string; + category: string; + in_stock: boolean; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [{ text: { query: 'varieties', path: 'description' } }], + should: [{ text: { query: 'Fuji', path: 'description' } }], + }, + }, + }, + { $project: { score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * minimumShouldMatch + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/#minimumshouldmatch-example} + */ +function test2() { + type TestCollection = { + _id: number; + type: string; + description: string; + category: string; + in_stock: boolean; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [{ text: { query: 'varieties', path: 'description' } }], + should: [ + { text: { query: 'Fuji', path: 'description' } }, + { text: { query: 'Golden Delicious', path: 'description' } }, + ], + minimumShouldMatch: 1, + }, + }, + }, + ]; +} + +/** + * Filter + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/#filter-examples} + */ +function test3() { + type TestCollection = { + _id: number; + type: string; + description: string; + category: string; + in_stock: boolean; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [{ text: { query: 'varieties', path: 'description' } }], + should: [{ text: { query: 'banana', path: 'description' } }], + filter: [{ text: { query: 'granny', path: 'description' } }], + }, + }, + }, + ]; +} + +/** + * Nested + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/#nested-example} + */ +function test4() { + type TestCollection = { + _id: number; + type: string; + description: string; + category: string; + in_stock: boolean; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + should: [ + { text: { query: 'apple', path: 'type' } }, + { + compound: { + must: [ + { text: { query: 'organic', path: 'category' } }, + { equals: { value: true, path: 'in_stock' } }, + ], + }, + }, + ], + minimumShouldMatch: 1, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/search/embeddedDocument.spec.ts b/packages/mql-typescript/tests/search/embeddedDocument.spec.ts new file mode 100644 index 00000000..e0eee795 --- /dev/null +++ b/packages/mql-typescript/tests/search/embeddedDocument.spec.ts @@ -0,0 +1,299 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Basic + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/#index-definition} + */ +function test0() { + type sales = { + _id: { + $oid: string; + }; + saleDate: { + $date: { + $numberLong: string; + }; + }; + items: Array<{ + name: string; + tags: Array; + price: { + $numberDecimal: string; + }; + quantity: { + $numberInt: string; + }; + }>; + storeLocation: string; + customer: { + gender: string; + age: { + $numberInt: string; + }; + email: string; + satisfaction: { + $numberInt: string; + }; + }; + couponUsed: boolean; + purchaseMethod: string; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + embeddedDocument: { + path: 'items', + operator: { + compound: { + must: [{ text: { path: 'items.tags', query: 'school' } }], + should: [{ text: { path: 'items.name', query: 'backpack' } }], + }, + }, + score: { embedded: { aggregate: 'mean' } }, + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 5 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + 'items.name': 1, + 'items.tags': 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} + +/** + * Facet + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/#facet-query} + */ +function test1() { + type sales = { + _id: { + $oid: string; + }; + saleDate: { + $date: { + $numberLong: string; + }; + }; + items: Array<{ + name: string; + tags: Array; + price: { + $numberDecimal: string; + }; + quantity: { + $numberInt: string; + }; + }>; + storeLocation: string; + customer: { + gender: string; + age: { + $numberInt: string; + }; + email: string; + satisfaction: { + $numberInt: string; + }; + }; + couponUsed: boolean; + purchaseMethod: string; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $searchMeta: { + facet: { + operator: { + embeddedDocument: { + path: 'items', + operator: { + compound: { + must: [{ text: { path: 'items.tags', query: 'school' } }], + should: [{ text: { path: 'items.name', query: 'backpack' } }], + }, + }, + }, + }, + facets: { + purchaseMethodFacet: { type: 'string', path: 'purchaseMethod' }, + }, + }, + }, + } as any, + ]; +} + +/** + * Query and Sort + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/#query-and-sort} + */ +function test2() { + type sales = { + _id: { + $oid: string; + }; + saleDate: { + $date: { + $numberLong: string; + }; + }; + items: Array<{ + name: string; + tags: Array; + price: { + $numberDecimal: string; + }; + quantity: { + $numberInt: string; + }; + }>; + storeLocation: string; + customer: { + gender: string; + age: { + $numberInt: string; + }; + email: string; + satisfaction: { + $numberInt: string; + }; + }; + couponUsed: boolean; + purchaseMethod: string; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + embeddedDocument: { + path: 'items', + operator: { text: { path: 'items.name', query: 'laptop' } }, + }, + sort: { 'items.tags': 1 }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 5 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + 'items.name': 1, + 'items.tags': 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} + +/** + * Query for Matching Embedded Documents Only + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/#query-for-matching-embedded-documents-only} + */ +function test3() { + type sales = { + _id: { + $oid: string; + }; + saleDate: { + $date: { + $numberLong: string; + }; + }; + items: Array<{ + name: string; + tags: Array; + price: { + $numberDecimal: string; + }; + quantity: { + $numberInt: string; + }; + }>; + storeLocation: string; + customer: { + gender: string; + age: { + $numberInt: string; + }; + email: string; + satisfaction: { + $numberInt: string; + }; + }; + couponUsed: boolean; + purchaseMethod: string; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + embeddedDocument: { + path: 'items', + operator: { + compound: { + must: [ + { range: { path: 'items.quantity', gt: 2 } }, + { exists: { path: 'items.price' } }, + { text: { path: 'items.tags', query: 'school' } }, + ], + }, + }, + }, + }, + }, + { $limit: 2 }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + storeLocation: 1, + items: { + $filter: { + input: '$items', + cond: { + $and: [ + { $ifNull: ['$$this.price', 'false'] }, + { $gt: ['$$this.quantity', 2] }, + { $in: ['office', '$$this.tags'] }, + ], + }, + }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/search/equals.spec.ts b/packages/mql-typescript/tests/search/equals.spec.ts new file mode 100644 index 00000000..4cc080a0 --- /dev/null +++ b/packages/mql-typescript/tests/search/equals.spec.ts @@ -0,0 +1,206 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Boolean + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#boolean-examples} + */ +function test0() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { $search: { equals: { path: 'verified_user', value: true } } }, + { $project: { name: 1, _id: 0, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * ObjectId + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#objectid-example} + */ +function test1() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + equals: { + path: 'teammates', + value: bson.ObjectId.createFromHexString('5a9427648b0beebeb69589a1'), + }, + }, + }, + ]; +} + +/** + * Date + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#date-example} + */ +function test2() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + equals: { + path: 'account_created', + value: new Date('2022-05-04T05:01:08.000Z'), + }, + }, + }, + ]; +} + +/** + * Number + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#number-example} + */ +function test3() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { $search: { equals: { path: 'employee_number', value: 259 } } }, + ]; +} + +/** + * String + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#string-example} + */ +function test4() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { $search: { equals: { path: 'name', value: 'jim hall' } } }, + ]; +} + +/** + * UUID + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#uuid-example} + */ +function test5() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + equals: { + path: 'uuid', + value: bson.Binary.createFromBase64('+sMiYLURTGmEhaK+W33ang==', 4), + }, + }, + }, + ]; +} + +/** + * Null + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/#null-example} + */ +function test6() { + type users = { + _id: bson.ObjectId; + name: string; + verified_user: boolean; + account: { + new_user: boolean; + active_user: boolean; + }; + teammates: Array; + region: string; + account_created: Date; + employee_number: number; + uuid: bson.Binary; + job_title: null | string; + }; + + const aggregation: schema.Pipeline = [ + { $search: { equals: { path: 'job_title', value: null } } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/exists.spec.ts b/packages/mql-typescript/tests/search/exists.spec.ts new file mode 100644 index 00000000..8e007bfa --- /dev/null +++ b/packages/mql-typescript/tests/search/exists.spec.ts @@ -0,0 +1,78 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Basic + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/#basic-example} + */ +function test0() { + type TestCollection = { + _id: number; + type: string; + description: string; + quantities: { + lemons: number; + oranges: number; + grapefruit: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { exists: { path: 'type' } } }, + ]; +} + +/** + * Embedded + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/#embedded-example} + */ +function test1() { + type TestCollection = { + _id: number; + type: string; + description: string; + quantities: { + lemons: number; + oranges: number; + grapefruit: number; + }; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $search: { exists: { path: 'quantities.lemons' } } } as any, + ]; +} + +/** + * Compound + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/#compound-example} + */ +function test2() { + type TestCollection = { + _id: number; + type: string; + description: string; + quantities: { + lemons: number; + oranges: number; + grapefruit: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [ + { exists: { path: 'type' } }, + { text: { query: 'apple', path: 'type' } }, + ], + should: { text: { query: 'fuji', path: 'description' } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/search/facet.spec.ts b/packages/mql-typescript/tests/search/facet.spec.ts new file mode 100644 index 00000000..5cf13d3c --- /dev/null +++ b/packages/mql-typescript/tests/search/facet.spec.ts @@ -0,0 +1,97 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Facet + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/#examples} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + facet: { + operator: { + near: { + path: 'released', + origin: new Date('1999-07-01T00:00:00.000Z'), + pivot: 7776000000, + }, + }, + facets: { genresFacet: { type: 'string', path: 'genres' } }, + }, + }, + }, + { $limit: 2 }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this uses $$SEARCH_META, which is a synthetic field not available statically). + */ + { + $facet: { + docs: [{ $project: { title: 1, released: 1 } }], + meta: [{ $replaceWith: '$$SEARCH_META' }, { $limit: 1 }], + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this uses $$SEARCH_META, which is a synthetic field not available statically). + */ + { $set: { meta: { $arrayElemAt: ['$meta', 0] } } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/search/geoShape.spec.ts b/packages/mql-typescript/tests/search/geoShape.spec.ts new file mode 100644 index 00000000..87611403 --- /dev/null +++ b/packages/mql-typescript/tests/search/geoShape.spec.ts @@ -0,0 +1,644 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Disjoint + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/#disjoint-example} + */ +function test0() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + geoShape: { + relation: 'disjoint', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-161.323242, 22.512557], + [-152.446289, 22.065278], + [-156.09375, 17.811456], + [-161.323242, 22.512557], + ], + ], + }, + path: 'address.location', + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + name: 1, + address: 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} + +/** + * Intersect + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/#intersects-example} + */ +function test1() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + geoShape: { + relation: 'intersects', + geometry: { + type: 'MultiPolygon', + coordinates: [ + [ + [ + [2.16942, 41.40082], + [2.17963, 41.40087], + [2.18146, 41.39716], + [2.15533, 41.40686], + [2.14596, 41.38475], + [2.17519, 41.41035], + [2.16942, 41.40082], + ], + ], + [ + [ + [2.16365, 41.39416], + [2.16963, 41.39726], + [2.15395, 41.38005], + [2.17935, 41.43038], + [2.16365, 41.39416], + ], + ], + ], + }, + path: 'address.location', + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + name: 1, + address: 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} + +/** + * Within + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/#within-example} + */ +function test2() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + geoShape: { + relation: 'within', + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-74.3994140625, 40.5305017757], + [-74.7290039063, 40.5805846641], + [-74.7729492188, 40.9467136651], + [-74.0698242188, 41.1290213475], + [-73.65234375, 40.9964840144], + [-72.6416015625, 40.9467136651], + [-72.3559570313, 40.7971774152], + [-74.3994140625, 40.5305017757], + ], + ], + }, + path: 'address.location', + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + name: 1, + address: 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/search/geoWithin.spec.ts b/packages/mql-typescript/tests/search/geoWithin.spec.ts new file mode 100644 index 00000000..a9def04b --- /dev/null +++ b/packages/mql-typescript/tests/search/geoWithin.spec.ts @@ -0,0 +1,588 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * box + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/#box-example} + */ +function test0() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + geoWithin: { + path: 'address.location', + box: { + bottomLeft: { type: 'Point', coordinates: [112.467, -55.05] }, + topRight: { type: 'Point', coordinates: [168, -9.133] }, + }, + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $project: { _id: 0, name: 1, address: 1 } } as any, + ]; +} + +/** + * circle + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/#circle-example} + */ +function test1() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + geoWithin: { + circle: { + center: { type: 'Point', coordinates: [-73.54, 45.54] }, + radius: 1600, + }, + path: 'address.location', + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $project: { _id: 0, name: 1, address: 1 } } as any, + ]; +} + +/** + * geometry + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/#geometry-examples} + */ +function test2() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + geoWithin: { + geometry: { + type: 'Polygon', + coordinates: [ + [ + [-161.323242, 22.512557], + [-152.446289, 22.065278], + [-156.09375, 17.811456], + [-161.323242, 22.512557], + ], + ], + }, + path: 'address.location', + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $project: { _id: 0, name: 1, address: 1 } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/search/in.spec.ts b/packages/mql-typescript/tests/search/in.spec.ts new file mode 100644 index 00000000..9084c4a3 --- /dev/null +++ b/packages/mql-typescript/tests/search/in.spec.ts @@ -0,0 +1,131 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Single Value Field Match + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/#examples} + */ +function test0() { + type customers = { + _id: bson.ObjectId; + username: string; + name: string; + address: string; + birthdate: { + $date: bson.Double | number; + }; + email: string; + accounts: Array; + tier_and_details: { + b5f19cb532fa436a9be2cf1d7d1cac8a: { + tier: string; + benefits: Array; + active: boolean; + id: string; + }; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + in: { + path: 'birthdate', + value: [ + new Date('1977-03-02T02:20:31.000Z'), + new Date('1977-03-01T00:00:00.000Z'), + new Date('1977-05-06T21:57:35.000Z'), + ], + }, + }, + }, + { $project: { _id: 0, name: 1, birthdate: 1 } }, + ]; +} + +/** + * Array Value Field Match + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/#examples} + */ +function test1() { + type customers = { + _id: bson.ObjectId; + username: string; + name: string; + address: string; + birthdate: { + $date: bson.Double | number; + }; + email: string; + accounts: Array; + tier_and_details: { + b5f19cb532fa436a9be2cf1d7d1cac8a: { + tier: string; + benefits: Array; + active: boolean; + id: string; + }; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { in: { path: 'accounts', value: [371138, 371139, 371140] } } }, + { $project: { _id: 0, name: 1, accounts: 1 } }, + ]; +} + +/** + * Compound Query Match + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/#examples} + */ +function test2() { + type customers = { + _id: bson.ObjectId; + username: string; + name: string; + address: string; + birthdate: { + $date: bson.Double | number; + }; + email: string; + accounts: Array; + tier_and_details: { + b5f19cb532fa436a9be2cf1d7d1cac8a: { + tier: string; + benefits: Array; + active: boolean; + id: string; + }; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [ + { + in: { + path: 'name', + value: ['james sanchez', 'jennifer lawrence'], + }, + }, + ], + should: [ + { + in: { + path: '_id', + value: [ + bson.ObjectId.createFromHexString('5ca4bbcea2dd94ee58162a72'), + bson.ObjectId.createFromHexString('5ca4bbcea2dd94ee58162a91'), + ], + }, + }, + ], + }, + }, + }, + { $limit: 5 }, + { $project: { _id: 1, name: 1, score: { $meta: 'searchScore' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/moreLikeThis.spec.ts b/packages/mql-typescript/tests/search/moreLikeThis.spec.ts new file mode 100644 index 00000000..de1404ae --- /dev/null +++ b/packages/mql-typescript/tests/search/moreLikeThis.spec.ts @@ -0,0 +1,266 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Single Document with Multiple Fields + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/morelikethis/#example-1--single-document-with-multiple-fields} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + moreLikeThis: { like: { title: 'The Godfather', genres: 'action' } }, + }, + }, + { $limit: 5 }, + { $project: { _id: 0, title: 1, released: 1, genres: 1 } }, + ]; +} + +/** + * Input Document Excluded in Results + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/morelikethis/#example-2--input-document-excluded-in-results} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + must: [ + { + moreLikeThis: { + like: { + _id: bson.ObjectId.createFromHexString( + '573a1396f29313caabce4a9a', + ), + genres: ['Crime', 'Drama'], + title: 'The Godfather', + }, + }, + }, + ], + mustNot: [ + { + equals: { + path: '_id', + value: bson.ObjectId.createFromHexString( + '573a1396f29313caabce4a9a', + ), + }, + }, + ], + }, + }, + }, + { $limit: 5 }, + { $project: { _id: 1, title: 1, released: 1, genres: 1 } }, + ]; +} + +/** + * Multiple Analyzers + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/morelikethis/#example-3--multiple-analyzers} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + compound: { + should: [ + { + moreLikeThis: { + like: { + _id: bson.ObjectId.createFromHexString( + '573a1396f29313caabce4a9a', + ), + genres: ['Crime', 'Drama'], + title: 'The Godfather', + }, + }, + }, + ], + mustNot: [ + { + equals: { + path: '_id', + value: bson.ObjectId.createFromHexString( + '573a1394f29313caabcde9ef', + ), + }, + }, + ], + }, + }, + }, + { $limit: 10 }, + { $project: { title: 1, genres: 1, _id: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/near.spec.ts b/packages/mql-typescript/tests/search/near.spec.ts new file mode 100644 index 00000000..16bcc975 --- /dev/null +++ b/packages/mql-typescript/tests/search/near.spec.ts @@ -0,0 +1,567 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Number + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/#number-example} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + index: 'runtimes', + near: { path: 'runtime', origin: 279, pivot: 2 }, + }, + }, + { $limit: 7 }, + { + $project: { + _id: 0, + title: 1, + runtime: 1, + score: { $meta: 'searchScore' }, + }, + }, + ]; +} + +/** + * Date + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/#date-example} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + index: 'releaseddate', + near: { + path: 'released', + origin: new Date('1915-09-13T00:00:00.000Z'), + pivot: 7776000000, + }, + }, + }, + { $limit: 3 }, + { + $project: { + _id: 0, + title: 1, + released: 1, + score: { $meta: 'searchScore' }, + }, + }, + ]; +} + +/** + * GeoJSON Point + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/#geojson-point-examples} + */ +function test2() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + near: { + origin: { type: 'Point', coordinates: [-8.61308, 41.1413] }, + pivot: 1000, + path: 'address.location', + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + name: 1, + address: 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} + +/** + * Compound + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/#compound-example} + */ +function test3() { + type listingsAndReviews = { + _id: string; + listing_url: string; + name: string; + summary: string; + interaction: string; + house_rules: string; + property_type: string; + room_type: string; + bed_type: string; + minimum_nights: string; + maximum_nights: string; + cancellation_policy: string; + last_scraped: { + $date: { + $numberLong: string; + }; + }; + calendar_last_scraped: { + $date: { + $numberLong: string; + }; + }; + first_review: { + $date: { + $numberLong: string; + }; + }; + last_review: { + $date: { + $numberLong: string; + }; + }; + accommodates: { + $numberInt: string; + }; + bedrooms: { + $numberInt: string; + }; + beds: { + $numberInt: string; + }; + number_of_reviews: { + $numberInt: string; + }; + bathrooms: { + $numberDecimal: string; + }; + amenities: Array; + price: { + $numberDecimal: string; + }; + security_deposit: { + $numberDecimal: string; + }; + cleaning_fee: { + $numberDecimal: string; + }; + extra_people: { + $numberDecimal: string; + }; + guests_included: { + $numberDecimal: string; + }; + images: { + thumbnail_url: string; + medium_url: string; + picture_url: string; + xl_picture_url: string; + }; + host: { + host_id: string; + host_url: string; + host_name: string; + host_location: string; + host_about: string; + host_response_time: string; + host_thumbnail_url: string; + host_picture_url: string; + host_neighbourhood: string; + host_response_rate: { + $numberInt: string; + }; + host_is_superhost: boolean; + host_has_profile_pic: boolean; + host_identity_verified: boolean; + host_listings_count: { + $numberInt: string; + }; + host_total_listings_count: { + $numberInt: string; + }; + host_verifications: Array; + }; + address: { + street: string; + suburb: string; + government_area: string; + market: string; + country: string; + country_code: string; + location: { + type: string; + coordinates: Array<{ + $numberDouble: string; + }>; + is_location_exact: boolean; + }; + }; + availability: { + availability_30: { + $numberInt: string; + }; + availability_60: { + $numberInt: string; + }; + availability_90: { + $numberInt: string; + }; + availability_365: { + $numberInt: string; + }; + }; + review_scores: { + review_scores_accuracy: { + $numberInt: string; + }; + review_scores_cleanliness: { + $numberInt: string; + }; + review_scores_checkin: { + $numberInt: string; + }; + review_scores_communication: { + $numberInt: string; + }; + review_scores_location: { + $numberInt: string; + }; + review_scores_value: { + $numberInt: string; + }; + review_scores_rating: { + $numberInt: string; + }; + }; + reviews: Array<{ + _id: string; + date: { + $date: { + $numberLong: string; + }; + }; + listing_id: string; + reviewer_id: string; + reviewer_name: string; + comments: string; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + compound: { + must: { text: { query: 'Apartment', path: 'property_type' } }, + should: { + near: { + origin: { type: 'Point', coordinates: [114.15027, 22.28158] }, + pivot: 1000, + path: 'address.location', + }, + }, + }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 3 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $project: { + _id: 0, + property_type: 1, + address: 1, + score: { $meta: 'searchScore' }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/search/phrase.spec.ts b/packages/mql-typescript/tests/search/phrase.spec.ts new file mode 100644 index 00000000..a2c1de6d --- /dev/null +++ b/packages/mql-typescript/tests/search/phrase.spec.ts @@ -0,0 +1,284 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Single Phrase + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/#single-phrase-example} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { phrase: { path: 'title', query: 'new york' } } }, + { $limit: 10 }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Multiple Phrase + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/#multiple-phrases-example} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { phrase: { path: 'title', query: ['the man', 'the moon'] } } }, + { $limit: 10 }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Phrase Slop + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/#slop-example} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { phrase: { path: 'title', query: 'men women', slop: 5 } } }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Phrase Synonyms + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/#synonyms-example} + */ +function test3() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + phrase: { + path: 'plot', + query: 'automobile race', + slop: 5, + synonyms: 'my_synonyms', + }, + }, + }, + { $limit: 5 }, + { + $project: { _id: 0, plot: 1, title: 1, score: { $meta: 'searchScore' } }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/search/queryString.spec.ts b/packages/mql-typescript/tests/search/queryString.spec.ts new file mode 100644 index 00000000..6f94702e --- /dev/null +++ b/packages/mql-typescript/tests/search/queryString.spec.ts @@ -0,0 +1,76 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Boolean Operator Queries + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/#boolean-operator-queries} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + queryString: { + defaultPath: 'title', + query: 'Rocky AND (IV OR 4 OR Four)', + }, + }, + }, + { $project: { _id: 0, title: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/range.spec.ts b/packages/mql-typescript/tests/search/range.spec.ts new file mode 100644 index 00000000..9d249219 --- /dev/null +++ b/packages/mql-typescript/tests/search/range.spec.ts @@ -0,0 +1,364 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Number gte lte + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/#number-example} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { range: { path: 'runtime', gte: 2, lte: 3 } } }, + { $limit: 5 }, + { $project: { _id: 0, title: 1, runtime: 1 } }, + ]; +} + +/** + * Number lte + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/#number-example} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { range: { path: 'runtime', lte: 2 } } }, + { $limit: 5 }, + { + $project: { + _id: 0, + title: 1, + runtime: 1, + score: { $meta: 'searchScore' }, + }, + }, + ]; +} + +/** + * Date + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/#date-example} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + range: { + path: 'released', + gt: new Date('2010-01-01T00:00:00.000Z'), + lt: new Date('2015-01-01T00:00:00.000Z'), + }, + }, + }, + { $limit: 5 }, + { $project: { _id: 0, title: 1, released: 1 } }, + ]; +} + +/** + * ObjectId + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/#objectid-example} + */ +function test3() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + range: { + path: '_id', + gte: bson.ObjectId.createFromHexString('573a1396f29313caabce4a9a'), + lte: bson.ObjectId.createFromHexString('573a1396f29313caabce4ae7'), + }, + }, + }, + { $project: { _id: 1, title: 1, released: 1 } }, + ]; +} + +/** + * String + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/#string-example} + */ +function test4() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { range: { path: 'title', gt: 'city', lt: 'country' } } }, + { $limit: 5 }, + { $project: { _id: 0, title: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/regex.spec.ts b/packages/mql-typescript/tests/search/regex.spec.ts new file mode 100644 index 00000000..df6f7216 --- /dev/null +++ b/packages/mql-typescript/tests/search/regex.spec.ts @@ -0,0 +1,69 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Regex + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/#examples} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { regex: { path: 'title', query: '[0-9]{2} (.){4}s' } } }, + { $project: { _id: 0, title: 1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/text.spec.ts b/packages/mql-typescript/tests/search/text.spec.ts new file mode 100644 index 00000000..63d74fad --- /dev/null +++ b/packages/mql-typescript/tests/search/text.spec.ts @@ -0,0 +1,593 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Basic + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#basic-example} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { text: { path: 'title', query: 'surfer' } } }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Fuzzy Default + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#fuzzy-examples} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { text: { path: 'title', query: 'naw yark', fuzzy: {} } } }, + { $limit: 10 }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Fuzzy maxExpansions + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#fuzzy-examples} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { + path: 'title', + query: 'naw yark', + fuzzy: { maxEdits: 1, maxExpansions: 100 }, + }, + }, + }, + { $limit: 10 }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Fuzzy prefixLength + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#fuzzy-examples} + */ +function test3() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { + path: 'title', + query: 'naw yark', + fuzzy: { maxEdits: 1, prefixLength: 2 }, + }, + }, + }, + { $limit: 8 }, + { $project: { _id: 1, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Match any Using equivalent Mapping + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#match-any-using-equivalent-mapping} + */ +function test4() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { + path: 'plot', + query: 'attire', + synonyms: 'my_synonyms', + matchCriteria: 'any', + }, + }, + }, + { $limit: 5 }, + { + $project: { _id: 0, plot: 1, title: 1, score: { $meta: 'searchScore' } }, + }, + ]; +} + +/** + * Match any Using explicit Mapping + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#match-any-using-explicit-mapping} + */ +function test5() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { + path: 'plot', + query: 'boat race', + synonyms: 'my_synonyms', + matchCriteria: 'any', + }, + }, + }, + { $limit: 10 }, + { + $project: { _id: 0, plot: 1, title: 1, score: { $meta: 'searchScore' } }, + }, + ]; +} + +/** + * Match all Using Synonyms + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/#match-all-using-synonyms} + */ +function test6() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { + path: 'plot', + query: 'automobile race', + matchCriteria: 'all', + synonyms: 'my_synonyms', + }, + }, + }, + { $limit: 20 }, + { + $project: { _id: 0, plot: 1, title: 1, score: { $meta: 'searchScore' } }, + }, + ]; +} + +/** + * Wildcard Path + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/} + */ +function test7() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { text: { path: { wildcard: '*' }, query: 'surfer' } } }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/search/wildcard.spec.ts b/packages/mql-typescript/tests/search/wildcard.spec.ts new file mode 100644 index 00000000..54a86570 --- /dev/null +++ b/packages/mql-typescript/tests/search/wildcard.spec.ts @@ -0,0 +1,138 @@ +import * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Wildcard Path + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/#index-definition} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { wildcard: { query: 'Wom?n *', path: { wildcard: '*' } } } }, + { $limit: 5 }, + { $project: { _id: 0, title: 1 } }, + ]; +} + +/** + * Escape Character Example + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/#escape-character-example} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $search: { wildcard: { query: '*\\?', path: 'title' } } }, + { $limit: 5 }, + { $project: { _id: 0, title: 1 } }, + ]; +} From 9859784a6c0128fb1c0061bdcb12d7edd0165060 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 4 Jun 2025 10:06:38 +0200 Subject: [PATCH 12/26] remove manually spawning yamlfix --- packages/mql-typescript/package.json | 2 +- .../src/driverSchema/driverSchemaGenerator.ts | 16 ---------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index cac7aae5..cce9a2a6 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -51,7 +51,7 @@ "pregenerate-tests": "npm run extract-metaschema", "generate-tests": "ts-node src/cli.ts tests && npm run prettier -- --write tests/**/*.ts", "pregenerate-driver-schema": "npm run extract-metaschema", - "generate-driver-schema": "ts-node src/cli.ts driver-schema" + "generate-driver-schema": "ts-node src/cli.ts driver-schema && yamlfix -c mongo-php-library/generator/config/.yamlfix.toml mongo-php-library/generator/config" }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", diff --git a/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts b/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts index 6076a702..78f9f493 100644 --- a/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts +++ b/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts @@ -87,21 +87,5 @@ export class DriverSchemaGenerator extends GeneratorBase { await fs.writeFile(operator.path, updatedYaml, 'utf8'); } } - - const process = spawn('yamlfix', [ - '-c', - path.join(this.configDir, '.yamlfix.toml'), - this.configDir, - ]); - - await new Promise((resolve, reject) => { - process.once('exit', (code) => { - if (code !== 0) { - reject(new Error(`yamlfix exited with code ${code}`)); - } else { - resolve(undefined); - } - }); - }); } } From 39324066aaf73139398bad8789b4dd54e25f8307 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 4 Jun 2025 11:23:59 +0200 Subject: [PATCH 13/26] add schemas for first/last --- packages/mql-typescript/mongo-php-library | 2 +- .../src/driverSchema/staticSchemas.ts | 16 ++++++++++++++++ packages/mql-typescript/src/schemaGenerator.ts | 7 ++----- .../src/testGenerator/testGenerator.ts | 13 +++---------- .../tests/expression/first.spec.ts | 8 +++++++- .../mql-typescript/tests/expression/last.spec.ts | 8 +++++++- 6 files changed, 36 insertions(+), 18 deletions(-) diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index b9b1d19f..c2b1ee52 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit b9b1d19f73fb8df972051136af80f0b61a87cee8 +Subproject commit c2b1ee5233ee16d07a1541b381184bfcdfae9cf2 diff --git a/packages/mql-typescript/src/driverSchema/staticSchemas.ts b/packages/mql-typescript/src/driverSchema/staticSchemas.ts index 10ceb0f9..76884bae 100644 --- a/packages/mql-typescript/src/driverSchema/staticSchemas.ts +++ b/packages/mql-typescript/src/driverSchema/staticSchemas.ts @@ -1468,6 +1468,22 @@ const staticSchemas: SchemaMap = { }, }, }, + first: { + collectionName: 'collection', + schema: { + items: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, + }, + }, + last: { + collectionName: 'collection', + schema: { + items: { + types: [{ bsonType: 'Array', types: [{ bsonType: 'String' }] }], + }, + }, + }, }, query: { and: inventorySchema, diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schemaGenerator.ts index 5a2c6789..0ab9dd02 100644 --- a/packages/mql-typescript/src/schemaGenerator.ts +++ b/packages/mql-typescript/src/schemaGenerator.ts @@ -464,6 +464,7 @@ export class SchemaGenerator extends GeneratorBase { mergedArgs.push(arg); continue; } + if (arg.description) { this.emitComment(arg.description); } @@ -555,11 +556,7 @@ export class SchemaGenerator extends GeneratorBase { this.emit( `\nexport type ${this.toTypeName(name)}${ isTemplated ? '' : '' - } = |` + - [...new Set(interfaces)] - .map((i) => `(${i}${i.endsWith('_S') ? '' : ''})`) - .join('|') + - ';', + } = ${[...new Set(interfaces)].join('|')};`, ); } } diff --git a/packages/mql-typescript/src/testGenerator/testGenerator.ts b/packages/mql-typescript/src/testGenerator/testGenerator.ts index e96a0c3e..7b8bcefb 100644 --- a/packages/mql-typescript/src/testGenerator/testGenerator.ts +++ b/packages/mql-typescript/src/testGenerator/testGenerator.ts @@ -131,13 +131,6 @@ export class TestGenerator extends GeneratorBase { operator: string, test: TestType, ): Promise { - if (!test.link) { - this.emit( - `// TODO: No docs reference found for ${operator}.${test.name}\n`, - ); - return; - } - if (!test.pipeline) { this.emit(`// TODO: No pipeline found for ${operator}.${test.name}\n`); return; @@ -189,9 +182,9 @@ export class TestGenerator extends GeneratorBase { protected override async generateImpl(yamlFiles: YamlFiles): Promise { for await (const file of yamlFiles) { if ( - // file.category !== 'query' && - // file.category !== 'expression' && - // file.category !== 'accumulator' && + file.category !== 'query' && + file.category !== 'expression' && + file.category !== 'accumulator' && file.category !== 'search' ) { // TODO: enable for others diff --git a/packages/mql-typescript/tests/expression/first.spec.ts b/packages/mql-typescript/tests/expression/first.spec.ts index b184ce2a..e41efc43 100644 --- a/packages/mql-typescript/tests/expression/first.spec.ts +++ b/packages/mql-typescript/tests/expression/first.spec.ts @@ -5,5 +5,11 @@ import * as bson from 'bson'; * Use in $addFields Stage */ function test0() { - // TODO: No docs reference found for first.Use in $addFields Stage + type collection = { + items: Array; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { firstItem: { $first: '$items' } } }, + ]; } diff --git a/packages/mql-typescript/tests/expression/last.spec.ts b/packages/mql-typescript/tests/expression/last.spec.ts index f58959de..c3e478c7 100644 --- a/packages/mql-typescript/tests/expression/last.spec.ts +++ b/packages/mql-typescript/tests/expression/last.spec.ts @@ -5,5 +5,11 @@ import * as bson from 'bson'; * Use in $addFields Stage */ function test0() { - // TODO: No docs reference found for last.Use in $addFields Stage + type collection = { + items: Array; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { lastItem: { $last: '$items' } } }, + ]; } From ee3e0cd254046952605de95861e5f74be201ac4b Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Fri, 6 Jun 2025 11:32:35 +0200 Subject: [PATCH 14/26] add .gitattributes for generated files --- packages/mql-typescript/.gitattributes | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 packages/mql-typescript/.gitattributes diff --git a/packages/mql-typescript/.gitattributes b/packages/mql-typescript/.gitattributes new file mode 100644 index 00000000..9d89191d --- /dev/null +++ b/packages/mql-typescript/.gitattributes @@ -0,0 +1,2 @@ +tests/**/*.spec.ts linguist-generated=true +src/metaschema.ts linguist-generated=true From bf69c54f8875e15878a88b73c1de7512bef82b0e Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 9 Jun 2025 14:04:56 +0200 Subject: [PATCH 15/26] fix: resolve eslint issues --- package-lock.json | 1151 +++++++++++------ packages/device-id/package.json | 2 +- packages/devtools-connect/package.json | 2 +- packages/devtools-proxy-support/package.json | 2 +- packages/dl-center/package.json | 2 +- packages/download-url/package.json | 2 +- packages/get-os-info/package.json | 2 +- packages/mongodb-cloud-info/package.json | 2 +- packages/mongodb-downloader/package.json | 2 +- packages/mongodb-runner/package.json | 2 +- packages/mongodb-ts-autocomplete/package.json | 2 +- packages/monorepo-tools/package.json | 2 +- packages/mql-typescript/.eslintrc.js | 3 + packages/mql-typescript/out/schema.ts | 7 +- packages/mql-typescript/package.json | 2 +- packages/mql-typescript/src/cli.ts | 8 +- .../{docsCrawler.ts => docs-crawler.ts} | 35 +- ...enerator.ts => driver-schema-generator.ts} | 30 +- .../{staticSchemas.ts => static-schemas.ts} | 3 +- packages/mql-typescript/src/generator.ts | 14 +- packages/mql-typescript/src/index.ts | 4 +- packages/mql-typescript/src/metaschema.ts | 4 +- ...schemaGenerator.ts => schema-generator.ts} | 68 +- .../{testGenerator.ts => test-generator.ts} | 40 +- ...gations.ts => unsupported-aggregations.ts} | 0 packages/mql-typescript/src/utils.ts | 2 +- .../tests/accumulator/accumulator.spec.ts | 5 +- .../tests/accumulator/addToSet.spec.ts | 5 +- .../tests/accumulator/avg.spec.ts | 5 +- .../tests/accumulator/bottom.spec.ts | 5 +- .../tests/accumulator/bottomN.spec.ts | 5 +- .../tests/accumulator/count.spec.ts | 5 +- .../tests/accumulator/covariancePop.spec.ts | 5 +- .../tests/accumulator/covarianceSamp.spec.ts | 5 +- .../tests/accumulator/denseRank.spec.ts | 5 +- .../tests/accumulator/derivative.spec.ts | 5 +- .../tests/accumulator/documentNumber.spec.ts | 5 +- .../tests/accumulator/expMovingAvg.spec.ts | 5 +- .../tests/accumulator/first.spec.ts | 5 +- .../tests/accumulator/firstN.spec.ts | 5 +- .../tests/accumulator/integral.spec.ts | 5 +- .../tests/accumulator/last.spec.ts | 5 +- .../tests/accumulator/lastN.spec.ts | 5 +- .../tests/accumulator/linearFill.spec.ts | 5 +- .../tests/accumulator/locf.spec.ts | 5 +- .../tests/accumulator/max.spec.ts | 5 +- .../tests/accumulator/maxN.spec.ts | 5 +- .../tests/accumulator/median.spec.ts | 5 +- .../tests/accumulator/mergeObjects.spec.ts | 5 +- .../tests/accumulator/min.spec.ts | 5 +- .../tests/accumulator/minN.spec.ts | 5 +- .../tests/accumulator/percentile.spec.ts | 5 +- .../tests/accumulator/push.spec.ts | 5 +- .../tests/accumulator/rank.spec.ts | 5 +- .../tests/accumulator/shift.spec.ts | 5 +- .../tests/accumulator/stdDevPop.spec.ts | 5 +- .../tests/accumulator/stdDevSamp.spec.ts | 5 +- .../tests/accumulator/sum.spec.ts | 5 +- .../tests/accumulator/top.spec.ts | 5 +- .../tests/accumulator/topN.spec.ts | 5 +- .../tests/expression/abs.spec.ts | 5 +- .../tests/expression/acos.spec.ts | 5 +- .../tests/expression/acosh.spec.ts | 5 +- .../tests/expression/add.spec.ts | 5 +- .../tests/expression/allElementsTrue.spec.ts | 5 +- .../tests/expression/and.spec.ts | 5 +- .../tests/expression/anyElementTrue.spec.ts | 5 +- .../tests/expression/arrayElemAt.spec.ts | 5 +- .../tests/expression/arrayToObject.spec.ts | 5 +- .../tests/expression/asin.spec.ts | 5 +- .../tests/expression/asinh.spec.ts | 5 +- .../tests/expression/atan.spec.ts | 5 +- .../tests/expression/atan2.spec.ts | 5 +- .../tests/expression/atanh.spec.ts | 5 +- .../tests/expression/avg.spec.ts | 5 +- .../tests/expression/binarySize.spec.ts | 5 +- .../tests/expression/bitAnd.spec.ts | 5 +- .../tests/expression/bitNot.spec.ts | 5 +- .../tests/expression/bitOr.spec.ts | 5 +- .../tests/expression/bitXor.spec.ts | 5 +- .../tests/expression/bsonSize.spec.ts | 5 +- .../tests/expression/case.spec.ts | 5 +- .../tests/expression/ceil.spec.ts | 5 +- .../tests/expression/cmp.spec.ts | 5 +- .../tests/expression/concat.spec.ts | 5 +- .../tests/expression/concatArrays.spec.ts | 5 +- .../tests/expression/cond.spec.ts | 5 +- .../tests/expression/convert.spec.ts | 5 +- .../tests/expression/cos.spec.ts | 5 +- .../tests/expression/cosh.spec.ts | 5 +- .../tests/expression/dateAdd.spec.ts | 5 +- .../tests/expression/dateDiff.spec.ts | 5 +- .../tests/expression/dateFromParts.spec.ts | 5 +- .../tests/expression/dateFromString.spec.ts | 7 +- .../tests/expression/dateSubtract.spec.ts | 5 +- .../tests/expression/dateToParts.spec.ts | 5 +- .../tests/expression/dateToString.spec.ts | 5 +- .../tests/expression/dateTrunc.spec.ts | 5 +- .../tests/expression/dayOfMonth.spec.ts | 5 +- .../tests/expression/dayOfWeek.spec.ts | 5 +- .../tests/expression/dayOfYear.spec.ts | 5 +- .../tests/expression/degreesToRadians.spec.ts | 5 +- .../tests/expression/divide.spec.ts | 5 +- .../tests/expression/eq.spec.ts | 5 +- .../tests/expression/exp.spec.ts | 5 +- .../tests/expression/filter.spec.ts | 5 +- .../tests/expression/first.spec.ts | 5 +- .../tests/expression/firstN.spec.ts | 5 +- .../tests/expression/floor.spec.ts | 5 +- .../tests/expression/function.spec.ts | 5 +- .../tests/expression/getField.spec.ts | 5 +- .../tests/expression/gt.spec.ts | 5 +- .../tests/expression/gte.spec.ts | 5 +- .../tests/expression/hour.spec.ts | 5 +- .../tests/expression/ifNull.spec.ts | 5 +- .../tests/expression/in.spec.ts | 5 +- .../tests/expression/indexOfArray.spec.ts | 5 +- .../tests/expression/indexOfBytes.spec.ts | 5 +- .../tests/expression/indexOfCP.spec.ts | 5 +- .../tests/expression/isArray.spec.ts | 5 +- .../tests/expression/isNumber.spec.ts | 5 +- .../tests/expression/isoDayOfWeek.spec.ts | 5 +- .../tests/expression/isoWeek.spec.ts | 5 +- .../tests/expression/isoWeekYear.spec.ts | 5 +- .../tests/expression/last.spec.ts | 5 +- .../tests/expression/lastN.spec.ts | 5 +- .../tests/expression/let.spec.ts | 5 +- .../tests/expression/literal.spec.ts | 5 +- .../tests/expression/ln.spec.ts | 5 +- .../tests/expression/log.spec.ts | 5 +- .../tests/expression/log10.spec.ts | 5 +- .../tests/expression/lt.spec.ts | 5 +- .../tests/expression/lte.spec.ts | 5 +- .../tests/expression/ltrim.spec.ts | 5 +- .../tests/expression/map.spec.ts | 5 +- .../tests/expression/max.spec.ts | 5 +- .../tests/expression/maxN.spec.ts | 5 +- .../tests/expression/median.spec.ts | 5 +- .../tests/expression/mergeObjects.spec.ts | 5 +- .../tests/expression/meta.spec.ts | 5 +- .../tests/expression/millisecond.spec.ts | 5 +- .../tests/expression/min.spec.ts | 5 +- .../tests/expression/minN.spec.ts | 5 +- .../tests/expression/minute.spec.ts | 5 +- .../tests/expression/mod.spec.ts | 5 +- .../tests/expression/month.spec.ts | 5 +- .../tests/expression/multiply.spec.ts | 5 +- .../tests/expression/ne.spec.ts | 5 +- .../tests/expression/not.spec.ts | 5 +- .../tests/expression/objectToArray.spec.ts | 5 +- .../tests/expression/or.spec.ts | 5 +- .../tests/expression/percentile.spec.ts | 5 +- .../tests/expression/pow.spec.ts | 5 +- .../tests/expression/radiansToDegrees.spec.ts | 5 +- .../tests/expression/rand.spec.ts | 5 +- .../tests/expression/range.spec.ts | 5 +- .../tests/expression/reduce.spec.ts | 5 +- .../tests/expression/regexFind.spec.ts | 5 +- .../tests/expression/regexFindAll.spec.ts | 5 +- .../tests/expression/regexMatch.spec.ts | 5 +- .../tests/expression/replaceAll.spec.ts | 5 +- .../tests/expression/replaceOne.spec.ts | 5 +- .../tests/expression/reverseArray.spec.ts | 5 +- .../tests/expression/round.spec.ts | 5 +- .../tests/expression/rtrim.spec.ts | 5 +- .../tests/expression/second.spec.ts | 5 +- .../tests/expression/setDifference.spec.ts | 5 +- .../tests/expression/setEquals.spec.ts | 5 +- .../tests/expression/setField.spec.ts | 5 +- .../tests/expression/setIntersection.spec.ts | 5 +- .../tests/expression/setIsSubset.spec.ts | 5 +- .../tests/expression/setUnion.spec.ts | 5 +- .../tests/expression/sin.spec.ts | 5 +- .../tests/expression/sinh.spec.ts | 5 +- .../tests/expression/size.spec.ts | 5 +- .../tests/expression/slice.spec.ts | 5 +- .../tests/expression/sortArray.spec.ts | 5 +- .../tests/expression/split.spec.ts | 5 +- .../tests/expression/sqrt.spec.ts | 5 +- .../tests/expression/stdDevPop.spec.ts | 5 +- .../tests/expression/stdDevSamp.spec.ts | 5 +- .../tests/expression/strLenBytes.spec.ts | 5 +- .../tests/expression/strLenCP.spec.ts | 5 +- .../tests/expression/strcasecmp.spec.ts | 5 +- .../tests/expression/substr.spec.ts | 5 +- .../tests/expression/substrBytes.spec.ts | 5 +- .../tests/expression/substrCP.spec.ts | 5 +- .../tests/expression/subtract.spec.ts | 5 +- .../tests/expression/sum.spec.ts | 5 +- .../tests/expression/switch.spec.ts | 5 +- .../tests/expression/tan.spec.ts | 5 +- .../tests/expression/tanh.spec.ts | 5 +- .../tests/expression/toBool.spec.ts | 5 +- .../tests/expression/toDate.spec.ts | 5 +- .../tests/expression/toDecimal.spec.ts | 5 +- .../tests/expression/toDouble.spec.ts | 5 +- .../tests/expression/toHashedIndexKey.spec.ts | 5 +- .../tests/expression/toInt.spec.ts | 5 +- .../tests/expression/toLong.spec.ts | 5 +- .../tests/expression/toLower.spec.ts | 5 +- .../tests/expression/toObjectId.spec.ts | 5 +- .../tests/expression/toString.spec.ts | 5 +- .../tests/expression/toUpper.spec.ts | 5 +- .../tests/expression/trim.spec.ts | 5 +- .../tests/expression/trunc.spec.ts | 5 +- .../tests/expression/tsIncrement.spec.ts | 5 +- .../tests/expression/tsSecond.spec.ts | 5 +- .../tests/expression/type.spec.ts | 5 +- .../tests/expression/unsetField.spec.ts | 5 +- .../tests/expression/week.spec.ts | 5 +- .../tests/expression/year.spec.ts | 5 +- .../tests/expression/zip.spec.ts | 5 +- .../mql-typescript/tests/query/all.spec.ts | 5 +- .../mql-typescript/tests/query/and.spec.ts | 5 +- .../tests/query/bitsAllClear.spec.ts | 5 +- .../tests/query/bitsAllSet.spec.ts | 5 +- .../tests/query/bitsAnyClear.spec.ts | 5 +- .../tests/query/bitsAnySet.spec.ts | 5 +- .../mql-typescript/tests/query/box.spec.ts | 5 +- .../mql-typescript/tests/query/center.spec.ts | 5 +- .../tests/query/centerSphere.spec.ts | 5 +- .../tests/query/elemMatch.spec.ts | 5 +- .../mql-typescript/tests/query/eq.spec.ts | 5 +- .../mql-typescript/tests/query/exists.spec.ts | 5 +- .../mql-typescript/tests/query/expr.spec.ts | 5 +- .../tests/query/geoIntersects.spec.ts | 5 +- .../tests/query/geoWithin.spec.ts | 5 +- .../tests/query/geometry.spec.ts | 5 +- .../mql-typescript/tests/query/gt.spec.ts | 5 +- .../mql-typescript/tests/query/gte.spec.ts | 5 +- .../mql-typescript/tests/query/in.spec.ts | 5 +- .../tests/query/jsonSchema.spec.ts | 5 +- .../mql-typescript/tests/query/lt.spec.ts | 5 +- .../mql-typescript/tests/query/lte.spec.ts | 5 +- .../tests/query/maxDistance.spec.ts | 5 +- .../tests/query/minDistance.spec.ts | 5 +- .../mql-typescript/tests/query/mod.spec.ts | 5 +- .../mql-typescript/tests/query/ne.spec.ts | 5 +- .../mql-typescript/tests/query/near.spec.ts | 5 +- .../tests/query/nearSphere.spec.ts | 5 +- .../mql-typescript/tests/query/nin.spec.ts | 5 +- .../mql-typescript/tests/query/nor.spec.ts | 5 +- .../mql-typescript/tests/query/not.spec.ts | 5 +- .../mql-typescript/tests/query/or.spec.ts | 5 +- .../tests/query/polygon.spec.ts | 5 +- .../mql-typescript/tests/query/rand.spec.ts | 5 +- .../mql-typescript/tests/query/regex.spec.ts | 5 +- .../tests/query/sampleRate.spec.ts | 5 +- .../mql-typescript/tests/query/size.spec.ts | 5 +- .../mql-typescript/tests/query/text.spec.ts | 5 +- .../mql-typescript/tests/query/type.spec.ts | 5 +- .../mql-typescript/tests/query/where.spec.ts | 5 +- .../tests/search/autocomplete.spec.ts | 5 +- .../tests/search/compound.spec.ts | 5 +- .../tests/search/embeddedDocument.spec.ts | 5 +- .../tests/search/equals.spec.ts | 5 +- .../tests/search/exists.spec.ts | 5 +- .../mql-typescript/tests/search/facet.spec.ts | 5 +- .../tests/search/geoShape.spec.ts | 5 +- .../tests/search/geoWithin.spec.ts | 5 +- .../mql-typescript/tests/search/in.spec.ts | 5 +- .../tests/search/moreLikeThis.spec.ts | 5 +- .../mql-typescript/tests/search/near.spec.ts | 5 +- .../tests/search/phrase.spec.ts | 5 +- .../tests/search/queryString.spec.ts | 5 +- .../mql-typescript/tests/search/range.spec.ts | 5 +- .../mql-typescript/tests/search/regex.spec.ts | 5 +- .../mql-typescript/tests/search/text.spec.ts | 5 +- .../tests/search/wildcard.spec.ts | 5 +- packages/native-machine-id/package.json | 2 +- .../package.json | 2 +- packages/oidc-mock-provider/package.json | 2 +- packages/query-parser/package.json | 2 +- packages/saslprep/package.json | 2 +- packages/sbom-tools/package.json | 2 +- packages/signing-utils/package.json | 2 +- 276 files changed, 1894 insertions(+), 730 deletions(-) rename packages/mql-typescript/src/driverSchema/{docsCrawler.ts => docs-crawler.ts} (92%) rename packages/mql-typescript/src/driverSchema/{driverSchemaGenerator.ts => driver-schema-generator.ts} (76%) rename packages/mql-typescript/src/driverSchema/{staticSchemas.ts => static-schemas.ts} (99%) rename packages/mql-typescript/src/{schemaGenerator.ts => schema-generator.ts} (91%) rename packages/mql-typescript/src/testGenerator/{testGenerator.ts => test-generator.ts} (86%) rename packages/mql-typescript/src/testGenerator/{unsupportedAggregations.ts => unsupported-aggregations.ts} (100%) diff --git a/package-lock.json b/package-lock.json index 9a5b7c4e..87659f9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3175,10 +3175,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "license": "MIT", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } @@ -8140,6 +8139,19 @@ "semver": "bin/semver.js" } }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -8726,6 +8738,16 @@ "@octokit/openapi-types": "^18.0.0" } }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, "node_modules/@parcel/watcher": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", @@ -9018,11 +9040,10 @@ } }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", - "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", - "dev": true, - "license": "(Unlicense OR Apache-2.0)" + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", + "dev": true }, "node_modules/@smithy/abort-controller": { "version": "4.0.4", @@ -10162,11 +10183,10 @@ } }, "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "license": "MIT" + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", + "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", + "dev": true }, "node_modules/@types/cross-spawn": { "version": "6.0.6", @@ -10517,11 +10537,10 @@ } }, "node_modules/@types/sinon-chai": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", - "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", + "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", "dev": true, - "license": "MIT", "dependencies": { "@types/chai": "*", "@types/sinon": "*" @@ -13503,23 +13522,20 @@ } }, "node_modules/cssstyle": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", - "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", - "license": "MIT", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dependencies": { - "@asamuzakjp/css-color": "^3.1.1", - "rrweb-cssom": "^0.8.0" + "rrweb-cssom": "^0.6.0" }, "engines": { "node": ">=18" } }, "node_modules/cssstyle/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "license": "MIT" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" }, "node_modules/csstype": { "version": "3.1.3", @@ -16514,11 +16530,10 @@ } }, "node_modules/flatted": { - "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" + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", + "dev": true }, "node_modules/fn.name": { "version": "1.1.0", @@ -16630,14 +16645,14 @@ } }, "node_modules/formidable": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", - "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz", + "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==", "dev": true, "license": "MIT", "dependencies": { + "@paralleldrive/cuid2": "^2.2.2", "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", "once": "^1.4.0", "qs": "^6.11.0" }, @@ -17925,16 +17940,6 @@ "node": ">=10.0.0" } }, - "node_modules/hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/highlight.js": { "version": "11.5.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.1.tgz", @@ -19665,9 +19670,9 @@ } }, "node_modules/json-schema-to-zod": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/json-schema-to-zod/-/json-schema-to-zod-2.6.0.tgz", - "integrity": "sha512-6sFZqOzHZeON8g2ZW5HJ114Hb/FffNCjWh8dgulJaKFkUqKCEWZAzF4+g07SQpfBZF7HXemwedtdLypZzmnVpQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/json-schema-to-zod/-/json-schema-to-zod-2.6.1.tgz", + "integrity": "sha512-uiHmWH21h9FjKJkRBntfVGTLpYlCZ1n98D0izIlByqQLqpmkQpNTBtfbdP04Na6+43lgsvrShFh2uWLkQDKJuQ==", "dev": true, "license": "ISC", "bin": { @@ -19808,10 +19813,9 @@ } }, "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==", - "license": "MIT", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "dependencies": { "json-buffer": "3.0.1" } @@ -22851,6 +22855,13 @@ "resolved": "packages/native-machine-id", "link": true }, + "node_modules/native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "dev": true, + "license": "MIT" + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -23798,10 +23809,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", - "license": "MIT" + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "node_modules/nx": { "version": "16.3.2", @@ -24925,12 +24935,11 @@ } }, "node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "license": "MIT", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dependencies": { - "entities": "^4.5.0" + "entities": "^4.4.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -28074,15 +28083,16 @@ } }, "node_modules/superagent/node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -28118,9 +28128,9 @@ } }, "node_modules/superagent/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "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": { @@ -28467,24 +28477,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tldts": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", - "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", - "license": "MIT", - "dependencies": { - "tldts-core": "^6.1.85" - }, - "bin": { - "tldts": "bin/cli.js" - } - }, - "node_modules/tldts-core": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", - "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==", - "license": "MIT" - }, "node_modules/tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -30042,9 +30034,9 @@ } }, "node_modules/zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==", + "version": "3.25.56", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.56.tgz", + "integrity": "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" @@ -30089,7 +30081,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -30102,6 +30094,16 @@ "typescript": "^5.0.4" } }, + "packages/device-id/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/device-id/node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -30116,6 +30118,13 @@ "node": ">=14.17" } }, + "packages/device-id/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/devtools-connect": { "name": "@mongodb-js/devtools-connect", "version": "3.7.2", @@ -30132,7 +30141,7 @@ "@mongodb-js/saslprep": "^1.2.2", "@types/lodash.merge": "^4.6.7", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "chai": "^4.5.0", @@ -30167,6 +30176,16 @@ "mongodb-log-writer": "^2.4.1" } }, + "packages/devtools-connect/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/devtools-connect/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -30181,6 +30200,13 @@ "node": ">=14.17" } }, + "packages/devtools-connect/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/devtools-proxy-support": { "name": "@mongodb-js/devtools-proxy-support", "version": "0.4.4", @@ -30205,7 +30231,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -30221,6 +30247,16 @@ "xvfb-maybe": "^0.2.1" } }, + "packages/devtools-proxy-support/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/devtools-proxy-support/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -30269,6 +30305,13 @@ "node": ">=14.17" } }, + "packages/devtools-proxy-support/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/dl-center": { "name": "@mongodb-js/dl-center", "version": "1.3.2", @@ -30285,7 +30328,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/s3rver": "^3.7.0", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", @@ -30302,6 +30345,16 @@ "typescript": "^5.0.4" } }, + "packages/dl-center/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/dl-center/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -30342,6 +30395,13 @@ "node": ">=14.17" } }, + "packages/dl-center/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/dl-center/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -30378,7 +30438,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", @@ -30390,6 +30450,16 @@ "typescript": "^5.0.4" } }, + "packages/download-url/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/download-url/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -30442,6 +30512,13 @@ "node": ">=14.17" } }, + "packages/download-url/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/download-url/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -30532,7 +30609,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -30545,6 +30622,16 @@ "typescript": "^5.0.4" } }, + "packages/get-os-info/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/get-os-info/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -30559,6 +30646,13 @@ "node": ">=14.17" } }, + "packages/get-os-info/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/machine-id": { "name": "native-machine-id", "version": "1.1.0", @@ -30603,7 +30697,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "cheerio": "^1.0.0-rc.12", @@ -30620,6 +30714,16 @@ "typescript": "^5.0.4" } }, + "packages/mongodb-cloud-info/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/mongodb-cloud-info/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -30634,6 +30738,13 @@ "node": ">=14.17" } }, + "packages/mongodb-cloud-info/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/mongodb-constants": { "name": "@mongodb-js/mongodb-constants", "version": "0.11.1", @@ -30720,7 +30831,7 @@ "@types/debug": "^4.1.8", "@types/decompress": "^4.2.4", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/tar": "^6.1.5", "depcheck": "^1.4.7", "eslint": "^7.25.0", @@ -30731,6 +30842,16 @@ "typescript": "^5.0.4" } }, + "packages/mongodb-downloader/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/mongodb-downloader/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -30795,6 +30916,13 @@ "node": ">=14.17" } }, + "packages/mongodb-downloader/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/mongodb-downloader/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -30924,7 +31052,7 @@ "@types/chai": "^4.2.21", "@types/debug": "^4.1.8", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/yargs": "^17.0.24", "chai": "^4.5.0", @@ -30938,6 +31066,16 @@ "typescript": "^5.0.4" } }, + "packages/mongodb-runner/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/mongodb-runner/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -30965,6 +31103,13 @@ "node": ">=14.17" } }, + "packages/mongodb-runner/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/mongodb-runner/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31008,7 +31153,7 @@ "@mongosh/shell-api": "^3.11.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "bson": "^6.8.0", "chai": "^4.3.6", @@ -31025,6 +31170,16 @@ "@mongosh/shell-api": "^3.11.0" } }, + "packages/mongodb-ts-autocomplete/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/mongodb-ts-autocomplete/node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -31038,6 +31193,13 @@ "node": ">=14.17" } }, + "packages/mongodb-ts-autocomplete/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/monorepo-tools": { "name": "@mongodb-js/monorepo-tools", "version": "1.1.18", @@ -31066,7 +31228,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/pacote": "^11.1.5", "@types/toposort": "^2.0.3", "depcheck": "^1.4.7", @@ -31079,6 +31241,16 @@ "typescript": "^5.0.4" } }, + "packages/monorepo-tools/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/monorepo-tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -31234,6 +31406,13 @@ "node": ">=14.17" } }, + "packages/monorepo-tools/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/mql-typescript": { "name": "@mongodb-js/mql-typescript", "version": "0.1.0", @@ -31258,7 +31437,7 @@ "@types/chai": "^5.2.2", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", @@ -31280,9 +31459,9 @@ } }, "packages/mql-typescript/node_modules/@types/node": { - "version": "22.14.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", - "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", "dev": true, "license": "MIT", "dependencies": { @@ -31309,21 +31488,6 @@ "node": ">=12" } }, - "packages/mql-typescript/node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "packages/mql-typescript/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -31336,80 +31500,10 @@ "js-yaml": "bin/js-yaml.js" } }, - "packages/mql-typescript/node_modules/jsdom": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "license": "MIT", - "dependencies": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "canvas": "^3.0.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "packages/mql-typescript/node_modules/rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==", - "license": "MIT" - }, - "packages/mql-typescript/node_modules/tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "license": "BSD-3-Clause", - "dependencies": { - "tldts": "^6.1.32" - }, - "engines": { - "node": ">=16" - } - }, - "packages/mql-typescript/node_modules/tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "license": "MIT", - "dependencies": { - "punycode": "^2.3.1" - }, - "engines": { - "node": ">=18" - } - }, "packages/mql-typescript/node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -31427,19 +31521,6 @@ "dev": true, "license": "MIT" }, - "packages/mql-typescript/node_modules/whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "license": "MIT", - "dependencies": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=18" - } - }, "packages/mql-typescript/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31483,7 +31564,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.7", "eslint": "^7.25.0", @@ -31495,6 +31576,16 @@ "typescript": "^5.0.4" } }, + "packages/native-machine-id/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/native-machine-id/node_modules/node-addon-api": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", @@ -31518,6 +31609,13 @@ "node": ">=14.17" } }, + "packages/native-machine-id/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/node-webpack-startup-snapshot-checker": { "version": "0.2.3", "license": "Apache-2.0", @@ -31535,7 +31633,7 @@ "@types/chai": "^4.2.21", "@types/cross-spawn": "^6.0.6", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "cross-spawn": "^7.0.6", @@ -31548,6 +31646,16 @@ "typescript": "^5.0.4" } }, + "packages/node-webpack-startup-snapshot-checker/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/node-webpack-startup-snapshot-checker/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -31562,6 +31670,13 @@ "node": ">=14.17" } }, + "packages/node-webpack-startup-snapshot-checker/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/oidc-http-server-pages": { "name": "@mongodb-js/oidc-http-server-pages", "version": "1.1.4", @@ -31621,7 +31736,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -31634,6 +31749,16 @@ "typescript": "^5.0.4" } }, + "packages/oidc-mock-provider/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/oidc-mock-provider/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -31661,6 +31786,13 @@ "node": ">=14.17" } }, + "packages/oidc-mock-provider/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/oidc-mock-provider/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31703,7 +31835,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "bson": "^6.2.0", "depcheck": "^1.4.7", @@ -31719,6 +31851,16 @@ "bson": "^4.6.3 || ^5 || ^6" } }, + "packages/query-parser/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/query-parser/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -31733,6 +31875,13 @@ "node": ">=14.17" } }, + "packages/query-parser/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/saslprep": { "name": "@mongodb-js/saslprep", "version": "1.2.2", @@ -31747,7 +31896,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/sparse-bitfield": "^3.0.1", "chai": "^4.5.0", @@ -31761,6 +31910,16 @@ "typescript": "^5.0.4" } }, + "packages/saslprep/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/saslprep/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -31775,6 +31934,13 @@ "node": ">=14.17" } }, + "packages/saslprep/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/sbom-tools": { "name": "@mongodb-js/sbom-tools", "version": "0.7.4", @@ -31802,7 +31968,7 @@ "@types/chai": "^4.2.21", "@types/lodash": "^4.14.194", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/node-fetch": "^2.6.3", "@types/sinon-chai": "^3.2.5", "@types/spdx-satisfies": "^0.1.0", @@ -31973,6 +32139,16 @@ "@octokit/openapi-types": "^24.2.0" } }, + "packages/sbom-tools/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/sbom-tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -32184,6 +32360,13 @@ "node": ">=14.17" } }, + "packages/sbom-tools/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/sbom-tools/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -32308,7 +32491,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -32321,6 +32504,16 @@ "typescript": "^5.0.4" } }, + "packages/signing-utils/node_modules/@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, "packages/signing-utils/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -32335,6 +32528,13 @@ "node": ">=14.17" } }, + "packages/signing-utils/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, "packages/ts-autocomplete": { "name": "@mongodb-js/ts-autocomplete", "version": "0.3.1", @@ -34704,9 +34904,9 @@ } }, "@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==" + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==" }, "@eslint/eslintrc": { "version": "0.4.3", @@ -38699,7 +38899,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -38712,11 +38912,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -38729,7 +38944,7 @@ "@mongodb-js/saslprep": "^1.2.2", "@types/lodash.merge": "^4.6.7", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "chai": "^4.5.0", @@ -38758,11 +38973,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -38776,7 +39006,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "agent-base": "^7.1.1", "chai": "^4.5.0", @@ -38802,6 +39032,15 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -38827,6 +39066,12 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -38852,7 +39097,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/s3rver": "^3.7.0", "@types/sinon-chai": "^3.2.5", "ajv": "^6.12.5", @@ -38872,6 +39117,15 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -38891,6 +39145,12 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -38934,7 +39194,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -38947,11 +39207,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -39028,7 +39303,7 @@ "@types/debug": "^4.1.8", "@types/decompress": "^4.2.4", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/tar": "^6.1.5", "debug": "^4.4.0", "decompress": "^4.2.1", @@ -39044,6 +39319,15 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -39081,6 +39365,12 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -39108,7 +39398,7 @@ "@mongosh/shell-api": "^3.11.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "bson": "^6.8.0", "chai": "^4.3.6", @@ -39125,10 +39415,25 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==" + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -39140,7 +39445,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/pacote": "^11.1.5", "@types/toposort": "^2.0.3", "chalk": "^4.1.1", @@ -39163,6 +39468,15 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -39254,6 +39568,12 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -39266,7 +39586,7 @@ "@types/chai": "^5.2.2", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "bson": "^6.10.3", "depcheck": "^1.4.7", "eslint": "^7.25.0", @@ -39295,8 +39615,9 @@ } }, "@types/node": { - "version": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", - "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", "dev": true, "requires": { "undici-types": "~6.21.0" @@ -39317,17 +39638,6 @@ "wrap-ansi": "^7.0.0" } }, - "form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "mime-types": "^2.1.12" - } - }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -39336,58 +39646,10 @@ "argparse": "^2.0.1" } }, - "jsdom": { - "version": "https://registry.npmjs.org/jsdom/-/jsdom-26.0.0.tgz", - "integrity": "sha512-BZYDGVAIriBWTpIxYzrXjv3E/4u8+/pSG5bQdIYCbNCGOvsPkDQfTVLAIXAf9ETdCpduCVTkDe2NNZ8NIwUVzw==", - "requires": { - "cssstyle": "^4.2.1", - "data-urls": "^5.0.0", - "decimal.js": "^10.4.3", - "form-data": "^4.0.1", - "html-encoding-sniffer": "^4.0.0", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.16", - "parse5": "^7.2.1", - "rrweb-cssom": "^0.8.0", - "saxes": "^6.0.0", - "symbol-tree": "^3.2.4", - "tough-cookie": "^5.0.0", - "w3c-xmlserializer": "^5.0.0", - "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^3.1.1", - "whatwg-mimetype": "^4.0.0", - "whatwg-url": "^14.1.0", - "ws": "^8.18.0", - "xml-name-validator": "^5.0.0" - } - }, - "rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==" - }, - "tough-cookie": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz", - "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==", - "requires": { - "tldts": "^6.1.32" - } - }, - "tr46": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.0.tgz", - "integrity": "sha512-IUWnUK7ADYR5Sl1fZlO1INDUhVhatWl7BtJWsIhwJ0UAK7ilzzIa8uIqOO/aYVWHZPJkKbEL+362wrzoeRF7bw==", - "requires": { - "punycode": "^2.3.1" - } - }, "typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true }, "undici-types": { @@ -39396,15 +39658,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true }, - "whatwg-url": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz", - "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==", - "requires": { - "tr46": "^5.1.0", - "webidl-conversions": "^7.0.0" - } - }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -39469,7 +39722,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", @@ -39483,6 +39736,15 @@ "yargs": "^17.7.2" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -39499,6 +39761,12 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -39566,7 +39834,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/sparse-bitfield": "^3.0.1", "chai": "^4.5.0", @@ -39581,11 +39849,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -39601,7 +39884,7 @@ "@types/chai": "^4.2.21", "@types/lodash": "^4.14.194", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/node-fetch": "^2.6.3", "@types/sinon-chai": "^3.2.5", "@types/spdx-satisfies": "^0.1.0", @@ -39731,6 +40014,15 @@ "@octokit/openapi-types": "^24.2.0" } }, + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -39856,6 +40148,12 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -39925,7 +40223,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/ssh2": "^1.11.19", "chai": "^4.5.0", @@ -39941,11 +40239,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -40074,6 +40387,12 @@ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/semver-v6/-/semver-v6-6.3.3.tgz", "integrity": "sha512-3Yc1fUTs69MG/uZbJlLSI3JISMn2UV2rg+1D/vROUqZyh3l6iYHCs7GMp+M40ZD7yOdDbYjJcU1oTJhrc+dGKg==" }, + "@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true + }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -40476,6 +40795,15 @@ "@octokit/openapi-types": "^18.0.0" } }, + "@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "requires": { + "@noble/hashes": "^1.1.5" + } + }, "@parcel/watcher": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", @@ -40697,9 +41025,9 @@ } }, "@sinonjs/text-encoding": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", - "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.1.tgz", + "integrity": "sha512-+iTbntw2IZPb/anVDbypzfQa+ay64MW0Zo8aJ8gZPWMMK6/OubMVb6lUPMagqjOPnmtauXnFCACVl3O7ogjeqQ==", "dev": true }, "@smithy/abort-controller": { @@ -41670,9 +41998,9 @@ } }, "@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", + "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", "dev": true }, "@types/cross-spawn": { @@ -42014,9 +42342,9 @@ } }, "@types/sinon-chai": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.12.tgz", - "integrity": "sha512-9y0Gflk3b0+NhQZ/oxGtaAJDvRywCa5sIyaVnounqLvmf93yBF4EgIRspePtkMs3Tr844nCclYMlcCNmLCvjuQ==", + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.8.tgz", + "integrity": "sha512-d4ImIQbT/rKMG8+AXpmcan5T2/PNeSjrYhvkwet6z0p8kzYtfgA32xzOBlbU0yqJfq+/0Ml805iFoODO0LP5/g==", "dev": true, "requires": { "@types/chai": "*", @@ -44257,18 +44585,17 @@ "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, "cssstyle": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.3.0.tgz", - "integrity": "sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "requires": { - "@asamuzakjp/css-color": "^3.1.1", - "rrweb-cssom": "^0.8.0" + "rrweb-cssom": "^0.6.0" }, "dependencies": { "rrweb-cssom": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz", - "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==" + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", + "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==" } } }, @@ -46487,9 +46814,9 @@ } }, "flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", + "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", "dev": true }, "fn.name": { @@ -46564,13 +46891,13 @@ } }, "formidable": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz", - "integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz", + "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==", "dev": true, "requires": { + "@paralleldrive/cuid2": "^2.2.2", "dezalgo": "^1.0.4", - "hexoid": "^1.0.0", "once": "^1.4.0", "qs": "^6.11.0" } @@ -47521,12 +47848,6 @@ "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.3.0.tgz", "integrity": "sha512-E5303mzwQ+4j/n2J0rDvEPBN7GKjhis10oHiYOgjxsmxYgqG++hz9NyLLOXttzH8as/DyiBHYpUrJTZWYaMo8Q==" }, - "hexoid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz", - "integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==", - "dev": true - }, "highlight.js": { "version": "11.5.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.5.1.tgz", @@ -48754,9 +49075,9 @@ } }, "json-schema-to-zod": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/json-schema-to-zod/-/json-schema-to-zod-2.6.0.tgz", - "integrity": "sha512-6sFZqOzHZeON8g2ZW5HJ114Hb/FffNCjWh8dgulJaKFkUqKCEWZAzF4+g07SQpfBZF7HXemwedtdLypZzmnVpQ==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/json-schema-to-zod/-/json-schema-to-zod-2.6.1.tgz", + "integrity": "sha512-uiHmWH21h9FjKJkRBntfVGTLpYlCZ1n98D0izIlByqQLqpmkQpNTBtfbdP04Na6+43lgsvrShFh2uWLkQDKJuQ==", "dev": true }, "json-schema-traverse": { @@ -48865,9 +49186,9 @@ } }, "keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", "requires": { "json-buffer": "3.0.1" } @@ -50988,7 +51309,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "cheerio": "^1.0.0-rc.12", @@ -51007,11 +51328,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -51033,7 +51369,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "debug": "^4.4.0", "depcheck": "^1.4.7", "eslint": "^7.25.0", @@ -51049,6 +51385,15 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -51073,6 +51418,12 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -51143,7 +51494,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "bson": "^6.2.0", "debug": "^4.4.0", @@ -51159,11 +51510,26 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -51208,7 +51574,7 @@ "@types/chai": "^4.2.21", "@types/debug": "^4.1.8", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/yargs": "^17.0.24", "chai": "^4.5.0", @@ -51226,6 +51592,15 @@ "yargs": "^17.7.2" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -51242,6 +51617,12 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true + }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -51413,7 +51794,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.7", "eslint": "^7.25.0", @@ -51426,6 +51807,15 @@ "typescript": "^5.0.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "node-addon-api": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", @@ -51436,9 +51826,21 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, + "native-promise-only": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", + "dev": true + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", @@ -51900,7 +52302,7 @@ "@types/chai": "^4.2.21", "@types/cross-spawn": "^6.0.6", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "cross-spawn": "^7.0.6", @@ -51914,11 +52316,26 @@ "webpack-cli": "^5.1.4" }, "dependencies": { + "@types/node": { + "version": "22.15.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", + "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", + "dev": true, + "requires": { + "undici-types": "~6.21.0" + } + }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true + }, + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true } } }, @@ -52158,9 +52575,9 @@ "optional": true }, "nwsapi": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", - "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==" + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==" }, "nx": { "version": "16.3.2", @@ -53005,11 +53422,11 @@ } }, "parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "requires": { - "entities": "^4.5.0" + "entities": "^4.4.0" } }, "parse5-htmlparser2-tree-adapter": { @@ -55347,14 +55764,15 @@ }, "dependencies": { "form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, @@ -55376,9 +55794,9 @@ } }, "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true } } @@ -55647,19 +56065,6 @@ "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", "dev": true }, - "tldts": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.85.tgz", - "integrity": "sha512-gBdZ1RjCSevRPFix/hpaUWeak2/RNUZB4/8frF1r5uYMHjFptkiT0JXIebWvgI/0ZHXvxaUDDJshiA0j6GdL3w==", - "requires": { - "tldts-core": "^6.1.85" - } - }, - "tldts-core": { - "version": "6.1.85", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.85.tgz", - "integrity": "sha512-DTjUVvxckL1fIoPSb3KE7ISNtkWSawZdpfxGxwiIrZoO6EbHVDXXUIlIuWympPaeS+BLGyggozX/HTMsRAdsoA==" - }, "tmp": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", @@ -56791,9 +57196,9 @@ "dev": true }, "zod": { - "version": "3.24.2", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.2.tgz", - "integrity": "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==" + "version": "3.25.56", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.56.tgz", + "integrity": "sha512-rd6eEF3BTNvQnR2e2wwolfTmUTnp70aUTqr0oaGbHifzC3BKJsoV+Gat8vxUMR1hwOKBs6El+qWehrHbCpW6SQ==" } } } diff --git a/packages/device-id/package.json b/packages/device-id/package.json index fe25e23f..adce8cc6 100644 --- a/packages/device-id/package.json +++ b/packages/device-id/package.json @@ -55,7 +55,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", diff --git a/packages/devtools-connect/package.json b/packages/devtools-connect/package.json index 363b61cc..ab6840ca 100644 --- a/packages/devtools-connect/package.json +++ b/packages/devtools-connect/package.json @@ -63,7 +63,7 @@ "@mongodb-js/saslprep": "^1.2.2", "@types/lodash.merge": "^4.6.7", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@typescript-eslint/eslint-plugin": "^5.59.0", "@typescript-eslint/parser": "^5.59.0", "chai": "^4.5.0", diff --git a/packages/devtools-proxy-support/package.json b/packages/devtools-proxy-support/package.json index 43f2ad9e..e001b73c 100644 --- a/packages/devtools-proxy-support/package.json +++ b/packages/devtools-proxy-support/package.json @@ -73,7 +73,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", diff --git a/packages/dl-center/package.json b/packages/dl-center/package.json index da12f2fd..af6636b1 100644 --- a/packages/dl-center/package.json +++ b/packages/dl-center/package.json @@ -54,7 +54,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/s3rver": "^3.7.0", "@types/sinon-chai": "^3.2.5", "json-schema-to-typescript": "^13.0.2", diff --git a/packages/download-url/package.json b/packages/download-url/package.json index 2f247844..46697d97 100644 --- a/packages/download-url/package.json +++ b/packages/download-url/package.json @@ -51,7 +51,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", diff --git a/packages/get-os-info/package.json b/packages/get-os-info/package.json index eb962321..114b985d 100644 --- a/packages/get-os-info/package.json +++ b/packages/get-os-info/package.json @@ -52,7 +52,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", diff --git a/packages/mongodb-cloud-info/package.json b/packages/mongodb-cloud-info/package.json index fb368bfe..8f1051ea 100644 --- a/packages/mongodb-cloud-info/package.json +++ b/packages/mongodb-cloud-info/package.json @@ -57,7 +57,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "cheerio": "^1.0.0-rc.12", diff --git a/packages/mongodb-downloader/package.json b/packages/mongodb-downloader/package.json index d6eddc89..0f5cef58 100644 --- a/packages/mongodb-downloader/package.json +++ b/packages/mongodb-downloader/package.json @@ -60,7 +60,7 @@ "@types/debug": "^4.1.8", "@types/decompress": "^4.2.4", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/tar": "^6.1.5", "depcheck": "^1.4.7", "eslint": "^7.25.0", diff --git a/packages/mongodb-runner/package.json b/packages/mongodb-runner/package.json index 7117b329..a1003e01 100644 --- a/packages/mongodb-runner/package.json +++ b/packages/mongodb-runner/package.json @@ -68,7 +68,7 @@ "@types/chai": "^4.2.21", "@types/debug": "^4.1.8", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/yargs": "^17.0.24", "chai": "^4.5.0", diff --git a/packages/mongodb-ts-autocomplete/package.json b/packages/mongodb-ts-autocomplete/package.json index e3f50272..248d0d5b 100644 --- a/packages/mongodb-ts-autocomplete/package.json +++ b/packages/mongodb-ts-autocomplete/package.json @@ -63,7 +63,7 @@ "@mongosh/shell-api": "^3.11.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "bson": "^6.8.0", "chai": "^4.3.6", diff --git a/packages/monorepo-tools/package.json b/packages/monorepo-tools/package.json index 3f118db8..67ff0711 100644 --- a/packages/monorepo-tools/package.json +++ b/packages/monorepo-tools/package.json @@ -52,7 +52,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/pacote": "^11.1.5", "@types/toposort": "^2.0.3", "depcheck": "^1.4.7", diff --git a/packages/mql-typescript/.eslintrc.js b/packages/mql-typescript/.eslintrc.js index 83296d73..31be2055 100644 --- a/packages/mql-typescript/.eslintrc.js +++ b/packages/mql-typescript/.eslintrc.js @@ -5,4 +5,7 @@ module.exports = { tsconfigRootDir: __dirname, project: ['./tsconfig-lint.json'], }, + rules: { + 'no-console': 'off', + }, }; diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 740dd6b5..94350d5f 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -1,5 +1,10 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable @typescript-eslint/no-namespace */ +/* eslint-disable @typescript-eslint/ban-types */ +/* eslint-disable @typescript-eslint/no-explicit-any */ + import type * as bson from 'bson'; -import { FilterOperators } from 'mongodb'; +import type { FilterOperators } from 'mongodb'; type Condition = AlternativeType | FilterOperators | QueryOperator; type AlternativeType = diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index cce9a2a6..9da40aa6 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -59,7 +59,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/chai": "^5.2.2", "depcheck": "^1.4.7", "eslint": "^7.25.0", diff --git a/packages/mql-typescript/src/cli.ts b/packages/mql-typescript/src/cli.ts index a16ff0d7..b93ac444 100644 --- a/packages/mql-typescript/src/cli.ts +++ b/packages/mql-typescript/src/cli.ts @@ -1,8 +1,8 @@ import yargs from 'yargs'; -import { SchemaGenerator } from './schemaGenerator'; -import { TestGenerator } from './testGenerator/testGenerator'; -import { DriverSchemaGenerator } from './driverSchema/driverSchemaGenerator'; -import { GeneratorBase } from './generator'; +import { SchemaGenerator } from './schema-generator'; +import { TestGenerator } from './testGenerator/test-generator'; +import { DriverSchemaGenerator } from './driverSchema/driver-schema-generator'; +import type { GeneratorBase } from './generator'; async function main() { const argv = await yargs diff --git a/packages/mql-typescript/src/driverSchema/docsCrawler.ts b/packages/mql-typescript/src/driverSchema/docs-crawler.ts similarity index 92% rename from packages/mql-typescript/src/driverSchema/docsCrawler.ts rename to packages/mql-typescript/src/driverSchema/docs-crawler.ts index 0e44853c..2bcec211 100644 --- a/packages/mql-typescript/src/driverSchema/docsCrawler.ts +++ b/packages/mql-typescript/src/driverSchema/docs-crawler.ts @@ -9,15 +9,15 @@ import { BSON } from 'bson'; abstract class CustomTypeProcessor { public abstract process(json: string): string; - public abstract canRevive(value: any): boolean; + public abstract canRevive(value: unknown): boolean; - public abstract revive(value: any): any; + public abstract revive(value: unknown): unknown; } abstract class RegexCustomTypeProcessor extends CustomTypeProcessor { private regex: RegExp; private replacementPrefix: string; - protected abstract reviveCore(value: string): any; + protected abstract reviveCore(value: string): unknown; protected constructor(regex: string) { super(); @@ -30,13 +30,13 @@ abstract class RegexCustomTypeProcessor extends CustomTypeProcessor { return json.replace(this.regex, `"${this.replacementPrefix}$1"`); } - public canRevive(value: any): boolean { + public canRevive(value: unknown): boolean { return ( typeof value === 'string' && value.startsWith(this.replacementPrefix) ); } - public revive(value: string): any { + public revive(value: string): unknown { return this.reviveCore(value.replace(this.replacementPrefix, '')); } } @@ -86,7 +86,7 @@ class ObjectIdProcessor extends RegexCustomTypeProcessor { super('\\bObjectId\\(\\s*"([^"]*)"\\s*\\)'); } - public reviveCore(value: string): any { + public reviveCore(value: string): unknown { return new BSON.ObjectId(value); } } @@ -96,7 +96,7 @@ class UUIDProcessor extends RegexCustomTypeProcessor { super('\\bUUID\\(\\s*"([^"]*)"\\s*\\)'); } - public reviveCore(value: string): any { + public reviveCore(value: string): unknown { return new BSON.UUID(value); } } @@ -106,7 +106,7 @@ class NumberDecimalProcessor extends RegexCustomTypeProcessor { super('\\b(?:NumberDecimal|Decimal128)\\(\\s*"?([^"]*)"?\\s*\\)'); } - public reviveCore(value: string): any { + public reviveCore(value: string): unknown { return new BSON.Decimal128(value); } } @@ -116,7 +116,7 @@ class UndefinedProcessor extends RegexCustomTypeProcessor { super('\\bundefined\\b'); } - public reviveCore(_: string): any { + public reviveCore(): unknown { return undefined; } } @@ -126,7 +126,7 @@ class NullProcessor extends RegexCustomTypeProcessor { super('\\bnull\\b'); } - public reviveCore(_: string): any { + public reviveCore(): unknown { return null; } } @@ -140,13 +140,13 @@ class BinDataProcessor extends CustomTypeProcessor { return json.replace(this.regex, `"${this.replacementPrefix}$1-$2"`); } - public canRevive(value: any): boolean { + public canRevive(value: unknown): boolean { return ( typeof value === 'string' && value.startsWith(this.replacementPrefix) ); } - public revive(value: string): any { + public revive(value: string): unknown { const match = /(?\d)-(?.*)/.exec( value.replace(this.replacementPrefix, ''), ); @@ -165,17 +165,17 @@ class NumberIntProcessor extends RegexCustomTypeProcessor { super('\\b(?:NumberInt|Int32)\\(\\s*"?(\\d*)\\"?\\s*\\)'); } - public reviveCore(value: string): any { + public reviveCore(value: string): unknown { return new BSON.Int32(value); } } class NumberLongProcessor extends RegexCustomTypeProcessor { constructor() { - super('\\bNumberLong\\(\\s*"?([\\d\.]*)"?\\s*\\)'); + super('\\bNumberLong\\(\\s*"?([\\d.]*)"?\\s*\\)'); } - public reviveCore(value: string): any { + public reviveCore(value: string): unknown { return new BSON.Long(value); } } @@ -185,7 +185,7 @@ class TimestampProcessor extends RegexCustomTypeProcessor { super('\\bTimestamp\\(\\s*(\\d*,\\s*\\d*)\\s*\\)'); } - public reviveCore(value: string): any { + public reviveCore(value: string): unknown { const match = /(?\d*),\s(?\d*)/.exec(value); if (match && match.groups) { @@ -207,7 +207,7 @@ export class DocsCrawler { private virtualConsole: VirtualConsole; - private fuzzyParse(json: string): any[] | undefined { + private fuzzyParse(json: string): unknown[] | undefined { try { const result = JSON5.parse(json); if (Array.isArray(result)) { @@ -274,6 +274,7 @@ export class DocsCrawler { return [result]; } + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new Error(`Unexpected json output: ${result}`); } catch (e) { const message = e instanceof Error ? e.message : String(e); diff --git a/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts b/packages/mql-typescript/src/driverSchema/driver-schema-generator.ts similarity index 76% rename from packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts rename to packages/mql-typescript/src/driverSchema/driver-schema-generator.ts index 78f9f493..fb2a753e 100644 --- a/packages/mql-typescript/src/driverSchema/driverSchemaGenerator.ts +++ b/packages/mql-typescript/src/driverSchema/driver-schema-generator.ts @@ -1,11 +1,10 @@ -import { GeneratorBase, YamlFiles } from '../generator'; +import type { YamlFiles } from '../generator'; +import { GeneratorBase } from '../generator'; import { Operator } from '../metaschema'; import * as yaml from 'js-yaml'; import * as fs from 'fs/promises'; -import { DocsCrawler } from './docsCrawler'; -import { spawn } from 'child_process'; -import path from 'path'; -import { getStaticSchema } from './staticSchemas'; +import { DocsCrawler } from './docs-crawler'; +import { getStaticSchema } from './static-schemas'; type TestType = NonNullable[number]; @@ -44,14 +43,21 @@ export class DriverSchemaGenerator extends GeneratorBase { category: string; operator: string; test: TestType; - rawYaml: any; + rawYaml: { tests: { name: string; schema: object | string }[] }; }): Promise { const yamlTest = rawYaml.tests.find( (t: { name: string }) => t.name === test.name, ); + if (!yamlTest) { + console.error( + `Test ${test.name} not found in operator ${operator} in category ${category}`, + ); + return; + } + yamlTest.schema = - getStaticSchema({ category, operator, test: test.name! }) ?? + getStaticSchema({ category, operator, test: test.name }) ?? (await this.getSchemaFromDocs(test)); } @@ -60,12 +66,10 @@ export class DriverSchemaGenerator extends GeneratorBase { for await (const operator of file.operators()) { const parsed = Operator.parse(operator.yaml); - const operatorYaml = operator.yaml as any; - if (typeof operatorYaml !== 'object' || operatorYaml === null) { - throw new Error( - `Unexpected yaml format for ${operator.path}: ${operatorYaml}`, - ); - } + const operatorYaml = operator.yaml as { + name: string; + tests: { name: string; schema: object | string }[]; + }; for (const test of parsed.tests ?? []) { await this.updateTestSchema({ diff --git a/packages/mql-typescript/src/driverSchema/staticSchemas.ts b/packages/mql-typescript/src/driverSchema/static-schemas.ts similarity index 99% rename from packages/mql-typescript/src/driverSchema/staticSchemas.ts rename to packages/mql-typescript/src/driverSchema/static-schemas.ts index 76884bae..c9ff3f73 100644 --- a/packages/mql-typescript/src/driverSchema/staticSchemas.ts +++ b/packages/mql-typescript/src/driverSchema/static-schemas.ts @@ -1,5 +1,4 @@ -import { SimplifiedSchema } from 'mongodb-schema'; -import { types } from 'util'; +import type { SimplifiedSchema } from 'mongodb-schema'; interface SchemaInfo { collectionName: string; diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index abd35716..f6426625 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -51,7 +51,7 @@ export abstract class GeneratorBase { schema: yaml.DEFAULT_SCHEMA.extend([ new yaml.Type('!bson_utcdatetime', { kind: 'scalar', - construct(data) { + construct(data: string) { return new BsonDate(data); }, instanceOf: BsonDate, @@ -64,7 +64,7 @@ export abstract class GeneratorBase { }), new yaml.Type('!bson_objectId', { kind: 'scalar', - construct(data) { + construct(data: string) { return bson.ObjectId.createFromHexString(data); }, predicate(data) { @@ -82,7 +82,7 @@ export abstract class GeneratorBase { }), new yaml.Type('!bson_uuid', { kind: 'scalar', - construct(data) { + construct(data: string) { return bson.UUID.createFromHexString(data); }, predicate(data) { @@ -100,7 +100,7 @@ export abstract class GeneratorBase { }), new yaml.Type('!bson_regex', { kind: 'scalar', - construct(data) { + construct(data: string) { return new bson.BSONRegExp(data); }, predicate(data) { @@ -118,7 +118,7 @@ export abstract class GeneratorBase { }), new yaml.Type('!bson_regex', { kind: 'sequence', - construct([data, flags]) { + construct([data, flags]: [string, string]) { return new bson.BSONRegExp(data, flags); }, predicate(data) { @@ -136,7 +136,7 @@ export abstract class GeneratorBase { }), new yaml.Type('!bson_binary', { kind: 'scalar', - construct(data) { + construct(data: string) { return bson.Binary.createFromBase64(data); }, predicate(data) { @@ -154,7 +154,7 @@ export abstract class GeneratorBase { }), new yaml.Type('!bson_decimal128', { kind: 'scalar', - construct(data) { + construct(data: string) { return bson.Decimal128.fromString(data); }, predicate(data) { diff --git a/packages/mql-typescript/src/index.ts b/packages/mql-typescript/src/index.ts index 118fa4c2..644e148f 100644 --- a/packages/mql-typescript/src/index.ts +++ b/packages/mql-typescript/src/index.ts @@ -1,2 +1,2 @@ -export { SchemaGenerator } from './schemaGenerator'; -export { TestGenerator } from './testGenerator/testGenerator'; +export { SchemaGenerator } from './schema-generator'; +export { TestGenerator } from './testGenerator/test-generator'; diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts index 6a166ca5..cfb85a4b 100644 --- a/packages/mql-typescript/src/metaschema.ts +++ b/packages/mql-typescript/src/metaschema.ts @@ -147,9 +147,9 @@ export const Operator = z .array( z .object({ - name: z.string().optional(), + name: z.string(), link: z.string().url().regex(new RegExp('^https://')).optional(), - pipeline: z.array(z.record(z.any())).optional(), + pipeline: z.array(z.record(z.any())), schema: z .union([ z.string(), diff --git a/packages/mql-typescript/src/schemaGenerator.ts b/packages/mql-typescript/src/schema-generator.ts similarity index 91% rename from packages/mql-typescript/src/schemaGenerator.ts rename to packages/mql-typescript/src/schema-generator.ts index 0ab9dd02..b24e6e24 100644 --- a/packages/mql-typescript/src/schemaGenerator.ts +++ b/packages/mql-typescript/src/schema-generator.ts @@ -1,5 +1,6 @@ import path from 'path'; -import { GeneratorBase, YamlFiles } from './generator'; +import type { YamlFiles } from './generator'; +import { GeneratorBase } from './generator'; import { Operator } from './metaschema'; import { capitalize } from './utils'; @@ -248,8 +249,13 @@ export class SchemaGenerator extends GeneratorBase { private emitHeader(): void { this.emit(` + /* eslint-disable @typescript-eslint/no-unused-vars */ + /* eslint-disable @typescript-eslint/no-namespace */ + /* eslint-disable @typescript-eslint/ban-types */ + /* eslint-disable @typescript-eslint/no-explicit-any */ + import type * as bson from 'bson'; - import { FilterOperators } from 'mongodb'; + import type { FilterOperators } from 'mongodb'; type Condition = AlternativeType | FilterOperators | QueryOperator; type AlternativeType = @@ -451,7 +457,8 @@ export class SchemaGenerator extends GeneratorBase { break; } - case 'object': + // eslint-disable-next-line no-fallthrough + case 'object': { // We're temporarily switching to writing to an in-memory buffer in case we need to merge objects. Due to // limitations of merging objects with records, we need to use some type magic, requiring a helper type. // { foo: number } & { [key: string]: string } results in foo being a string due to the indexer. To avoid it @@ -459,7 +466,7 @@ export class SchemaGenerator extends GeneratorBase { const mergedArgs: (typeof parsed.arguments)[number][] = []; const objectType = this.getOutputOf(() => { this.emit(encode === 'array' ? '[' : '{'); - for (const arg of parsed.arguments!) { + for (const arg of parsed.arguments ?? []) { if (arg.mergeObject) { mergedArgs.push(arg); continue; @@ -493,32 +500,34 @@ export class SchemaGenerator extends GeneratorBase { this.emit(objectType); break; case 1: - const arg = mergedArgs[0]; - switch (arg.variadic) { - case 'object': - if (objectType === '{}') { - this.emit(`{ [${arg.name}: string]: `); - this.emitArg(arg, false); - this.emit(`}`); - } else { - this.emit( - `RecordWithStaticFields<${objectType}, ${this.toComment( - arg.description, - )} ${arg.type - .map((t) => this.getArgumentTypeName(t)) - .join(' | ')}>`, + { + const arg = mergedArgs[0]; + switch (arg.variadic) { + case 'object': + if (objectType === '{}') { + this.emit(`{ [${arg.name}: string]: `); + this.emitArg(arg, false); + this.emit(`}`); + } else { + this.emit( + `RecordWithStaticFields<${objectType}, ${this.toComment( + arg.description, + )} ${arg.type + .map((t) => this.getArgumentTypeName(t)) + .join(' | ')}>`, + ); + } + break; + case 'array': + throw new Error( + `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}`, ); - } - break; - case 'array': - throw new Error( - `invalid mergeObject combination: variadic=${arg.variadic}, encode=${parsed.encode}`, - ); - case undefined: - this.emitArg(arg, false); - this.emit(' & '); - this.emit(objectType); - break; + case undefined: + this.emitArg(arg, false); + this.emit(' & '); + this.emit(objectType); + break; + } } break; default: @@ -531,6 +540,7 @@ export class SchemaGenerator extends GeneratorBase { ); } break; + } case 'single': if (parsed.arguments.length !== 1) { throw new Error( diff --git a/packages/mql-typescript/src/testGenerator/testGenerator.ts b/packages/mql-typescript/src/testGenerator/test-generator.ts similarity index 86% rename from packages/mql-typescript/src/testGenerator/testGenerator.ts rename to packages/mql-typescript/src/testGenerator/test-generator.ts index 7b8bcefb..50695428 100644 --- a/packages/mql-typescript/src/testGenerator/testGenerator.ts +++ b/packages/mql-typescript/src/testGenerator/test-generator.ts @@ -1,22 +1,23 @@ import path from 'path'; -import { GeneratorBase, YamlFiles } from '../generator'; +import type { YamlFiles } from '../generator'; +import { GeneratorBase } from '../generator'; import * as fs from 'fs/promises'; import { Operator } from '../metaschema'; import { capitalize, removeNewlines } from '../utils'; -import { +import type { SimplifiedSchema, SimplifiedSchemaType, SimplifiedSchemaBaseType, } from 'mongodb-schema'; -import { unsupportedAggregations } from './unsupportedAggregations'; +import { unsupportedAggregations } from './unsupported-aggregations'; import * as bson from 'bson'; type TestType = NonNullable[number]; +type SchemaBSONType = SimplifiedSchemaBaseType['bsonType'] | 'Long' | 'Number'; + export class TestGenerator extends GeneratorBase { - private schemaBsonTypeToTS( - type: SimplifiedSchemaBaseType['bsonType'], - ): string { + private schemaBsonTypeToTS(type: SchemaBSONType): string { switch (type) { case 'Binary': return 'bson.Binary'; @@ -34,7 +35,7 @@ export class TestGenerator extends GeneratorBase { return 'bson.Double | number'; case 'Int32': return 'bson.Int32 | number'; - case 'Long' as any: + case 'Long': case 'Int64': return 'bson.Long'; case 'MaxKey': @@ -55,7 +56,7 @@ export class TestGenerator extends GeneratorBase { return `bson.Timestamp`; case 'Undefined': return `undefined`; - case 'Number' as any: + case 'Number': return 'number'; default: throw new Error(`Unknown BSON type: ${type}`); @@ -86,9 +87,9 @@ export class TestGenerator extends GeneratorBase { return result; } - private stageToTS(stage: any): string { + private stageToTS(stage: unknown): string { switch (typeof stage) { - case 'object': + case 'object': { if (stage === null) { return 'null'; } @@ -119,6 +120,7 @@ export class TestGenerator extends GeneratorBase { } result += '}'; return result; + } case 'undefined': return 'undefined'; default: @@ -126,11 +128,11 @@ export class TestGenerator extends GeneratorBase { } } - private async emitTestBody( + private emitTestBody( category: string, operator: string, test: TestType, - ): Promise { + ): void { if (!test.pipeline) { this.emit(`// TODO: No pipeline found for ${operator}.${test.name}\n`); return; @@ -158,7 +160,7 @@ export class TestGenerator extends GeneratorBase { // Some pipelines project to new types, which is not supported by the static type system. // In this case, we typecast to any to suppress the type error. const unsupportedStage = - unsupportedAggregations[category]?.[operator]?.[test.name!]; + unsupportedAggregations[category]?.[operator]?.[test.name]; const isUnsupportedStage = unsupportedStage && i >= unsupportedStage.stage; @@ -200,7 +202,7 @@ export class TestGenerator extends GeneratorBase { 'tests', file.category, ); - fs.mkdir(basePath, { recursive: true }); + await fs.mkdir(basePath, { recursive: true }); for await (const operator of file.operators()) { const parsed = Operator.parse(operator.yaml); @@ -210,7 +212,12 @@ export class TestGenerator extends GeneratorBase { const filePath = path.join(basePath, `${operatorName}.spec.ts`); this.emitToFile(filePath); - this.emit("import * as schema from '../../out/schema';\n"); + this.emit('/* eslint-disable @typescript-eslint/no-unused-vars */\n'); + this.emit('/* eslint-disable filename-rules/match */\n'); + this.emit( + '/* eslint-disable @typescript-eslint/consistent-type-imports */\n', + ); + this.emit("import type * as schema from '../../out/schema';\n"); this.emit("import * as bson from 'bson';\n\n"); let i = 0; @@ -219,9 +226,10 @@ export class TestGenerator extends GeneratorBase { test.name ?? `Test ${namespace}.${parsed.name}`, test.link, ); + this.emit(`function test${i++}() {\n`); - await this.emitTestBody(file.category, operatorName, test); + this.emitTestBody(file.category, operatorName, test); this.emit('}\n\n'); } diff --git a/packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts b/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts similarity index 100% rename from packages/mql-typescript/src/testGenerator/unsupportedAggregations.ts rename to packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts diff --git a/packages/mql-typescript/src/utils.ts b/packages/mql-typescript/src/utils.ts index 8c1a3492..e0d67adc 100644 --- a/packages/mql-typescript/src/utils.ts +++ b/packages/mql-typescript/src/utils.ts @@ -1,5 +1,5 @@ export class StringWriter { - private buffer: string = ''; + private buffer = ''; public write(text: string) { this.buffer += text; diff --git a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts index 9479b73f..806517dd 100644 --- a/packages/mql-typescript/tests/accumulator/accumulator.spec.ts +++ b/packages/mql-typescript/tests/accumulator/accumulator.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/addToSet.spec.ts b/packages/mql-typescript/tests/accumulator/addToSet.spec.ts index 12eae363..24c3d7d5 100644 --- a/packages/mql-typescript/tests/accumulator/addToSet.spec.ts +++ b/packages/mql-typescript/tests/accumulator/addToSet.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/avg.spec.ts b/packages/mql-typescript/tests/accumulator/avg.spec.ts index 23b06329..b7aa52b7 100644 --- a/packages/mql-typescript/tests/accumulator/avg.spec.ts +++ b/packages/mql-typescript/tests/accumulator/avg.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/bottom.spec.ts b/packages/mql-typescript/tests/accumulator/bottom.spec.ts index a44c62cb..d41f13dc 100644 --- a/packages/mql-typescript/tests/accumulator/bottom.spec.ts +++ b/packages/mql-typescript/tests/accumulator/bottom.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/bottomN.spec.ts b/packages/mql-typescript/tests/accumulator/bottomN.spec.ts index 7f14d240..bc9c5a99 100644 --- a/packages/mql-typescript/tests/accumulator/bottomN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/bottomN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/count.spec.ts b/packages/mql-typescript/tests/accumulator/count.spec.ts index 9fd9e056..02135e48 100644 --- a/packages/mql-typescript/tests/accumulator/count.spec.ts +++ b/packages/mql-typescript/tests/accumulator/count.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts b/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts index fcee94e0..876906e3 100644 --- a/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts +++ b/packages/mql-typescript/tests/accumulator/covariancePop.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts b/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts index 9814d962..9c636134 100644 --- a/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts +++ b/packages/mql-typescript/tests/accumulator/covarianceSamp.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/denseRank.spec.ts b/packages/mql-typescript/tests/accumulator/denseRank.spec.ts index 8c67d70a..ffe86cc1 100644 --- a/packages/mql-typescript/tests/accumulator/denseRank.spec.ts +++ b/packages/mql-typescript/tests/accumulator/denseRank.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/derivative.spec.ts b/packages/mql-typescript/tests/accumulator/derivative.spec.ts index 1271fb87..f6b407a5 100644 --- a/packages/mql-typescript/tests/accumulator/derivative.spec.ts +++ b/packages/mql-typescript/tests/accumulator/derivative.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts b/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts index 8d700b0d..6fe0ae2a 100644 --- a/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts +++ b/packages/mql-typescript/tests/accumulator/documentNumber.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts b/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts index f80c9fae..58dbc746 100644 --- a/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts +++ b/packages/mql-typescript/tests/accumulator/expMovingAvg.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/first.spec.ts b/packages/mql-typescript/tests/accumulator/first.spec.ts index 4ea40497..dd25ca40 100644 --- a/packages/mql-typescript/tests/accumulator/first.spec.ts +++ b/packages/mql-typescript/tests/accumulator/first.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/firstN.spec.ts b/packages/mql-typescript/tests/accumulator/firstN.spec.ts index fb674ebd..ed5c0e6c 100644 --- a/packages/mql-typescript/tests/accumulator/firstN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/firstN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/integral.spec.ts b/packages/mql-typescript/tests/accumulator/integral.spec.ts index b1a1dc69..7e09c337 100644 --- a/packages/mql-typescript/tests/accumulator/integral.spec.ts +++ b/packages/mql-typescript/tests/accumulator/integral.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/last.spec.ts b/packages/mql-typescript/tests/accumulator/last.spec.ts index 232c1726..26a5228e 100644 --- a/packages/mql-typescript/tests/accumulator/last.spec.ts +++ b/packages/mql-typescript/tests/accumulator/last.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/lastN.spec.ts b/packages/mql-typescript/tests/accumulator/lastN.spec.ts index d698de98..0624ceee 100644 --- a/packages/mql-typescript/tests/accumulator/lastN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/lastN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/linearFill.spec.ts b/packages/mql-typescript/tests/accumulator/linearFill.spec.ts index 8528ebf0..6a876dac 100644 --- a/packages/mql-typescript/tests/accumulator/linearFill.spec.ts +++ b/packages/mql-typescript/tests/accumulator/linearFill.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/locf.spec.ts b/packages/mql-typescript/tests/accumulator/locf.spec.ts index 3dda84a6..61411886 100644 --- a/packages/mql-typescript/tests/accumulator/locf.spec.ts +++ b/packages/mql-typescript/tests/accumulator/locf.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/max.spec.ts b/packages/mql-typescript/tests/accumulator/max.spec.ts index 140ce308..d9648ea1 100644 --- a/packages/mql-typescript/tests/accumulator/max.spec.ts +++ b/packages/mql-typescript/tests/accumulator/max.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/maxN.spec.ts b/packages/mql-typescript/tests/accumulator/maxN.spec.ts index 139ba56d..1720f06e 100644 --- a/packages/mql-typescript/tests/accumulator/maxN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/maxN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/median.spec.ts b/packages/mql-typescript/tests/accumulator/median.spec.ts index eca33b34..e63c7dbe 100644 --- a/packages/mql-typescript/tests/accumulator/median.spec.ts +++ b/packages/mql-typescript/tests/accumulator/median.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts b/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts index 9b035b18..bb795d59 100644 --- a/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts +++ b/packages/mql-typescript/tests/accumulator/mergeObjects.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/min.spec.ts b/packages/mql-typescript/tests/accumulator/min.spec.ts index 2de7e3e8..a28ea844 100644 --- a/packages/mql-typescript/tests/accumulator/min.spec.ts +++ b/packages/mql-typescript/tests/accumulator/min.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/minN.spec.ts b/packages/mql-typescript/tests/accumulator/minN.spec.ts index b235aa50..cae5b3c9 100644 --- a/packages/mql-typescript/tests/accumulator/minN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/minN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/percentile.spec.ts b/packages/mql-typescript/tests/accumulator/percentile.spec.ts index 3c9062cf..a7ca67da 100644 --- a/packages/mql-typescript/tests/accumulator/percentile.spec.ts +++ b/packages/mql-typescript/tests/accumulator/percentile.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/push.spec.ts b/packages/mql-typescript/tests/accumulator/push.spec.ts index 875d4db6..5ec8f4ee 100644 --- a/packages/mql-typescript/tests/accumulator/push.spec.ts +++ b/packages/mql-typescript/tests/accumulator/push.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/rank.spec.ts b/packages/mql-typescript/tests/accumulator/rank.spec.ts index a6de9abd..eec43730 100644 --- a/packages/mql-typescript/tests/accumulator/rank.spec.ts +++ b/packages/mql-typescript/tests/accumulator/rank.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/shift.spec.ts b/packages/mql-typescript/tests/accumulator/shift.spec.ts index dbe85d1c..099acc3e 100644 --- a/packages/mql-typescript/tests/accumulator/shift.spec.ts +++ b/packages/mql-typescript/tests/accumulator/shift.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts b/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts index cbe179bf..9bca0054 100644 --- a/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts +++ b/packages/mql-typescript/tests/accumulator/stdDevPop.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts b/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts index 2797feed..a0a25352 100644 --- a/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts +++ b/packages/mql-typescript/tests/accumulator/stdDevSamp.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/sum.spec.ts b/packages/mql-typescript/tests/accumulator/sum.spec.ts index 7f0f2085..bf18076f 100644 --- a/packages/mql-typescript/tests/accumulator/sum.spec.ts +++ b/packages/mql-typescript/tests/accumulator/sum.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/top.spec.ts b/packages/mql-typescript/tests/accumulator/top.spec.ts index 71ad4209..6da6e808 100644 --- a/packages/mql-typescript/tests/accumulator/top.spec.ts +++ b/packages/mql-typescript/tests/accumulator/top.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/accumulator/topN.spec.ts b/packages/mql-typescript/tests/accumulator/topN.spec.ts index 03c2400c..5916a4fc 100644 --- a/packages/mql-typescript/tests/accumulator/topN.spec.ts +++ b/packages/mql-typescript/tests/accumulator/topN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/abs.spec.ts b/packages/mql-typescript/tests/expression/abs.spec.ts index d454b5b3..c0aa4e66 100644 --- a/packages/mql-typescript/tests/expression/abs.spec.ts +++ b/packages/mql-typescript/tests/expression/abs.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/acos.spec.ts b/packages/mql-typescript/tests/expression/acos.spec.ts index a283e0cc..07b7f090 100644 --- a/packages/mql-typescript/tests/expression/acos.spec.ts +++ b/packages/mql-typescript/tests/expression/acos.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/acosh.spec.ts b/packages/mql-typescript/tests/expression/acosh.spec.ts index fce2463f..5ea38518 100644 --- a/packages/mql-typescript/tests/expression/acosh.spec.ts +++ b/packages/mql-typescript/tests/expression/acosh.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/add.spec.ts b/packages/mql-typescript/tests/expression/add.spec.ts index 4c584058..28b4fd1d 100644 --- a/packages/mql-typescript/tests/expression/add.spec.ts +++ b/packages/mql-typescript/tests/expression/add.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts b/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts index c28b7721..d44ba16e 100644 --- a/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts +++ b/packages/mql-typescript/tests/expression/allElementsTrue.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/and.spec.ts b/packages/mql-typescript/tests/expression/and.spec.ts index 7b4da00e..2b2eb130 100644 --- a/packages/mql-typescript/tests/expression/and.spec.ts +++ b/packages/mql-typescript/tests/expression/and.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts b/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts index f06adac3..ed54bb67 100644 --- a/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts +++ b/packages/mql-typescript/tests/expression/anyElementTrue.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts b/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts index 13a935c2..a414ce2d 100644 --- a/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts +++ b/packages/mql-typescript/tests/expression/arrayElemAt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/arrayToObject.spec.ts b/packages/mql-typescript/tests/expression/arrayToObject.spec.ts index 8b4118d4..fccb99db 100644 --- a/packages/mql-typescript/tests/expression/arrayToObject.spec.ts +++ b/packages/mql-typescript/tests/expression/arrayToObject.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/asin.spec.ts b/packages/mql-typescript/tests/expression/asin.spec.ts index 9fbe6463..4c214087 100644 --- a/packages/mql-typescript/tests/expression/asin.spec.ts +++ b/packages/mql-typescript/tests/expression/asin.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/asinh.spec.ts b/packages/mql-typescript/tests/expression/asinh.spec.ts index abb854cc..ee28c0e0 100644 --- a/packages/mql-typescript/tests/expression/asinh.spec.ts +++ b/packages/mql-typescript/tests/expression/asinh.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/atan.spec.ts b/packages/mql-typescript/tests/expression/atan.spec.ts index 34e17384..6541dd4f 100644 --- a/packages/mql-typescript/tests/expression/atan.spec.ts +++ b/packages/mql-typescript/tests/expression/atan.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/atan2.spec.ts b/packages/mql-typescript/tests/expression/atan2.spec.ts index 879d9697..b0c8576b 100644 --- a/packages/mql-typescript/tests/expression/atan2.spec.ts +++ b/packages/mql-typescript/tests/expression/atan2.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/atanh.spec.ts b/packages/mql-typescript/tests/expression/atanh.spec.ts index 54f9ee0e..b7f2ab72 100644 --- a/packages/mql-typescript/tests/expression/atanh.spec.ts +++ b/packages/mql-typescript/tests/expression/atanh.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/avg.spec.ts b/packages/mql-typescript/tests/expression/avg.spec.ts index 2b9e3643..60f4acd0 100644 --- a/packages/mql-typescript/tests/expression/avg.spec.ts +++ b/packages/mql-typescript/tests/expression/avg.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/binarySize.spec.ts b/packages/mql-typescript/tests/expression/binarySize.spec.ts index e1da33dc..7b084cae 100644 --- a/packages/mql-typescript/tests/expression/binarySize.spec.ts +++ b/packages/mql-typescript/tests/expression/binarySize.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/bitAnd.spec.ts b/packages/mql-typescript/tests/expression/bitAnd.spec.ts index 6217a0ef..cf9aa01e 100644 --- a/packages/mql-typescript/tests/expression/bitAnd.spec.ts +++ b/packages/mql-typescript/tests/expression/bitAnd.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/bitNot.spec.ts b/packages/mql-typescript/tests/expression/bitNot.spec.ts index fa772acf..3892aafd 100644 --- a/packages/mql-typescript/tests/expression/bitNot.spec.ts +++ b/packages/mql-typescript/tests/expression/bitNot.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/bitOr.spec.ts b/packages/mql-typescript/tests/expression/bitOr.spec.ts index 7901c5c9..4563bbc0 100644 --- a/packages/mql-typescript/tests/expression/bitOr.spec.ts +++ b/packages/mql-typescript/tests/expression/bitOr.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/bitXor.spec.ts b/packages/mql-typescript/tests/expression/bitXor.spec.ts index cb0b2984..9e10eb5b 100644 --- a/packages/mql-typescript/tests/expression/bitXor.spec.ts +++ b/packages/mql-typescript/tests/expression/bitXor.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/bsonSize.spec.ts b/packages/mql-typescript/tests/expression/bsonSize.spec.ts index d5800938..44f1392c 100644 --- a/packages/mql-typescript/tests/expression/bsonSize.spec.ts +++ b/packages/mql-typescript/tests/expression/bsonSize.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/case.spec.ts b/packages/mql-typescript/tests/expression/case.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/expression/case.spec.ts +++ b/packages/mql-typescript/tests/expression/case.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/ceil.spec.ts b/packages/mql-typescript/tests/expression/ceil.spec.ts index 5234dfde..516d7254 100644 --- a/packages/mql-typescript/tests/expression/ceil.spec.ts +++ b/packages/mql-typescript/tests/expression/ceil.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cmp.spec.ts b/packages/mql-typescript/tests/expression/cmp.spec.ts index 745303bf..47ace6d6 100644 --- a/packages/mql-typescript/tests/expression/cmp.spec.ts +++ b/packages/mql-typescript/tests/expression/cmp.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/concat.spec.ts b/packages/mql-typescript/tests/expression/concat.spec.ts index 8cf96c40..f5a938b9 100644 --- a/packages/mql-typescript/tests/expression/concat.spec.ts +++ b/packages/mql-typescript/tests/expression/concat.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/concatArrays.spec.ts b/packages/mql-typescript/tests/expression/concatArrays.spec.ts index 1d9f7f43..e812f009 100644 --- a/packages/mql-typescript/tests/expression/concatArrays.spec.ts +++ b/packages/mql-typescript/tests/expression/concatArrays.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cond.spec.ts b/packages/mql-typescript/tests/expression/cond.spec.ts index 107e5992..95298d28 100644 --- a/packages/mql-typescript/tests/expression/cond.spec.ts +++ b/packages/mql-typescript/tests/expression/cond.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/convert.spec.ts b/packages/mql-typescript/tests/expression/convert.spec.ts index bc53c0ad..0e111048 100644 --- a/packages/mql-typescript/tests/expression/convert.spec.ts +++ b/packages/mql-typescript/tests/expression/convert.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cos.spec.ts b/packages/mql-typescript/tests/expression/cos.spec.ts index 60f7968b..0d605509 100644 --- a/packages/mql-typescript/tests/expression/cos.spec.ts +++ b/packages/mql-typescript/tests/expression/cos.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/cosh.spec.ts b/packages/mql-typescript/tests/expression/cosh.spec.ts index cb617f5a..2a8382b2 100644 --- a/packages/mql-typescript/tests/expression/cosh.spec.ts +++ b/packages/mql-typescript/tests/expression/cosh.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateAdd.spec.ts b/packages/mql-typescript/tests/expression/dateAdd.spec.ts index 60ae9d20..49ab66e1 100644 --- a/packages/mql-typescript/tests/expression/dateAdd.spec.ts +++ b/packages/mql-typescript/tests/expression/dateAdd.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateDiff.spec.ts b/packages/mql-typescript/tests/expression/dateDiff.spec.ts index a93935b1..ba5b0e0f 100644 --- a/packages/mql-typescript/tests/expression/dateDiff.spec.ts +++ b/packages/mql-typescript/tests/expression/dateDiff.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateFromParts.spec.ts b/packages/mql-typescript/tests/expression/dateFromParts.spec.ts index 86d78a7b..539758f2 100644 --- a/packages/mql-typescript/tests/expression/dateFromParts.spec.ts +++ b/packages/mql-typescript/tests/expression/dateFromParts.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateFromString.spec.ts b/packages/mql-typescript/tests/expression/dateFromString.spec.ts index 36138279..6ecaadf2 100644 --- a/packages/mql-typescript/tests/expression/dateFromString.spec.ts +++ b/packages/mql-typescript/tests/expression/dateFromString.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** @@ -71,7 +74,7 @@ function test2() { $dateFromString: { dateString: '$date', timezone: '$timezone', - onNull: {}, + onNull: new Date('1970-01-01T00:00:00.000Z'), }, }, }, diff --git a/packages/mql-typescript/tests/expression/dateSubtract.spec.ts b/packages/mql-typescript/tests/expression/dateSubtract.spec.ts index b65ea7c5..1824a2cf 100644 --- a/packages/mql-typescript/tests/expression/dateSubtract.spec.ts +++ b/packages/mql-typescript/tests/expression/dateSubtract.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateToParts.spec.ts b/packages/mql-typescript/tests/expression/dateToParts.spec.ts index d34f7dca..3726d0e7 100644 --- a/packages/mql-typescript/tests/expression/dateToParts.spec.ts +++ b/packages/mql-typescript/tests/expression/dateToParts.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateToString.spec.ts b/packages/mql-typescript/tests/expression/dateToString.spec.ts index 4031ceaf..199db9b0 100644 --- a/packages/mql-typescript/tests/expression/dateToString.spec.ts +++ b/packages/mql-typescript/tests/expression/dateToString.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dateTrunc.spec.ts b/packages/mql-typescript/tests/expression/dateTrunc.spec.ts index 418cfc04..1468d52b 100644 --- a/packages/mql-typescript/tests/expression/dateTrunc.spec.ts +++ b/packages/mql-typescript/tests/expression/dateTrunc.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts b/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts index 5294adbd..4e7ad422 100644 --- a/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts +++ b/packages/mql-typescript/tests/expression/dayOfMonth.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts b/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts index c0fe354e..96a6b68c 100644 --- a/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts +++ b/packages/mql-typescript/tests/expression/dayOfWeek.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/dayOfYear.spec.ts b/packages/mql-typescript/tests/expression/dayOfYear.spec.ts index a643947e..04698508 100644 --- a/packages/mql-typescript/tests/expression/dayOfYear.spec.ts +++ b/packages/mql-typescript/tests/expression/dayOfYear.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts b/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts index 85244a1d..a5d2bfd8 100644 --- a/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts +++ b/packages/mql-typescript/tests/expression/degreesToRadians.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/divide.spec.ts b/packages/mql-typescript/tests/expression/divide.spec.ts index a47d89fc..6ac95000 100644 --- a/packages/mql-typescript/tests/expression/divide.spec.ts +++ b/packages/mql-typescript/tests/expression/divide.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/eq.spec.ts b/packages/mql-typescript/tests/expression/eq.spec.ts index 46072e56..2eac79f3 100644 --- a/packages/mql-typescript/tests/expression/eq.spec.ts +++ b/packages/mql-typescript/tests/expression/eq.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/exp.spec.ts b/packages/mql-typescript/tests/expression/exp.spec.ts index fe518e1f..073e282c 100644 --- a/packages/mql-typescript/tests/expression/exp.spec.ts +++ b/packages/mql-typescript/tests/expression/exp.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/filter.spec.ts b/packages/mql-typescript/tests/expression/filter.spec.ts index 9b291ad1..f536c126 100644 --- a/packages/mql-typescript/tests/expression/filter.spec.ts +++ b/packages/mql-typescript/tests/expression/filter.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/first.spec.ts b/packages/mql-typescript/tests/expression/first.spec.ts index e41efc43..d4648752 100644 --- a/packages/mql-typescript/tests/expression/first.spec.ts +++ b/packages/mql-typescript/tests/expression/first.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/firstN.spec.ts b/packages/mql-typescript/tests/expression/firstN.spec.ts index cc45c5e9..b206aa1e 100644 --- a/packages/mql-typescript/tests/expression/firstN.spec.ts +++ b/packages/mql-typescript/tests/expression/firstN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/floor.spec.ts b/packages/mql-typescript/tests/expression/floor.spec.ts index 3f1bc29b..2b8cece1 100644 --- a/packages/mql-typescript/tests/expression/floor.spec.ts +++ b/packages/mql-typescript/tests/expression/floor.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/function.spec.ts b/packages/mql-typescript/tests/expression/function.spec.ts index d5aa8c18..3dbab867 100644 --- a/packages/mql-typescript/tests/expression/function.spec.ts +++ b/packages/mql-typescript/tests/expression/function.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/getField.spec.ts b/packages/mql-typescript/tests/expression/getField.spec.ts index 755467f1..f85709f5 100644 --- a/packages/mql-typescript/tests/expression/getField.spec.ts +++ b/packages/mql-typescript/tests/expression/getField.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/gt.spec.ts b/packages/mql-typescript/tests/expression/gt.spec.ts index 7bda8360..7e2bc2a6 100644 --- a/packages/mql-typescript/tests/expression/gt.spec.ts +++ b/packages/mql-typescript/tests/expression/gt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/gte.spec.ts b/packages/mql-typescript/tests/expression/gte.spec.ts index 8c25417b..89438d5a 100644 --- a/packages/mql-typescript/tests/expression/gte.spec.ts +++ b/packages/mql-typescript/tests/expression/gte.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/hour.spec.ts b/packages/mql-typescript/tests/expression/hour.spec.ts index 61bbc4ff..cf65779c 100644 --- a/packages/mql-typescript/tests/expression/hour.spec.ts +++ b/packages/mql-typescript/tests/expression/hour.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/ifNull.spec.ts b/packages/mql-typescript/tests/expression/ifNull.spec.ts index 1a3e9b64..aee239c1 100644 --- a/packages/mql-typescript/tests/expression/ifNull.spec.ts +++ b/packages/mql-typescript/tests/expression/ifNull.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/in.spec.ts b/packages/mql-typescript/tests/expression/in.spec.ts index b9ad29e9..62c46365 100644 --- a/packages/mql-typescript/tests/expression/in.spec.ts +++ b/packages/mql-typescript/tests/expression/in.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/indexOfArray.spec.ts b/packages/mql-typescript/tests/expression/indexOfArray.spec.ts index 0f0b9e98..b821ed19 100644 --- a/packages/mql-typescript/tests/expression/indexOfArray.spec.ts +++ b/packages/mql-typescript/tests/expression/indexOfArray.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts b/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts index 3671758d..c0f2b1d2 100644 --- a/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts +++ b/packages/mql-typescript/tests/expression/indexOfBytes.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/indexOfCP.spec.ts b/packages/mql-typescript/tests/expression/indexOfCP.spec.ts index 0219944e..971c4584 100644 --- a/packages/mql-typescript/tests/expression/indexOfCP.spec.ts +++ b/packages/mql-typescript/tests/expression/indexOfCP.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isArray.spec.ts b/packages/mql-typescript/tests/expression/isArray.spec.ts index d769071a..4d311ebd 100644 --- a/packages/mql-typescript/tests/expression/isArray.spec.ts +++ b/packages/mql-typescript/tests/expression/isArray.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isNumber.spec.ts b/packages/mql-typescript/tests/expression/isNumber.spec.ts index 85760bfd..8e092f6d 100644 --- a/packages/mql-typescript/tests/expression/isNumber.spec.ts +++ b/packages/mql-typescript/tests/expression/isNumber.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts b/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts index 83fe3315..4c3824cd 100644 --- a/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts +++ b/packages/mql-typescript/tests/expression/isoDayOfWeek.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isoWeek.spec.ts b/packages/mql-typescript/tests/expression/isoWeek.spec.ts index 3dd1bca0..4673865f 100644 --- a/packages/mql-typescript/tests/expression/isoWeek.spec.ts +++ b/packages/mql-typescript/tests/expression/isoWeek.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts b/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts index afaac1fd..6f78e85a 100644 --- a/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts +++ b/packages/mql-typescript/tests/expression/isoWeekYear.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/last.spec.ts b/packages/mql-typescript/tests/expression/last.spec.ts index c3e478c7..a8358b6e 100644 --- a/packages/mql-typescript/tests/expression/last.spec.ts +++ b/packages/mql-typescript/tests/expression/last.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/lastN.spec.ts b/packages/mql-typescript/tests/expression/lastN.spec.ts index 0585393d..69322cb3 100644 --- a/packages/mql-typescript/tests/expression/lastN.spec.ts +++ b/packages/mql-typescript/tests/expression/lastN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/let.spec.ts b/packages/mql-typescript/tests/expression/let.spec.ts index 65e51a18..65172542 100644 --- a/packages/mql-typescript/tests/expression/let.spec.ts +++ b/packages/mql-typescript/tests/expression/let.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/literal.spec.ts b/packages/mql-typescript/tests/expression/literal.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/expression/literal.spec.ts +++ b/packages/mql-typescript/tests/expression/literal.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/ln.spec.ts b/packages/mql-typescript/tests/expression/ln.spec.ts index d17a4b82..ee631b92 100644 --- a/packages/mql-typescript/tests/expression/ln.spec.ts +++ b/packages/mql-typescript/tests/expression/ln.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/log.spec.ts b/packages/mql-typescript/tests/expression/log.spec.ts index b7b857ff..416cc86e 100644 --- a/packages/mql-typescript/tests/expression/log.spec.ts +++ b/packages/mql-typescript/tests/expression/log.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/log10.spec.ts b/packages/mql-typescript/tests/expression/log10.spec.ts index 784ebc0b..7c11e7ac 100644 --- a/packages/mql-typescript/tests/expression/log10.spec.ts +++ b/packages/mql-typescript/tests/expression/log10.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/lt.spec.ts b/packages/mql-typescript/tests/expression/lt.spec.ts index 9f5b44a2..751b1dca 100644 --- a/packages/mql-typescript/tests/expression/lt.spec.ts +++ b/packages/mql-typescript/tests/expression/lt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/lte.spec.ts b/packages/mql-typescript/tests/expression/lte.spec.ts index ee106c9d..08a3243e 100644 --- a/packages/mql-typescript/tests/expression/lte.spec.ts +++ b/packages/mql-typescript/tests/expression/lte.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/ltrim.spec.ts b/packages/mql-typescript/tests/expression/ltrim.spec.ts index f11b4b76..4e83f000 100644 --- a/packages/mql-typescript/tests/expression/ltrim.spec.ts +++ b/packages/mql-typescript/tests/expression/ltrim.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/map.spec.ts b/packages/mql-typescript/tests/expression/map.spec.ts index 359e8050..ffae3cd2 100644 --- a/packages/mql-typescript/tests/expression/map.spec.ts +++ b/packages/mql-typescript/tests/expression/map.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/max.spec.ts b/packages/mql-typescript/tests/expression/max.spec.ts index 03085169..48cf3572 100644 --- a/packages/mql-typescript/tests/expression/max.spec.ts +++ b/packages/mql-typescript/tests/expression/max.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/maxN.spec.ts b/packages/mql-typescript/tests/expression/maxN.spec.ts index 111891b8..e82ff83a 100644 --- a/packages/mql-typescript/tests/expression/maxN.spec.ts +++ b/packages/mql-typescript/tests/expression/maxN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/median.spec.ts b/packages/mql-typescript/tests/expression/median.spec.ts index 4c528844..e1fbfbaa 100644 --- a/packages/mql-typescript/tests/expression/median.spec.ts +++ b/packages/mql-typescript/tests/expression/median.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/mergeObjects.spec.ts b/packages/mql-typescript/tests/expression/mergeObjects.spec.ts index 858bfc41..4ae463a8 100644 --- a/packages/mql-typescript/tests/expression/mergeObjects.spec.ts +++ b/packages/mql-typescript/tests/expression/mergeObjects.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/meta.spec.ts b/packages/mql-typescript/tests/expression/meta.spec.ts index 3cbea8c4..6f64f47e 100644 --- a/packages/mql-typescript/tests/expression/meta.spec.ts +++ b/packages/mql-typescript/tests/expression/meta.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/millisecond.spec.ts b/packages/mql-typescript/tests/expression/millisecond.spec.ts index a20983e4..6e3a758b 100644 --- a/packages/mql-typescript/tests/expression/millisecond.spec.ts +++ b/packages/mql-typescript/tests/expression/millisecond.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/min.spec.ts b/packages/mql-typescript/tests/expression/min.spec.ts index d23741b3..a7bb280a 100644 --- a/packages/mql-typescript/tests/expression/min.spec.ts +++ b/packages/mql-typescript/tests/expression/min.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/minN.spec.ts b/packages/mql-typescript/tests/expression/minN.spec.ts index 1dda1442..895f3070 100644 --- a/packages/mql-typescript/tests/expression/minN.spec.ts +++ b/packages/mql-typescript/tests/expression/minN.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/minute.spec.ts b/packages/mql-typescript/tests/expression/minute.spec.ts index ac3e47fe..d3b7d0cc 100644 --- a/packages/mql-typescript/tests/expression/minute.spec.ts +++ b/packages/mql-typescript/tests/expression/minute.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/mod.spec.ts b/packages/mql-typescript/tests/expression/mod.spec.ts index 2287bcd9..61fb2ee9 100644 --- a/packages/mql-typescript/tests/expression/mod.spec.ts +++ b/packages/mql-typescript/tests/expression/mod.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/month.spec.ts b/packages/mql-typescript/tests/expression/month.spec.ts index 1901be07..a4274cc7 100644 --- a/packages/mql-typescript/tests/expression/month.spec.ts +++ b/packages/mql-typescript/tests/expression/month.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/multiply.spec.ts b/packages/mql-typescript/tests/expression/multiply.spec.ts index 7e434a55..59216f78 100644 --- a/packages/mql-typescript/tests/expression/multiply.spec.ts +++ b/packages/mql-typescript/tests/expression/multiply.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/ne.spec.ts b/packages/mql-typescript/tests/expression/ne.spec.ts index 41e51051..42145949 100644 --- a/packages/mql-typescript/tests/expression/ne.spec.ts +++ b/packages/mql-typescript/tests/expression/ne.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/not.spec.ts b/packages/mql-typescript/tests/expression/not.spec.ts index 494c51fb..6b57422a 100644 --- a/packages/mql-typescript/tests/expression/not.spec.ts +++ b/packages/mql-typescript/tests/expression/not.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/objectToArray.spec.ts b/packages/mql-typescript/tests/expression/objectToArray.spec.ts index 4bfd7e7f..e2e62df7 100644 --- a/packages/mql-typescript/tests/expression/objectToArray.spec.ts +++ b/packages/mql-typescript/tests/expression/objectToArray.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/or.spec.ts b/packages/mql-typescript/tests/expression/or.spec.ts index adc8cae0..8cc80e3b 100644 --- a/packages/mql-typescript/tests/expression/or.spec.ts +++ b/packages/mql-typescript/tests/expression/or.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/percentile.spec.ts b/packages/mql-typescript/tests/expression/percentile.spec.ts index 34c4d0f0..e7dcdfcd 100644 --- a/packages/mql-typescript/tests/expression/percentile.spec.ts +++ b/packages/mql-typescript/tests/expression/percentile.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/pow.spec.ts b/packages/mql-typescript/tests/expression/pow.spec.ts index 46486120..255d2764 100644 --- a/packages/mql-typescript/tests/expression/pow.spec.ts +++ b/packages/mql-typescript/tests/expression/pow.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts b/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts index bea307f0..7b735875 100644 --- a/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts +++ b/packages/mql-typescript/tests/expression/radiansToDegrees.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/rand.spec.ts b/packages/mql-typescript/tests/expression/rand.spec.ts index 3e4515a4..5f3feb88 100644 --- a/packages/mql-typescript/tests/expression/rand.spec.ts +++ b/packages/mql-typescript/tests/expression/rand.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/range.spec.ts b/packages/mql-typescript/tests/expression/range.spec.ts index c935e11c..b619532c 100644 --- a/packages/mql-typescript/tests/expression/range.spec.ts +++ b/packages/mql-typescript/tests/expression/range.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/reduce.spec.ts b/packages/mql-typescript/tests/expression/reduce.spec.ts index 1c0d558a..66079962 100644 --- a/packages/mql-typescript/tests/expression/reduce.spec.ts +++ b/packages/mql-typescript/tests/expression/reduce.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/regexFind.spec.ts b/packages/mql-typescript/tests/expression/regexFind.spec.ts index 9ef15abf..4519ac85 100644 --- a/packages/mql-typescript/tests/expression/regexFind.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFind.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts index 34e20bb5..8044aab0 100644 --- a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/regexMatch.spec.ts b/packages/mql-typescript/tests/expression/regexMatch.spec.ts index 1760035a..6adcf785 100644 --- a/packages/mql-typescript/tests/expression/regexMatch.spec.ts +++ b/packages/mql-typescript/tests/expression/regexMatch.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/replaceAll.spec.ts b/packages/mql-typescript/tests/expression/replaceAll.spec.ts index 0277ab93..e1bc4153 100644 --- a/packages/mql-typescript/tests/expression/replaceAll.spec.ts +++ b/packages/mql-typescript/tests/expression/replaceAll.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/replaceOne.spec.ts b/packages/mql-typescript/tests/expression/replaceOne.spec.ts index ef3a1dba..99b1cbbe 100644 --- a/packages/mql-typescript/tests/expression/replaceOne.spec.ts +++ b/packages/mql-typescript/tests/expression/replaceOne.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/reverseArray.spec.ts b/packages/mql-typescript/tests/expression/reverseArray.spec.ts index 6efe2fc6..67cbda64 100644 --- a/packages/mql-typescript/tests/expression/reverseArray.spec.ts +++ b/packages/mql-typescript/tests/expression/reverseArray.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/round.spec.ts b/packages/mql-typescript/tests/expression/round.spec.ts index 8d28a6f2..826dda19 100644 --- a/packages/mql-typescript/tests/expression/round.spec.ts +++ b/packages/mql-typescript/tests/expression/round.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/rtrim.spec.ts b/packages/mql-typescript/tests/expression/rtrim.spec.ts index 767b9767..d73c6661 100644 --- a/packages/mql-typescript/tests/expression/rtrim.spec.ts +++ b/packages/mql-typescript/tests/expression/rtrim.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/second.spec.ts b/packages/mql-typescript/tests/expression/second.spec.ts index 9af9a4e9..f0f78e40 100644 --- a/packages/mql-typescript/tests/expression/second.spec.ts +++ b/packages/mql-typescript/tests/expression/second.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setDifference.spec.ts b/packages/mql-typescript/tests/expression/setDifference.spec.ts index a8a96ccf..c34a2e32 100644 --- a/packages/mql-typescript/tests/expression/setDifference.spec.ts +++ b/packages/mql-typescript/tests/expression/setDifference.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setEquals.spec.ts b/packages/mql-typescript/tests/expression/setEquals.spec.ts index 6d09fb4b..7d313d6c 100644 --- a/packages/mql-typescript/tests/expression/setEquals.spec.ts +++ b/packages/mql-typescript/tests/expression/setEquals.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setField.spec.ts b/packages/mql-typescript/tests/expression/setField.spec.ts index 34c6c774..ea0b138f 100644 --- a/packages/mql-typescript/tests/expression/setField.spec.ts +++ b/packages/mql-typescript/tests/expression/setField.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setIntersection.spec.ts b/packages/mql-typescript/tests/expression/setIntersection.spec.ts index ada09279..ac42d695 100644 --- a/packages/mql-typescript/tests/expression/setIntersection.spec.ts +++ b/packages/mql-typescript/tests/expression/setIntersection.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setIsSubset.spec.ts b/packages/mql-typescript/tests/expression/setIsSubset.spec.ts index 0a599b8d..9c851aec 100644 --- a/packages/mql-typescript/tests/expression/setIsSubset.spec.ts +++ b/packages/mql-typescript/tests/expression/setIsSubset.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/setUnion.spec.ts b/packages/mql-typescript/tests/expression/setUnion.spec.ts index 77a573b5..d209d755 100644 --- a/packages/mql-typescript/tests/expression/setUnion.spec.ts +++ b/packages/mql-typescript/tests/expression/setUnion.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sin.spec.ts b/packages/mql-typescript/tests/expression/sin.spec.ts index dc661071..489a476c 100644 --- a/packages/mql-typescript/tests/expression/sin.spec.ts +++ b/packages/mql-typescript/tests/expression/sin.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sinh.spec.ts b/packages/mql-typescript/tests/expression/sinh.spec.ts index eebfec60..14504d0f 100644 --- a/packages/mql-typescript/tests/expression/sinh.spec.ts +++ b/packages/mql-typescript/tests/expression/sinh.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/size.spec.ts b/packages/mql-typescript/tests/expression/size.spec.ts index 22802d93..43f300db 100644 --- a/packages/mql-typescript/tests/expression/size.spec.ts +++ b/packages/mql-typescript/tests/expression/size.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/slice.spec.ts b/packages/mql-typescript/tests/expression/slice.spec.ts index 8071dab5..33bd1b29 100644 --- a/packages/mql-typescript/tests/expression/slice.spec.ts +++ b/packages/mql-typescript/tests/expression/slice.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sortArray.spec.ts b/packages/mql-typescript/tests/expression/sortArray.spec.ts index 2c8bd34c..535d9c25 100644 --- a/packages/mql-typescript/tests/expression/sortArray.spec.ts +++ b/packages/mql-typescript/tests/expression/sortArray.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/split.spec.ts b/packages/mql-typescript/tests/expression/split.spec.ts index c68b88ad..ab5d5a42 100644 --- a/packages/mql-typescript/tests/expression/split.spec.ts +++ b/packages/mql-typescript/tests/expression/split.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sqrt.spec.ts b/packages/mql-typescript/tests/expression/sqrt.spec.ts index dd2f99cb..412a531d 100644 --- a/packages/mql-typescript/tests/expression/sqrt.spec.ts +++ b/packages/mql-typescript/tests/expression/sqrt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/stdDevPop.spec.ts b/packages/mql-typescript/tests/expression/stdDevPop.spec.ts index 96a5ccbc..7cf03c38 100644 --- a/packages/mql-typescript/tests/expression/stdDevPop.spec.ts +++ b/packages/mql-typescript/tests/expression/stdDevPop.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts b/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts +++ b/packages/mql-typescript/tests/expression/stdDevSamp.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/expression/strLenBytes.spec.ts b/packages/mql-typescript/tests/expression/strLenBytes.spec.ts index 8dcdb74f..c789d765 100644 --- a/packages/mql-typescript/tests/expression/strLenBytes.spec.ts +++ b/packages/mql-typescript/tests/expression/strLenBytes.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/strLenCP.spec.ts b/packages/mql-typescript/tests/expression/strLenCP.spec.ts index 5f3f481a..3ae8f9ed 100644 --- a/packages/mql-typescript/tests/expression/strLenCP.spec.ts +++ b/packages/mql-typescript/tests/expression/strLenCP.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/strcasecmp.spec.ts b/packages/mql-typescript/tests/expression/strcasecmp.spec.ts index 923d8f36..492fe1fb 100644 --- a/packages/mql-typescript/tests/expression/strcasecmp.spec.ts +++ b/packages/mql-typescript/tests/expression/strcasecmp.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/substr.spec.ts b/packages/mql-typescript/tests/expression/substr.spec.ts index c16cb4e1..d78f29e7 100644 --- a/packages/mql-typescript/tests/expression/substr.spec.ts +++ b/packages/mql-typescript/tests/expression/substr.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/substrBytes.spec.ts b/packages/mql-typescript/tests/expression/substrBytes.spec.ts index 67dce8c0..f30ab99a 100644 --- a/packages/mql-typescript/tests/expression/substrBytes.spec.ts +++ b/packages/mql-typescript/tests/expression/substrBytes.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/substrCP.spec.ts b/packages/mql-typescript/tests/expression/substrCP.spec.ts index bc5c0c40..f200d748 100644 --- a/packages/mql-typescript/tests/expression/substrCP.spec.ts +++ b/packages/mql-typescript/tests/expression/substrCP.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/subtract.spec.ts b/packages/mql-typescript/tests/expression/subtract.spec.ts index a9846122..db0ff9f3 100644 --- a/packages/mql-typescript/tests/expression/subtract.spec.ts +++ b/packages/mql-typescript/tests/expression/subtract.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/sum.spec.ts b/packages/mql-typescript/tests/expression/sum.spec.ts index 831eb3b3..34aa8557 100644 --- a/packages/mql-typescript/tests/expression/sum.spec.ts +++ b/packages/mql-typescript/tests/expression/sum.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/switch.spec.ts b/packages/mql-typescript/tests/expression/switch.spec.ts index fae185a5..ec47427d 100644 --- a/packages/mql-typescript/tests/expression/switch.spec.ts +++ b/packages/mql-typescript/tests/expression/switch.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tan.spec.ts b/packages/mql-typescript/tests/expression/tan.spec.ts index ba9e7546..4474b5f3 100644 --- a/packages/mql-typescript/tests/expression/tan.spec.ts +++ b/packages/mql-typescript/tests/expression/tan.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tanh.spec.ts b/packages/mql-typescript/tests/expression/tanh.spec.ts index 7877ba83..fe32da25 100644 --- a/packages/mql-typescript/tests/expression/tanh.spec.ts +++ b/packages/mql-typescript/tests/expression/tanh.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toBool.spec.ts b/packages/mql-typescript/tests/expression/toBool.spec.ts index e24d1ca8..9b315bce 100644 --- a/packages/mql-typescript/tests/expression/toBool.spec.ts +++ b/packages/mql-typescript/tests/expression/toBool.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toDate.spec.ts b/packages/mql-typescript/tests/expression/toDate.spec.ts index e3b836b7..746b5f2e 100644 --- a/packages/mql-typescript/tests/expression/toDate.spec.ts +++ b/packages/mql-typescript/tests/expression/toDate.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toDecimal.spec.ts b/packages/mql-typescript/tests/expression/toDecimal.spec.ts index fc461134..f731eb8f 100644 --- a/packages/mql-typescript/tests/expression/toDecimal.spec.ts +++ b/packages/mql-typescript/tests/expression/toDecimal.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toDouble.spec.ts b/packages/mql-typescript/tests/expression/toDouble.spec.ts index fc624543..789a470a 100644 --- a/packages/mql-typescript/tests/expression/toDouble.spec.ts +++ b/packages/mql-typescript/tests/expression/toDouble.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts b/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts index 5c392326..fcb156b4 100644 --- a/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts +++ b/packages/mql-typescript/tests/expression/toHashedIndexKey.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toInt.spec.ts b/packages/mql-typescript/tests/expression/toInt.spec.ts index 66cd59fc..5b808dc4 100644 --- a/packages/mql-typescript/tests/expression/toInt.spec.ts +++ b/packages/mql-typescript/tests/expression/toInt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toLong.spec.ts b/packages/mql-typescript/tests/expression/toLong.spec.ts index 662720ea..03ac5b48 100644 --- a/packages/mql-typescript/tests/expression/toLong.spec.ts +++ b/packages/mql-typescript/tests/expression/toLong.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toLower.spec.ts b/packages/mql-typescript/tests/expression/toLower.spec.ts index 8b00d86e..a0d9f756 100644 --- a/packages/mql-typescript/tests/expression/toLower.spec.ts +++ b/packages/mql-typescript/tests/expression/toLower.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toObjectId.spec.ts b/packages/mql-typescript/tests/expression/toObjectId.spec.ts index a85e8808..4f52c63e 100644 --- a/packages/mql-typescript/tests/expression/toObjectId.spec.ts +++ b/packages/mql-typescript/tests/expression/toObjectId.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toString.spec.ts b/packages/mql-typescript/tests/expression/toString.spec.ts index c08b4bec..2f917aba 100644 --- a/packages/mql-typescript/tests/expression/toString.spec.ts +++ b/packages/mql-typescript/tests/expression/toString.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/toUpper.spec.ts b/packages/mql-typescript/tests/expression/toUpper.spec.ts index 93718cc9..60b72ff7 100644 --- a/packages/mql-typescript/tests/expression/toUpper.spec.ts +++ b/packages/mql-typescript/tests/expression/toUpper.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/trim.spec.ts b/packages/mql-typescript/tests/expression/trim.spec.ts index 8de49736..35ae396e 100644 --- a/packages/mql-typescript/tests/expression/trim.spec.ts +++ b/packages/mql-typescript/tests/expression/trim.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/trunc.spec.ts b/packages/mql-typescript/tests/expression/trunc.spec.ts index 207b1884..966d56e8 100644 --- a/packages/mql-typescript/tests/expression/trunc.spec.ts +++ b/packages/mql-typescript/tests/expression/trunc.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tsIncrement.spec.ts b/packages/mql-typescript/tests/expression/tsIncrement.spec.ts index 8c5e13e1..3e3d3607 100644 --- a/packages/mql-typescript/tests/expression/tsIncrement.spec.ts +++ b/packages/mql-typescript/tests/expression/tsIncrement.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/tsSecond.spec.ts b/packages/mql-typescript/tests/expression/tsSecond.spec.ts index fe12935d..21e27368 100644 --- a/packages/mql-typescript/tests/expression/tsSecond.spec.ts +++ b/packages/mql-typescript/tests/expression/tsSecond.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/type.spec.ts b/packages/mql-typescript/tests/expression/type.spec.ts index 1d313813..c9ff9196 100644 --- a/packages/mql-typescript/tests/expression/type.spec.ts +++ b/packages/mql-typescript/tests/expression/type.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/unsetField.spec.ts b/packages/mql-typescript/tests/expression/unsetField.spec.ts index a76dd6d3..77a56bd9 100644 --- a/packages/mql-typescript/tests/expression/unsetField.spec.ts +++ b/packages/mql-typescript/tests/expression/unsetField.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/week.spec.ts b/packages/mql-typescript/tests/expression/week.spec.ts index 48e8d9a5..acb7d5fa 100644 --- a/packages/mql-typescript/tests/expression/week.spec.ts +++ b/packages/mql-typescript/tests/expression/week.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/year.spec.ts b/packages/mql-typescript/tests/expression/year.spec.ts index 7c0df21d..f533a4a0 100644 --- a/packages/mql-typescript/tests/expression/year.spec.ts +++ b/packages/mql-typescript/tests/expression/year.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/expression/zip.spec.ts b/packages/mql-typescript/tests/expression/zip.spec.ts index 76ed3f27..0d9372b3 100644 --- a/packages/mql-typescript/tests/expression/zip.spec.ts +++ b/packages/mql-typescript/tests/expression/zip.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/all.spec.ts b/packages/mql-typescript/tests/query/all.spec.ts index e279dd89..5b197a10 100644 --- a/packages/mql-typescript/tests/query/all.spec.ts +++ b/packages/mql-typescript/tests/query/all.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/and.spec.ts b/packages/mql-typescript/tests/query/and.spec.ts index 81d83b18..ccad2394 100644 --- a/packages/mql-typescript/tests/query/and.spec.ts +++ b/packages/mql-typescript/tests/query/and.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/bitsAllClear.spec.ts b/packages/mql-typescript/tests/query/bitsAllClear.spec.ts index 6af9331e..af9cc174 100644 --- a/packages/mql-typescript/tests/query/bitsAllClear.spec.ts +++ b/packages/mql-typescript/tests/query/bitsAllClear.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/bitsAllSet.spec.ts b/packages/mql-typescript/tests/query/bitsAllSet.spec.ts index 4ca1e4f5..65fb95c8 100644 --- a/packages/mql-typescript/tests/query/bitsAllSet.spec.ts +++ b/packages/mql-typescript/tests/query/bitsAllSet.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts b/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts index 7d540b74..ae403359 100644 --- a/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts +++ b/packages/mql-typescript/tests/query/bitsAnyClear.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/bitsAnySet.spec.ts b/packages/mql-typescript/tests/query/bitsAnySet.spec.ts index 0e383bda..cadc533a 100644 --- a/packages/mql-typescript/tests/query/bitsAnySet.spec.ts +++ b/packages/mql-typescript/tests/query/bitsAnySet.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/box.spec.ts b/packages/mql-typescript/tests/query/box.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/box.spec.ts +++ b/packages/mql-typescript/tests/query/box.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/center.spec.ts b/packages/mql-typescript/tests/query/center.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/center.spec.ts +++ b/packages/mql-typescript/tests/query/center.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/centerSphere.spec.ts b/packages/mql-typescript/tests/query/centerSphere.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/centerSphere.spec.ts +++ b/packages/mql-typescript/tests/query/centerSphere.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/elemMatch.spec.ts b/packages/mql-typescript/tests/query/elemMatch.spec.ts index 3ac1c32a..4bd3ff84 100644 --- a/packages/mql-typescript/tests/query/elemMatch.spec.ts +++ b/packages/mql-typescript/tests/query/elemMatch.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/eq.spec.ts b/packages/mql-typescript/tests/query/eq.spec.ts index f7bddbcf..47e03db6 100644 --- a/packages/mql-typescript/tests/query/eq.spec.ts +++ b/packages/mql-typescript/tests/query/eq.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/exists.spec.ts b/packages/mql-typescript/tests/query/exists.spec.ts index a064af41..8a2eeb0f 100644 --- a/packages/mql-typescript/tests/query/exists.spec.ts +++ b/packages/mql-typescript/tests/query/exists.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/expr.spec.ts b/packages/mql-typescript/tests/query/expr.spec.ts index 86ef87c4..da3c9a40 100644 --- a/packages/mql-typescript/tests/query/expr.spec.ts +++ b/packages/mql-typescript/tests/query/expr.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/geoIntersects.spec.ts b/packages/mql-typescript/tests/query/geoIntersects.spec.ts index af65644b..b2c98a9c 100644 --- a/packages/mql-typescript/tests/query/geoIntersects.spec.ts +++ b/packages/mql-typescript/tests/query/geoIntersects.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/geoWithin.spec.ts b/packages/mql-typescript/tests/query/geoWithin.spec.ts index 71d6b9fc..d7fc7bbc 100644 --- a/packages/mql-typescript/tests/query/geoWithin.spec.ts +++ b/packages/mql-typescript/tests/query/geoWithin.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/geometry.spec.ts b/packages/mql-typescript/tests/query/geometry.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/geometry.spec.ts +++ b/packages/mql-typescript/tests/query/geometry.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/gt.spec.ts b/packages/mql-typescript/tests/query/gt.spec.ts index cbbc4989..4b98bdea 100644 --- a/packages/mql-typescript/tests/query/gt.spec.ts +++ b/packages/mql-typescript/tests/query/gt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/gte.spec.ts b/packages/mql-typescript/tests/query/gte.spec.ts index 411d88de..451d8586 100644 --- a/packages/mql-typescript/tests/query/gte.spec.ts +++ b/packages/mql-typescript/tests/query/gte.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/in.spec.ts b/packages/mql-typescript/tests/query/in.spec.ts index ba123d50..042de043 100644 --- a/packages/mql-typescript/tests/query/in.spec.ts +++ b/packages/mql-typescript/tests/query/in.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/jsonSchema.spec.ts b/packages/mql-typescript/tests/query/jsonSchema.spec.ts index c355bdf2..40c0f99b 100644 --- a/packages/mql-typescript/tests/query/jsonSchema.spec.ts +++ b/packages/mql-typescript/tests/query/jsonSchema.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/lt.spec.ts b/packages/mql-typescript/tests/query/lt.spec.ts index 35aacf27..64635dd6 100644 --- a/packages/mql-typescript/tests/query/lt.spec.ts +++ b/packages/mql-typescript/tests/query/lt.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/lte.spec.ts b/packages/mql-typescript/tests/query/lte.spec.ts index 6b8cfcc3..9756f5dd 100644 --- a/packages/mql-typescript/tests/query/lte.spec.ts +++ b/packages/mql-typescript/tests/query/lte.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/maxDistance.spec.ts b/packages/mql-typescript/tests/query/maxDistance.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/maxDistance.spec.ts +++ b/packages/mql-typescript/tests/query/maxDistance.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/minDistance.spec.ts b/packages/mql-typescript/tests/query/minDistance.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/minDistance.spec.ts +++ b/packages/mql-typescript/tests/query/minDistance.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/mod.spec.ts b/packages/mql-typescript/tests/query/mod.spec.ts index 5173c479..3a56f90b 100644 --- a/packages/mql-typescript/tests/query/mod.spec.ts +++ b/packages/mql-typescript/tests/query/mod.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/ne.spec.ts b/packages/mql-typescript/tests/query/ne.spec.ts index 5d8d7a45..c58c2f25 100644 --- a/packages/mql-typescript/tests/query/ne.spec.ts +++ b/packages/mql-typescript/tests/query/ne.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/near.spec.ts b/packages/mql-typescript/tests/query/near.spec.ts index 2cc7161e..4b76e949 100644 --- a/packages/mql-typescript/tests/query/near.spec.ts +++ b/packages/mql-typescript/tests/query/near.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/nearSphere.spec.ts b/packages/mql-typescript/tests/query/nearSphere.spec.ts index dec7da65..3c9e0804 100644 --- a/packages/mql-typescript/tests/query/nearSphere.spec.ts +++ b/packages/mql-typescript/tests/query/nearSphere.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/nin.spec.ts b/packages/mql-typescript/tests/query/nin.spec.ts index 43b883c0..346da259 100644 --- a/packages/mql-typescript/tests/query/nin.spec.ts +++ b/packages/mql-typescript/tests/query/nin.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/nor.spec.ts b/packages/mql-typescript/tests/query/nor.spec.ts index ea675575..312c772d 100644 --- a/packages/mql-typescript/tests/query/nor.spec.ts +++ b/packages/mql-typescript/tests/query/nor.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/not.spec.ts b/packages/mql-typescript/tests/query/not.spec.ts index 390308d4..6c55b4fc 100644 --- a/packages/mql-typescript/tests/query/not.spec.ts +++ b/packages/mql-typescript/tests/query/not.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/or.spec.ts b/packages/mql-typescript/tests/query/or.spec.ts index f5c7c8f4..598e19c3 100644 --- a/packages/mql-typescript/tests/query/or.spec.ts +++ b/packages/mql-typescript/tests/query/or.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/polygon.spec.ts b/packages/mql-typescript/tests/query/polygon.spec.ts index 74f8fb99..f0ee3703 100644 --- a/packages/mql-typescript/tests/query/polygon.spec.ts +++ b/packages/mql-typescript/tests/query/polygon.spec.ts @@ -1,2 +1,5 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; diff --git a/packages/mql-typescript/tests/query/rand.spec.ts b/packages/mql-typescript/tests/query/rand.spec.ts index 4e42360e..72b590fe 100644 --- a/packages/mql-typescript/tests/query/rand.spec.ts +++ b/packages/mql-typescript/tests/query/rand.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/regex.spec.ts b/packages/mql-typescript/tests/query/regex.spec.ts index c1708d7a..9a92f4b7 100644 --- a/packages/mql-typescript/tests/query/regex.spec.ts +++ b/packages/mql-typescript/tests/query/regex.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/sampleRate.spec.ts b/packages/mql-typescript/tests/query/sampleRate.spec.ts index dcbbf171..86ad9950 100644 --- a/packages/mql-typescript/tests/query/sampleRate.spec.ts +++ b/packages/mql-typescript/tests/query/sampleRate.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/size.spec.ts b/packages/mql-typescript/tests/query/size.spec.ts index c5c299cd..f8670203 100644 --- a/packages/mql-typescript/tests/query/size.spec.ts +++ b/packages/mql-typescript/tests/query/size.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/text.spec.ts b/packages/mql-typescript/tests/query/text.spec.ts index 1610dcf0..88f612c0 100644 --- a/packages/mql-typescript/tests/query/text.spec.ts +++ b/packages/mql-typescript/tests/query/text.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/type.spec.ts b/packages/mql-typescript/tests/query/type.spec.ts index f23ff64e..1fdccd4b 100644 --- a/packages/mql-typescript/tests/query/type.spec.ts +++ b/packages/mql-typescript/tests/query/type.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/query/where.spec.ts b/packages/mql-typescript/tests/query/where.spec.ts index 1c8a2767..e4b7bcd2 100644 --- a/packages/mql-typescript/tests/query/where.spec.ts +++ b/packages/mql-typescript/tests/query/where.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/autocomplete.spec.ts b/packages/mql-typescript/tests/search/autocomplete.spec.ts index e6f293b0..994da04c 100644 --- a/packages/mql-typescript/tests/search/autocomplete.spec.ts +++ b/packages/mql-typescript/tests/search/autocomplete.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/compound.spec.ts b/packages/mql-typescript/tests/search/compound.spec.ts index e901aa04..0078aaf3 100644 --- a/packages/mql-typescript/tests/search/compound.spec.ts +++ b/packages/mql-typescript/tests/search/compound.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/embeddedDocument.spec.ts b/packages/mql-typescript/tests/search/embeddedDocument.spec.ts index e0eee795..a7bd6679 100644 --- a/packages/mql-typescript/tests/search/embeddedDocument.spec.ts +++ b/packages/mql-typescript/tests/search/embeddedDocument.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/equals.spec.ts b/packages/mql-typescript/tests/search/equals.spec.ts index 4cc080a0..4f0c9d37 100644 --- a/packages/mql-typescript/tests/search/equals.spec.ts +++ b/packages/mql-typescript/tests/search/equals.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/exists.spec.ts b/packages/mql-typescript/tests/search/exists.spec.ts index 8e007bfa..a316f3dd 100644 --- a/packages/mql-typescript/tests/search/exists.spec.ts +++ b/packages/mql-typescript/tests/search/exists.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/facet.spec.ts b/packages/mql-typescript/tests/search/facet.spec.ts index 5cf13d3c..0d3fa1b2 100644 --- a/packages/mql-typescript/tests/search/facet.spec.ts +++ b/packages/mql-typescript/tests/search/facet.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/geoShape.spec.ts b/packages/mql-typescript/tests/search/geoShape.spec.ts index 87611403..71fb2fbe 100644 --- a/packages/mql-typescript/tests/search/geoShape.spec.ts +++ b/packages/mql-typescript/tests/search/geoShape.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/geoWithin.spec.ts b/packages/mql-typescript/tests/search/geoWithin.spec.ts index a9def04b..50567793 100644 --- a/packages/mql-typescript/tests/search/geoWithin.spec.ts +++ b/packages/mql-typescript/tests/search/geoWithin.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/in.spec.ts b/packages/mql-typescript/tests/search/in.spec.ts index 9084c4a3..58b85a32 100644 --- a/packages/mql-typescript/tests/search/in.spec.ts +++ b/packages/mql-typescript/tests/search/in.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/moreLikeThis.spec.ts b/packages/mql-typescript/tests/search/moreLikeThis.spec.ts index de1404ae..afd109ab 100644 --- a/packages/mql-typescript/tests/search/moreLikeThis.spec.ts +++ b/packages/mql-typescript/tests/search/moreLikeThis.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/near.spec.ts b/packages/mql-typescript/tests/search/near.spec.ts index 16bcc975..45d4c6a9 100644 --- a/packages/mql-typescript/tests/search/near.spec.ts +++ b/packages/mql-typescript/tests/search/near.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/phrase.spec.ts b/packages/mql-typescript/tests/search/phrase.spec.ts index a2c1de6d..a45cd160 100644 --- a/packages/mql-typescript/tests/search/phrase.spec.ts +++ b/packages/mql-typescript/tests/search/phrase.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/queryString.spec.ts b/packages/mql-typescript/tests/search/queryString.spec.ts index 6f94702e..c034d5dc 100644 --- a/packages/mql-typescript/tests/search/queryString.spec.ts +++ b/packages/mql-typescript/tests/search/queryString.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/range.spec.ts b/packages/mql-typescript/tests/search/range.spec.ts index 9d249219..9d4f2720 100644 --- a/packages/mql-typescript/tests/search/range.spec.ts +++ b/packages/mql-typescript/tests/search/range.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/regex.spec.ts b/packages/mql-typescript/tests/search/regex.spec.ts index df6f7216..ee152631 100644 --- a/packages/mql-typescript/tests/search/regex.spec.ts +++ b/packages/mql-typescript/tests/search/regex.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/text.spec.ts b/packages/mql-typescript/tests/search/text.spec.ts index 63d74fad..e8ad0412 100644 --- a/packages/mql-typescript/tests/search/text.spec.ts +++ b/packages/mql-typescript/tests/search/text.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/mql-typescript/tests/search/wildcard.spec.ts b/packages/mql-typescript/tests/search/wildcard.spec.ts index 54a86570..480cd105 100644 --- a/packages/mql-typescript/tests/search/wildcard.spec.ts +++ b/packages/mql-typescript/tests/search/wildcard.spec.ts @@ -1,4 +1,7 @@ -import * as schema from '../../out/schema'; +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; import * as bson from 'bson'; /** diff --git a/packages/native-machine-id/package.json b/packages/native-machine-id/package.json index 30509638..2f99dc31 100644 --- a/packages/native-machine-id/package.json +++ b/packages/native-machine-id/package.json @@ -55,7 +55,7 @@ "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.1", diff --git a/packages/node-webpack-startup-snapshot-checker/package.json b/packages/node-webpack-startup-snapshot-checker/package.json index ed1410e7..a39003c1 100644 --- a/packages/node-webpack-startup-snapshot-checker/package.json +++ b/packages/node-webpack-startup-snapshot-checker/package.json @@ -59,7 +59,7 @@ "@types/chai": "^4.2.21", "@types/cross-spawn": "^6.0.6", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "cross-spawn": "^7.0.6", diff --git a/packages/oidc-mock-provider/package.json b/packages/oidc-mock-provider/package.json index 854be1eb..4a9babbc 100644 --- a/packages/oidc-mock-provider/package.json +++ b/packages/oidc-mock-provider/package.json @@ -60,7 +60,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", diff --git a/packages/query-parser/package.json b/packages/query-parser/package.json index 481e890d..54fc0e81 100644 --- a/packages/query-parser/package.json +++ b/packages/query-parser/package.json @@ -58,7 +58,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "bson": "^6.2.0", "depcheck": "^1.4.7", diff --git a/packages/saslprep/package.json b/packages/saslprep/package.json index 690cbc41..6d6b3107 100644 --- a/packages/saslprep/package.json +++ b/packages/saslprep/package.json @@ -70,7 +70,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "@types/sparse-bitfield": "^3.0.1", "chai": "^4.5.0", diff --git a/packages/sbom-tools/package.json b/packages/sbom-tools/package.json index 2727864c..99e3b8a8 100644 --- a/packages/sbom-tools/package.json +++ b/packages/sbom-tools/package.json @@ -56,7 +56,7 @@ "@types/chai": "^4.2.21", "@types/lodash": "^4.14.194", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/node-fetch": "^2.6.3", "@types/sinon-chai": "^3.2.5", "@types/spdx-satisfies": "^0.1.0", diff --git a/packages/signing-utils/package.json b/packages/signing-utils/package.json index 2ab827ce..bf20ff40 100644 --- a/packages/signing-utils/package.json +++ b/packages/signing-utils/package.json @@ -53,7 +53,7 @@ "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", - "@types/node": "^17.0.35", + "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "chai": "^4.5.0", "depcheck": "^1.4.7", From e9e8635cbd47d47486245683038a4300226b9825 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 9 Jun 2025 14:05:33 +0200 Subject: [PATCH 16/26] update mongo-php-library --- packages/mql-typescript/mongo-php-library | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index c2b1ee52..14623ebe 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit c2b1ee5233ee16d07a1541b381184bfcdfae9cf2 +Subproject commit 14623ebe7d3bd32447906fbb39dacb79a58cf7c4 From 7fc9890be30bf675bbb5c28e66493e4882ca43e3 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 9 Jun 2025 15:33:09 +0200 Subject: [PATCH 17/26] Emit schema.ts as a giant string --- packages/mql-typescript/out/schema-export.js | 2 ++ packages/mql-typescript/package.json | 2 +- packages/mql-typescript/src/generator.ts | 29 ++++++++++++++++--- .../mql-typescript/src/schema-generator.ts | 28 +++++++++++++++--- 4 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 packages/mql-typescript/out/schema-export.js diff --git a/packages/mql-typescript/out/schema-export.js b/packages/mql-typescript/out/schema-export.js new file mode 100644 index 00000000..8d586cfa --- /dev/null +++ b/packages/mql-typescript/out/schema-export.js @@ -0,0 +1,2 @@ +exports.schema = + '\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* eslint-disable @typescript-eslint/no-namespace */\n /* eslint-disable @typescript-eslint/ban-types */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n import type * as bson from \'bson\';\n import type { FilterOperators } from \'mongodb\';\n\n type Condition = AlternativeType | FilterOperators | QueryOperator;\n type AlternativeType =\n T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString;\n type RegExpOrString = T extends string ? Regex | T : T;\n type KeysOfAType = {\n [k in keyof T]: NonNullable extends Type ? k : never;\n }[keyof T];\n type RecordWithStaticFields, TValue> = T & {\n [key: string]: TValue | T[keyof T];\n };\n\n // TBD: Nested fields\n type AFieldPath = KeysOfAType & string;\n type FieldExpression = { [k: string]: FieldPath };\n\n type MultiAnalyzerSpec = {\n value: KeysOfAType;\n multi: string;\n };\n export namespace Aggregation.Accumulator {\n\n\n/**\n * A type describing the `$accumulator` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\nexport interface $accumulator {\n\n/**\n * Defines a custom accumulator function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\n$accumulator:{\n\n/**\n * Function used to initialize the state. The init function receives its arguments from the initArgs array expression. You can specify the function definition as either BSON type Code or String.\n */\ninit: Javascript,\n\n/**\n * Arguments passed to the init function.\n */\ninitArgs?: ResolvesToArray,\n\n/**\n * Function used to accumulate documents. The accumulate function receives its arguments from the current state and accumulateArgs array expression. The result of the accumulate function becomes the new state. You can specify the function definition as either BSON type Code or String.\n */\naccumulate: Javascript,\n\n/**\n * Arguments passed to the accumulate function. You can use accumulateArgs to specify what field value(s) to pass to the accumulate function.\n */\naccumulateArgs: ResolvesToArray,\n\n/**\n * Function used to merge two internal states. merge must be either a String or Code BSON type. merge returns the combined result of the two merged states. For information on when the merge function is called, see Merge Two States with $merge.\n */\nmerge: Javascript,\n\n/**\n * Function used to update the result of the accumulation.\n */\nfinalize?: Javascript,\n\n/**\n * The language used in the $accumulator code.\n */\nlang: string,}};\n\n\n/**\n * A type describing the `$addToSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\nexport interface $addToSet {\n\n/**\n * Returns an array of unique expression values for each group. Order of the array elements is undefined.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\n$addToSet:Expression};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:ResolvesToNumber};\n\n\n/**\n * A type describing the `$bottom` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\nexport interface $bottom {\n\n/**\n * Returns the bottom element within a group according to the specified sort order.\n * New in MongoDB 5.2: Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\n$bottom:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$bottomN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\nexport interface $bottomN {\n\n/**\n * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. If the group contains fewer than n elements, $bottomN returns all elements in the group.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\n$bottomN:{\n\n/**\n * Limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\nexport interface $count {\n\n/**\n * Returns the number of documents in the group or window.\n * Distinct from the $count pipeline stage.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\n$count:Record};\n\n\n/**\n * A type describing the `$covariancePop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\nexport interface $covariancePop {\n\n/**\n * Returns the population covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\n$covariancePop:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$covarianceSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\nexport interface $covarianceSamp {\n\n/**\n * Returns the sample covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\n$covarianceSamp:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$denseRank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\nexport interface $denseRank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. There are no gaps in the ranks. Ties receive the same rank.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\n$denseRank:Record};\n\n\n/**\n * A type describing the `$derivative` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\nexport interface $derivative {\n\n/**\n * Returns the average rate of change within the specified window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\n$derivative:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$documentNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\nexport interface $documentNumber {\n\n/**\n * Returns the position of a document (known as the document number) in the $setWindowFields stage partition. Ties result in different adjacent document numbers.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\n$documentNumber:Record};\n\n\n/**\n * A type describing the `$expMovingAvg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\nexport interface $expMovingAvg {\n\n/**\n * Returns the exponential moving average for the numeric expression.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\n$expMovingAvg:{input: ResolvesToNumber,\n\n/**\n * An integer that specifies the number of historical documents that have a significant mathematical weight in the exponential moving average calculation, with the most recent documents contributing the most weight.\n * You must specify either N or alpha. You cannot specify both.\n * The N value is used in this formula to calculate the current result based on the expression value from the current document being read and the previous result of the calculation:\n */\nN?: Int,\n\n/**\n * A double that specifies the exponential decay value to use in the exponential moving average calculation. A higher alpha value assigns a lower mathematical significance to previous results from the calculation.\n * You must specify either N or alpha. You cannot specify both.\n */\nalpha?: Double,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:Expression};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\nexport interface $firstN {\n\n/**\n * Returns an aggregation of the first n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $firstN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * A positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$integral` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\nexport interface $integral {\n\n/**\n * Returns the approximation of the area under a curve.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\n$integral:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:Expression};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\nexport interface $lastN {\n\n/**\n * Returns an aggregation of the last n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $lastN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\n$lastN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$linearFill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\nexport interface $linearFill {\n\n/**\n * Fills null and missing fields in a window using linear interpolation based on surrounding field values.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\n$linearFill:ResolvesToNumber};\n\n\n/**\n * A type describing the `$locf` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\nexport interface $locf {\n\n/**\n * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\n$locf:Expression};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:Expression};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:ResolvesToObject};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:Expression};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$push` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\nexport interface $push {\n\n/**\n * Returns an array of values that result from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\n$push:Expression};\n\n\n/**\n * A type describing the `$rank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\nexport interface $rank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\n$rank:Record};\n\n\n/**\n * A type describing the `$shift` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\nexport interface $shift {\n\n/**\n * Returns the value from an expression applied to a document in a specified position relative to the current document in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\n$shift:{\n\n/**\n * Specifies an expression to evaluate and return in the output.\n */\noutput: Expression,\n\n/**\n * Specifies an integer with a numeric document position relative to the current document in the output.\n * For example:\n * 1 specifies the document position after the current document.\n * -1 specifies the document position before the current document.\n * -2 specifies the document position that is two positions before the current document.\n */\nby: Int,\n\n/**\n * Specifies an optional default expression to evaluate if the document position is outside of the implicit $setWindowFields stage window. The implicit window contains all the documents in the partition.\n * The default expression must evaluate to a constant value.\n * If you do not specify a default expression, $shift returns null for documents whose positions are outside of the implicit $setWindowFields stage window.\n */\ndefault: Expression,}};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:ResolvesToNumber};\n\n\n/**\n * A type describing the `$top` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\nexport interface $top {\n\n/**\n * Returns the top element within a group according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\n$top:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$topN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\nexport interface $topN {\n\n/**\n * Returns an aggregation of the top n fields within a group, according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\n$topN:{\n\n/**\n * limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n};\nexport namespace Aggregation.Expression {\n\n\n/**\n * A type describing the `$abs` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\nexport interface $abs {\n\n/**\n * Returns the absolute value of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\n$abs:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\nexport interface $acos {\n\n/**\n * Returns the inverse cosine (arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\n$acos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\nexport interface $acosh {\n\n/**\n * Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\n$acosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$add` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\nexport interface $add {\n\n/**\n * Adds numbers to return the sum, or adds numbers and a date to return a new date. If adding numbers and a date, treats the numbers as milliseconds. Accepts any number of argument expressions, but at most, one expression can resolve to a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\n$add:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date.\n */\n...(ResolvesToNumber | ResolvesToDate)[],]};\n\n\n/**\n * A type describing the `$allElementsTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\nexport interface $allElementsTrue {\n\n/**\n * Returns true if no element of a set evaluates to false, otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\n$allElementsTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\nexport interface $and {\n\n/**\n * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\n$and:[...(Expression | ResolvesToBool | ResolvesToNumber | ResolvesToString | ResolvesToNull)[],]};\n\n\n/**\n * A type describing the `$anyElementTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\nexport interface $anyElementTrue {\n\n/**\n * Returns true if any elements of a set evaluate to true; otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\n$anyElementTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$arrayElemAt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\nexport interface $arrayElemAt {\n\n/**\n * Returns the element at the specified array index.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\n$arrayElemAt:[array: ResolvesToArray,idx: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$arrayToObject` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\nexport interface $arrayToObject {\n\n/**\n * Converts an array of key value pairs to a document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\n$arrayToObject:[array: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$asin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\nexport interface $asin {\n\n/**\n * Returns the inverse sin (arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\n$asin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$asinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\nexport interface $asinh {\n\n/**\n * Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\n$asinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\nexport interface $atan {\n\n/**\n * Returns the inverse tangent (arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\n$atan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan2` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\nexport interface $atan2 {\n\n/**\n * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\n$atan2:[\n\n/**\n * $atan2 takes any valid expression that resolves to a number.\n * $atan2 returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.\n * By default $atan returns values as a double. $atan2 can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.\n */\ny: ResolvesToNumber,x: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$atanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\nexport interface $atanh {\n\n/**\n * Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\n$atanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$binarySize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\nexport interface $binarySize {\n\n/**\n * Returns the size of a given string or binary data value\'s content in bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\n$binarySize:ResolvesToString | ResolvesToBinData | ResolvesToNull};\n\n\n/**\n * A type describing the `$bitAnd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\nexport interface $bitAnd {\n\n/**\n * Returns the result of a bitwise and operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\n$bitAnd:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitNot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\nexport interface $bitNot {\n\n/**\n * Returns the result of a bitwise not operation on a single argument or an array that contains a single int or long value.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\n$bitNot:ResolvesToInt | ResolvesToLong};\n\n\n/**\n * A type describing the `$bitOr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\nexport interface $bitOr {\n\n/**\n * Returns the result of a bitwise or operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\n$bitOr:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitXor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\nexport interface $bitXor {\n\n/**\n * Returns the result of a bitwise xor (exclusive or) operation on an array of int and long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\n$bitXor:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bsonSize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\nexport interface $bsonSize {\n\n/**\n * Returns the size in bytes of a given document (i.e. BSON type Object) when encoded as BSON.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\n$bsonSize:ResolvesToObject | ResolvesToNull};\n\n\n/**\n * A type describing the `$case` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $case {\n\n/**\n * Represents a single case in a $switch expression\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$case:{\n\n/**\n * Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n */\ncase: ResolvesToBool,\n\n/**\n * Can be any valid expression.\n */\nthen: Expression,}};\n\n\n/**\n * A type describing the `$ceil` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\nexport interface $ceil {\n\n/**\n * Returns the smallest integer greater than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\n$ceil:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\nexport interface $cmp {\n\n/**\n * Returns 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\n$cmp:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$concat` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\nexport interface $concat {\n\n/**\n * Concatenates any number of strings.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\n$concat:[...(ResolvesToString)[],]};\n\n\n/**\n * A type describing the `$concatArrays` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\nexport interface $concatArrays {\n\n/**\n * Concatenates arrays to return the concatenated array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\n$concatArrays:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$cond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\nexport interface $cond {\n\n/**\n * A ternary operator that evaluates one expression, and depending on the result, returns the value of one of the other two expressions. Accepts either three expressions in an ordered list or three named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\n$cond:{if: ResolvesToBool,then: Expression,else: Expression,}};\n\n\n/**\n * A type describing the `$convert` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\nexport interface $convert {\n\n/**\n * Converts a value to a specified type.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\n$convert:{input: Expression,to: ResolvesToString | ResolvesToInt,\n\n/**\n * The value to return on encountering an error during conversion, including unsupported type conversions. The arguments can be any valid expression.\n * If unspecified, the operation throws an error upon encountering an error and stops.\n */\nonError?: Expression,\n\n/**\n * The value to return if the input is null or missing. The arguments can be any valid expression.\n * If unspecified, $convert returns null if the input is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$cos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\nexport interface $cos {\n\n/**\n * Returns the cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\n$cos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\nexport interface $cosh {\n\n/**\n * Returns the hyperbolic cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\n$cosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$dateAdd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\nexport interface $dateAdd {\n\n/**\n * Adds a number of time units to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\n$dateAdd:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateDiff` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\nexport interface $dateDiff {\n\n/**\n * Returns the difference between two dates.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\n$dateDiff:{\n\n/**\n * The start of the time period. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The end of the time period. The endDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nendDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The time measurement unit between the startDate and endDate\n */\nunit: TimeUnit,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * Used when the unit is equal to week. Defaults to Sunday. The startOfWeek parameter is an expression that resolves to a case insensitive string\n */\nstartOfWeek?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\nexport interface $dateFromParts {\n\n/**\n * Constructs a BSON Date object given the date\'s constituent parts.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\n$dateFromParts:{\n\n/**\n * Calendar year. Can be any expression that evaluates to a number.\n */\nyear?: ResolvesToNumber,\n\n/**\n * ISO Week Date Year. Can be any expression that evaluates to a number.\n */\nisoWeekYear?: ResolvesToNumber,\n\n/**\n * Month. Defaults to 1.\n */\nmonth?: ResolvesToNumber,\n\n/**\n * Week of year. Defaults to 1.\n */\nisoWeek?: ResolvesToNumber,\n\n/**\n * Day of month. Defaults to 1.\n */\nday?: ResolvesToNumber,\n\n/**\n * Day of week (Monday 1 - Sunday 7). Defaults to 1.\n */\nisoDayOfWeek?: ResolvesToNumber,\n\n/**\n * Hour. Defaults to 0.\n */\nhour?: ResolvesToNumber,\n\n/**\n * Minute. Defaults to 0.\n */\nminute?: ResolvesToNumber,\n\n/**\n * Second. Defaults to 0.\n */\nsecond?: ResolvesToNumber,\n\n/**\n * Millisecond. Defaults to 0.\n */\nmillisecond?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\nexport interface $dateFromString {\n\n/**\n * Converts a date/time string to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\n$dateFromString:{\n\n/**\n * The date/time string to convert to a date object.\n */\ndateString: ResolvesToString,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If $dateFromString encounters an error while parsing the given dateString, it outputs the result value of the provided onError expression. This result value can be of any type.\n * If you do not specify onError, $dateFromString throws an error if it cannot parse dateString.\n */\nonError?: Expression,\n\n/**\n * If the dateString provided to $dateFromString is null or missing, it outputs the result value of the provided onNull expression. This result value can be of any type.\n * If you do not specify onNull and dateString is null or missing, then $dateFromString outputs null.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateSubtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\nexport interface $dateSubtract {\n\n/**\n * Subtracts a number of time units from a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\n$dateSubtract:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateToParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\nexport interface $dateToParts {\n\n/**\n * Returns a document containing the constituent parts of a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\n$dateToParts:{\n\n/**\n * The input date for which to return parts. date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If set to true, modifies the output document to use ISO week date fields. Defaults to false.\n */\niso8601?: boolean,}};\n\n\n/**\n * A type describing the `$dateToString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\nexport interface $dateToString {\n\n/**\n * Returns the date as a formatted string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\n$dateToString:{\n\n/**\n * The date to convert to string. Must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The value to return if the date is null or missing.\n * If unspecified, $dateToString returns null if the date is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateTrunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\nexport interface $dateTrunc {\n\n/**\n * Truncates a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\n$dateTrunc:{\n\n/**\n * The date to truncate, specified in UTC. The date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit of time, specified as an expression that must resolve to one of these strings: year, quarter, week, month, day, hour, minute, second.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nunit: TimeUnit,\n\n/**\n * The numeric time value, specified as an expression that must resolve to a positive non-zero number. Defaults to 1.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nbinSize?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The start of the week. Used when\n * unit is week. Defaults to Sunday.\n */\nstartOfWeek?: string,}};\n\n\n/**\n * A type describing the `$dayOfMonth` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\nexport interface $dayOfMonth {\n\n/**\n * Returns the day of the month for a date as a number between 1 and 31.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\n$dayOfMonth:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\nexport interface $dayOfWeek {\n\n/**\n * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\n$dayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\nexport interface $dayOfYear {\n\n/**\n * Returns the day of the year for a date as a number between 1 and 366 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\n$dayOfYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$degreesToRadians` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\nexport interface $degreesToRadians {\n\n/**\n * Converts a value from degrees to radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\n$degreesToRadians:ResolvesToNumber};\n\n\n/**\n * A type describing the `$divide` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\nexport interface $divide {\n\n/**\n * Returns the result of dividing the first number by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\n$divide:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\nexport interface $eq {\n\n/**\n * Returns true if the values are equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\n$eq:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$exp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\nexport interface $exp {\n\n/**\n * Raises e to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\n$exp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$filter` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\nexport interface $filter {\n\n/**\n * Selects a subset of the array to return an array with only the elements that match the filter condition.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\n$filter:{input: ResolvesToArray,\n\n/**\n * An expression that resolves to a boolean value used to determine if an element should be included in the output array. The expression references each element of the input array individually with the variable name specified in as.\n */\ncond: ResolvesToBool,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: string,\n\n/**\n * A number expression that restricts the number of matching array elements that $filter returns. You cannot specify a limit less than 1. The matching array elements are returned in the order they appear in the input array.\n * If the specified limit is greater than the number of matching array elements, $filter returns all matching array elements. If the limit is null, $filter returns all matching array elements.\n */\nlimit?: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:ResolvesToArray};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\nexport interface $firstN {\n\n/**\n * Returns a specified number of elements from the beginning of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$floor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\nexport interface $floor {\n\n/**\n * Returns the largest integer less than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\n$floor:ResolvesToNumber};\n\n\n/**\n * A type describing the `$function` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\nexport interface $function {\n\n/**\n * Defines a custom function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\n$function:{\n\n/**\n * The function definition. You can specify the function definition as either BSON\\JavaScript or string.\n * function(arg1, arg2, ...) { ... }\n */\nbody: Javascript,\n\n/**\n * Arguments passed to the function body. If the body function does not take an argument, you can specify an empty array [ ].\n */\nargs: unknown[],lang: string,}};\n\n\n/**\n * A type describing the `$getField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\nexport interface $getField {\n\n/**\n * Returns the value of a specified field from a document. You can use $getField to retrieve the value of fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\n$getField:{\n\n/**\n * Field in the input object for which you want to return a value. field can be any valid expression that resolves to a string constant.\n * If field begins with a dollar sign ($), place the field name inside of a $literal expression to return its value.\n */\nfield: ResolvesToString,\n\n/**\n * Default: $$CURRENT\n * A valid expression that contains the field for which you want to return a value. input must resolve to an object, missing, null, or undefined. If omitted, defaults to the document currently being processed in the pipeline ($$CURRENT).\n */\ninput?: Expression,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\nexport interface $gt {\n\n/**\n * Returns true if the first value is greater than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\n$gt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\nexport interface $gte {\n\n/**\n * Returns true if the first value is greater than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\n$gte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$hour` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\nexport interface $hour {\n\n/**\n * Returns the hour for a date as a number between 0 and 23.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\n$hour:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$ifNull` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\nexport interface $ifNull {\n\n/**\n * Returns either the non-null result of the first expression or the result of the second expression if the first expression results in a null result. Null result encompasses instances of undefined values or missing fields. Accepts two expressions as arguments. The result of the second expression can be null.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\n$ifNull:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\nexport interface $in {\n\n/**\n * Returns a boolean indicating whether a specified value is in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\n$in:[\n\n/**\n * Any valid expression expression.\n */\nexpression: Expression,\n\n/**\n * Any valid expression that resolves to an array.\n */\narray: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$indexOfArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\nexport interface $indexOfArray {\n\n/**\n * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. Array indexes start at zero.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\n$indexOfArray:[\n\n/**\n * Can be any valid expression as long as it resolves to an array.\n * If the array expression resolves to a value of null or refers to a field that is missing, $indexOfArray returns null.\n * If the array expression does not resolve to an array or null nor refers to a missing field, $indexOfArray returns an error.\n */\narray: ResolvesToArray,search: Expression,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\nexport interface $indexOfBytes {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 byte index of the first occurrence. If the substring is not found, returns -1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\n$indexOfBytes:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfBytes returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfBytes returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\nexport interface $indexOfCP {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurrence. If the substring is not found, returns -1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\n$indexOfCP:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfCP returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfCP returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$isArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\nexport interface $isArray {\n\n/**\n * Determines if the operand is an array. Returns a boolean.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\n$isArray:[expression: Expression,]};\n\n\n/**\n * A type describing the `$isNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\nexport interface $isNumber {\n\n/**\n * Returns boolean true if the specified expression resolves to an integer, decimal, double, or long.\n * Returns boolean false if the expression resolves to any other BSON type, null, or a missing field.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\n$isNumber:Expression};\n\n\n/**\n * A type describing the `$isoDayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\nexport interface $isoDayOfWeek {\n\n/**\n * Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\n$isoDayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\nexport interface $isoWeek {\n\n/**\n * Returns the week number in ISO 8601 format, ranging from 1 to 53. Week numbers start at 1 with the week (Monday through Sunday) that contains the year\'s first Thursday.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\n$isoWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeekYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\nexport interface $isoWeekYear {\n\n/**\n * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\n$isoWeekYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:ResolvesToArray};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\nexport interface $lastN {\n\n/**\n * Returns a specified number of elements from the end of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\n$lastN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$let` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\nexport interface $let {\n\n/**\n * Defines variables for use within the scope of a subexpression and returns the result of the subexpression. Accepts named parameters.\n * Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\n$let:{\n\n/**\n * Assignment block for the variables accessible in the in expression. To assign a variable, specify a string for the variable name and assign a valid expression for the value.\n * The variable assignments have no meaning outside the in expression, not even within the vars block itself.\n */\nvars: ExpressionMap,\n\n/**\n * The expression to evaluate.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$literal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\nexport interface $literal {\n\n/**\n * Return a value without parsing. Use for values that the aggregation pipeline may interpret as an expression. For example, use a $literal expression to a string that starts with a dollar sign ($) to avoid parsing as a field path.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\n$literal:any};\n\n\n/**\n * A type describing the `$ln` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\nexport interface $ln {\n\n/**\n * Calculates the natural log of a number.\n * $ln is equivalent to $log: [ , Math.E ] expression, where Math.E is a JavaScript representation for Euler\'s number e.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\n$ln:ResolvesToNumber};\n\n\n/**\n * A type describing the `$log` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\nexport interface $log {\n\n/**\n * Calculates the log of a number in the specified base.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\n$log:[\n\n/**\n * Any valid expression as long as it resolves to a non-negative number.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Any valid expression as long as it resolves to a positive number greater than 1.\n */\nbase: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$log10` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\nexport interface $log10 {\n\n/**\n * Calculates the log base 10 of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\n$log10:ResolvesToNumber};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\nexport interface $lt {\n\n/**\n * Returns true if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\n$lt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\nexport interface $lte {\n\n/**\n * Returns true if the first value is less than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\n$lte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$ltrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\nexport interface $ltrim {\n\n/**\n * Removes whitespace or the specified characters from the beginning of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\n$ltrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$map` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\nexport interface $map {\n\n/**\n * Applies a subexpression to each element of an array and returns the array of resulting values in order. Accepts named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\n$map:{\n\n/**\n * An expression that resolves to an array.\n */\ninput: ResolvesToArray,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: ResolvesToString,\n\n/**\n * An expression that is applied to each element of the input array. The expression references each element individually with the variable name specified in as.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:[\n\n/**\n * Any valid expression that resolves to a document.\n */\n...(ResolvesToObject)[],]};\n\n\n/**\n * A type describing the `$meta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\nexport interface $meta {\n\n/**\n * Access available per-document metadata related to the aggregation operation.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\n$meta:string};\n\n\n/**\n * A type describing the `$millisecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\nexport interface $millisecond {\n\n/**\n * Returns the milliseconds of a date as a number between 0 and 999.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\n$millisecond:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$minute` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\nexport interface $minute {\n\n/**\n * Returns the minute for a date as a number between 0 and 59.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\n$minute:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\nexport interface $mod {\n\n/**\n * Returns the remainder of the first number divided by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\n$mod:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$month` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\nexport interface $month {\n\n/**\n * Returns the month for a date as a number between 1 (January) and 12 (December).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\n$month:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$multiply` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\nexport interface $multiply {\n\n/**\n * Multiplies numbers to return the product. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\n$multiply:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to numbers.\n * Starting in MongoDB 6.1 you can optimize the $multiply operation. To improve performance, group references at the end of the argument list.\n */\n...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\nexport interface $ne {\n\n/**\n * Returns true if the values are not equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\n$ne:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\nexport interface $not {\n\n/**\n * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\n$not:[expression: Expression | ResolvesToBool,]};\n\n\n/**\n * A type describing the `$objectToArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\nexport interface $objectToArray {\n\n/**\n * Converts a document to an array of documents representing key-value pairs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\n$objectToArray:ResolvesToObject};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\nexport interface $or {\n\n/**\n * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\n$or:[...(Expression | ResolvesToBool)[],]};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$pow` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\nexport interface $pow {\n\n/**\n * Raises a number to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\n$pow:[number: ResolvesToNumber,exponent: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$radiansToDegrees` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\nexport interface $radiansToDegrees {\n\n/**\n * Converts a value from radians to degrees.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\n$radiansToDegrees:ResolvesToNumber};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\nexport interface $rand {\n\n/**\n * Returns a random float between 0 and 1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$range` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\nexport interface $range {\n\n/**\n * Outputs an array containing a sequence of integers according to user-defined inputs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\n$range:[\n\n/**\n * An integer that specifies the start of the sequence. Can be any valid expression that resolves to an integer.\n */\nstart: ResolvesToInt,\n\n/**\n * An integer that specifies the exclusive upper limit of the sequence. Can be any valid expression that resolves to an integer.\n */\nend: ResolvesToInt,\n\n/**\n * An integer that specifies the increment value. Can be any valid expression that resolves to a non-zero integer. Defaults to 1.\n */\nstep?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$reduce` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\nexport interface $reduce {\n\n/**\n * Applies an expression to each element in an array and combines them into a single value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\n$reduce:{\n\n/**\n * Can be any valid expression that resolves to an array.\n * If the argument resolves to a value of null or refers to a missing field, $reduce returns null.\n * If the argument does not resolve to an array or null nor refers to a missing field, $reduce returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The initial cumulative value set before in is applied to the first element of the input array.\n */\ninitialValue: Expression,\n\n/**\n * A valid expression that $reduce applies to each element in the input array in left-to-right order. Wrap the input value with $reverseArray to yield the equivalent of applying the combining expression from right-to-left.\n * During evaluation of the in expression, two variables will be available:\n * - value is the variable that represents the cumulative value of the expression.\n * - this is the variable that refers to the element being processed.\n */\nin: Expression | ExpressionMap,}};\n\n\n/**\n * A type describing the `$regexFind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\nexport interface $regexFind {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the first matched substring.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\n$regexFind:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexFindAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\nexport interface $regexFindAll {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the all matched substrings.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\n$regexFindAll:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\nexport interface $regexMatch {\n\n/**\n * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\n$regexMatch:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$replaceAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\nexport interface $replaceAll {\n\n/**\n * Replaces all instances of a search string in an input string with a replacement string.\n * $replaceAll is both case-sensitive and diacritic-sensitive, and ignores any collation present on a collection.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\n$replaceAll:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$replaceOne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\nexport interface $replaceOne {\n\n/**\n * Replaces the first instance of a matched string in a given input.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\n$replaceOne:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$reverseArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\nexport interface $reverseArray {\n\n/**\n * Returns an array with the elements in reverse order.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\n$reverseArray:ResolvesToArray};\n\n\n/**\n * A type describing the `$round` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\nexport interface $round {\n\n/**\n * Rounds a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\n$round:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $round returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$rtrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\nexport interface $rtrim {\n\n/**\n * Removes whitespace characters, including null, or the specified characters from the end of a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\n$rtrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$second` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\nexport interface $second {\n\n/**\n * Returns the seconds for a date as a number between 0 and 60 (leap seconds).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\n$second:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$setDifference` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\nexport interface $setDifference {\n\n/**\n * Returns a set with elements that appear in the first set but not in the second set; i.e. performs a relative complement of the second set relative to the first. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\n$setDifference:[\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression1: ResolvesToArray,\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setEquals` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\nexport interface $setEquals {\n\n/**\n * Returns true if the input sets have the same distinct elements. Accepts two or more argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\n$setEquals:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\nexport interface $setField {\n\n/**\n * Adds, updates, or removes a specified field in a document. You can use $setField to add, update, or remove fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\n$setField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,\n\n/**\n * The value that you want to assign to field. value can be any valid expression.\n * Set to $$REMOVE to remove field from the input document.\n */\nvalue: Expression,}};\n\n\n/**\n * A type describing the `$setIntersection` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\nexport interface $setIntersection {\n\n/**\n * Returns a set with elements that appear in all of the input sets. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\n$setIntersection:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setIsSubset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\nexport interface $setIsSubset {\n\n/**\n * Returns true if all elements of the first set appear in the second set, including when the first set equals the second set; i.e. not a strict subset. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\n$setIsSubset:[expression1: ResolvesToArray,expression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setUnion` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\nexport interface $setUnion {\n\n/**\n * Returns a set with elements that appear in any of the input sets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\n$setUnion:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$sin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\nexport interface $sin {\n\n/**\n * Returns the sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\n$sin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\nexport interface $sinh {\n\n/**\n * Returns the hyperbolic sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\n$sinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\nexport interface $size {\n\n/**\n * Returns the number of elements in the array. Accepts a single expression as argument.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\n$size:ResolvesToArray};\n\n\n/**\n * A type describing the `$slice` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\nexport interface $slice {\n\n/**\n * Returns a subset of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\n$slice:| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer.\n * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array.\n * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array.\n */\nposition: ResolvesToInt,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n};\n\n\n/**\n * A type describing the `$sortArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\nexport interface $sortArray {\n\n/**\n * Sorts the elements of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\n$sortArray:{\n\n/**\n * The array to be sorted.\n * The result is null if the expression: is missing, evaluates to null, or evaluates to undefined\n * If the expression evaluates to any other non-array value, the document returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The document specifies a sort ordering.\n */\nsortBy: Int | SortSpec | SortBy,}};\n\n\n/**\n * A type describing the `$split` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\nexport interface $split {\n\n/**\n * Splits a string into substrings based on a delimiter. Returns an array of substrings. If the delimiter is not found within the string, returns an array containing the original string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\n$split:[\n\n/**\n * The string to be split. string expression can be any valid expression as long as it resolves to a string.\n */\nstring: ResolvesToString,\n\n/**\n * The delimiter to use when splitting the string expression. delimiter can be any valid expression as long as it resolves to a string.\n */\ndelimiter: ResolvesToString,]};\n\n\n/**\n * A type describing the `$sqrt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\nexport interface $sqrt {\n\n/**\n * Calculates the square root.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\n$sqrt:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$strLenBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\nexport interface $strLenBytes {\n\n/**\n * Returns the number of UTF-8 encoded bytes in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\n$strLenBytes:ResolvesToString};\n\n\n/**\n * A type describing the `$strLenCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\nexport interface $strLenCP {\n\n/**\n * Returns the number of UTF-8 code points in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\n$strLenCP:ResolvesToString};\n\n\n/**\n * A type describing the `$strcasecmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\nexport interface $strcasecmp {\n\n/**\n * Performs case-insensitive string comparison and returns: 0 if two strings are equivalent, 1 if the first string is greater than the second, and -1 if the first string is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\n$strcasecmp:[expression1: ResolvesToString,expression2: ResolvesToString,]};\n\n\n/**\n * A type describing the `$substr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\nexport interface $substr {\n\n/**\n * Deprecated. Use $substrBytes or $substrCP.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\n$substr:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\nexport interface $substrBytes {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the specified number of bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\n$substrBytes:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\nexport interface $substrCP {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string and continues for the number of code points specified.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\n$substrCP:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$subtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\nexport interface $subtract {\n\n/**\n * Returns the result of subtracting the second value from the first. If the two values are numbers, return the difference. If the two values are dates, return the difference in milliseconds. If the two values are a date and a number in milliseconds, return the resulting date. Accepts two argument expressions. If the two values are a date and a number, specify the date argument first as it is not meaningful to subtract a date from a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\n$subtract:[expression1: ResolvesToNumber | ResolvesToDate,expression2: ResolvesToNumber | ResolvesToDate,]};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:[...(ResolvesToNumber | ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$switch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $switch {\n\n/**\n * Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$switch:{\n\n/**\n * An array of control branch documents. Each branch is a document with the following fields:\n * - case Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n * - then Can be any valid expression.\n * The branches array must contain at least one branch document.\n */\nbranches: unknown[],\n\n/**\n * The path to take if no branch case expression evaluates to true.\n * Although optional, if default is unspecified and no branch case evaluates to true, $switch returns an error.\n */\ndefault?: Expression,}};\n\n\n/**\n * A type describing the `$tan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\nexport interface $tan {\n\n/**\n * Returns the tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\n$tan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$tanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\nexport interface $tanh {\n\n/**\n * Returns the hyperbolic tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\n$tanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$toBool` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\nexport interface $toBool {\n\n/**\n * Converts value to a boolean.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\n$toBool:Expression};\n\n\n/**\n * A type describing the `$toDate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\nexport interface $toDate {\n\n/**\n * Converts value to a Date.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\n$toDate:Expression};\n\n\n/**\n * A type describing the `$toDecimal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\nexport interface $toDecimal {\n\n/**\n * Converts value to a Decimal128.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\n$toDecimal:Expression};\n\n\n/**\n * A type describing the `$toDouble` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\nexport interface $toDouble {\n\n/**\n * Converts value to a double.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\n$toDouble:Expression};\n\n\n/**\n * A type describing the `$toHashedIndexKey` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\nexport interface $toHashedIndexKey {\n\n/**\n * Computes and returns the hash value of the input expression using the same hash function that MongoDB uses to create a hashed index. A hash function maps a key or string to a fixed-size numeric value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\n$toHashedIndexKey:Expression};\n\n\n/**\n * A type describing the `$toInt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\nexport interface $toInt {\n\n/**\n * Converts value to an integer.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\n$toInt:Expression};\n\n\n/**\n * A type describing the `$toLong` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\nexport interface $toLong {\n\n/**\n * Converts value to a long.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\n$toLong:Expression};\n\n\n/**\n * A type describing the `$toLower` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\nexport interface $toLower {\n\n/**\n * Converts a string to lowercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\n$toLower:ResolvesToString};\n\n\n/**\n * A type describing the `$toObjectId` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\nexport interface $toObjectId {\n\n/**\n * Converts value to an ObjectId.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\n$toObjectId:Expression};\n\n\n/**\n * A type describing the `$toString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\nexport interface $toString {\n\n/**\n * Converts value to a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\n$toString:Expression};\n\n\n/**\n * A type describing the `$toUpper` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\nexport interface $toUpper {\n\n/**\n * Converts a string to uppercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\n$toUpper:ResolvesToString};\n\n\n/**\n * A type describing the `$trim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\nexport interface $trim {\n\n/**\n * Removes whitespace or the specified characters from the beginning and end of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\n$trim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$trunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\nexport interface $trunc {\n\n/**\n * Truncates a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\n$trunc:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $trunc returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g. -20 < place < 100. Defaults to 0.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$tsIncrement` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\nexport interface $tsIncrement {\n\n/**\n * Returns the incrementing ordinal from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\n$tsIncrement:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$tsSecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\nexport interface $tsSecond {\n\n/**\n * Returns the seconds from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\n$tsSecond:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\nexport interface $type {\n\n/**\n * Return the BSON data type of the field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\n$type:Expression};\n\n\n/**\n * A type describing the `$unsetField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\nexport interface $unsetField {\n\n/**\n * You can use $unsetField to remove fields with names that contain periods (.) or that start with dollar signs ($).\n * $unsetField is an alias for $setField using $$REMOVE to remove fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\n$unsetField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$week` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\nexport interface $week {\n\n/**\n * Returns the week number for a date as a number between 0 (the partial week that precedes the first Sunday of the year) and 53 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\n$week:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$year` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\nexport interface $year {\n\n/**\n * Returns the year for a date as a number (e.g. 2014).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\n$year:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$zip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\nexport interface $zip {\n\n/**\n * Merge two arrays together.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\n$zip:{\n\n/**\n * An array of expressions that resolve to arrays. The elements of these input arrays combine to form the arrays of the output array.\n * If any of the inputs arrays resolves to a value of null or refers to a missing field, $zip returns null.\n * If any of the inputs arrays does not resolve to an array or null nor refers to a missing field, $zip returns an error.\n */\ninputs: ResolvesToArray,\n\n/**\n * A boolean which specifies whether the length of the longest array determines the number of arrays in the output array.\n * The default value is false: the shortest array length determines the number of arrays in the output array.\n */\nuseLongestLength?: boolean,\n\n/**\n * An array of default element values to use if the input arrays have different lengths. You must specify useLongestLength: true along with this field, or else $zip will return an error.\n * If useLongestLength: true but defaults is empty or not specified, $zip uses null as the default value.\n * If specifying a non-empty defaults, you must specify a default for each input array or else $zip will return an error.\n */\ndefaults?: unknown[],}};\n};\nexport namespace Aggregation.Query {\n\n\n/**\n * A type describing the `$all` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\nexport interface $all {\n\n/**\n * Matches arrays that contain all elements specified in the query.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\n$all:[...(FieldQuery)[],]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\nexport interface $and {\n\n/**\n * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\n$and:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$bitsAllClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\nexport interface $bitsAllClear {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\n$bitsAllClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAllSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\nexport interface $bitsAllSet {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\n$bitsAllSet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnyClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\nexport interface $bitsAnyClear {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\n$bitsAnyClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnySet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\nexport interface $bitsAnySet {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\n$bitsAnySet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$box` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\nexport interface $box {\n\n/**\n * Specifies a rectangular box using legacy coordinate pairs for $geoWithin queries. The 2d index supports $box.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\n$box:unknown[]};\n\n\n/**\n * A type describing the `$center` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\nexport interface $center {\n\n/**\n * Specifies a circle using legacy coordinate pairs to $geoWithin queries when using planar geometry. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\n$center:unknown[]};\n\n\n/**\n * A type describing the `$centerSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\nexport interface $centerSphere {\n\n/**\n * Specifies a circle using either legacy coordinate pairs or GeoJSON format for $geoWithin queries when using spherical geometry. The 2dsphere and 2d indexes support $centerSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\n$centerSphere:unknown[]};\n\n\n/**\n * A type describing the `$elemMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\nexport interface $elemMatch {\n\n/**\n * The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\n$elemMatch:Query | FieldQuery};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\nexport interface $eq {\n\n/**\n * Matches values that are equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\n$eq:Expression};\n\n\n/**\n * A type describing the `$exists` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\nexport interface $exists {\n\n/**\n * Matches documents that have the specified field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\n$exists:boolean};\n\n\n/**\n * A type describing the `$expr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\nexport interface $expr {\n\n/**\n * Allows use of aggregation expressions within the query language.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\n$expr:Expression};\n\n\n/**\n * A type describing the `$geoIntersects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\nexport interface $geoIntersects {\n\n/**\n * Selects geometries that intersect with a GeoJSON geometry. The 2dsphere index supports $geoIntersects.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\n$geoIntersects:Geometry & {}};\n\n\n/**\n * A type describing the `$geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\nexport interface $geoWithin {\n\n/**\n * Selects geometries within a bounding GeoJSON geometry. The 2dsphere and 2d indexes support $geoWithin.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\n$geoWithin:Geometry & {}};\n\n\n/**\n * A type describing the `$geometry` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\nexport interface $geometry {\n\n/**\n * Specifies a geometry in GeoJSON format to geospatial query operators.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\n$geometry:{type: string,coordinates: unknown[],crs?: Record,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\nexport interface $gt {\n\n/**\n * Matches values that are greater than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\n$gt:any};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\nexport interface $gte {\n\n/**\n * Matches values that are greater than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\n$gte:any};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\nexport interface $in {\n\n/**\n * Matches any of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\n$in:unknown[]};\n\n\n/**\n * A type describing the `$jsonSchema` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\nexport interface $jsonSchema {\n\n/**\n * Validate documents against the given JSON Schema.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\n$jsonSchema:Record};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\nexport interface $lt {\n\n/**\n * Matches values that are less than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\n$lt:any};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\nexport interface $lte {\n\n/**\n * Matches values that are less than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\n$lte:any};\n\n\n/**\n * A type describing the `$maxDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\nexport interface $maxDistance {\n\n/**\n * Specifies a maximum distance to limit the results of $near and $nearSphere queries. The 2dsphere and 2d indexes support $maxDistance.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\n$maxDistance:Number};\n\n\n/**\n * A type describing the `$minDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\nexport interface $minDistance {\n\n/**\n * Specifies a minimum distance to limit the results of $near and $nearSphere queries. For use with 2dsphere index only.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\n$minDistance:Int | Double};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\nexport interface $mod {\n\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\n$mod:[divisor: Number,remainder: Number,]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\nexport interface $ne {\n\n/**\n * Matches all values that are not equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\n$ne:any};\n\n\n/**\n * A type describing the `$near` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\nexport interface $near {\n\n/**\n * Returns geospatial objects in proximity to a point. Requires a geospatial index. The 2dsphere and 2d indexes support $near.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\n$near:Geometry & {\n\n/**\n * Distance in meters. Limits the results to those documents that are at most the specified distance from the center point.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nearSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\nexport interface $nearSphere {\n\n/**\n * Returns geospatial objects in proximity to a point on a sphere. Requires a geospatial index. The 2dsphere and 2d indexes support $nearSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\n$nearSphere:Geometry & {\n\n/**\n * Distance in meters.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\nexport interface $nin {\n\n/**\n * Matches none of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\n$nin:unknown[]};\n\n\n/**\n * A type describing the `$nor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\nexport interface $nor {\n\n/**\n * Joins query clauses with a logical NOR returns all documents that fail to match both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\n$nor:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\nexport interface $not {\n\n/**\n * Inverts the effect of a query expression and returns documents that do not match the query expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\n$not:FieldQuery};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\nexport interface $or {\n\n/**\n * Joins query clauses with a logical OR returns all documents that match the conditions of either clause.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\n$or:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$polygon` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\nexport interface $polygon {\n\n/**\n * Specifies a polygon to using legacy coordinate pairs for $geoWithin queries. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\n$polygon:unknown[]};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\nexport interface $rand {\n\n/**\n * Generates a random float between 0 and 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$regex` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\nexport interface $regex {\n\n/**\n * Selects documents where values match a specified regular expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\n$regex:Regex};\n\n\n/**\n * A type describing the `$sampleRate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\nexport interface $sampleRate {\n\n/**\n * Randomly select documents at a given rate. Although the exact number of documents selected varies on each run, the quantity chosen approximates the sample rate expressed as a percentage of the total number of documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\n$sampleRate:ResolvesToDouble};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\nexport interface $size {\n\n/**\n * Selects documents if the array field is a specified size.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\n$size:Int};\n\n\n/**\n * A type describing the `$text` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\nexport interface $text {\n\n/**\n * Performs text search.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\n$text:{\n\n/**\n * A string of terms that MongoDB parses and uses to query the text index. MongoDB performs a logical OR search of the terms unless specified as a phrase.\n */\n$search: string,\n\n/**\n * The language that determines the list of stop words for the search and the rules for the stemmer and tokenizer. If not specified, the search uses the default language of the index.\n * If you specify a default_language value of none, then the text index parses through each word in the field, including stop words, and ignores suffix stemming.\n */\n$language?: string,\n\n/**\n * A boolean flag to enable or disable case sensitive search. Defaults to false; i.e. the search defers to the case insensitivity of the text index.\n */\n$caseSensitive?: boolean,\n\n/**\n * A boolean flag to enable or disable diacritic sensitive search against version 3 text indexes. Defaults to false; i.e. the search defers to the diacritic insensitivity of the text index.\n * Text searches against earlier versions of the text index are inherently diacritic sensitive and cannot be diacritic insensitive. As such, the $diacriticSensitive option has no effect with earlier versions of the text index.\n */\n$diacriticSensitive?: boolean,}};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\nexport interface $type {\n\n/**\n * Selects documents if a field is of the specified type.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\n$type:[...(Int | string)[],]};\n\n\n/**\n * A type describing the `$where` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\nexport interface $where {\n\n/**\n * Matches documents that satisfy a JavaScript expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\n$where:Javascript};\n};\nexport namespace Aggregation.Search {\n\n\n/**\n * A type describing the `autocomplete` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nexport interface Autocomplete {\n\n/**\n * The autocomplete operator performs a search for a word or phrase that\n * contains a sequence of characters from an incomplete input string. The\n * fields that you intend to query with the autocomplete operator must be\n * indexed with the autocomplete data type in the collection\'s index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nautocomplete:{path: SearchPath,query: string,tokenOrder?: string,fuzzy?: Record,score?: SearchScore,}};\n\n\n/**\n * A type describing the `compound` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\nexport interface Compound {\n\n/**\n * The compound operator combines two or more operators into a single query.\n * Each element of a compound query is called a clause, and each clause\n * consists of one or more sub-queries.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\ncompound:{must?: (SearchOperator) | (SearchOperator)[],mustNot?: (SearchOperator) | (SearchOperator)[],should?: (SearchOperator) | (SearchOperator)[],filter?: (SearchOperator) | (SearchOperator)[],minimumShouldMatch?: Int,score?: SearchScore,}};\n\n\n/**\n * A type describing the `embeddedDocument` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nexport interface EmbeddedDocument {\n\n/**\n * The embeddedDocument operator is similar to $elemMatch operator.\n * It constrains multiple query predicates to be satisfied from a single\n * element of an array of embedded documents. embeddedDocument can be used only\n * for queries over fields of the embeddedDocuments\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nembeddedDocument:{path: SearchPath,operator: SearchOperator,score?: SearchScore,}};\n\n\n/**\n * A type describing the `equals` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nexport interface Equals {\n\n/**\n * The equals operator checks whether a field matches a value you specify.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nequals:{path: SearchPath,value: bson.Binary | boolean | Date | bson.ObjectId | null | Number | string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `exists` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexport interface Exists {\n\n/**\n * The exists operator tests if a path to a specified indexed field name exists in a document.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexists:{path: SearchPath,score?: SearchScore,}};\n\n\n/**\n * A type describing the `facet` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nexport interface Facet {\n\n/**\n * The facet collector groups results by values or ranges in the specified\n * faceted fields and returns the count for each of those groups.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nfacet:{facets: Record,operator?: SearchOperator,}};\n\n\n/**\n * A type describing the `geoShape` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\nexport interface GeoShape {\n\n/**\n * The geoShape operator supports querying shapes with a relation to a given\n * geometry if indexShapes is set to true in the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\ngeoShape:{path: SearchPath,relation: string,geometry: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\nexport interface GeoWithin {\n\n/**\n * The geoWithin operator supports querying geographic points within a given\n * geometry. Only points are returned, even if indexShapes value is true in\n * the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\ngeoWithin:{path: SearchPath,box?: Record,circle?: Record,geometry?: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `in` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nexport interface In {\n\n/**\n * The in operator performs a search for an array of BSON values in a field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nin:{path: SearchPath,value: (any) | (any)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `moreLikeThis` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nexport interface MoreLikeThis {\n\n/**\n * The moreLikeThis operator returns documents similar to input documents.\n * The moreLikeThis operator allows you to build features for your applications\n * that display similar or alternative results based on one or more given documents.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nmoreLikeThis:{like: (Record) | (Record)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `near` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nexport interface Near {\n\n/**\n * The near operator supports querying and scoring numeric, date, and GeoJSON point values.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nnear:{path: SearchPath,origin: Date | Number | Geometry,pivot: Number,score?: SearchScore,}};\n\n\n/**\n * A type describing the `phrase` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nexport interface Phrase {\n\n/**\n * The phrase operator performs search for documents containing an ordered sequence of terms using the analyzer specified in the index configuration.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nphrase:{path: SearchPath,query: (string) | (string)[],slop?: Int,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `queryString` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/}\n */\nexport interface QueryString {queryString:{defaultPath: SearchPath,query: string,}};\n\n\n/**\n * A type describing the `range` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nexport interface Range {\n\n/**\n * The range operator supports querying and scoring numeric, date, and string values.\n * You can use this operator to find results that are within a given numeric, date, objectId, or letter (from the English alphabet) range.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nrange:{path: SearchPath,gt?: Date | Number | string | bson.ObjectId,gte?: Date | Number | string | bson.ObjectId,lt?: Date | Number | string | bson.ObjectId,lte?: Date | Number | string | bson.ObjectId,score?: SearchScore,}};\n\n\n/**\n * A type describing the `regex` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nexport interface Regex {\n\n/**\n * regex interprets the query field as a regular expression.\n * regex is a term-level operator, meaning that the query field isn\'t analyzed.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nregex:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n\n\n/**\n * A type describing the `text` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\nexport interface Text {\n\n/**\n * The text operator performs a full-text search using the analyzer that you specify in the index configuration.\n * If you omit an analyzer, the text operator uses the default standard analyzer.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\ntext:{path: SearchPath,query: string,fuzzy?: Record,matchCriteria?: string,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `wildcard` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nexport interface Wildcard {\n\n/**\n * The wildcard operator enables queries which use special characters in the search string that can match any character.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nwildcard:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n};\nexport namespace Aggregation.Stage {\n\n\n/**\n * A type describing the `$addFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\nexport interface $addFields {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\n$addFields:{\n\n/**\n * Specify the name of each field to add and set its value to an aggregation expression or an empty object.\n */\n} & { [expression: string]: Expression,}};\n\n\n/**\n * A type describing the `$bucket` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\nexport interface $bucket {\n\n/**\n * Categorizes incoming documents into groups, called buckets, based on a specified expression and bucket boundaries.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\n$bucket:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n * Unless $bucket includes a default specification, each input document must resolve the groupBy field path or expression to a value that falls within one of the ranges specified by the boundaries.\n */\ngroupBy: Expression,\n\n/**\n * An array of values based on the groupBy expression that specify the boundaries for each bucket. Each adjacent pair of values acts as the inclusive lower boundary and the exclusive upper boundary for the bucket. You must specify at least two boundaries.\n * The specified values must be in ascending order and all of the same type. The exception is if the values are of mixed numeric types, such as:\n */\nboundaries: unknown[],\n\n/**\n * A literal that specifies the _id of an additional bucket that contains all documents whose groupBy expression result does not fall into a bucket specified by boundaries.\n * If unspecified, each input document must resolve the groupBy expression to a value within one of the bucket ranges specified by boundaries or the operation throws an error.\n * The default value must be less than the lowest boundaries value, or greater than or equal to the highest boundaries value.\n * The default value can be of a different type than the entries in boundaries.\n */\ndefault?: Expression,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * If you do not specify an output document, the operation returns a count field containing the number of documents in each bucket.\n * If you specify an output document, only the fields specified in the document are returned; i.e. the count field is not returned unless it is explicitly included in the output document.\n */\noutput?: Record,}};\n\n\n/**\n * A type describing the `$bucketAuto` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\nexport interface $bucketAuto {\n\n/**\n * Categorizes incoming documents into a specific number of groups, called buckets, based on a specified expression. Bucket boundaries are automatically determined in an attempt to evenly distribute the documents into the specified number of buckets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\n$bucketAuto:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n */\ngroupBy: Expression,\n\n/**\n * A positive 32-bit integer that specifies the number of buckets into which input documents are grouped.\n */\nbuckets: Int,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * The default count field is not included in the output document when output is specified. Explicitly specify the count expression as part of the output document to include it.\n */\noutput?: Record,\n\n/**\n * A string that specifies the preferred number series to use to ensure that the calculated boundary edges end on preferred round numbers or their powers of 10.\n * Available only if the all groupBy values are numeric and none of them are NaN.\n */\ngranularity?: Granularity,}};\n\n\n/**\n * A type describing the `$changeStream` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\nexport interface $changeStream {\n\n/**\n * Returns a Change Stream cursor for the collection or database. This stage can only occur once in an aggregation pipeline and it must occur as the first stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\n$changeStream:{\n\n/**\n * A flag indicating whether the stream should report all changes that occur on the deployment, aside from those on internal databases or collections.\n */\nallChangesForCluster?: boolean,\n\n/**\n * Specifies whether change notifications include a copy of the full document when modified by update operations.\n */\nfullDocument?: FullDocument,\n\n/**\n * Valid values are "off", "whenAvailable", or "required". If set to "off", the "fullDocumentBeforeChange" field of the output document is always omitted. If set to "whenAvailable", the "fullDocumentBeforeChange" field will be populated with the pre-image of the document modified by the current change event if such a pre-image is available, and will be omitted otherwise. If set to "required", then the "fullDocumentBeforeChange" field is always populated and an exception is thrown if the pre-image is not available.\n */\nfullDocumentBeforeChange?: FullDocumentBeforeChange,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with startAfter or startAtOperationTime fields.\n */\nresumeAfter?: Int,\n\n/**\n * Specifies whether to include additional change events, such as such as DDL and index operations.\n * New in MongoDB 6.0.\n */\nshowExpandedEvents?: boolean,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with resumeAfter or startAtOperationTime fields.\n */\nstartAfter?: Record,\n\n/**\n * Specifies a time as the logical starting point for the change stream. Cannot be used with resumeAfter or startAfter fields.\n */\nstartAtOperationTime?: bson.Timestamp,}};\n\n\n/**\n * A type describing the `$changeStreamSplitLargeEvent` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\nexport interface $changeStreamSplitLargeEvent {\n\n/**\n * Splits large change stream events that exceed 16 MB into smaller fragments returned in a change stream cursor.\n * You can only use $changeStreamSplitLargeEvent in a $changeStream pipeline and it must be the final stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\n$changeStreamSplitLargeEvent:Record};\n\n\n/**\n * A type describing the `$collStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\nexport interface $collStats {\n\n/**\n * Returns statistics regarding a collection or view.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\n$collStats:{latencyStats?: Record,storageStats?: Record,count?: Record,queryExecStats?: Record,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\nexport interface $count {\n\n/**\n * Returns a count of the number of documents at this stage of the aggregation pipeline.\n * Distinct from the $count aggregation accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\n$count:string};\n\n\n/**\n * A type describing the `$currentOp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\nexport interface $currentOp {\n\n/**\n * Returns information on active and/or dormant operations for the MongoDB deployment. To run, use the db.aggregate() method.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\n$currentOp:{allUsers?: boolean,idleConnections?: boolean,idleCursors?: boolean,idleSessions?: boolean,localOps?: boolean,}};\n\n\n/**\n * A type describing the `$densify` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\nexport interface $densify {\n\n/**\n * Creates new documents in a sequence of documents where certain values in a field are missing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\n$densify:{\n\n/**\n * The field to densify. The values of the specified field must either be all numeric values or all dates.\n * Documents that do not contain the specified field continue through the pipeline unmodified.\n * To specify a in an embedded document or in an array, use dot notation.\n */\nfield: string,\n\n/**\n * The field(s) that will be used as the partition keys.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specification for range based densification.\n */\nrange: Range,}};\n\n\n/**\n * A type describing the `$documents` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\nexport interface $documents {\n\n/**\n * Returns literal documents from input values.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\n$documents:ResolvesToArray};\n\n\n/**\n * A type describing the `$facet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\nexport interface $facet {\n\n/**\n * Processes multiple aggregation pipelines within a single stage on the same set of input documents. Enables the creation of multi-faceted aggregations capable of characterizing data across multiple dimensions, or facets, in a single stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\n$facet:{} & { [facet: string]: Pipeline,}};\n\n\n/**\n * A type describing the `$fill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\nexport interface $fill {\n\n/**\n * Populates null and missing field values within documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\n$fill:{\n\n/**\n * Specifies an expression to group the documents. In the $fill stage, a group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionBy?: Record | string,\n\n/**\n * Specifies an array of fields as the compound key to group the documents. In the $fill stage, each group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specifies the field or fields to sort the documents within each partition. Uses the same syntax as the $sort stage.\n */\nsortBy?: SortBy,\n\n/**\n * Specifies an object containing each field for which to fill missing values. You can specify multiple fields in the output object.\n * The object name is the name of the field to fill. The object value specifies how the field is filled.\n */\noutput: Record,}};\n\n\n/**\n * A type describing the `$geoNear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\nexport interface $geoNear {\n\n/**\n * Returns an ordered stream of documents based on the proximity to a geospatial point. Incorporates the functionality of $match, $sort, and $limit for geospatial data. The output documents include an additional distance field and can include a location identifier field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\n$geoNear:{\n\n/**\n * The output field that contains the calculated distance. To specify a field within an embedded document, use dot notation.\n */\ndistanceField?: string,\n\n/**\n * The factor to multiply all distances returned by the query. For example, use the distanceMultiplier to convert radians, as returned by a spherical query, to kilometers by multiplying by the radius of the Earth.\n */\ndistanceMultiplier?: Number,\n\n/**\n * This specifies the output field that identifies the location used to calculate the distance. This option is useful when a location field contains multiple locations. To specify a field within an embedded document, use dot notation.\n */\nincludeLocs?: string,\n\n/**\n * Specify the geospatial indexed field to use when calculating the distance.\n */\nkey?: string,\n\n/**\n * The maximum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall within the specified distance from the center point.\n * Specify the distance in meters if the specified point is GeoJSON and in radians if the specified point is legacy coordinate pairs.\n */\nmaxDistance?: Number,\n\n/**\n * The minimum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall outside the specified distance from the center point.\n * Specify the distance in meters for GeoJSON data and in radians for legacy coordinate pairs.\n */\nminDistance?: Number,\n\n/**\n * The point for which to find the closest documents.\n */\nnear: GeoPoint | ResolvesToObject,\n\n/**\n * Limits the results to the documents that match the query. The query syntax is the usual MongoDB read operation query syntax.\n * You cannot specify a $near predicate in the query field of the $geoNear stage.\n */\nquery?: Query,\n\n/**\n * Determines how MongoDB calculates the distance between two points:\n * - When true, MongoDB uses $nearSphere semantics and calculates distances using spherical geometry.\n * - When false, MongoDB uses $near semantics: spherical geometry for 2dsphere indexes and planar geometry for 2d indexes.\n * Default: false.\n */\nspherical?: boolean,}};\n\n\n/**\n * A type describing the `$graphLookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\nexport interface $graphLookup {\n\n/**\n * Performs a recursive search on a collection. To each output document, adds a new array field that contains the traversal results of the recursive search for that document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\n$graphLookup:{\n\n/**\n * Target collection for the $graphLookup operation to search, recursively matching the connectFromField to the connectToField. The from collection must be in the same database as any other collections used in the operation.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom: string,\n\n/**\n * Expression that specifies the value of the connectFromField with which to start the recursive search. Optionally, startWith may be array of values, each of which is individually followed through the traversal process.\n */\nstartWith: (Expression) | (Expression)[],\n\n/**\n * Field name whose value $graphLookup uses to recursively match against the connectToField of other documents in the collection. If the value is an array, each element is individually followed through the traversal process.\n */\nconnectFromField: string,\n\n/**\n * Field name in other documents against which to match the value of the field specified by the connectFromField parameter.\n */\nconnectToField: string,\n\n/**\n * Name of the array field added to each output document. Contains the documents traversed in the $graphLookup stage to reach the document.\n */\nas: string,\n\n/**\n * Non-negative integral number specifying the maximum recursion depth.\n */\nmaxDepth?: Int,\n\n/**\n * Name of the field to add to each traversed document in the search path. The value of this field is the recursion depth for the document, represented as a NumberLong. Recursion depth value starts at zero, so the first lookup corresponds to zero depth.\n */\ndepthField?: string,\n\n/**\n * A document specifying additional conditions for the recursive search. The syntax is identical to query filter syntax.\n */\nrestrictSearchWithMatch?: Query,}};\n\n\n/**\n * A type describing the `$group` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\nexport interface $group {\n\n/**\n * Groups input documents by a specified identifier expression and applies the accumulator expression(s), if specified, to each group. Consumes all input documents and outputs one document per each distinct group. The output documents only contain the identifier field and, if specified, accumulated fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\n$group:RecordWithStaticFields<{\n\n/**\n * The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents.\n */\n_id: Expression | ExpressionMap,}, \n\n/**\n * Computed using the accumulator operators.\n */\n Accumulator>};\n\n\n/**\n * A type describing the `$indexStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\nexport interface $indexStats {\n\n/**\n * Returns statistics regarding the use of each index for the collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\n$indexStats:Record};\n\n\n/**\n * A type describing the `$limit` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\nexport interface $limit {\n\n/**\n * Passes the first n documents unmodified to the pipeline where n is the specified limit. For each input document, outputs either one document (for the first n documents) or zero documents (after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\n$limit:Int};\n\n\n/**\n * A type describing the `$listLocalSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\nexport interface $listLocalSessions {\n\n/**\n * Lists all active sessions recently in use on the currently connected mongos or mongod instance. These sessions may have not yet propagated to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\n$listLocalSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$listSampledQueries` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\nexport interface $listSampledQueries {\n\n/**\n * Lists sampled queries for all collections or a specific collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\n$listSampledQueries:{namespace?: string,}};\n\n\n/**\n * A type describing the `$listSearchIndexes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\nexport interface $listSearchIndexes {\n\n/**\n * Returns information about existing Atlas Search indexes on a specified collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\n$listSearchIndexes:{\n\n/**\n * The id of the index to return information about.\n */\nid?: string,\n\n/**\n * The name of the index to return information about.\n */\nname?: string,}};\n\n\n/**\n * A type describing the `$listSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\nexport interface $listSessions {\n\n/**\n * Lists all sessions that have been active long enough to propagate to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\n$listSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$lookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\nexport interface $lookup {\n\n/**\n * Performs a left outer join to another collection in the same database to filter in documents from the "joined" collection for processing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\n$lookup:{\n\n/**\n * Specifies the collection in the same database to perform the join with.\n * from is optional, you can use a $documents stage in a $lookup stage instead. For an example, see Use a $documents Stage in a $lookup Stage.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom?: string,\n\n/**\n * Specifies the field from the documents input to the $lookup stage. $lookup performs an equality match on the localField to the foreignField from the documents of the from collection. If an input document does not contain the localField, the $lookup treats the field as having a value of null for matching purposes.\n */\nlocalField?: string,\n\n/**\n * Specifies the field from the documents in the from collection. $lookup performs an equality match on the foreignField to the localField from the input documents. If a document in the from collection does not contain the foreignField, the $lookup treats the value as null for matching purposes.\n */\nforeignField?: string,\n\n/**\n * Specifies variables to use in the pipeline stages. Use the variable expressions to access the fields from the joined collection\'s documents that are input to the pipeline.\n */\nlet?: Record,\n\n/**\n * Specifies the pipeline to run on the joined collection. The pipeline determines the resulting documents from the joined collection. To return all documents, specify an empty pipeline [].\n * The pipeline cannot include the $out stage or the $merge stage. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n * The pipeline cannot directly access the joined document fields. Instead, define variables for the joined document fields using the let option and then reference the variables in the pipeline stages.\n */\npipeline?: Pipeline,\n\n/**\n * Specifies the name of the new array field to add to the input documents. The new array field contains the matching documents from the from collection. If the specified name already exists in the input document, the existing field is overwritten.\n */\nas: string,}};\n\n\n/**\n * A type describing the `$match` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\nexport interface $match {\n\n/**\n * Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. $match uses standard MongoDB queries. For each input document, outputs either one document (a match) or zero documents (no match).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\n$match:Query};\n\n\n/**\n * A type describing the `$merge` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\nexport interface $merge {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. The stage can incorporate (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) the results into an output collection. To use the $merge stage, it must be the last stage in the pipeline.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\n$merge:{\n\n/**\n * The output collection.\n */\ninto: string | OutCollection,\n\n/**\n * Field or fields that act as a unique identifier for a document. The identifier determines if a results document matches an existing document in the output collection.\n */\non?: (string) | (string)[],\n\n/**\n * Specifies variables for use in the whenMatched pipeline.\n */\nlet?: Record,\n\n/**\n * The behavior of $merge if a result document and an existing document in the collection have the same value for the specified on field(s).\n */\nwhenMatched?: WhenMatched | Pipeline,\n\n/**\n * The behavior of $merge if a result document does not match an existing document in the out collection.\n */\nwhenNotMatched?: WhenNotMatched,}};\n\n\n/**\n * A type describing the `$out` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\nexport interface $out {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. To use the $out stage, it must be the last stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\n$out:string | OutCollection};\n\n\n/**\n * A type describing the `$planCacheStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\nexport interface $planCacheStats {\n\n/**\n * Returns plan cache information for a collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\n$planCacheStats:Record};\n\n\n/**\n * A type describing the `$project` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\nexport interface $project {\n\n/**\n * Reshapes each document in the stream, such as by adding new fields or removing existing fields. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\n$project:{} & { [specification: string]: Expression,}};\n\n\n/**\n * A type describing the `$redact` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\nexport interface $redact {\n\n/**\n * Reshapes each document in the stream by restricting the content for each document based on information stored in the documents themselves. Incorporates the functionality of $project and $match. Can be used to implement field level redaction. For each input document, outputs either one or zero documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\n$redact:Expression};\n\n\n/**\n * A type describing the `$replaceRoot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\nexport interface $replaceRoot {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\n$replaceRoot:{newRoot: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$replaceWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\nexport interface $replaceWith {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * Alias for $replaceRoot.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\n$replaceWith:ResolvesToObject};\n\n\n/**\n * A type describing the `$sample` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\nexport interface $sample {\n\n/**\n * Randomly selects the specified number of documents from its input.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\n$sample:{\n\n/**\n * The number of documents to randomly select.\n */\nsize: Int,}};\n\n\n/**\n * A type describing the `$search` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\nexport interface $search {\n\n/**\n * Performs a full-text search of the field or fields in an Atlas collection.\n * NOTE: $search is only available for MongoDB Atlas clusters, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\n$search:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to "default".\n */\nindex?: string,\n\n/**\n * Specifies the highlighting options for displaying search terms in their original context.\n */\nhighlight?: SearchHighlight,\n\n/**\n * Parallelize search across segments on dedicated search nodes.\n * If you don\'t have separate search nodes on your cluster,\n * Atlas Search ignores this flag. If omitted, defaults to false.\n */\nconcurrent?: boolean,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,\n\n/**\n * Reference point for retrieving results. searchAfter returns documents starting immediately following the specified reference point.\n */\nsearchAfter?: string,\n\n/**\n * Reference point for retrieving results. searchBefore returns documents starting immediately before the specified reference point.\n */\nsearchBefore?: string,\n\n/**\n * Flag that specifies whether to retrieve a detailed breakdown of the score for the documents in the results. If omitted, defaults to false.\n */\nscoreDetails?: boolean,\n\n/**\n * Document that specifies the fields to sort the Atlas Search results by in ascending or descending order.\n */\nsort?: Record,\n\n/**\n * Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from Atlas Search.\n */\nreturnStoredSource?: boolean,\n\n/**\n * Document that specifies the tracking option to retrieve analytics information on the search terms.\n */\ntracking?: Record,}};\n\n\n/**\n * A type describing the `$searchMeta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\nexport interface $searchMeta {\n\n/**\n * Returns different types of metadata result documents for the Atlas Search query against an Atlas collection.\n * NOTE: $searchMeta is only available for MongoDB Atlas clusters running MongoDB v4.4.9 or higher, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\n$searchMeta:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to default.\n */\nindex?: string,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,}};\n\n\n/**\n * A type describing the `$set` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\nexport interface $set {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * Alias for $addFields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\n$set:{} & { [field: string]: Expression,}};\n\n\n/**\n * A type describing the `$setWindowFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\nexport interface $setWindowFields {\n\n/**\n * Groups documents into windows and applies one or more operators to the documents in each window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\n$setWindowFields:{\n\n/**\n * Specifies the field(s) to sort the documents by in the partition. Uses the same syntax as the $sort stage. Default is no sorting.\n */\nsortBy: SortBy,\n\n/**\n * Specifies the field(s) to append to the documents in the output returned by the $setWindowFields stage. Each field is set to the result returned by the window operator.\n * A field can contain dots to specify embedded document fields and array fields. The semantics for the embedded document dotted notation in the $setWindowFields stage are the same as the $addFields and $set stages.\n */\noutput: Record,\n\n/**\n * Specifies an expression to group the documents. In the $setWindowFields stage, the group of documents is known as a partition. Default is one partition for the entire collection.\n */\npartitionBy?: Expression,}};\n\n\n/**\n * A type describing the `$shardedDataDistribution` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\nexport interface $shardedDataDistribution {\n\n/**\n * Provides data and size distribution information on sharded collections.\n * New in MongoDB 6.0.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\n$shardedDataDistribution:Record};\n\n\n/**\n * A type describing the `$skip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\nexport interface $skip {\n\n/**\n * Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. For each input document, outputs either zero documents (for the first n documents) or one document (if after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\n$skip:Int};\n\n\n/**\n * A type describing the `$sort` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\nexport interface $sort {\n\n/**\n * Reorders the document stream by a specified sort key. Only the order changes; the documents remain unmodified. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\n$sort:{} & { [sort: string]: Expression | SortSpec,}};\n\n\n/**\n * A type describing the `$sortByCount` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\nexport interface $sortByCount {\n\n/**\n * Groups incoming documents based on the value of a specified expression, then computes the count of documents in each distinct group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\n$sortByCount:Expression};\n\n\n/**\n * A type describing the `$unionWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\nexport interface $unionWith {\n\n/**\n * Performs a union of two collections; i.e. combines pipeline results from two collections into a single result set.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\n$unionWith:{\n\n/**\n * The collection or view whose pipeline results you wish to include in the result set.\n */\ncoll: string,\n\n/**\n * An aggregation pipeline to apply to the specified coll.\n * The pipeline cannot include the $out and $merge stages. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n */\npipeline?: Pipeline,}};\n\n\n/**\n * A type describing the `$unset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\nexport interface $unset {\n\n/**\n * Removes or excludes fields from documents.\n * Alias for $project stage that removes or excludes fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\n$unset:[...(UnprefixedFieldPath)[],]};\n\n\n/**\n * A type describing the `$unwind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\nexport interface $unwind {\n\n/**\n * Deconstructs an array field from the input documents to output a document for each element. Each output document replaces the array with an element value. For each input document, outputs n documents where n is the number of array elements and can be zero for an empty array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\n$unwind:{\n\n/**\n * Field path to an array field.\n */\npath: ArrayFieldPath,\n\n/**\n * The name of a new field to hold the array index of the element. The name cannot start with a dollar sign $.\n */\nincludeArrayIndex?: string,\n\n/**\n * If true, if the path is null, missing, or an empty array, $unwind outputs the document.\n * If false, if path is null, missing, or an empty array, $unwind does not output a document.\n * The default value is false.\n */\npreserveNullAndEmptyArrays?: boolean,}};\n\n\n/**\n * A type describing the `$vectorSearch` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\nexport interface $vectorSearch {\n\n/**\n * The $vectorSearch stage performs an ANN or ENN search on a vector in the specified field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\n$vectorSearch:{\n\n/**\n * Name of the Atlas Vector Search index to use.\n */\nindex: string,\n\n/**\n * Number of documents to return in the results. This value can\'t exceed the value of numCandidates if you specify numCandidates.\n */\nlimit: Int,\n\n/**\n * Indexed vector type field to search.\n */\npath: string,\n\n/**\n * Array of numbers that represent the query vector. The number type must match the indexed field value type.\n */\nqueryVector: unknown[],\n\n/**\n * This is required if numCandidates is omitted. false to run ANN search. true to run ENN search.\n */\nexact?: boolean,\n\n/**\n * Any match query that compares an indexed field with a boolean, date, objectId, number (not decimals), string, or UUID to use as a pre-filter.\n */\nfilter?: Query,\n\n/**\n * This field is required if exact is false or omitted.\n * Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can\'t specify a number less than the number of documents to return (limit).\n */\nnumCandidates?: Int,}};\n};\n\nexport type Int = number|bson.Int32|{ $numberInt: string };\nexport type Double = number|bson.Double|{ $numberDouble: string };\nexport type Decimal = bson.Decimal128|{ $numberDecimal: string };\nexport type Regex = RegExp|bson.BSONRegExp|{ pattern: string, options?: string };\nexport type Long = bigint|bson.Long|{ $numberLong: string };\nexport type Javascript = bson.Code|Function|string;\nexport type Geometry = {type: "Point", coordinates: number[] }|{type:"MultiPoint", coordinates: number[][] }|{type:"LineString", coordinates: number[][] }|{type:"MultiLineString", coordinates: number[][][] }|{type:"Polygon", coordinates: number[][][] }|{type:"MultiPolygon", coordinates: number[][][][] }|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$geometry|Aggregation.Query.$polygon;\nexport type Number = Int|Long|Double|Decimal;\nexport type BsonPrimitive = Number|bson.Binary|bson.ObjectId|string|boolean|Date|null|Regex|Javascript|bson.Timestamp;\nexport type SearchPath = UnprefixedFieldPath|UnprefixedFieldPath[]|{ wildcard: string };\nexport type SearchScore = unknown;\nexport type Granularity = string;\nexport type FullDocument = string;\nexport type FullDocumentBeforeChange = string;\nexport type AccumulatorPercentile = string;\nexport type Range = unknown;\nexport type SortBy = unknown;\nexport type GeoPoint = unknown;\nexport type SortSpec = -1|1;\nexport type TimeUnit = "year"|"quarter"|"month"|"week"|"day"|"hour"|"minute"|"second"|"millisecond";\nexport type OutCollection = unknown;\nexport type WhenMatched = string;\nexport type WhenNotMatched = string;\nexport type Expression = ExpressionOperator|FieldPath|BsonPrimitive|FieldExpression|FieldPath[];\nexport type ExpressionMap = { [k: string]: Expression };\nexport type Stage = StageOperator|Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;\nexport type Pipeline = Stage[];\nexport type Query = QueryOperator|Partial<{ [k in keyof S]: Condition }>|Aggregation.Query.$and|Aggregation.Query.$expr|Aggregation.Query.$jsonSchema|Aggregation.Query.$nor|Aggregation.Query.$or|Aggregation.Query.$sampleRate|Aggregation.Query.$text|Aggregation.Query.$where;\nexport type Accumulator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type SearchHighlight = {\n path:\n | UnprefixedFieldPath\n | UnprefixedFieldPath[]\n | { wildcard: string }\n | \'*\'\n | MultiAnalyzerSpec\n | (UnprefixedFieldPath | MultiAnalyzerSpec)[];\n\n maxCharsToExamine?: number;\n maxNumPassages?: number;\n };\nexport type FieldPath = `$${AFieldPath}`;\nexport type UnprefixedFieldPath = AFieldPath;\nexport type NumberFieldPath = `$${AFieldPath}`;\nexport type DoubleFieldPath = `$${AFieldPath}`;\nexport type StringFieldPath = `$${AFieldPath}`;\nexport type ObjectFieldPath = `$${AFieldPath>}`;\nexport type ArrayFieldPath = `$${AFieldPath}`;\nexport type BinDataFieldPath = `$${AFieldPath}`;\nexport type ObjectIdFieldPath = `$${AFieldPath}`;\nexport type BoolFieldPath = `$${AFieldPath}`;\nexport type DateFieldPath = `$${AFieldPath}`;\nexport type NullFieldPath = `$${AFieldPath}`;\nexport type RegexFieldPath = `$${AFieldPath}`;\nexport type JavascriptFieldPath = `$${AFieldPath}`;\nexport type IntFieldPath = `$${AFieldPath}`;\nexport type TimestampFieldPath = `$${AFieldPath}`;\nexport type LongFieldPath = `$${AFieldPath}`;\nexport type DecimalFieldPath = `$${AFieldPath}`;\nexport type ResolvesToNumber = ResolvesToAny|NumberFieldPath|Number|ResolvesToInt|ResolvesToDouble|ResolvesToLong|ResolvesToDecimal|Aggregation.Expression.$abs|Aggregation.Expression.$avg|Aggregation.Expression.$pow|Aggregation.Expression.$sum;\nexport type ResolvesToDouble = ResolvesToAny|DoubleFieldPath|Double|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$exp|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$median|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDouble|Aggregation.Query.$rand;\nexport type ResolvesToString = ResolvesToAny|StringFieldPath|string|Aggregation.Expression.$concat|Aggregation.Expression.$dateToString|Aggregation.Expression.$ltrim|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$rtrim|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$toLower|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$type;\nexport type ResolvesToObject = \'$$ROOT\'|ResolvesToAny|ObjectFieldPath|Record|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$dateToParts|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$regexFind|Aggregation.Expression.$setField|Aggregation.Expression.$unsetField;\nexport type ResolvesToArray = ResolvesToAny|ArrayFieldPath|unknown[]|Aggregation.Expression.$concatArrays|Aggregation.Expression.$filter|Aggregation.Expression.$firstN|Aggregation.Expression.$lastN|Aggregation.Expression.$map|Aggregation.Expression.$maxN|Aggregation.Expression.$minN|Aggregation.Expression.$objectToArray|Aggregation.Expression.$percentile|Aggregation.Expression.$range|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$reverseArray|Aggregation.Expression.$setDifference|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setUnion|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$zip;\nexport type ResolvesToBinData = ResolvesToAny|BinDataFieldPath|bson.Binary;\nexport type ResolvesToObjectId = ResolvesToAny|ObjectIdFieldPath|bson.ObjectId|Aggregation.Expression.$toObjectId;\nexport type ResolvesToBool = ResolvesToAny|BoolFieldPath|boolean|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$eq|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$in|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$or|Aggregation.Expression.$regexMatch|Aggregation.Expression.$setEquals|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$toBool;\nexport type ResolvesToDate = \'$$NOW\'|ResolvesToAny|DateFieldPath|Date|Aggregation.Expression.$add|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$subtract|Aggregation.Expression.$toDate;\nexport type ResolvesToNull = ResolvesToAny|NullFieldPath|null;\nexport type ResolvesToRegex = ResolvesToAny|RegexFieldPath|Regex;\nexport type ResolvesToJavascript = ResolvesToAny|JavascriptFieldPath|Javascript;\nexport type ResolvesToInt = ResolvesToAny|IntFieldPath|Int|Aggregation.Expression.$add|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$floor|Aggregation.Expression.$hour|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$millisecond|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$round|Aggregation.Expression.$second|Aggregation.Expression.$size|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$subtract|Aggregation.Expression.$toInt|Aggregation.Expression.$week|Aggregation.Expression.$year;\nexport type ResolvesToTimestamp = ResolvesToAny|TimestampFieldPath|bson.Timestamp|\'$clusterTime\';\nexport type ResolvesToLong = ResolvesToAny|LongFieldPath|Long|Aggregation.Expression.$add|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$round|Aggregation.Expression.$subtract|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toLong|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond;\nexport type ResolvesToDecimal = ResolvesToAny|DecimalFieldPath|Decimal|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$multiply|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDecimal;\nexport type AccumulatorOperator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type Window = Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum;\nexport type ExpressionOperator = Aggregation.Expression.$abs|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$avg|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$case|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$concat|Aggregation.Expression.$concatArrays|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateToParts|Aggregation.Expression.$dateToString|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$eq|Aggregation.Expression.$exp|Aggregation.Expression.$filter|Aggregation.Expression.$first|Aggregation.Expression.$firstN|Aggregation.Expression.$floor|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$hour|Aggregation.Expression.$ifNull|Aggregation.Expression.$in|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$last|Aggregation.Expression.$lastN|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ltrim|Aggregation.Expression.$map|Aggregation.Expression.$max|Aggregation.Expression.$maxN|Aggregation.Expression.$median|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$meta|Aggregation.Expression.$millisecond|Aggregation.Expression.$min|Aggregation.Expression.$minN|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$multiply|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$objectToArray|Aggregation.Expression.$or|Aggregation.Expression.$percentile|Aggregation.Expression.$pow|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$range|Aggregation.Expression.$reduce|Aggregation.Expression.$regexFind|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$regexMatch|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$reverseArray|Aggregation.Expression.$round|Aggregation.Expression.$rtrim|Aggregation.Expression.$second|Aggregation.Expression.$setDifference|Aggregation.Expression.$setEquals|Aggregation.Expression.$setField|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$setUnion|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$size|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$subtract|Aggregation.Expression.$sum|Aggregation.Expression.$switch|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toBool|Aggregation.Expression.$toDate|Aggregation.Expression.$toDecimal|Aggregation.Expression.$toDouble|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toInt|Aggregation.Expression.$toLong|Aggregation.Expression.$toLower|Aggregation.Expression.$toObjectId|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond|Aggregation.Expression.$type|Aggregation.Expression.$unsetField|Aggregation.Expression.$week|Aggregation.Expression.$year|Aggregation.Expression.$zip;\nexport type ResolvesToAny = Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$first|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$ifNull|Aggregation.Expression.$last|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$max|Aggregation.Expression.$meta|Aggregation.Expression.$min|Aggregation.Expression.$reduce|Aggregation.Expression.$switch;\nexport type SwitchBranch = Aggregation.Expression.$case;\nexport type FieldQuery = Aggregation.Query.$all|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$not|Aggregation.Query.$regex|Aggregation.Query.$size|Aggregation.Query.$type;\nexport type QueryOperator = Aggregation.Query.$all|Aggregation.Query.$and|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$expr|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$geometry|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$jsonSchema|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$nor|Aggregation.Query.$not|Aggregation.Query.$or|Aggregation.Query.$polygon|Aggregation.Query.$rand|Aggregation.Query.$regex|Aggregation.Query.$sampleRate|Aggregation.Query.$size|Aggregation.Query.$text|Aggregation.Query.$type|Aggregation.Query.$where;\nexport type SearchOperator = Aggregation.Search.Autocomplete|Aggregation.Search.Compound|Aggregation.Search.EmbeddedDocument|Aggregation.Search.Equals|Aggregation.Search.Exists|Aggregation.Search.Facet|Aggregation.Search.GeoShape|Aggregation.Search.GeoWithin|Aggregation.Search.In|Aggregation.Search.MoreLikeThis|Aggregation.Search.Near|Aggregation.Search.Phrase|Aggregation.Search.QueryString|Aggregation.Search.Range|Aggregation.Search.Regex|Aggregation.Search.Text|Aggregation.Search.Wildcard;\nexport type StageOperator = Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;'; diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 9da40aa6..114a1240 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -47,7 +47,7 @@ "reformat": "npm run prettier -- --write .", "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", "pregenerate-schema": "npm run extract-metaschema", - "generate-schema": "ts-node src/cli.ts schema && npm run prettier -- --write out/schema.ts", + "generate-schema": "ts-node src/cli.ts schema && npm run prettier -- --write out/*", "pregenerate-tests": "npm run extract-metaschema", "generate-tests": "ts-node src/cli.ts tests && npm run prettier -- --write tests/**/*.ts", "pregenerate-driver-schema": "npm run extract-metaschema", diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index f6426625..94d7c517 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -1,3 +1,4 @@ +import type { WriteStream } from 'fs'; import { createWriteStream } from 'fs'; import { StringWriter } from './utils'; import path from 'path'; @@ -29,7 +30,7 @@ class BsonDate extends Date { export abstract class GeneratorBase { private outputBuffer: StringWriter | undefined; - private outputStream?: NodeJS.WritableStream; + private outputStream?: WriteStream; constructor() { // The default YAML schema will represent BsonDate using the Date representation because @@ -232,10 +233,28 @@ export abstract class GeneratorBase { } } - protected emitToFile(filePath: string): void { + protected async emitToFile(filePath: string): Promise { + await this.flushFile(); + this.outputStream = createWriteStream(filePath, { encoding: 'utf8' }); } + private flushFile(): Promise { + if (this.outputStream) { + return new Promise((resolve, reject) => { + this.outputStream?.close((err) => { + if (err) { + reject(err); + } else { + resolve(); + } + }); + }); + } + + return Promise.resolve(); + } + protected emit(str: string): void { (this.outputBuffer ?? this.outputStream ?? process.stdout).write(str); } @@ -275,7 +294,7 @@ export abstract class GeneratorBase { protected abstract generateImpl(iterable: YamlFiles): Promise; - public generate( + public async generate( categoryFilter?: string, operatorFilter?: string, ): Promise { @@ -287,6 +306,8 @@ export abstract class GeneratorBase { : undefined; const files = this.listSourceYAMLFiles(categoryRegex, operatorRegex); - return this.generateImpl(files); + await this.generateImpl(files); + + await this.flushFile(); } } diff --git a/packages/mql-typescript/src/schema-generator.ts b/packages/mql-typescript/src/schema-generator.ts index b24e6e24..eb00cddb 100644 --- a/packages/mql-typescript/src/schema-generator.ts +++ b/packages/mql-typescript/src/schema-generator.ts @@ -3,6 +3,7 @@ import type { YamlFiles } from './generator'; import { GeneratorBase } from './generator'; import { Operator } from './metaschema'; import { capitalize } from './utils'; +import * as fs from 'fs/promises'; type ArgType = NonNullable< typeof Operator._type.arguments @@ -13,10 +14,13 @@ type SyntheticVariables = NonNullable< >[number]['syntheticVariables']; export class SchemaGenerator extends GeneratorBase { - constructor() { - super(); - this.emitToFile(path.resolve(__dirname, '..', 'out', 'schema.ts')); - } + private schemaOutputFile = path.resolve(__dirname, '..', 'out', 'schema.ts'); + private schemaExportFile = path.resolve( + __dirname, + '..', + 'out', + 'schema-export.js', + ); private toTypeName(type: string): string { return this.trivialTypeMappings[type as ArgType] ?? capitalize(type); @@ -408,6 +412,8 @@ export class SchemaGenerator extends GeneratorBase { } protected override async generateImpl(yamlFiles: YamlFiles): Promise { + await this.emitToFile(this.schemaOutputFile); + this.emitHeader(); for await (const file of yamlFiles) { @@ -569,5 +575,19 @@ export class SchemaGenerator extends GeneratorBase { } = ${[...new Set(interfaces)].join('|')};`, ); } + + // Generate the schema-export.js which will be used by the autocomplete package to load the types + // Switch to the new file that will just export the types as a giant string: + // exports.schema = "** contents of the out/schema.ts file **"; + await this.emitToFile(this.schemaExportFile); + const schemaDefinition = await fs.readFile(this.schemaOutputFile, 'utf8'); + this.emit("exports.schema = '"); + this.emit( + schemaDefinition + .replace(/\\/g, '\\\\') // Escape backslashes + .replace(/'/g, "\\'") // Escape double quotes + .replace(/\n/g, '\\n'), // Escape newlines + ); + this.emit("'\n"); } } From a213220b8c0d7dc69f5eef07c0502f442e66a5ce Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 9 Jun 2025 17:29:27 +0200 Subject: [PATCH 18/26] fix depalign issues --- package-lock.json | 60 +++++++++---------- package.json | 2 +- packages/mongodb-ts-autocomplete/package.json | 14 ++--- packages/mql-typescript/package.json | 4 +- .../src/testGenerator/test-generator.ts | 2 +- packages/native-machine-id/package.json | 2 +- 6 files changed, 42 insertions(+), 42 deletions(-) diff --git a/package-lock.json b/package-lock.json index 87659f9e..8f4e1a06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "scripts" ], "dependencies": { - "@mongodb-js/monorepo-tools": "^1.1.17" + "@mongodb-js/monorepo-tools": "^1.1.18" }, "devDependencies": { "@babel/core": "^7.22.8", @@ -10183,10 +10183,11 @@ } }, "node_modules/@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", - "dev": true + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/cross-spawn": { "version": "6.0.6", @@ -31147,19 +31148,19 @@ }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", - "@mongodb-js/mocha-config-devtools": "^1.0.4", - "@mongodb-js/prettier-config-devtools": "^1.0.1", - "@mongodb-js/tsconfig-devtools": "^1.0.2", + "@mongodb-js/mocha-config-devtools": "^1.0.5", + "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.0.3", "@mongosh/shell-api": "^3.11.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", - "bson": "^6.8.0", - "chai": "^4.3.6", - "depcheck": "^1.4.1", + "bson": "^6.10.3", + "chai": "^4.5.0", + "depcheck": "^1.4.7", "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.1", + "gen-esm-wrapper": "^1.1.3", "mocha": "^8.4.0", "nyc": "^15.1.0", "prettier": "^3.5.3", @@ -31423,7 +31424,7 @@ "jsdom": "^24.1.3", "json5": "^2.2.3", "mongodb": "^6.9.0", - "mongodb-schema": "^12.5.2", + "mongodb-schema": "^12.6.2", "yargs": "^17.7.2", "zod": "^3.24.2" }, @@ -31434,7 +31435,7 @@ "@mongodb-js/eslint-config-devtools": "0.9.11", "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", - "@types/chai": "^5.2.2", + "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", "@types/node": "^22.15.30", @@ -31568,7 +31569,7 @@ "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.7", "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.1", + "gen-esm-wrapper": "^1.1.3", "mocha": "^8.4.0", "node-machine-id": "^1.1.12", "prettier": "^3.5.3", @@ -39391,20 +39392,20 @@ "version": "file:packages/mongodb-ts-autocomplete", "requires": { "@mongodb-js/eslint-config-devtools": "0.9.11", - "@mongodb-js/mocha-config-devtools": "^1.0.4", - "@mongodb-js/prettier-config-devtools": "^1.0.1", + "@mongodb-js/mocha-config-devtools": "^1.0.5", + "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/ts-autocomplete": "^0.3.1", - "@mongodb-js/tsconfig-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.0.3", "@mongosh/shell-api": "^3.11.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", - "bson": "^6.8.0", - "chai": "^4.3.6", - "depcheck": "^1.4.1", + "bson": "^6.10.3", + "chai": "^4.5.0", + "depcheck": "^1.4.7", "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.1", + "gen-esm-wrapper": "^1.1.3", "mocha": "^8.4.0", "mongodb-schema": "^12.6.2", "node-cache": "^5.1.2", @@ -39583,7 +39584,7 @@ "@mongodb-js/eslint-config-devtools": "0.9.11", "@mongodb-js/prettier-config-devtools": "^1.0.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", - "@types/chai": "^5.2.2", + "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", "@types/node": "^22.15.30", @@ -39597,7 +39598,7 @@ "json-schema-to-zod": "^2.6.0", "json5": "^2.2.3", "mongodb": "^6.9.0", - "mongodb-schema": "^12.5.2", + "mongodb-schema": "^12.6.2", "prettier": "^3.5.3", "ts-node": "^10.9.2", "typescript": "^5.0.4", @@ -39606,8 +39607,7 @@ }, "dependencies": { "@types/chai": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "version": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", "dev": true, "requires": { @@ -41998,9 +41998,9 @@ } }, "@types/chai": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.1.tgz", - "integrity": "sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==", + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", "dev": true }, "@types/cross-spawn": { @@ -51798,7 +51798,7 @@ "@types/sinon-chai": "^3.2.5", "depcheck": "^1.4.7", "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.1", + "gen-esm-wrapper": "^1.1.3", "mocha": "^8.4.0", "node-addon-api": "^8.0.0", "node-machine-id": "^1.1.12", diff --git a/package.json b/package.json index 4ebed8ae..182378a6 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "where": "node ./scripts/src/where.js" }, "dependencies": { - "@mongodb-js/monorepo-tools": "^1.1.17" + "@mongodb-js/monorepo-tools": "^1.1.18" }, "devDependencies": { "@babel/core": "^7.22.8", diff --git a/packages/mongodb-ts-autocomplete/package.json b/packages/mongodb-ts-autocomplete/package.json index 248d0d5b..f8146c06 100644 --- a/packages/mongodb-ts-autocomplete/package.json +++ b/packages/mongodb-ts-autocomplete/package.json @@ -57,19 +57,19 @@ }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", - "@mongodb-js/mocha-config-devtools": "^1.0.4", - "@mongodb-js/prettier-config-devtools": "^1.0.1", - "@mongodb-js/tsconfig-devtools": "^1.0.2", + "@mongodb-js/mocha-config-devtools": "^1.0.5", + "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/tsconfig-devtools": "^1.0.3", "@mongosh/shell-api": "^3.11.0", "@types/chai": "^4.2.21", "@types/mocha": "^9.1.1", "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", - "bson": "^6.8.0", - "chai": "^4.3.6", - "depcheck": "^1.4.1", + "bson": "^6.10.3", + "chai": "^4.5.0", + "depcheck": "^1.4.7", "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.1", + "gen-esm-wrapper": "^1.1.3", "mocha": "^8.4.0", "nyc": "^15.1.0", "prettier": "^3.5.3", diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 114a1240..5de46a51 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -60,7 +60,7 @@ "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", "@types/node": "^22.15.30", - "@types/chai": "^5.2.2", + "@types/chai": "^4.2.21", "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", @@ -76,7 +76,7 @@ "jsdom": "^24.1.3", "json5": "^2.2.3", "mongodb": "^6.9.0", - "mongodb-schema": "^12.5.2", + "mongodb-schema": "^12.6.2", "yargs": "^17.7.2", "zod": "^3.24.2" } diff --git a/packages/mql-typescript/src/testGenerator/test-generator.ts b/packages/mql-typescript/src/testGenerator/test-generator.ts index 50695428..55325a11 100644 --- a/packages/mql-typescript/src/testGenerator/test-generator.ts +++ b/packages/mql-typescript/src/testGenerator/test-generator.ts @@ -210,7 +210,7 @@ export class TestGenerator extends GeneratorBase { const operatorName = parsed.name.replace(/^\$/, ''); const filePath = path.join(basePath, `${operatorName}.spec.ts`); - this.emitToFile(filePath); + await this.emitToFile(filePath); this.emit('/* eslint-disable @typescript-eslint/no-unused-vars */\n'); this.emit('/* eslint-disable filename-rules/match */\n'); diff --git a/packages/native-machine-id/package.json b/packages/native-machine-id/package.json index 2f99dc31..26ee140b 100644 --- a/packages/native-machine-id/package.json +++ b/packages/native-machine-id/package.json @@ -58,7 +58,7 @@ "@types/node": "^22.15.30", "@types/sinon-chai": "^3.2.5", "eslint": "^7.25.0", - "gen-esm-wrapper": "^1.1.1", + "gen-esm-wrapper": "^1.1.3", "mocha": "^8.4.0", "depcheck": "^1.4.7", "node-machine-id": "^1.1.12", From beb71dc63bcfbe31782ac62feef53b43afd49075 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 9 Jun 2025 17:59:56 +0200 Subject: [PATCH 19/26] fix depcheck issue --- packages/mql-typescript/.depcheckrc | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/mql-typescript/.depcheckrc b/packages/mql-typescript/.depcheckrc index c06ee3cd..1e94b37d 100644 --- a/packages/mql-typescript/.depcheckrc +++ b/packages/mql-typescript/.depcheckrc @@ -4,6 +4,7 @@ ignores: - '@types/chai' - '@types/sinon-chai' - 'sinon' + - 'json-schema-to-zod' ignore-patterns: - 'dist' - 'mongo-php-library' From 3aa4977a8909235689f66afd39af2e8ef233109b Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Mon, 9 Jun 2025 23:10:40 +0200 Subject: [PATCH 20/26] chore: use the shell-bson-parser instead of custom type processors --- packages/mql-typescript/.vscode/launch.json | 6 +- packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/package.json | 11 +- .../src/driverSchema/docs-crawler.ts | 257 ++---------------- .../testGenerator/unsupported-aggregations.ts | 6 + .../mql-typescript/tests/query/type.spec.ts | 32 ++- packages/shell-bson-parser/src/scope.ts | 11 +- 7 files changed, 72 insertions(+), 253 deletions(-) diff --git a/packages/mql-typescript/.vscode/launch.json b/packages/mql-typescript/.vscode/launch.json index 88b85bd7..69d244e6 100644 --- a/packages/mql-typescript/.vscode/launch.json +++ b/packages/mql-typescript/.vscode/launch.json @@ -12,7 +12,8 @@ "program": "${workspaceFolder}/bin/runner.js", "args": ["${input:command}"], "preLaunchTask": "npm: compile", - "outFiles": ["${workspaceFolder}/dist/**/*.js"] + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "postDebugTask": "npm: format-generated-files" }, { "type": "node", @@ -28,7 +29,8 @@ "${input:operatorFilter}" ], "preLaunchTask": "npm: compile", - "outFiles": ["${workspaceFolder}/dist/**/*.js"] + "outFiles": ["${workspaceFolder}/dist/**/*.js"], + "postDebugTask": "npm: format-generated-files" } ], "inputs": [ diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 14623ebe..943deb1e 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 14623ebe7d3bd32447906fbb39dacb79a58cf7c4 +Subproject commit 943deb1ea98cbae9b0b99951aa8d862a9e304620 diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 5de46a51..6bd971a4 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -47,11 +47,15 @@ "reformat": "npm run prettier -- --write .", "extract-metaschema": "json-refs resolve mongo-php-library/generator/config/schema.json | json-schema-to-zod -n Operator -o src/metaschema.ts && npm run prettier -- --write src/metaschema.ts", "pregenerate-schema": "npm run extract-metaschema", - "generate-schema": "ts-node src/cli.ts schema && npm run prettier -- --write out/*", + "generate-schema": "ts-node src/cli.ts schema", + "postgenerate-schema": "npm run prettier -- --write out/*", "pregenerate-tests": "npm run extract-metaschema", - "generate-tests": "ts-node src/cli.ts tests && npm run prettier -- --write tests/**/*.ts", + "generate-tests": "ts-node src/cli.ts tests", + "postgenerate-tests": "npm run prettier -- --write tests/**/*.ts", "pregenerate-driver-schema": "npm run extract-metaschema", - "generate-driver-schema": "ts-node src/cli.ts driver-schema && yamlfix -c mongo-php-library/generator/config/.yamlfix.toml mongo-php-library/generator/config" + "generate-driver-schema": "ts-node src/cli.ts driver-schema", + "postgenerate-driver-schema": "yamlfix -c mongo-php-library/generator/config/.yamlfix.toml mongo-php-library/generator/config", + "format-generated-files": "npm run postgenerate-schema && npm run postgenerate-tests && npm run postgenerate-driver-schema" }, "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", @@ -71,6 +75,7 @@ "typescript": "^5.0.4" }, "dependencies": { + "@mongodb-js/shell-bson-parser": "^1.2.2", "bson": "^6.10.3", "js-yaml": "^4.1.0", "jsdom": "^24.1.3", diff --git a/packages/mql-typescript/src/driverSchema/docs-crawler.ts b/packages/mql-typescript/src/driverSchema/docs-crawler.ts index 2bcec211..b04bc260 100644 --- a/packages/mql-typescript/src/driverSchema/docs-crawler.ts +++ b/packages/mql-typescript/src/driverSchema/docs-crawler.ts @@ -1,201 +1,8 @@ -import JSON5 from 'json5'; import { removeNewlines, removeTrailingComments } from '../utils'; import { getSimplifiedSchema } from 'mongodb-schema'; import type { SimplifiedSchema } from 'mongodb-schema'; import { JSDOM, VirtualConsole } from 'jsdom'; -import { createHash } from 'crypto'; -import { BSON } from 'bson'; - -abstract class CustomTypeProcessor { - public abstract process(json: string): string; - - public abstract canRevive(value: unknown): boolean; - - public abstract revive(value: unknown): unknown; -} - -abstract class RegexCustomTypeProcessor extends CustomTypeProcessor { - private regex: RegExp; - private replacementPrefix: string; - protected abstract reviveCore(value: string): unknown; - - protected constructor(regex: string) { - super(); - this.regex = new RegExp(regex, 'g'); - this.replacementPrefix = - '!rctp-' + createHash('sha256').update(regex).digest('base64'); - } - - public process(json: string): string { - return json.replace(this.regex, `"${this.replacementPrefix}$1"`); - } - - public canRevive(value: unknown): boolean { - return ( - typeof value === 'string' && value.startsWith(this.replacementPrefix) - ); - } - - public revive(value: string): unknown { - return this.reviveCore(value.replace(this.replacementPrefix, '')); - } -} - -class IsoDateProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bISODate\\(\\s*"([^"]*)"\\s*\\)'); - } - - public reviveCore(value: string): Date | undefined { - const isoDateRegex = - /^(?\d{4})-?(?\d{2})-?(?\d{2})([T ](?\d{2})(:?(?\d{2})(:?((?\d{2})(\.(?\d+))?))?)?(?Z|([+-])(\d{2}):?(\d{2})?)?)?$/; - const match = isoDateRegex.exec(value); - if (match !== null && match.groups !== undefined) { - // Normalize the representation because ISO-8601 accepts e.g. - // '20201002T102950Z' without : and -, but `new Date()` does not. - const { Y, M, D, h, m, s, ms, tz } = match.groups; - const normalized = `${Y}-${M}-${D}T${h || '00'}:${m || '00'}:${ - s || '00' - }.${ms || '000'}${tz || 'Z'}`; - const date = new Date(normalized); - // Make sure we're in the range 0000-01-01T00:00:00.000Z - 9999-12-31T23:59:59.999Z - if ( - date.getTime() >= -62167219200000 && - date.getTime() <= 253402300799999 - ) { - return date; - } - } - - return new Date(value); - } -} - -class DateProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\b(?:new )?Date\\(\\s*"([^"]*)"\\s*\\)'); - } - - public reviveCore(value: string): Date { - return new Date(value); - } -} - -class ObjectIdProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bObjectId\\(\\s*"([^"]*)"\\s*\\)'); - } - - public reviveCore(value: string): unknown { - return new BSON.ObjectId(value); - } -} - -class UUIDProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bUUID\\(\\s*"([^"]*)"\\s*\\)'); - } - - public reviveCore(value: string): unknown { - return new BSON.UUID(value); - } -} - -class NumberDecimalProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\b(?:NumberDecimal|Decimal128)\\(\\s*"?([^"]*)"?\\s*\\)'); - } - - public reviveCore(value: string): unknown { - return new BSON.Decimal128(value); - } -} - -class UndefinedProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bundefined\\b'); - } - - public reviveCore(): unknown { - return undefined; - } -} - -class NullProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bnull\\b'); - } - - public reviveCore(): unknown { - return null; - } -} - -class BinDataProcessor extends CustomTypeProcessor { - private regex = /\b(?:new )?BinData\(\s*(\d*), "([^")]*)"\s*\)/g; - private replacementPrefix = - '!bdp-' + createHash('sha256').update(this.regex.source).digest('base64'); - - public process(json: string): string { - return json.replace(this.regex, `"${this.replacementPrefix}$1-$2"`); - } - - public canRevive(value: unknown): boolean { - return ( - typeof value === 'string' && value.startsWith(this.replacementPrefix) - ); - } - - public revive(value: string): unknown { - const match = /(?\d)-(?.*)/.exec( - value.replace(this.replacementPrefix, ''), - ); - - if (match && match.groups) { - const { subType, base64 } = match.groups; - return BSON.Binary.createFromBase64(base64, parseInt(subType, 10)); - } - - throw new Error(`Invalid BinData format: ${value}`); - } -} - -class NumberIntProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\b(?:NumberInt|Int32)\\(\\s*"?(\\d*)\\"?\\s*\\)'); - } - - public reviveCore(value: string): unknown { - return new BSON.Int32(value); - } -} - -class NumberLongProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bNumberLong\\(\\s*"?([\\d.]*)"?\\s*\\)'); - } - - public reviveCore(value: string): unknown { - return new BSON.Long(value); - } -} - -class TimestampProcessor extends RegexCustomTypeProcessor { - constructor() { - super('\\bTimestamp\\(\\s*(\\d*,\\s*\\d*)\\s*\\)'); - } - - public reviveCore(value: string): unknown { - const match = /(?\d*),\s(?\d*)/.exec(value); - - if (match && match.groups) { - const { t, i } = match.groups; - return new BSON.Timestamp({ t: parseInt(t, 10), i: parseInt(i, 10) }); - } - - throw new Error(`Invalid Timestamp format: ${value}`); - } -} +import parse, { ParseMode } from '@mongodb-js/shell-bson-parser'; export class DocsCrawler { constructor(private readonly url: string) { @@ -208,19 +15,6 @@ export class DocsCrawler { private virtualConsole: VirtualConsole; private fuzzyParse(json: string): unknown[] | undefined { - try { - const result = JSON5.parse(json); - if (Array.isArray(result)) { - return result; - } - - if (typeof result === 'object') { - return [result]; - } - } catch { - // Ignore parse errors - } - // Sometimes the snippet will end with ellipsis instead of json json = json.replace(/\.\.\.$/g, ''); @@ -235,45 +29,30 @@ export class DocsCrawler { // Insert commas between array elements json = json.replace(/\}\s*\{/g, '},{'); - const processors: CustomTypeProcessor[] = [ - new IsoDateProcessor(), - new DateProcessor(), - new ObjectIdProcessor(), - new UUIDProcessor(), - new NumberDecimalProcessor(), - new UndefinedProcessor(), - new NullProcessor(), - new BinDataProcessor(), - new NumberIntProcessor(), - new NumberLongProcessor(), - new TimestampProcessor(), - ]; + try { + let result = parse(json, { mode: ParseMode.Loose }); - for (const processor of processors) { - json = processor.process(json); - } + if (!Array.isArray(result)) { + result = [result]; + } - try { - // The docs use quoted/unquoted shell syntax inconsistently, so use JSON5 instead of regular JSON - // to parse the documents. - const result = JSON5.parse(json, (key, value) => { - for (const processor of processors) { - if (processor.canRevive(value)) { - return processor.revive(value); - } + if (result.length > 0) { + const firstDoc = result[0]; + if ( + typeof firstDoc !== 'object' || + Object.keys(firstDoc as object).find((k) => k.startsWith('$')) + ) { + // If the array doesn't contain objects or the object keys start with $, + // we're likely dealing with an aggregation pipeline rather than an insertion code. + // return undefined and let the caller move on to the next section. + throw new Error( + 'Result is not an array of documents or contains aggregation pipeline stages', + ); } - return value; - }); - - if (Array.isArray(result)) { return result; } - if (typeof result === 'object') { - return [result]; - } - // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new Error(`Unexpected json output: ${result}`); } catch (e) { diff --git a/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts b/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts index a42b2f9f..8ed37959 100644 --- a/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts +++ b/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts @@ -101,6 +101,12 @@ export const unsupportedAggregations: { comment: nestedFieldsExplanation, }, }, + type: { + 'Querying by MinKey and MaxKey': { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, }, search: { embeddedDocument: { diff --git a/packages/mql-typescript/tests/query/type.spec.ts b/packages/mql-typescript/tests/query/type.spec.ts index 1fdccd4b..be8ce6ec 100644 --- a/packages/mql-typescript/tests/query/type.spec.ts +++ b/packages/mql-typescript/tests/query/type.spec.ts @@ -46,15 +46,35 @@ function test1() { * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/#querying-by-minkey-and-maxkey} */ function test2() { - type addressBook = { + type restaurants = { _id: number; - address: string; - zipCode: string | number | bson.Long | bson.Int32 | number | Array; + address: { + building: string; + coord: Array; + street: string; + zipcode: string; + }; + borough: string; + cuisine: string; + grades: Array<{ + date: Date; + grade: string | bson.MinKey; + score: number; + }>; + name: string; + restaurant_id: string; }; - const aggregation: schema.Pipeline = [ - { $match: { zipCode: { $type: ['minKey'] } } }, - { $match: { zipCode: { $type: ['maxKey'] } } }, + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $match: { zipCode: { $type: ['minKey'] } } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $match: { zipCode: { $type: ['maxKey'] } } } as any, ]; } diff --git a/packages/shell-bson-parser/src/scope.ts b/packages/shell-bson-parser/src/scope.ts index e1f22efb..2125ed1d 100644 --- a/packages/shell-bson-parser/src/scope.ts +++ b/packages/shell-bson-parser/src/scope.ts @@ -60,7 +60,14 @@ const SCOPE_ANY: { [x: string]: Function } = lookupMap({ return bson.Decimal128.fromString(s); }, NumberDecimal: function (s: any) { - return bson.Decimal128.fromString(s); + switch (typeof s) { + case 'string': + return bson.Decimal128.fromString(s); + case 'number': + return bson.Decimal128.fromString(s.toString()); + default: + throw new Error(`${JSON.stringify(s)} is not a valid Decimal128`); + } }, Double: function (s: any) { return new bson.Double(s); @@ -69,7 +76,7 @@ const SCOPE_ANY: { [x: string]: Function } = lookupMap({ return new bson.Int32(i); }, NumberInt: function (s: any) { - return parseInt(s, 10); + return new bson.Int32(s); }, Long: function (low: any, high: any) { return new bson.Long(low, high); From b968371f3095d7650fe2fe39eaa1c558731693db Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Tue, 10 Jun 2025 00:44:32 +0200 Subject: [PATCH 21/26] add stage tests --- packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema-export.js | 2 +- packages/mql-typescript/out/schema.ts | 17 +- .../src/driverSchema/static-schemas.ts | 3 + packages/mql-typescript/src/metaschema.ts | 1 + .../mql-typescript/src/schema-generator.ts | 10 +- .../src/testGenerator/test-generator.ts | 10 - .../testGenerator/unsupported-aggregations.ts | 86 +++ .../tests/stage/addFields.spec.ts | 89 +++ .../mql-typescript/tests/stage/bucket.spec.ts | 92 +++ .../tests/stage/bucketAuto.spec.ts | 28 + .../tests/stage/changeStream.spec.ts | 17 + .../stage/changeStreamSplitLargeEvent.spec.ts | 20 + .../tests/stage/collStats.spec.ts | 61 ++ .../mql-typescript/tests/stage/count.spec.ts | 22 + .../tests/stage/currentOp.spec.ts | 43 ++ .../tests/stage/densify.spec.ts | 59 ++ .../tests/stage/documents.spec.ts | 50 ++ .../mql-typescript/tests/stage/facet.spec.ts | 45 ++ .../mql-typescript/tests/stage/fill.spec.ts | 104 +++ .../tests/stage/geoNear.spec.ts | 145 ++++ .../tests/stage/graphLookup.spec.ts | 89 +++ .../mql-typescript/tests/stage/group.spec.ts | 166 ++++ .../tests/stage/indexStats.spec.ts | 21 + .../mql-typescript/tests/stage/limit.spec.ts | 17 + .../tests/stage/listLocalSessions.spec.ts | 47 ++ .../tests/stage/listSampledQueries.spec.ts | 33 + .../tests/stage/listSearchIndexes.spec.ts | 47 ++ .../tests/stage/listSessions.spec.ts | 45 ++ .../mql-typescript/tests/stage/lookup.spec.ts | 147 ++++ .../mql-typescript/tests/stage/match.spec.ts | 44 ++ .../mql-typescript/tests/stage/merge.spec.ts | 202 +++++ .../mql-typescript/tests/stage/out.spec.ts | 41 + .../tests/stage/planCacheStats.spec.ts | 44 ++ .../tests/stage/project.spec.ts | 205 +++++ .../mql-typescript/tests/stage/redact.spec.ts | 85 +++ .../tests/stage/replaceRoot.spec.ts | 110 +++ .../tests/stage/replaceWith.spec.ts | 112 +++ .../mql-typescript/tests/stage/sample.spec.ts | 20 + .../mql-typescript/tests/stage/search.spec.ts | 714 ++++++++++++++++++ .../tests/stage/searchMeta.spec.ts | 410 ++++++++++ .../mql-typescript/tests/stage/set.spec.ts | 107 +++ .../tests/stage/setWindowFields.spec.ts | 219 ++++++ .../stage/shardedDataDistribution.spec.ts | 19 + .../mql-typescript/tests/stage/skip.spec.ts | 17 + .../mql-typescript/tests/stage/sort.spec.ts | 38 + .../tests/stage/sortByCount.spec.ts | 24 + .../tests/stage/unionWith.spec.ts | 51 ++ .../mql-typescript/tests/stage/unset.spec.ts | 76 ++ .../mql-typescript/tests/stage/unwind.spec.ts | 109 +++ .../tests/stage/vectorSearch.spec.ts | 153 ++++ 51 files changed, 4297 insertions(+), 21 deletions(-) create mode 100644 packages/mql-typescript/tests/stage/addFields.spec.ts create mode 100644 packages/mql-typescript/tests/stage/bucket.spec.ts create mode 100644 packages/mql-typescript/tests/stage/bucketAuto.spec.ts create mode 100644 packages/mql-typescript/tests/stage/changeStream.spec.ts create mode 100644 packages/mql-typescript/tests/stage/changeStreamSplitLargeEvent.spec.ts create mode 100644 packages/mql-typescript/tests/stage/collStats.spec.ts create mode 100644 packages/mql-typescript/tests/stage/count.spec.ts create mode 100644 packages/mql-typescript/tests/stage/currentOp.spec.ts create mode 100644 packages/mql-typescript/tests/stage/densify.spec.ts create mode 100644 packages/mql-typescript/tests/stage/documents.spec.ts create mode 100644 packages/mql-typescript/tests/stage/facet.spec.ts create mode 100644 packages/mql-typescript/tests/stage/fill.spec.ts create mode 100644 packages/mql-typescript/tests/stage/geoNear.spec.ts create mode 100644 packages/mql-typescript/tests/stage/graphLookup.spec.ts create mode 100644 packages/mql-typescript/tests/stage/group.spec.ts create mode 100644 packages/mql-typescript/tests/stage/indexStats.spec.ts create mode 100644 packages/mql-typescript/tests/stage/limit.spec.ts create mode 100644 packages/mql-typescript/tests/stage/listLocalSessions.spec.ts create mode 100644 packages/mql-typescript/tests/stage/listSampledQueries.spec.ts create mode 100644 packages/mql-typescript/tests/stage/listSearchIndexes.spec.ts create mode 100644 packages/mql-typescript/tests/stage/listSessions.spec.ts create mode 100644 packages/mql-typescript/tests/stage/lookup.spec.ts create mode 100644 packages/mql-typescript/tests/stage/match.spec.ts create mode 100644 packages/mql-typescript/tests/stage/merge.spec.ts create mode 100644 packages/mql-typescript/tests/stage/out.spec.ts create mode 100644 packages/mql-typescript/tests/stage/planCacheStats.spec.ts create mode 100644 packages/mql-typescript/tests/stage/project.spec.ts create mode 100644 packages/mql-typescript/tests/stage/redact.spec.ts create mode 100644 packages/mql-typescript/tests/stage/replaceRoot.spec.ts create mode 100644 packages/mql-typescript/tests/stage/replaceWith.spec.ts create mode 100644 packages/mql-typescript/tests/stage/sample.spec.ts create mode 100644 packages/mql-typescript/tests/stage/search.spec.ts create mode 100644 packages/mql-typescript/tests/stage/searchMeta.spec.ts create mode 100644 packages/mql-typescript/tests/stage/set.spec.ts create mode 100644 packages/mql-typescript/tests/stage/setWindowFields.spec.ts create mode 100644 packages/mql-typescript/tests/stage/shardedDataDistribution.spec.ts create mode 100644 packages/mql-typescript/tests/stage/skip.spec.ts create mode 100644 packages/mql-typescript/tests/stage/sort.spec.ts create mode 100644 packages/mql-typescript/tests/stage/sortByCount.spec.ts create mode 100644 packages/mql-typescript/tests/stage/unionWith.spec.ts create mode 100644 packages/mql-typescript/tests/stage/unset.spec.ts create mode 100644 packages/mql-typescript/tests/stage/unwind.spec.ts create mode 100644 packages/mql-typescript/tests/stage/vectorSearch.spec.ts diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 943deb1e..37a957cc 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 943deb1ea98cbae9b0b99951aa8d862a9e304620 +Subproject commit 37a957ccafa002d3e322c455205d5f848b4dfe43 diff --git a/packages/mql-typescript/out/schema-export.js b/packages/mql-typescript/out/schema-export.js index 8d586cfa..1cc232ef 100644 --- a/packages/mql-typescript/out/schema-export.js +++ b/packages/mql-typescript/out/schema-export.js @@ -1,2 +1,2 @@ exports.schema = - '\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* eslint-disable @typescript-eslint/no-namespace */\n /* eslint-disable @typescript-eslint/ban-types */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n import type * as bson from \'bson\';\n import type { FilterOperators } from \'mongodb\';\n\n type Condition = AlternativeType | FilterOperators | QueryOperator;\n type AlternativeType =\n T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString;\n type RegExpOrString = T extends string ? Regex | T : T;\n type KeysOfAType = {\n [k in keyof T]: NonNullable extends Type ? k : never;\n }[keyof T];\n type RecordWithStaticFields, TValue> = T & {\n [key: string]: TValue | T[keyof T];\n };\n\n // TBD: Nested fields\n type AFieldPath = KeysOfAType & string;\n type FieldExpression = { [k: string]: FieldPath };\n\n type MultiAnalyzerSpec = {\n value: KeysOfAType;\n multi: string;\n };\n export namespace Aggregation.Accumulator {\n\n\n/**\n * A type describing the `$accumulator` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\nexport interface $accumulator {\n\n/**\n * Defines a custom accumulator function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\n$accumulator:{\n\n/**\n * Function used to initialize the state. The init function receives its arguments from the initArgs array expression. You can specify the function definition as either BSON type Code or String.\n */\ninit: Javascript,\n\n/**\n * Arguments passed to the init function.\n */\ninitArgs?: ResolvesToArray,\n\n/**\n * Function used to accumulate documents. The accumulate function receives its arguments from the current state and accumulateArgs array expression. The result of the accumulate function becomes the new state. You can specify the function definition as either BSON type Code or String.\n */\naccumulate: Javascript,\n\n/**\n * Arguments passed to the accumulate function. You can use accumulateArgs to specify what field value(s) to pass to the accumulate function.\n */\naccumulateArgs: ResolvesToArray,\n\n/**\n * Function used to merge two internal states. merge must be either a String or Code BSON type. merge returns the combined result of the two merged states. For information on when the merge function is called, see Merge Two States with $merge.\n */\nmerge: Javascript,\n\n/**\n * Function used to update the result of the accumulation.\n */\nfinalize?: Javascript,\n\n/**\n * The language used in the $accumulator code.\n */\nlang: string,}};\n\n\n/**\n * A type describing the `$addToSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\nexport interface $addToSet {\n\n/**\n * Returns an array of unique expression values for each group. Order of the array elements is undefined.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\n$addToSet:Expression};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:ResolvesToNumber};\n\n\n/**\n * A type describing the `$bottom` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\nexport interface $bottom {\n\n/**\n * Returns the bottom element within a group according to the specified sort order.\n * New in MongoDB 5.2: Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\n$bottom:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$bottomN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\nexport interface $bottomN {\n\n/**\n * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. If the group contains fewer than n elements, $bottomN returns all elements in the group.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\n$bottomN:{\n\n/**\n * Limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\nexport interface $count {\n\n/**\n * Returns the number of documents in the group or window.\n * Distinct from the $count pipeline stage.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\n$count:Record};\n\n\n/**\n * A type describing the `$covariancePop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\nexport interface $covariancePop {\n\n/**\n * Returns the population covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\n$covariancePop:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$covarianceSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\nexport interface $covarianceSamp {\n\n/**\n * Returns the sample covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\n$covarianceSamp:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$denseRank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\nexport interface $denseRank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. There are no gaps in the ranks. Ties receive the same rank.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\n$denseRank:Record};\n\n\n/**\n * A type describing the `$derivative` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\nexport interface $derivative {\n\n/**\n * Returns the average rate of change within the specified window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\n$derivative:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$documentNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\nexport interface $documentNumber {\n\n/**\n * Returns the position of a document (known as the document number) in the $setWindowFields stage partition. Ties result in different adjacent document numbers.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\n$documentNumber:Record};\n\n\n/**\n * A type describing the `$expMovingAvg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\nexport interface $expMovingAvg {\n\n/**\n * Returns the exponential moving average for the numeric expression.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\n$expMovingAvg:{input: ResolvesToNumber,\n\n/**\n * An integer that specifies the number of historical documents that have a significant mathematical weight in the exponential moving average calculation, with the most recent documents contributing the most weight.\n * You must specify either N or alpha. You cannot specify both.\n * The N value is used in this formula to calculate the current result based on the expression value from the current document being read and the previous result of the calculation:\n */\nN?: Int,\n\n/**\n * A double that specifies the exponential decay value to use in the exponential moving average calculation. A higher alpha value assigns a lower mathematical significance to previous results from the calculation.\n * You must specify either N or alpha. You cannot specify both.\n */\nalpha?: Double,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:Expression};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\nexport interface $firstN {\n\n/**\n * Returns an aggregation of the first n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $firstN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * A positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$integral` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\nexport interface $integral {\n\n/**\n * Returns the approximation of the area under a curve.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\n$integral:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:Expression};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\nexport interface $lastN {\n\n/**\n * Returns an aggregation of the last n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $lastN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\n$lastN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$linearFill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\nexport interface $linearFill {\n\n/**\n * Fills null and missing fields in a window using linear interpolation based on surrounding field values.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\n$linearFill:ResolvesToNumber};\n\n\n/**\n * A type describing the `$locf` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\nexport interface $locf {\n\n/**\n * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\n$locf:Expression};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:Expression};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:ResolvesToObject};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:Expression};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$push` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\nexport interface $push {\n\n/**\n * Returns an array of values that result from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\n$push:Expression};\n\n\n/**\n * A type describing the `$rank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\nexport interface $rank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\n$rank:Record};\n\n\n/**\n * A type describing the `$shift` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\nexport interface $shift {\n\n/**\n * Returns the value from an expression applied to a document in a specified position relative to the current document in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\n$shift:{\n\n/**\n * Specifies an expression to evaluate and return in the output.\n */\noutput: Expression,\n\n/**\n * Specifies an integer with a numeric document position relative to the current document in the output.\n * For example:\n * 1 specifies the document position after the current document.\n * -1 specifies the document position before the current document.\n * -2 specifies the document position that is two positions before the current document.\n */\nby: Int,\n\n/**\n * Specifies an optional default expression to evaluate if the document position is outside of the implicit $setWindowFields stage window. The implicit window contains all the documents in the partition.\n * The default expression must evaluate to a constant value.\n * If you do not specify a default expression, $shift returns null for documents whose positions are outside of the implicit $setWindowFields stage window.\n */\ndefault: Expression,}};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:ResolvesToNumber};\n\n\n/**\n * A type describing the `$top` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\nexport interface $top {\n\n/**\n * Returns the top element within a group according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\n$top:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$topN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\nexport interface $topN {\n\n/**\n * Returns an aggregation of the top n fields within a group, according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\n$topN:{\n\n/**\n * limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n};\nexport namespace Aggregation.Expression {\n\n\n/**\n * A type describing the `$abs` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\nexport interface $abs {\n\n/**\n * Returns the absolute value of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\n$abs:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\nexport interface $acos {\n\n/**\n * Returns the inverse cosine (arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\n$acos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\nexport interface $acosh {\n\n/**\n * Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\n$acosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$add` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\nexport interface $add {\n\n/**\n * Adds numbers to return the sum, or adds numbers and a date to return a new date. If adding numbers and a date, treats the numbers as milliseconds. Accepts any number of argument expressions, but at most, one expression can resolve to a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\n$add:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date.\n */\n...(ResolvesToNumber | ResolvesToDate)[],]};\n\n\n/**\n * A type describing the `$allElementsTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\nexport interface $allElementsTrue {\n\n/**\n * Returns true if no element of a set evaluates to false, otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\n$allElementsTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\nexport interface $and {\n\n/**\n * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\n$and:[...(Expression | ResolvesToBool | ResolvesToNumber | ResolvesToString | ResolvesToNull)[],]};\n\n\n/**\n * A type describing the `$anyElementTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\nexport interface $anyElementTrue {\n\n/**\n * Returns true if any elements of a set evaluate to true; otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\n$anyElementTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$arrayElemAt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\nexport interface $arrayElemAt {\n\n/**\n * Returns the element at the specified array index.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\n$arrayElemAt:[array: ResolvesToArray,idx: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$arrayToObject` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\nexport interface $arrayToObject {\n\n/**\n * Converts an array of key value pairs to a document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\n$arrayToObject:[array: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$asin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\nexport interface $asin {\n\n/**\n * Returns the inverse sin (arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\n$asin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$asinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\nexport interface $asinh {\n\n/**\n * Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\n$asinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\nexport interface $atan {\n\n/**\n * Returns the inverse tangent (arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\n$atan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan2` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\nexport interface $atan2 {\n\n/**\n * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\n$atan2:[\n\n/**\n * $atan2 takes any valid expression that resolves to a number.\n * $atan2 returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.\n * By default $atan returns values as a double. $atan2 can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.\n */\ny: ResolvesToNumber,x: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$atanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\nexport interface $atanh {\n\n/**\n * Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\n$atanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$binarySize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\nexport interface $binarySize {\n\n/**\n * Returns the size of a given string or binary data value\'s content in bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\n$binarySize:ResolvesToString | ResolvesToBinData | ResolvesToNull};\n\n\n/**\n * A type describing the `$bitAnd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\nexport interface $bitAnd {\n\n/**\n * Returns the result of a bitwise and operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\n$bitAnd:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitNot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\nexport interface $bitNot {\n\n/**\n * Returns the result of a bitwise not operation on a single argument or an array that contains a single int or long value.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\n$bitNot:ResolvesToInt | ResolvesToLong};\n\n\n/**\n * A type describing the `$bitOr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\nexport interface $bitOr {\n\n/**\n * Returns the result of a bitwise or operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\n$bitOr:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitXor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\nexport interface $bitXor {\n\n/**\n * Returns the result of a bitwise xor (exclusive or) operation on an array of int and long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\n$bitXor:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bsonSize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\nexport interface $bsonSize {\n\n/**\n * Returns the size in bytes of a given document (i.e. BSON type Object) when encoded as BSON.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\n$bsonSize:ResolvesToObject | ResolvesToNull};\n\n\n/**\n * A type describing the `$case` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $case {\n\n/**\n * Represents a single case in a $switch expression\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$case:{\n\n/**\n * Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n */\ncase: ResolvesToBool,\n\n/**\n * Can be any valid expression.\n */\nthen: Expression,}};\n\n\n/**\n * A type describing the `$ceil` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\nexport interface $ceil {\n\n/**\n * Returns the smallest integer greater than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\n$ceil:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\nexport interface $cmp {\n\n/**\n * Returns 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\n$cmp:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$concat` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\nexport interface $concat {\n\n/**\n * Concatenates any number of strings.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\n$concat:[...(ResolvesToString)[],]};\n\n\n/**\n * A type describing the `$concatArrays` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\nexport interface $concatArrays {\n\n/**\n * Concatenates arrays to return the concatenated array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\n$concatArrays:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$cond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\nexport interface $cond {\n\n/**\n * A ternary operator that evaluates one expression, and depending on the result, returns the value of one of the other two expressions. Accepts either three expressions in an ordered list or three named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\n$cond:{if: ResolvesToBool,then: Expression,else: Expression,}};\n\n\n/**\n * A type describing the `$convert` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\nexport interface $convert {\n\n/**\n * Converts a value to a specified type.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\n$convert:{input: Expression,to: ResolvesToString | ResolvesToInt,\n\n/**\n * The value to return on encountering an error during conversion, including unsupported type conversions. The arguments can be any valid expression.\n * If unspecified, the operation throws an error upon encountering an error and stops.\n */\nonError?: Expression,\n\n/**\n * The value to return if the input is null or missing. The arguments can be any valid expression.\n * If unspecified, $convert returns null if the input is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$cos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\nexport interface $cos {\n\n/**\n * Returns the cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\n$cos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\nexport interface $cosh {\n\n/**\n * Returns the hyperbolic cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\n$cosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$dateAdd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\nexport interface $dateAdd {\n\n/**\n * Adds a number of time units to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\n$dateAdd:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateDiff` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\nexport interface $dateDiff {\n\n/**\n * Returns the difference between two dates.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\n$dateDiff:{\n\n/**\n * The start of the time period. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The end of the time period. The endDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nendDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The time measurement unit between the startDate and endDate\n */\nunit: TimeUnit,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * Used when the unit is equal to week. Defaults to Sunday. The startOfWeek parameter is an expression that resolves to a case insensitive string\n */\nstartOfWeek?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\nexport interface $dateFromParts {\n\n/**\n * Constructs a BSON Date object given the date\'s constituent parts.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\n$dateFromParts:{\n\n/**\n * Calendar year. Can be any expression that evaluates to a number.\n */\nyear?: ResolvesToNumber,\n\n/**\n * ISO Week Date Year. Can be any expression that evaluates to a number.\n */\nisoWeekYear?: ResolvesToNumber,\n\n/**\n * Month. Defaults to 1.\n */\nmonth?: ResolvesToNumber,\n\n/**\n * Week of year. Defaults to 1.\n */\nisoWeek?: ResolvesToNumber,\n\n/**\n * Day of month. Defaults to 1.\n */\nday?: ResolvesToNumber,\n\n/**\n * Day of week (Monday 1 - Sunday 7). Defaults to 1.\n */\nisoDayOfWeek?: ResolvesToNumber,\n\n/**\n * Hour. Defaults to 0.\n */\nhour?: ResolvesToNumber,\n\n/**\n * Minute. Defaults to 0.\n */\nminute?: ResolvesToNumber,\n\n/**\n * Second. Defaults to 0.\n */\nsecond?: ResolvesToNumber,\n\n/**\n * Millisecond. Defaults to 0.\n */\nmillisecond?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\nexport interface $dateFromString {\n\n/**\n * Converts a date/time string to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\n$dateFromString:{\n\n/**\n * The date/time string to convert to a date object.\n */\ndateString: ResolvesToString,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If $dateFromString encounters an error while parsing the given dateString, it outputs the result value of the provided onError expression. This result value can be of any type.\n * If you do not specify onError, $dateFromString throws an error if it cannot parse dateString.\n */\nonError?: Expression,\n\n/**\n * If the dateString provided to $dateFromString is null or missing, it outputs the result value of the provided onNull expression. This result value can be of any type.\n * If you do not specify onNull and dateString is null or missing, then $dateFromString outputs null.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateSubtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\nexport interface $dateSubtract {\n\n/**\n * Subtracts a number of time units from a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\n$dateSubtract:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateToParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\nexport interface $dateToParts {\n\n/**\n * Returns a document containing the constituent parts of a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\n$dateToParts:{\n\n/**\n * The input date for which to return parts. date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If set to true, modifies the output document to use ISO week date fields. Defaults to false.\n */\niso8601?: boolean,}};\n\n\n/**\n * A type describing the `$dateToString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\nexport interface $dateToString {\n\n/**\n * Returns the date as a formatted string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\n$dateToString:{\n\n/**\n * The date to convert to string. Must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The value to return if the date is null or missing.\n * If unspecified, $dateToString returns null if the date is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateTrunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\nexport interface $dateTrunc {\n\n/**\n * Truncates a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\n$dateTrunc:{\n\n/**\n * The date to truncate, specified in UTC. The date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit of time, specified as an expression that must resolve to one of these strings: year, quarter, week, month, day, hour, minute, second.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nunit: TimeUnit,\n\n/**\n * The numeric time value, specified as an expression that must resolve to a positive non-zero number. Defaults to 1.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nbinSize?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The start of the week. Used when\n * unit is week. Defaults to Sunday.\n */\nstartOfWeek?: string,}};\n\n\n/**\n * A type describing the `$dayOfMonth` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\nexport interface $dayOfMonth {\n\n/**\n * Returns the day of the month for a date as a number between 1 and 31.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\n$dayOfMonth:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\nexport interface $dayOfWeek {\n\n/**\n * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\n$dayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\nexport interface $dayOfYear {\n\n/**\n * Returns the day of the year for a date as a number between 1 and 366 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\n$dayOfYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$degreesToRadians` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\nexport interface $degreesToRadians {\n\n/**\n * Converts a value from degrees to radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\n$degreesToRadians:ResolvesToNumber};\n\n\n/**\n * A type describing the `$divide` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\nexport interface $divide {\n\n/**\n * Returns the result of dividing the first number by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\n$divide:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\nexport interface $eq {\n\n/**\n * Returns true if the values are equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\n$eq:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$exp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\nexport interface $exp {\n\n/**\n * Raises e to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\n$exp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$filter` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\nexport interface $filter {\n\n/**\n * Selects a subset of the array to return an array with only the elements that match the filter condition.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\n$filter:{input: ResolvesToArray,\n\n/**\n * An expression that resolves to a boolean value used to determine if an element should be included in the output array. The expression references each element of the input array individually with the variable name specified in as.\n */\ncond: ResolvesToBool,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: string,\n\n/**\n * A number expression that restricts the number of matching array elements that $filter returns. You cannot specify a limit less than 1. The matching array elements are returned in the order they appear in the input array.\n * If the specified limit is greater than the number of matching array elements, $filter returns all matching array elements. If the limit is null, $filter returns all matching array elements.\n */\nlimit?: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:ResolvesToArray};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\nexport interface $firstN {\n\n/**\n * Returns a specified number of elements from the beginning of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$floor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\nexport interface $floor {\n\n/**\n * Returns the largest integer less than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\n$floor:ResolvesToNumber};\n\n\n/**\n * A type describing the `$function` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\nexport interface $function {\n\n/**\n * Defines a custom function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\n$function:{\n\n/**\n * The function definition. You can specify the function definition as either BSON\\JavaScript or string.\n * function(arg1, arg2, ...) { ... }\n */\nbody: Javascript,\n\n/**\n * Arguments passed to the function body. If the body function does not take an argument, you can specify an empty array [ ].\n */\nargs: unknown[],lang: string,}};\n\n\n/**\n * A type describing the `$getField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\nexport interface $getField {\n\n/**\n * Returns the value of a specified field from a document. You can use $getField to retrieve the value of fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\n$getField:{\n\n/**\n * Field in the input object for which you want to return a value. field can be any valid expression that resolves to a string constant.\n * If field begins with a dollar sign ($), place the field name inside of a $literal expression to return its value.\n */\nfield: ResolvesToString,\n\n/**\n * Default: $$CURRENT\n * A valid expression that contains the field for which you want to return a value. input must resolve to an object, missing, null, or undefined. If omitted, defaults to the document currently being processed in the pipeline ($$CURRENT).\n */\ninput?: Expression,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\nexport interface $gt {\n\n/**\n * Returns true if the first value is greater than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\n$gt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\nexport interface $gte {\n\n/**\n * Returns true if the first value is greater than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\n$gte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$hour` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\nexport interface $hour {\n\n/**\n * Returns the hour for a date as a number between 0 and 23.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\n$hour:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$ifNull` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\nexport interface $ifNull {\n\n/**\n * Returns either the non-null result of the first expression or the result of the second expression if the first expression results in a null result. Null result encompasses instances of undefined values or missing fields. Accepts two expressions as arguments. The result of the second expression can be null.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\n$ifNull:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\nexport interface $in {\n\n/**\n * Returns a boolean indicating whether a specified value is in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\n$in:[\n\n/**\n * Any valid expression expression.\n */\nexpression: Expression,\n\n/**\n * Any valid expression that resolves to an array.\n */\narray: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$indexOfArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\nexport interface $indexOfArray {\n\n/**\n * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. Array indexes start at zero.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\n$indexOfArray:[\n\n/**\n * Can be any valid expression as long as it resolves to an array.\n * If the array expression resolves to a value of null or refers to a field that is missing, $indexOfArray returns null.\n * If the array expression does not resolve to an array or null nor refers to a missing field, $indexOfArray returns an error.\n */\narray: ResolvesToArray,search: Expression,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\nexport interface $indexOfBytes {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 byte index of the first occurrence. If the substring is not found, returns -1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\n$indexOfBytes:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfBytes returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfBytes returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\nexport interface $indexOfCP {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurrence. If the substring is not found, returns -1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\n$indexOfCP:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfCP returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfCP returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$isArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\nexport interface $isArray {\n\n/**\n * Determines if the operand is an array. Returns a boolean.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\n$isArray:[expression: Expression,]};\n\n\n/**\n * A type describing the `$isNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\nexport interface $isNumber {\n\n/**\n * Returns boolean true if the specified expression resolves to an integer, decimal, double, or long.\n * Returns boolean false if the expression resolves to any other BSON type, null, or a missing field.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\n$isNumber:Expression};\n\n\n/**\n * A type describing the `$isoDayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\nexport interface $isoDayOfWeek {\n\n/**\n * Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\n$isoDayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\nexport interface $isoWeek {\n\n/**\n * Returns the week number in ISO 8601 format, ranging from 1 to 53. Week numbers start at 1 with the week (Monday through Sunday) that contains the year\'s first Thursday.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\n$isoWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeekYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\nexport interface $isoWeekYear {\n\n/**\n * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\n$isoWeekYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:ResolvesToArray};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\nexport interface $lastN {\n\n/**\n * Returns a specified number of elements from the end of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\n$lastN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$let` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\nexport interface $let {\n\n/**\n * Defines variables for use within the scope of a subexpression and returns the result of the subexpression. Accepts named parameters.\n * Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\n$let:{\n\n/**\n * Assignment block for the variables accessible in the in expression. To assign a variable, specify a string for the variable name and assign a valid expression for the value.\n * The variable assignments have no meaning outside the in expression, not even within the vars block itself.\n */\nvars: ExpressionMap,\n\n/**\n * The expression to evaluate.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$literal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\nexport interface $literal {\n\n/**\n * Return a value without parsing. Use for values that the aggregation pipeline may interpret as an expression. For example, use a $literal expression to a string that starts with a dollar sign ($) to avoid parsing as a field path.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\n$literal:any};\n\n\n/**\n * A type describing the `$ln` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\nexport interface $ln {\n\n/**\n * Calculates the natural log of a number.\n * $ln is equivalent to $log: [ , Math.E ] expression, where Math.E is a JavaScript representation for Euler\'s number e.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\n$ln:ResolvesToNumber};\n\n\n/**\n * A type describing the `$log` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\nexport interface $log {\n\n/**\n * Calculates the log of a number in the specified base.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\n$log:[\n\n/**\n * Any valid expression as long as it resolves to a non-negative number.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Any valid expression as long as it resolves to a positive number greater than 1.\n */\nbase: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$log10` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\nexport interface $log10 {\n\n/**\n * Calculates the log base 10 of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\n$log10:ResolvesToNumber};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\nexport interface $lt {\n\n/**\n * Returns true if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\n$lt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\nexport interface $lte {\n\n/**\n * Returns true if the first value is less than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\n$lte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$ltrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\nexport interface $ltrim {\n\n/**\n * Removes whitespace or the specified characters from the beginning of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\n$ltrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$map` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\nexport interface $map {\n\n/**\n * Applies a subexpression to each element of an array and returns the array of resulting values in order. Accepts named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\n$map:{\n\n/**\n * An expression that resolves to an array.\n */\ninput: ResolvesToArray,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: ResolvesToString,\n\n/**\n * An expression that is applied to each element of the input array. The expression references each element individually with the variable name specified in as.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:[\n\n/**\n * Any valid expression that resolves to a document.\n */\n...(ResolvesToObject)[],]};\n\n\n/**\n * A type describing the `$meta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\nexport interface $meta {\n\n/**\n * Access available per-document metadata related to the aggregation operation.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\n$meta:string};\n\n\n/**\n * A type describing the `$millisecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\nexport interface $millisecond {\n\n/**\n * Returns the milliseconds of a date as a number between 0 and 999.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\n$millisecond:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$minute` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\nexport interface $minute {\n\n/**\n * Returns the minute for a date as a number between 0 and 59.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\n$minute:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\nexport interface $mod {\n\n/**\n * Returns the remainder of the first number divided by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\n$mod:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$month` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\nexport interface $month {\n\n/**\n * Returns the month for a date as a number between 1 (January) and 12 (December).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\n$month:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$multiply` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\nexport interface $multiply {\n\n/**\n * Multiplies numbers to return the product. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\n$multiply:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to numbers.\n * Starting in MongoDB 6.1 you can optimize the $multiply operation. To improve performance, group references at the end of the argument list.\n */\n...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\nexport interface $ne {\n\n/**\n * Returns true if the values are not equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\n$ne:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\nexport interface $not {\n\n/**\n * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\n$not:[expression: Expression | ResolvesToBool,]};\n\n\n/**\n * A type describing the `$objectToArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\nexport interface $objectToArray {\n\n/**\n * Converts a document to an array of documents representing key-value pairs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\n$objectToArray:ResolvesToObject};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\nexport interface $or {\n\n/**\n * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\n$or:[...(Expression | ResolvesToBool)[],]};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$pow` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\nexport interface $pow {\n\n/**\n * Raises a number to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\n$pow:[number: ResolvesToNumber,exponent: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$radiansToDegrees` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\nexport interface $radiansToDegrees {\n\n/**\n * Converts a value from radians to degrees.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\n$radiansToDegrees:ResolvesToNumber};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\nexport interface $rand {\n\n/**\n * Returns a random float between 0 and 1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$range` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\nexport interface $range {\n\n/**\n * Outputs an array containing a sequence of integers according to user-defined inputs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\n$range:[\n\n/**\n * An integer that specifies the start of the sequence. Can be any valid expression that resolves to an integer.\n */\nstart: ResolvesToInt,\n\n/**\n * An integer that specifies the exclusive upper limit of the sequence. Can be any valid expression that resolves to an integer.\n */\nend: ResolvesToInt,\n\n/**\n * An integer that specifies the increment value. Can be any valid expression that resolves to a non-zero integer. Defaults to 1.\n */\nstep?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$reduce` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\nexport interface $reduce {\n\n/**\n * Applies an expression to each element in an array and combines them into a single value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\n$reduce:{\n\n/**\n * Can be any valid expression that resolves to an array.\n * If the argument resolves to a value of null or refers to a missing field, $reduce returns null.\n * If the argument does not resolve to an array or null nor refers to a missing field, $reduce returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The initial cumulative value set before in is applied to the first element of the input array.\n */\ninitialValue: Expression,\n\n/**\n * A valid expression that $reduce applies to each element in the input array in left-to-right order. Wrap the input value with $reverseArray to yield the equivalent of applying the combining expression from right-to-left.\n * During evaluation of the in expression, two variables will be available:\n * - value is the variable that represents the cumulative value of the expression.\n * - this is the variable that refers to the element being processed.\n */\nin: Expression | ExpressionMap,}};\n\n\n/**\n * A type describing the `$regexFind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\nexport interface $regexFind {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the first matched substring.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\n$regexFind:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexFindAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\nexport interface $regexFindAll {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the all matched substrings.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\n$regexFindAll:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\nexport interface $regexMatch {\n\n/**\n * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\n$regexMatch:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$replaceAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\nexport interface $replaceAll {\n\n/**\n * Replaces all instances of a search string in an input string with a replacement string.\n * $replaceAll is both case-sensitive and diacritic-sensitive, and ignores any collation present on a collection.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\n$replaceAll:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$replaceOne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\nexport interface $replaceOne {\n\n/**\n * Replaces the first instance of a matched string in a given input.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\n$replaceOne:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$reverseArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\nexport interface $reverseArray {\n\n/**\n * Returns an array with the elements in reverse order.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\n$reverseArray:ResolvesToArray};\n\n\n/**\n * A type describing the `$round` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\nexport interface $round {\n\n/**\n * Rounds a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\n$round:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $round returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$rtrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\nexport interface $rtrim {\n\n/**\n * Removes whitespace characters, including null, or the specified characters from the end of a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\n$rtrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$second` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\nexport interface $second {\n\n/**\n * Returns the seconds for a date as a number between 0 and 60 (leap seconds).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\n$second:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$setDifference` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\nexport interface $setDifference {\n\n/**\n * Returns a set with elements that appear in the first set but not in the second set; i.e. performs a relative complement of the second set relative to the first. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\n$setDifference:[\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression1: ResolvesToArray,\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setEquals` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\nexport interface $setEquals {\n\n/**\n * Returns true if the input sets have the same distinct elements. Accepts two or more argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\n$setEquals:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\nexport interface $setField {\n\n/**\n * Adds, updates, or removes a specified field in a document. You can use $setField to add, update, or remove fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\n$setField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,\n\n/**\n * The value that you want to assign to field. value can be any valid expression.\n * Set to $$REMOVE to remove field from the input document.\n */\nvalue: Expression,}};\n\n\n/**\n * A type describing the `$setIntersection` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\nexport interface $setIntersection {\n\n/**\n * Returns a set with elements that appear in all of the input sets. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\n$setIntersection:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setIsSubset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\nexport interface $setIsSubset {\n\n/**\n * Returns true if all elements of the first set appear in the second set, including when the first set equals the second set; i.e. not a strict subset. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\n$setIsSubset:[expression1: ResolvesToArray,expression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setUnion` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\nexport interface $setUnion {\n\n/**\n * Returns a set with elements that appear in any of the input sets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\n$setUnion:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$sin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\nexport interface $sin {\n\n/**\n * Returns the sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\n$sin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\nexport interface $sinh {\n\n/**\n * Returns the hyperbolic sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\n$sinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\nexport interface $size {\n\n/**\n * Returns the number of elements in the array. Accepts a single expression as argument.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\n$size:ResolvesToArray};\n\n\n/**\n * A type describing the `$slice` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\nexport interface $slice {\n\n/**\n * Returns a subset of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\n$slice:| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer.\n * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array.\n * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array.\n */\nposition: ResolvesToInt,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n};\n\n\n/**\n * A type describing the `$sortArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\nexport interface $sortArray {\n\n/**\n * Sorts the elements of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\n$sortArray:{\n\n/**\n * The array to be sorted.\n * The result is null if the expression: is missing, evaluates to null, or evaluates to undefined\n * If the expression evaluates to any other non-array value, the document returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The document specifies a sort ordering.\n */\nsortBy: Int | SortSpec | SortBy,}};\n\n\n/**\n * A type describing the `$split` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\nexport interface $split {\n\n/**\n * Splits a string into substrings based on a delimiter. Returns an array of substrings. If the delimiter is not found within the string, returns an array containing the original string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\n$split:[\n\n/**\n * The string to be split. string expression can be any valid expression as long as it resolves to a string.\n */\nstring: ResolvesToString,\n\n/**\n * The delimiter to use when splitting the string expression. delimiter can be any valid expression as long as it resolves to a string.\n */\ndelimiter: ResolvesToString,]};\n\n\n/**\n * A type describing the `$sqrt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\nexport interface $sqrt {\n\n/**\n * Calculates the square root.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\n$sqrt:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$strLenBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\nexport interface $strLenBytes {\n\n/**\n * Returns the number of UTF-8 encoded bytes in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\n$strLenBytes:ResolvesToString};\n\n\n/**\n * A type describing the `$strLenCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\nexport interface $strLenCP {\n\n/**\n * Returns the number of UTF-8 code points in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\n$strLenCP:ResolvesToString};\n\n\n/**\n * A type describing the `$strcasecmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\nexport interface $strcasecmp {\n\n/**\n * Performs case-insensitive string comparison and returns: 0 if two strings are equivalent, 1 if the first string is greater than the second, and -1 if the first string is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\n$strcasecmp:[expression1: ResolvesToString,expression2: ResolvesToString,]};\n\n\n/**\n * A type describing the `$substr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\nexport interface $substr {\n\n/**\n * Deprecated. Use $substrBytes or $substrCP.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\n$substr:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\nexport interface $substrBytes {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the specified number of bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\n$substrBytes:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\nexport interface $substrCP {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string and continues for the number of code points specified.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\n$substrCP:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$subtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\nexport interface $subtract {\n\n/**\n * Returns the result of subtracting the second value from the first. If the two values are numbers, return the difference. If the two values are dates, return the difference in milliseconds. If the two values are a date and a number in milliseconds, return the resulting date. Accepts two argument expressions. If the two values are a date and a number, specify the date argument first as it is not meaningful to subtract a date from a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\n$subtract:[expression1: ResolvesToNumber | ResolvesToDate,expression2: ResolvesToNumber | ResolvesToDate,]};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:[...(ResolvesToNumber | ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$switch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $switch {\n\n/**\n * Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$switch:{\n\n/**\n * An array of control branch documents. Each branch is a document with the following fields:\n * - case Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n * - then Can be any valid expression.\n * The branches array must contain at least one branch document.\n */\nbranches: unknown[],\n\n/**\n * The path to take if no branch case expression evaluates to true.\n * Although optional, if default is unspecified and no branch case evaluates to true, $switch returns an error.\n */\ndefault?: Expression,}};\n\n\n/**\n * A type describing the `$tan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\nexport interface $tan {\n\n/**\n * Returns the tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\n$tan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$tanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\nexport interface $tanh {\n\n/**\n * Returns the hyperbolic tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\n$tanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$toBool` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\nexport interface $toBool {\n\n/**\n * Converts value to a boolean.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\n$toBool:Expression};\n\n\n/**\n * A type describing the `$toDate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\nexport interface $toDate {\n\n/**\n * Converts value to a Date.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\n$toDate:Expression};\n\n\n/**\n * A type describing the `$toDecimal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\nexport interface $toDecimal {\n\n/**\n * Converts value to a Decimal128.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\n$toDecimal:Expression};\n\n\n/**\n * A type describing the `$toDouble` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\nexport interface $toDouble {\n\n/**\n * Converts value to a double.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\n$toDouble:Expression};\n\n\n/**\n * A type describing the `$toHashedIndexKey` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\nexport interface $toHashedIndexKey {\n\n/**\n * Computes and returns the hash value of the input expression using the same hash function that MongoDB uses to create a hashed index. A hash function maps a key or string to a fixed-size numeric value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\n$toHashedIndexKey:Expression};\n\n\n/**\n * A type describing the `$toInt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\nexport interface $toInt {\n\n/**\n * Converts value to an integer.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\n$toInt:Expression};\n\n\n/**\n * A type describing the `$toLong` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\nexport interface $toLong {\n\n/**\n * Converts value to a long.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\n$toLong:Expression};\n\n\n/**\n * A type describing the `$toLower` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\nexport interface $toLower {\n\n/**\n * Converts a string to lowercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\n$toLower:ResolvesToString};\n\n\n/**\n * A type describing the `$toObjectId` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\nexport interface $toObjectId {\n\n/**\n * Converts value to an ObjectId.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\n$toObjectId:Expression};\n\n\n/**\n * A type describing the `$toString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\nexport interface $toString {\n\n/**\n * Converts value to a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\n$toString:Expression};\n\n\n/**\n * A type describing the `$toUpper` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\nexport interface $toUpper {\n\n/**\n * Converts a string to uppercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\n$toUpper:ResolvesToString};\n\n\n/**\n * A type describing the `$trim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\nexport interface $trim {\n\n/**\n * Removes whitespace or the specified characters from the beginning and end of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\n$trim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$trunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\nexport interface $trunc {\n\n/**\n * Truncates a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\n$trunc:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $trunc returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g. -20 < place < 100. Defaults to 0.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$tsIncrement` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\nexport interface $tsIncrement {\n\n/**\n * Returns the incrementing ordinal from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\n$tsIncrement:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$tsSecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\nexport interface $tsSecond {\n\n/**\n * Returns the seconds from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\n$tsSecond:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\nexport interface $type {\n\n/**\n * Return the BSON data type of the field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\n$type:Expression};\n\n\n/**\n * A type describing the `$unsetField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\nexport interface $unsetField {\n\n/**\n * You can use $unsetField to remove fields with names that contain periods (.) or that start with dollar signs ($).\n * $unsetField is an alias for $setField using $$REMOVE to remove fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\n$unsetField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$week` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\nexport interface $week {\n\n/**\n * Returns the week number for a date as a number between 0 (the partial week that precedes the first Sunday of the year) and 53 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\n$week:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$year` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\nexport interface $year {\n\n/**\n * Returns the year for a date as a number (e.g. 2014).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\n$year:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$zip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\nexport interface $zip {\n\n/**\n * Merge two arrays together.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\n$zip:{\n\n/**\n * An array of expressions that resolve to arrays. The elements of these input arrays combine to form the arrays of the output array.\n * If any of the inputs arrays resolves to a value of null or refers to a missing field, $zip returns null.\n * If any of the inputs arrays does not resolve to an array or null nor refers to a missing field, $zip returns an error.\n */\ninputs: ResolvesToArray,\n\n/**\n * A boolean which specifies whether the length of the longest array determines the number of arrays in the output array.\n * The default value is false: the shortest array length determines the number of arrays in the output array.\n */\nuseLongestLength?: boolean,\n\n/**\n * An array of default element values to use if the input arrays have different lengths. You must specify useLongestLength: true along with this field, or else $zip will return an error.\n * If useLongestLength: true but defaults is empty or not specified, $zip uses null as the default value.\n * If specifying a non-empty defaults, you must specify a default for each input array or else $zip will return an error.\n */\ndefaults?: unknown[],}};\n};\nexport namespace Aggregation.Query {\n\n\n/**\n * A type describing the `$all` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\nexport interface $all {\n\n/**\n * Matches arrays that contain all elements specified in the query.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\n$all:[...(FieldQuery)[],]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\nexport interface $and {\n\n/**\n * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\n$and:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$bitsAllClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\nexport interface $bitsAllClear {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\n$bitsAllClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAllSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\nexport interface $bitsAllSet {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\n$bitsAllSet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnyClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\nexport interface $bitsAnyClear {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\n$bitsAnyClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnySet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\nexport interface $bitsAnySet {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\n$bitsAnySet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$box` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\nexport interface $box {\n\n/**\n * Specifies a rectangular box using legacy coordinate pairs for $geoWithin queries. The 2d index supports $box.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\n$box:unknown[]};\n\n\n/**\n * A type describing the `$center` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\nexport interface $center {\n\n/**\n * Specifies a circle using legacy coordinate pairs to $geoWithin queries when using planar geometry. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\n$center:unknown[]};\n\n\n/**\n * A type describing the `$centerSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\nexport interface $centerSphere {\n\n/**\n * Specifies a circle using either legacy coordinate pairs or GeoJSON format for $geoWithin queries when using spherical geometry. The 2dsphere and 2d indexes support $centerSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\n$centerSphere:unknown[]};\n\n\n/**\n * A type describing the `$elemMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\nexport interface $elemMatch {\n\n/**\n * The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\n$elemMatch:Query | FieldQuery};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\nexport interface $eq {\n\n/**\n * Matches values that are equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\n$eq:Expression};\n\n\n/**\n * A type describing the `$exists` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\nexport interface $exists {\n\n/**\n * Matches documents that have the specified field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\n$exists:boolean};\n\n\n/**\n * A type describing the `$expr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\nexport interface $expr {\n\n/**\n * Allows use of aggregation expressions within the query language.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\n$expr:Expression};\n\n\n/**\n * A type describing the `$geoIntersects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\nexport interface $geoIntersects {\n\n/**\n * Selects geometries that intersect with a GeoJSON geometry. The 2dsphere index supports $geoIntersects.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\n$geoIntersects:Geometry & {}};\n\n\n/**\n * A type describing the `$geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\nexport interface $geoWithin {\n\n/**\n * Selects geometries within a bounding GeoJSON geometry. The 2dsphere and 2d indexes support $geoWithin.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\n$geoWithin:Geometry & {}};\n\n\n/**\n * A type describing the `$geometry` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\nexport interface $geometry {\n\n/**\n * Specifies a geometry in GeoJSON format to geospatial query operators.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\n$geometry:{type: string,coordinates: unknown[],crs?: Record,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\nexport interface $gt {\n\n/**\n * Matches values that are greater than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\n$gt:any};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\nexport interface $gte {\n\n/**\n * Matches values that are greater than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\n$gte:any};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\nexport interface $in {\n\n/**\n * Matches any of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\n$in:unknown[]};\n\n\n/**\n * A type describing the `$jsonSchema` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\nexport interface $jsonSchema {\n\n/**\n * Validate documents against the given JSON Schema.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\n$jsonSchema:Record};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\nexport interface $lt {\n\n/**\n * Matches values that are less than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\n$lt:any};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\nexport interface $lte {\n\n/**\n * Matches values that are less than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\n$lte:any};\n\n\n/**\n * A type describing the `$maxDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\nexport interface $maxDistance {\n\n/**\n * Specifies a maximum distance to limit the results of $near and $nearSphere queries. The 2dsphere and 2d indexes support $maxDistance.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\n$maxDistance:Number};\n\n\n/**\n * A type describing the `$minDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\nexport interface $minDistance {\n\n/**\n * Specifies a minimum distance to limit the results of $near and $nearSphere queries. For use with 2dsphere index only.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\n$minDistance:Int | Double};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\nexport interface $mod {\n\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\n$mod:[divisor: Number,remainder: Number,]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\nexport interface $ne {\n\n/**\n * Matches all values that are not equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\n$ne:any};\n\n\n/**\n * A type describing the `$near` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\nexport interface $near {\n\n/**\n * Returns geospatial objects in proximity to a point. Requires a geospatial index. The 2dsphere and 2d indexes support $near.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\n$near:Geometry & {\n\n/**\n * Distance in meters. Limits the results to those documents that are at most the specified distance from the center point.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nearSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\nexport interface $nearSphere {\n\n/**\n * Returns geospatial objects in proximity to a point on a sphere. Requires a geospatial index. The 2dsphere and 2d indexes support $nearSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\n$nearSphere:Geometry & {\n\n/**\n * Distance in meters.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\nexport interface $nin {\n\n/**\n * Matches none of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\n$nin:unknown[]};\n\n\n/**\n * A type describing the `$nor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\nexport interface $nor {\n\n/**\n * Joins query clauses with a logical NOR returns all documents that fail to match both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\n$nor:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\nexport interface $not {\n\n/**\n * Inverts the effect of a query expression and returns documents that do not match the query expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\n$not:FieldQuery};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\nexport interface $or {\n\n/**\n * Joins query clauses with a logical OR returns all documents that match the conditions of either clause.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\n$or:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$polygon` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\nexport interface $polygon {\n\n/**\n * Specifies a polygon to using legacy coordinate pairs for $geoWithin queries. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\n$polygon:unknown[]};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\nexport interface $rand {\n\n/**\n * Generates a random float between 0 and 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$regex` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\nexport interface $regex {\n\n/**\n * Selects documents where values match a specified regular expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\n$regex:Regex};\n\n\n/**\n * A type describing the `$sampleRate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\nexport interface $sampleRate {\n\n/**\n * Randomly select documents at a given rate. Although the exact number of documents selected varies on each run, the quantity chosen approximates the sample rate expressed as a percentage of the total number of documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\n$sampleRate:ResolvesToDouble};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\nexport interface $size {\n\n/**\n * Selects documents if the array field is a specified size.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\n$size:Int};\n\n\n/**\n * A type describing the `$text` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\nexport interface $text {\n\n/**\n * Performs text search.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\n$text:{\n\n/**\n * A string of terms that MongoDB parses and uses to query the text index. MongoDB performs a logical OR search of the terms unless specified as a phrase.\n */\n$search: string,\n\n/**\n * The language that determines the list of stop words for the search and the rules for the stemmer and tokenizer. If not specified, the search uses the default language of the index.\n * If you specify a default_language value of none, then the text index parses through each word in the field, including stop words, and ignores suffix stemming.\n */\n$language?: string,\n\n/**\n * A boolean flag to enable or disable case sensitive search. Defaults to false; i.e. the search defers to the case insensitivity of the text index.\n */\n$caseSensitive?: boolean,\n\n/**\n * A boolean flag to enable or disable diacritic sensitive search against version 3 text indexes. Defaults to false; i.e. the search defers to the diacritic insensitivity of the text index.\n * Text searches against earlier versions of the text index are inherently diacritic sensitive and cannot be diacritic insensitive. As such, the $diacriticSensitive option has no effect with earlier versions of the text index.\n */\n$diacriticSensitive?: boolean,}};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\nexport interface $type {\n\n/**\n * Selects documents if a field is of the specified type.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\n$type:[...(Int | string)[],]};\n\n\n/**\n * A type describing the `$where` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\nexport interface $where {\n\n/**\n * Matches documents that satisfy a JavaScript expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\n$where:Javascript};\n};\nexport namespace Aggregation.Search {\n\n\n/**\n * A type describing the `autocomplete` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nexport interface Autocomplete {\n\n/**\n * The autocomplete operator performs a search for a word or phrase that\n * contains a sequence of characters from an incomplete input string. The\n * fields that you intend to query with the autocomplete operator must be\n * indexed with the autocomplete data type in the collection\'s index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nautocomplete:{path: SearchPath,query: string,tokenOrder?: string,fuzzy?: Record,score?: SearchScore,}};\n\n\n/**\n * A type describing the `compound` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\nexport interface Compound {\n\n/**\n * The compound operator combines two or more operators into a single query.\n * Each element of a compound query is called a clause, and each clause\n * consists of one or more sub-queries.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\ncompound:{must?: (SearchOperator) | (SearchOperator)[],mustNot?: (SearchOperator) | (SearchOperator)[],should?: (SearchOperator) | (SearchOperator)[],filter?: (SearchOperator) | (SearchOperator)[],minimumShouldMatch?: Int,score?: SearchScore,}};\n\n\n/**\n * A type describing the `embeddedDocument` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nexport interface EmbeddedDocument {\n\n/**\n * The embeddedDocument operator is similar to $elemMatch operator.\n * It constrains multiple query predicates to be satisfied from a single\n * element of an array of embedded documents. embeddedDocument can be used only\n * for queries over fields of the embeddedDocuments\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nembeddedDocument:{path: SearchPath,operator: SearchOperator,score?: SearchScore,}};\n\n\n/**\n * A type describing the `equals` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nexport interface Equals {\n\n/**\n * The equals operator checks whether a field matches a value you specify.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nequals:{path: SearchPath,value: bson.Binary | boolean | Date | bson.ObjectId | null | Number | string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `exists` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexport interface Exists {\n\n/**\n * The exists operator tests if a path to a specified indexed field name exists in a document.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexists:{path: SearchPath,score?: SearchScore,}};\n\n\n/**\n * A type describing the `facet` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nexport interface Facet {\n\n/**\n * The facet collector groups results by values or ranges in the specified\n * faceted fields and returns the count for each of those groups.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nfacet:{facets: Record,operator?: SearchOperator,}};\n\n\n/**\n * A type describing the `geoShape` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\nexport interface GeoShape {\n\n/**\n * The geoShape operator supports querying shapes with a relation to a given\n * geometry if indexShapes is set to true in the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\ngeoShape:{path: SearchPath,relation: string,geometry: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\nexport interface GeoWithin {\n\n/**\n * The geoWithin operator supports querying geographic points within a given\n * geometry. Only points are returned, even if indexShapes value is true in\n * the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\ngeoWithin:{path: SearchPath,box?: Record,circle?: Record,geometry?: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `in` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nexport interface In {\n\n/**\n * The in operator performs a search for an array of BSON values in a field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nin:{path: SearchPath,value: (any) | (any)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `moreLikeThis` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nexport interface MoreLikeThis {\n\n/**\n * The moreLikeThis operator returns documents similar to input documents.\n * The moreLikeThis operator allows you to build features for your applications\n * that display similar or alternative results based on one or more given documents.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nmoreLikeThis:{like: (Record) | (Record)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `near` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nexport interface Near {\n\n/**\n * The near operator supports querying and scoring numeric, date, and GeoJSON point values.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nnear:{path: SearchPath,origin: Date | Number | Geometry,pivot: Number,score?: SearchScore,}};\n\n\n/**\n * A type describing the `phrase` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nexport interface Phrase {\n\n/**\n * The phrase operator performs search for documents containing an ordered sequence of terms using the analyzer specified in the index configuration.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nphrase:{path: SearchPath,query: (string) | (string)[],slop?: Int,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `queryString` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/}\n */\nexport interface QueryString {queryString:{defaultPath: SearchPath,query: string,}};\n\n\n/**\n * A type describing the `range` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nexport interface Range {\n\n/**\n * The range operator supports querying and scoring numeric, date, and string values.\n * You can use this operator to find results that are within a given numeric, date, objectId, or letter (from the English alphabet) range.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nrange:{path: SearchPath,gt?: Date | Number | string | bson.ObjectId,gte?: Date | Number | string | bson.ObjectId,lt?: Date | Number | string | bson.ObjectId,lte?: Date | Number | string | bson.ObjectId,score?: SearchScore,}};\n\n\n/**\n * A type describing the `regex` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nexport interface Regex {\n\n/**\n * regex interprets the query field as a regular expression.\n * regex is a term-level operator, meaning that the query field isn\'t analyzed.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nregex:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n\n\n/**\n * A type describing the `text` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\nexport interface Text {\n\n/**\n * The text operator performs a full-text search using the analyzer that you specify in the index configuration.\n * If you omit an analyzer, the text operator uses the default standard analyzer.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\ntext:{path: SearchPath,query: string,fuzzy?: Record,matchCriteria?: string,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `wildcard` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nexport interface Wildcard {\n\n/**\n * The wildcard operator enables queries which use special characters in the search string that can match any character.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nwildcard:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n};\nexport namespace Aggregation.Stage {\n\n\n/**\n * A type describing the `$addFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\nexport interface $addFields {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\n$addFields:{\n\n/**\n * Specify the name of each field to add and set its value to an aggregation expression or an empty object.\n */\n} & { [expression: string]: Expression,}};\n\n\n/**\n * A type describing the `$bucket` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\nexport interface $bucket {\n\n/**\n * Categorizes incoming documents into groups, called buckets, based on a specified expression and bucket boundaries.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\n$bucket:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n * Unless $bucket includes a default specification, each input document must resolve the groupBy field path or expression to a value that falls within one of the ranges specified by the boundaries.\n */\ngroupBy: Expression,\n\n/**\n * An array of values based on the groupBy expression that specify the boundaries for each bucket. Each adjacent pair of values acts as the inclusive lower boundary and the exclusive upper boundary for the bucket. You must specify at least two boundaries.\n * The specified values must be in ascending order and all of the same type. The exception is if the values are of mixed numeric types, such as:\n */\nboundaries: unknown[],\n\n/**\n * A literal that specifies the _id of an additional bucket that contains all documents whose groupBy expression result does not fall into a bucket specified by boundaries.\n * If unspecified, each input document must resolve the groupBy expression to a value within one of the bucket ranges specified by boundaries or the operation throws an error.\n * The default value must be less than the lowest boundaries value, or greater than or equal to the highest boundaries value.\n * The default value can be of a different type than the entries in boundaries.\n */\ndefault?: Expression,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * If you do not specify an output document, the operation returns a count field containing the number of documents in each bucket.\n * If you specify an output document, only the fields specified in the document are returned; i.e. the count field is not returned unless it is explicitly included in the output document.\n */\noutput?: Record,}};\n\n\n/**\n * A type describing the `$bucketAuto` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\nexport interface $bucketAuto {\n\n/**\n * Categorizes incoming documents into a specific number of groups, called buckets, based on a specified expression. Bucket boundaries are automatically determined in an attempt to evenly distribute the documents into the specified number of buckets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\n$bucketAuto:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n */\ngroupBy: Expression,\n\n/**\n * A positive 32-bit integer that specifies the number of buckets into which input documents are grouped.\n */\nbuckets: Int,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * The default count field is not included in the output document when output is specified. Explicitly specify the count expression as part of the output document to include it.\n */\noutput?: Record,\n\n/**\n * A string that specifies the preferred number series to use to ensure that the calculated boundary edges end on preferred round numbers or their powers of 10.\n * Available only if the all groupBy values are numeric and none of them are NaN.\n */\ngranularity?: Granularity,}};\n\n\n/**\n * A type describing the `$changeStream` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\nexport interface $changeStream {\n\n/**\n * Returns a Change Stream cursor for the collection or database. This stage can only occur once in an aggregation pipeline and it must occur as the first stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\n$changeStream:{\n\n/**\n * A flag indicating whether the stream should report all changes that occur on the deployment, aside from those on internal databases or collections.\n */\nallChangesForCluster?: boolean,\n\n/**\n * Specifies whether change notifications include a copy of the full document when modified by update operations.\n */\nfullDocument?: FullDocument,\n\n/**\n * Valid values are "off", "whenAvailable", or "required". If set to "off", the "fullDocumentBeforeChange" field of the output document is always omitted. If set to "whenAvailable", the "fullDocumentBeforeChange" field will be populated with the pre-image of the document modified by the current change event if such a pre-image is available, and will be omitted otherwise. If set to "required", then the "fullDocumentBeforeChange" field is always populated and an exception is thrown if the pre-image is not available.\n */\nfullDocumentBeforeChange?: FullDocumentBeforeChange,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with startAfter or startAtOperationTime fields.\n */\nresumeAfter?: Int,\n\n/**\n * Specifies whether to include additional change events, such as such as DDL and index operations.\n * New in MongoDB 6.0.\n */\nshowExpandedEvents?: boolean,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with resumeAfter or startAtOperationTime fields.\n */\nstartAfter?: Record,\n\n/**\n * Specifies a time as the logical starting point for the change stream. Cannot be used with resumeAfter or startAfter fields.\n */\nstartAtOperationTime?: bson.Timestamp,}};\n\n\n/**\n * A type describing the `$changeStreamSplitLargeEvent` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\nexport interface $changeStreamSplitLargeEvent {\n\n/**\n * Splits large change stream events that exceed 16 MB into smaller fragments returned in a change stream cursor.\n * You can only use $changeStreamSplitLargeEvent in a $changeStream pipeline and it must be the final stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\n$changeStreamSplitLargeEvent:Record};\n\n\n/**\n * A type describing the `$collStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\nexport interface $collStats {\n\n/**\n * Returns statistics regarding a collection or view.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\n$collStats:{latencyStats?: Record,storageStats?: Record,count?: Record,queryExecStats?: Record,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\nexport interface $count {\n\n/**\n * Returns a count of the number of documents at this stage of the aggregation pipeline.\n * Distinct from the $count aggregation accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\n$count:string};\n\n\n/**\n * A type describing the `$currentOp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\nexport interface $currentOp {\n\n/**\n * Returns information on active and/or dormant operations for the MongoDB deployment. To run, use the db.aggregate() method.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\n$currentOp:{allUsers?: boolean,idleConnections?: boolean,idleCursors?: boolean,idleSessions?: boolean,localOps?: boolean,}};\n\n\n/**\n * A type describing the `$densify` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\nexport interface $densify {\n\n/**\n * Creates new documents in a sequence of documents where certain values in a field are missing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\n$densify:{\n\n/**\n * The field to densify. The values of the specified field must either be all numeric values or all dates.\n * Documents that do not contain the specified field continue through the pipeline unmodified.\n * To specify a in an embedded document or in an array, use dot notation.\n */\nfield: string,\n\n/**\n * The field(s) that will be used as the partition keys.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specification for range based densification.\n */\nrange: Range,}};\n\n\n/**\n * A type describing the `$documents` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\nexport interface $documents {\n\n/**\n * Returns literal documents from input values.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\n$documents:ResolvesToArray};\n\n\n/**\n * A type describing the `$facet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\nexport interface $facet {\n\n/**\n * Processes multiple aggregation pipelines within a single stage on the same set of input documents. Enables the creation of multi-faceted aggregations capable of characterizing data across multiple dimensions, or facets, in a single stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\n$facet:{} & { [facet: string]: Pipeline,}};\n\n\n/**\n * A type describing the `$fill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\nexport interface $fill {\n\n/**\n * Populates null and missing field values within documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\n$fill:{\n\n/**\n * Specifies an expression to group the documents. In the $fill stage, a group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionBy?: Record | string,\n\n/**\n * Specifies an array of fields as the compound key to group the documents. In the $fill stage, each group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specifies the field or fields to sort the documents within each partition. Uses the same syntax as the $sort stage.\n */\nsortBy?: SortBy,\n\n/**\n * Specifies an object containing each field for which to fill missing values. You can specify multiple fields in the output object.\n * The object name is the name of the field to fill. The object value specifies how the field is filled.\n */\noutput: Record,}};\n\n\n/**\n * A type describing the `$geoNear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\nexport interface $geoNear {\n\n/**\n * Returns an ordered stream of documents based on the proximity to a geospatial point. Incorporates the functionality of $match, $sort, and $limit for geospatial data. The output documents include an additional distance field and can include a location identifier field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\n$geoNear:{\n\n/**\n * The output field that contains the calculated distance. To specify a field within an embedded document, use dot notation.\n */\ndistanceField?: string,\n\n/**\n * The factor to multiply all distances returned by the query. For example, use the distanceMultiplier to convert radians, as returned by a spherical query, to kilometers by multiplying by the radius of the Earth.\n */\ndistanceMultiplier?: Number,\n\n/**\n * This specifies the output field that identifies the location used to calculate the distance. This option is useful when a location field contains multiple locations. To specify a field within an embedded document, use dot notation.\n */\nincludeLocs?: string,\n\n/**\n * Specify the geospatial indexed field to use when calculating the distance.\n */\nkey?: string,\n\n/**\n * The maximum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall within the specified distance from the center point.\n * Specify the distance in meters if the specified point is GeoJSON and in radians if the specified point is legacy coordinate pairs.\n */\nmaxDistance?: Number,\n\n/**\n * The minimum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall outside the specified distance from the center point.\n * Specify the distance in meters for GeoJSON data and in radians for legacy coordinate pairs.\n */\nminDistance?: Number,\n\n/**\n * The point for which to find the closest documents.\n */\nnear: GeoPoint | ResolvesToObject,\n\n/**\n * Limits the results to the documents that match the query. The query syntax is the usual MongoDB read operation query syntax.\n * You cannot specify a $near predicate in the query field of the $geoNear stage.\n */\nquery?: Query,\n\n/**\n * Determines how MongoDB calculates the distance between two points:\n * - When true, MongoDB uses $nearSphere semantics and calculates distances using spherical geometry.\n * - When false, MongoDB uses $near semantics: spherical geometry for 2dsphere indexes and planar geometry for 2d indexes.\n * Default: false.\n */\nspherical?: boolean,}};\n\n\n/**\n * A type describing the `$graphLookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\nexport interface $graphLookup {\n\n/**\n * Performs a recursive search on a collection. To each output document, adds a new array field that contains the traversal results of the recursive search for that document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\n$graphLookup:{\n\n/**\n * Target collection for the $graphLookup operation to search, recursively matching the connectFromField to the connectToField. The from collection must be in the same database as any other collections used in the operation.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom: string,\n\n/**\n * Expression that specifies the value of the connectFromField with which to start the recursive search. Optionally, startWith may be array of values, each of which is individually followed through the traversal process.\n */\nstartWith: (Expression) | (Expression)[],\n\n/**\n * Field name whose value $graphLookup uses to recursively match against the connectToField of other documents in the collection. If the value is an array, each element is individually followed through the traversal process.\n */\nconnectFromField: string,\n\n/**\n * Field name in other documents against which to match the value of the field specified by the connectFromField parameter.\n */\nconnectToField: string,\n\n/**\n * Name of the array field added to each output document. Contains the documents traversed in the $graphLookup stage to reach the document.\n */\nas: string,\n\n/**\n * Non-negative integral number specifying the maximum recursion depth.\n */\nmaxDepth?: Int,\n\n/**\n * Name of the field to add to each traversed document in the search path. The value of this field is the recursion depth for the document, represented as a NumberLong. Recursion depth value starts at zero, so the first lookup corresponds to zero depth.\n */\ndepthField?: string,\n\n/**\n * A document specifying additional conditions for the recursive search. The syntax is identical to query filter syntax.\n */\nrestrictSearchWithMatch?: Query,}};\n\n\n/**\n * A type describing the `$group` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\nexport interface $group {\n\n/**\n * Groups input documents by a specified identifier expression and applies the accumulator expression(s), if specified, to each group. Consumes all input documents and outputs one document per each distinct group. The output documents only contain the identifier field and, if specified, accumulated fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\n$group:RecordWithStaticFields<{\n\n/**\n * The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents.\n */\n_id: Expression | ExpressionMap,}, \n\n/**\n * Computed using the accumulator operators.\n */\n Accumulator>};\n\n\n/**\n * A type describing the `$indexStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\nexport interface $indexStats {\n\n/**\n * Returns statistics regarding the use of each index for the collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\n$indexStats:Record};\n\n\n/**\n * A type describing the `$limit` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\nexport interface $limit {\n\n/**\n * Passes the first n documents unmodified to the pipeline where n is the specified limit. For each input document, outputs either one document (for the first n documents) or zero documents (after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\n$limit:Int};\n\n\n/**\n * A type describing the `$listLocalSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\nexport interface $listLocalSessions {\n\n/**\n * Lists all active sessions recently in use on the currently connected mongos or mongod instance. These sessions may have not yet propagated to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\n$listLocalSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$listSampledQueries` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\nexport interface $listSampledQueries {\n\n/**\n * Lists sampled queries for all collections or a specific collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\n$listSampledQueries:{namespace?: string,}};\n\n\n/**\n * A type describing the `$listSearchIndexes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\nexport interface $listSearchIndexes {\n\n/**\n * Returns information about existing Atlas Search indexes on a specified collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\n$listSearchIndexes:{\n\n/**\n * The id of the index to return information about.\n */\nid?: string,\n\n/**\n * The name of the index to return information about.\n */\nname?: string,}};\n\n\n/**\n * A type describing the `$listSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\nexport interface $listSessions {\n\n/**\n * Lists all sessions that have been active long enough to propagate to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\n$listSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$lookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\nexport interface $lookup {\n\n/**\n * Performs a left outer join to another collection in the same database to filter in documents from the "joined" collection for processing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\n$lookup:{\n\n/**\n * Specifies the collection in the same database to perform the join with.\n * from is optional, you can use a $documents stage in a $lookup stage instead. For an example, see Use a $documents Stage in a $lookup Stage.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom?: string,\n\n/**\n * Specifies the field from the documents input to the $lookup stage. $lookup performs an equality match on the localField to the foreignField from the documents of the from collection. If an input document does not contain the localField, the $lookup treats the field as having a value of null for matching purposes.\n */\nlocalField?: string,\n\n/**\n * Specifies the field from the documents in the from collection. $lookup performs an equality match on the foreignField to the localField from the input documents. If a document in the from collection does not contain the foreignField, the $lookup treats the value as null for matching purposes.\n */\nforeignField?: string,\n\n/**\n * Specifies variables to use in the pipeline stages. Use the variable expressions to access the fields from the joined collection\'s documents that are input to the pipeline.\n */\nlet?: Record,\n\n/**\n * Specifies the pipeline to run on the joined collection. The pipeline determines the resulting documents from the joined collection. To return all documents, specify an empty pipeline [].\n * The pipeline cannot include the $out stage or the $merge stage. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n * The pipeline cannot directly access the joined document fields. Instead, define variables for the joined document fields using the let option and then reference the variables in the pipeline stages.\n */\npipeline?: Pipeline,\n\n/**\n * Specifies the name of the new array field to add to the input documents. The new array field contains the matching documents from the from collection. If the specified name already exists in the input document, the existing field is overwritten.\n */\nas: string,}};\n\n\n/**\n * A type describing the `$match` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\nexport interface $match {\n\n/**\n * Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. $match uses standard MongoDB queries. For each input document, outputs either one document (a match) or zero documents (no match).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\n$match:Query};\n\n\n/**\n * A type describing the `$merge` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\nexport interface $merge {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. The stage can incorporate (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) the results into an output collection. To use the $merge stage, it must be the last stage in the pipeline.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\n$merge:{\n\n/**\n * The output collection.\n */\ninto: string | OutCollection,\n\n/**\n * Field or fields that act as a unique identifier for a document. The identifier determines if a results document matches an existing document in the output collection.\n */\non?: (string) | (string)[],\n\n/**\n * Specifies variables for use in the whenMatched pipeline.\n */\nlet?: Record,\n\n/**\n * The behavior of $merge if a result document and an existing document in the collection have the same value for the specified on field(s).\n */\nwhenMatched?: WhenMatched | Pipeline,\n\n/**\n * The behavior of $merge if a result document does not match an existing document in the out collection.\n */\nwhenNotMatched?: WhenNotMatched,}};\n\n\n/**\n * A type describing the `$out` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\nexport interface $out {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. To use the $out stage, it must be the last stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\n$out:string | OutCollection};\n\n\n/**\n * A type describing the `$planCacheStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\nexport interface $planCacheStats {\n\n/**\n * Returns plan cache information for a collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\n$planCacheStats:Record};\n\n\n/**\n * A type describing the `$project` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\nexport interface $project {\n\n/**\n * Reshapes each document in the stream, such as by adding new fields or removing existing fields. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\n$project:{} & { [specification: string]: Expression,}};\n\n\n/**\n * A type describing the `$redact` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\nexport interface $redact {\n\n/**\n * Reshapes each document in the stream by restricting the content for each document based on information stored in the documents themselves. Incorporates the functionality of $project and $match. Can be used to implement field level redaction. For each input document, outputs either one or zero documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\n$redact:Expression};\n\n\n/**\n * A type describing the `$replaceRoot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\nexport interface $replaceRoot {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\n$replaceRoot:{newRoot: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$replaceWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\nexport interface $replaceWith {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * Alias for $replaceRoot.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\n$replaceWith:ResolvesToObject};\n\n\n/**\n * A type describing the `$sample` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\nexport interface $sample {\n\n/**\n * Randomly selects the specified number of documents from its input.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\n$sample:{\n\n/**\n * The number of documents to randomly select.\n */\nsize: Int,}};\n\n\n/**\n * A type describing the `$search` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\nexport interface $search {\n\n/**\n * Performs a full-text search of the field or fields in an Atlas collection.\n * NOTE: $search is only available for MongoDB Atlas clusters, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\n$search:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to "default".\n */\nindex?: string,\n\n/**\n * Specifies the highlighting options for displaying search terms in their original context.\n */\nhighlight?: SearchHighlight,\n\n/**\n * Parallelize search across segments on dedicated search nodes.\n * If you don\'t have separate search nodes on your cluster,\n * Atlas Search ignores this flag. If omitted, defaults to false.\n */\nconcurrent?: boolean,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,\n\n/**\n * Reference point for retrieving results. searchAfter returns documents starting immediately following the specified reference point.\n */\nsearchAfter?: string,\n\n/**\n * Reference point for retrieving results. searchBefore returns documents starting immediately before the specified reference point.\n */\nsearchBefore?: string,\n\n/**\n * Flag that specifies whether to retrieve a detailed breakdown of the score for the documents in the results. If omitted, defaults to false.\n */\nscoreDetails?: boolean,\n\n/**\n * Document that specifies the fields to sort the Atlas Search results by in ascending or descending order.\n */\nsort?: Record,\n\n/**\n * Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from Atlas Search.\n */\nreturnStoredSource?: boolean,\n\n/**\n * Document that specifies the tracking option to retrieve analytics information on the search terms.\n */\ntracking?: Record,}};\n\n\n/**\n * A type describing the `$searchMeta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\nexport interface $searchMeta {\n\n/**\n * Returns different types of metadata result documents for the Atlas Search query against an Atlas collection.\n * NOTE: $searchMeta is only available for MongoDB Atlas clusters running MongoDB v4.4.9 or higher, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\n$searchMeta:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to default.\n */\nindex?: string,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,}};\n\n\n/**\n * A type describing the `$set` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\nexport interface $set {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * Alias for $addFields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\n$set:{} & { [field: string]: Expression,}};\n\n\n/**\n * A type describing the `$setWindowFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\nexport interface $setWindowFields {\n\n/**\n * Groups documents into windows and applies one or more operators to the documents in each window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\n$setWindowFields:{\n\n/**\n * Specifies the field(s) to sort the documents by in the partition. Uses the same syntax as the $sort stage. Default is no sorting.\n */\nsortBy: SortBy,\n\n/**\n * Specifies the field(s) to append to the documents in the output returned by the $setWindowFields stage. Each field is set to the result returned by the window operator.\n * A field can contain dots to specify embedded document fields and array fields. The semantics for the embedded document dotted notation in the $setWindowFields stage are the same as the $addFields and $set stages.\n */\noutput: Record,\n\n/**\n * Specifies an expression to group the documents. In the $setWindowFields stage, the group of documents is known as a partition. Default is one partition for the entire collection.\n */\npartitionBy?: Expression,}};\n\n\n/**\n * A type describing the `$shardedDataDistribution` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\nexport interface $shardedDataDistribution {\n\n/**\n * Provides data and size distribution information on sharded collections.\n * New in MongoDB 6.0.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\n$shardedDataDistribution:Record};\n\n\n/**\n * A type describing the `$skip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\nexport interface $skip {\n\n/**\n * Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. For each input document, outputs either zero documents (for the first n documents) or one document (if after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\n$skip:Int};\n\n\n/**\n * A type describing the `$sort` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\nexport interface $sort {\n\n/**\n * Reorders the document stream by a specified sort key. Only the order changes; the documents remain unmodified. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\n$sort:{} & { [sort: string]: Expression | SortSpec,}};\n\n\n/**\n * A type describing the `$sortByCount` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\nexport interface $sortByCount {\n\n/**\n * Groups incoming documents based on the value of a specified expression, then computes the count of documents in each distinct group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\n$sortByCount:Expression};\n\n\n/**\n * A type describing the `$unionWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\nexport interface $unionWith {\n\n/**\n * Performs a union of two collections; i.e. combines pipeline results from two collections into a single result set.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\n$unionWith:{\n\n/**\n * The collection or view whose pipeline results you wish to include in the result set.\n */\ncoll: string,\n\n/**\n * An aggregation pipeline to apply to the specified coll.\n * The pipeline cannot include the $out and $merge stages. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n */\npipeline?: Pipeline,}};\n\n\n/**\n * A type describing the `$unset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\nexport interface $unset {\n\n/**\n * Removes or excludes fields from documents.\n * Alias for $project stage that removes or excludes fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\n$unset:[...(UnprefixedFieldPath)[],]};\n\n\n/**\n * A type describing the `$unwind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\nexport interface $unwind {\n\n/**\n * Deconstructs an array field from the input documents to output a document for each element. Each output document replaces the array with an element value. For each input document, outputs n documents where n is the number of array elements and can be zero for an empty array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\n$unwind:{\n\n/**\n * Field path to an array field.\n */\npath: ArrayFieldPath,\n\n/**\n * The name of a new field to hold the array index of the element. The name cannot start with a dollar sign $.\n */\nincludeArrayIndex?: string,\n\n/**\n * If true, if the path is null, missing, or an empty array, $unwind outputs the document.\n * If false, if path is null, missing, or an empty array, $unwind does not output a document.\n * The default value is false.\n */\npreserveNullAndEmptyArrays?: boolean,}};\n\n\n/**\n * A type describing the `$vectorSearch` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\nexport interface $vectorSearch {\n\n/**\n * The $vectorSearch stage performs an ANN or ENN search on a vector in the specified field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\n$vectorSearch:{\n\n/**\n * Name of the Atlas Vector Search index to use.\n */\nindex: string,\n\n/**\n * Number of documents to return in the results. This value can\'t exceed the value of numCandidates if you specify numCandidates.\n */\nlimit: Int,\n\n/**\n * Indexed vector type field to search.\n */\npath: string,\n\n/**\n * Array of numbers that represent the query vector. The number type must match the indexed field value type.\n */\nqueryVector: unknown[],\n\n/**\n * This is required if numCandidates is omitted. false to run ANN search. true to run ENN search.\n */\nexact?: boolean,\n\n/**\n * Any match query that compares an indexed field with a boolean, date, objectId, number (not decimals), string, or UUID to use as a pre-filter.\n */\nfilter?: Query,\n\n/**\n * This field is required if exact is false or omitted.\n * Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can\'t specify a number less than the number of documents to return (limit).\n */\nnumCandidates?: Int,}};\n};\n\nexport type Int = number|bson.Int32|{ $numberInt: string };\nexport type Double = number|bson.Double|{ $numberDouble: string };\nexport type Decimal = bson.Decimal128|{ $numberDecimal: string };\nexport type Regex = RegExp|bson.BSONRegExp|{ pattern: string, options?: string };\nexport type Long = bigint|bson.Long|{ $numberLong: string };\nexport type Javascript = bson.Code|Function|string;\nexport type Geometry = {type: "Point", coordinates: number[] }|{type:"MultiPoint", coordinates: number[][] }|{type:"LineString", coordinates: number[][] }|{type:"MultiLineString", coordinates: number[][][] }|{type:"Polygon", coordinates: number[][][] }|{type:"MultiPolygon", coordinates: number[][][][] }|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$geometry|Aggregation.Query.$polygon;\nexport type Number = Int|Long|Double|Decimal;\nexport type BsonPrimitive = Number|bson.Binary|bson.ObjectId|string|boolean|Date|null|Regex|Javascript|bson.Timestamp;\nexport type SearchPath = UnprefixedFieldPath|UnprefixedFieldPath[]|{ wildcard: string };\nexport type SearchScore = unknown;\nexport type Granularity = string;\nexport type FullDocument = string;\nexport type FullDocumentBeforeChange = string;\nexport type AccumulatorPercentile = string;\nexport type Range = unknown;\nexport type SortBy = unknown;\nexport type GeoPoint = unknown;\nexport type SortSpec = -1|1;\nexport type TimeUnit = "year"|"quarter"|"month"|"week"|"day"|"hour"|"minute"|"second"|"millisecond";\nexport type OutCollection = unknown;\nexport type WhenMatched = string;\nexport type WhenNotMatched = string;\nexport type Expression = ExpressionOperator|FieldPath|BsonPrimitive|FieldExpression|FieldPath[];\nexport type ExpressionMap = { [k: string]: Expression };\nexport type Stage = StageOperator|Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;\nexport type Pipeline = Stage[];\nexport type Query = QueryOperator|Partial<{ [k in keyof S]: Condition }>|Aggregation.Query.$and|Aggregation.Query.$expr|Aggregation.Query.$jsonSchema|Aggregation.Query.$nor|Aggregation.Query.$or|Aggregation.Query.$sampleRate|Aggregation.Query.$text|Aggregation.Query.$where;\nexport type Accumulator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type SearchHighlight = {\n path:\n | UnprefixedFieldPath\n | UnprefixedFieldPath[]\n | { wildcard: string }\n | \'*\'\n | MultiAnalyzerSpec\n | (UnprefixedFieldPath | MultiAnalyzerSpec)[];\n\n maxCharsToExamine?: number;\n maxNumPassages?: number;\n };\nexport type FieldPath = `$${AFieldPath}`;\nexport type UnprefixedFieldPath = AFieldPath;\nexport type NumberFieldPath = `$${AFieldPath}`;\nexport type DoubleFieldPath = `$${AFieldPath}`;\nexport type StringFieldPath = `$${AFieldPath}`;\nexport type ObjectFieldPath = `$${AFieldPath>}`;\nexport type ArrayFieldPath = `$${AFieldPath}`;\nexport type BinDataFieldPath = `$${AFieldPath}`;\nexport type ObjectIdFieldPath = `$${AFieldPath}`;\nexport type BoolFieldPath = `$${AFieldPath}`;\nexport type DateFieldPath = `$${AFieldPath}`;\nexport type NullFieldPath = `$${AFieldPath}`;\nexport type RegexFieldPath = `$${AFieldPath}`;\nexport type JavascriptFieldPath = `$${AFieldPath}`;\nexport type IntFieldPath = `$${AFieldPath}`;\nexport type TimestampFieldPath = `$${AFieldPath}`;\nexport type LongFieldPath = `$${AFieldPath}`;\nexport type DecimalFieldPath = `$${AFieldPath}`;\nexport type ResolvesToNumber = ResolvesToAny|NumberFieldPath|Number|ResolvesToInt|ResolvesToDouble|ResolvesToLong|ResolvesToDecimal|Aggregation.Expression.$abs|Aggregation.Expression.$avg|Aggregation.Expression.$pow|Aggregation.Expression.$sum;\nexport type ResolvesToDouble = ResolvesToAny|DoubleFieldPath|Double|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$exp|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$median|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDouble|Aggregation.Query.$rand;\nexport type ResolvesToString = ResolvesToAny|StringFieldPath|string|Aggregation.Expression.$concat|Aggregation.Expression.$dateToString|Aggregation.Expression.$ltrim|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$rtrim|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$toLower|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$type;\nexport type ResolvesToObject = \'$$ROOT\'|ResolvesToAny|ObjectFieldPath|Record|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$dateToParts|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$regexFind|Aggregation.Expression.$setField|Aggregation.Expression.$unsetField;\nexport type ResolvesToArray = ResolvesToAny|ArrayFieldPath|unknown[]|Aggregation.Expression.$concatArrays|Aggregation.Expression.$filter|Aggregation.Expression.$firstN|Aggregation.Expression.$lastN|Aggregation.Expression.$map|Aggregation.Expression.$maxN|Aggregation.Expression.$minN|Aggregation.Expression.$objectToArray|Aggregation.Expression.$percentile|Aggregation.Expression.$range|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$reverseArray|Aggregation.Expression.$setDifference|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setUnion|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$zip;\nexport type ResolvesToBinData = ResolvesToAny|BinDataFieldPath|bson.Binary;\nexport type ResolvesToObjectId = ResolvesToAny|ObjectIdFieldPath|bson.ObjectId|Aggregation.Expression.$toObjectId;\nexport type ResolvesToBool = ResolvesToAny|BoolFieldPath|boolean|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$eq|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$in|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$or|Aggregation.Expression.$regexMatch|Aggregation.Expression.$setEquals|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$toBool;\nexport type ResolvesToDate = \'$$NOW\'|ResolvesToAny|DateFieldPath|Date|Aggregation.Expression.$add|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$subtract|Aggregation.Expression.$toDate;\nexport type ResolvesToNull = ResolvesToAny|NullFieldPath|null;\nexport type ResolvesToRegex = ResolvesToAny|RegexFieldPath|Regex;\nexport type ResolvesToJavascript = ResolvesToAny|JavascriptFieldPath|Javascript;\nexport type ResolvesToInt = ResolvesToAny|IntFieldPath|Int|Aggregation.Expression.$add|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$floor|Aggregation.Expression.$hour|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$millisecond|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$round|Aggregation.Expression.$second|Aggregation.Expression.$size|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$subtract|Aggregation.Expression.$toInt|Aggregation.Expression.$week|Aggregation.Expression.$year;\nexport type ResolvesToTimestamp = ResolvesToAny|TimestampFieldPath|bson.Timestamp|\'$clusterTime\';\nexport type ResolvesToLong = ResolvesToAny|LongFieldPath|Long|Aggregation.Expression.$add|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$round|Aggregation.Expression.$subtract|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toLong|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond;\nexport type ResolvesToDecimal = ResolvesToAny|DecimalFieldPath|Decimal|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$multiply|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDecimal;\nexport type AccumulatorOperator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type Window = Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum;\nexport type ExpressionOperator = Aggregation.Expression.$abs|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$avg|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$case|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$concat|Aggregation.Expression.$concatArrays|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateToParts|Aggregation.Expression.$dateToString|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$eq|Aggregation.Expression.$exp|Aggregation.Expression.$filter|Aggregation.Expression.$first|Aggregation.Expression.$firstN|Aggregation.Expression.$floor|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$hour|Aggregation.Expression.$ifNull|Aggregation.Expression.$in|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$last|Aggregation.Expression.$lastN|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ltrim|Aggregation.Expression.$map|Aggregation.Expression.$max|Aggregation.Expression.$maxN|Aggregation.Expression.$median|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$meta|Aggregation.Expression.$millisecond|Aggregation.Expression.$min|Aggregation.Expression.$minN|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$multiply|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$objectToArray|Aggregation.Expression.$or|Aggregation.Expression.$percentile|Aggregation.Expression.$pow|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$range|Aggregation.Expression.$reduce|Aggregation.Expression.$regexFind|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$regexMatch|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$reverseArray|Aggregation.Expression.$round|Aggregation.Expression.$rtrim|Aggregation.Expression.$second|Aggregation.Expression.$setDifference|Aggregation.Expression.$setEquals|Aggregation.Expression.$setField|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$setUnion|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$size|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$subtract|Aggregation.Expression.$sum|Aggregation.Expression.$switch|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toBool|Aggregation.Expression.$toDate|Aggregation.Expression.$toDecimal|Aggregation.Expression.$toDouble|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toInt|Aggregation.Expression.$toLong|Aggregation.Expression.$toLower|Aggregation.Expression.$toObjectId|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond|Aggregation.Expression.$type|Aggregation.Expression.$unsetField|Aggregation.Expression.$week|Aggregation.Expression.$year|Aggregation.Expression.$zip;\nexport type ResolvesToAny = Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$first|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$ifNull|Aggregation.Expression.$last|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$max|Aggregation.Expression.$meta|Aggregation.Expression.$min|Aggregation.Expression.$reduce|Aggregation.Expression.$switch;\nexport type SwitchBranch = Aggregation.Expression.$case;\nexport type FieldQuery = Aggregation.Query.$all|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$not|Aggregation.Query.$regex|Aggregation.Query.$size|Aggregation.Query.$type;\nexport type QueryOperator = Aggregation.Query.$all|Aggregation.Query.$and|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$expr|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$geometry|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$jsonSchema|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$nor|Aggregation.Query.$not|Aggregation.Query.$or|Aggregation.Query.$polygon|Aggregation.Query.$rand|Aggregation.Query.$regex|Aggregation.Query.$sampleRate|Aggregation.Query.$size|Aggregation.Query.$text|Aggregation.Query.$type|Aggregation.Query.$where;\nexport type SearchOperator = Aggregation.Search.Autocomplete|Aggregation.Search.Compound|Aggregation.Search.EmbeddedDocument|Aggregation.Search.Equals|Aggregation.Search.Exists|Aggregation.Search.Facet|Aggregation.Search.GeoShape|Aggregation.Search.GeoWithin|Aggregation.Search.In|Aggregation.Search.MoreLikeThis|Aggregation.Search.Near|Aggregation.Search.Phrase|Aggregation.Search.QueryString|Aggregation.Search.Range|Aggregation.Search.Regex|Aggregation.Search.Text|Aggregation.Search.Wildcard;\nexport type StageOperator = Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;'; + '\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* eslint-disable @typescript-eslint/no-namespace */\n /* eslint-disable @typescript-eslint/ban-types */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n import type * as bson from \'bson\';\n import type { FilterOperators } from \'mongodb\';\n\n type Condition = AlternativeType | FilterOperators | QueryOperator;\n type AlternativeType =\n T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString;\n type RegExpOrString = T extends string ? Regex | T : T;\n type KeysOfAType = {\n [k in keyof T]: Extract extends never ? never : k;\n }[keyof T]\n type RecordWithStaticFields, TValue> = T & {\n [key: string]: TValue | T[keyof T];\n };\n\n // TBD: Nested fields\n type AFieldPath = KeysOfAType & string;\n type FieldExpression = { [k: string]: FieldPath };\n\n type MultiAnalyzerSpec = {\n value: KeysOfAType;\n multi: string;\n };\n export namespace Aggregation.Accumulator {\n\n\n/**\n * A type describing the `$accumulator` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\nexport interface $accumulator {\n\n/**\n * Defines a custom accumulator function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\n$accumulator:{\n\n/**\n * Function used to initialize the state. The init function receives its arguments from the initArgs array expression. You can specify the function definition as either BSON type Code or String.\n */\ninit: Javascript,\n\n/**\n * Arguments passed to the init function.\n */\ninitArgs?: ResolvesToArray,\n\n/**\n * Function used to accumulate documents. The accumulate function receives its arguments from the current state and accumulateArgs array expression. The result of the accumulate function becomes the new state. You can specify the function definition as either BSON type Code or String.\n */\naccumulate: Javascript,\n\n/**\n * Arguments passed to the accumulate function. You can use accumulateArgs to specify what field value(s) to pass to the accumulate function.\n */\naccumulateArgs: ResolvesToArray,\n\n/**\n * Function used to merge two internal states. merge must be either a String or Code BSON type. merge returns the combined result of the two merged states. For information on when the merge function is called, see Merge Two States with $merge.\n */\nmerge: Javascript,\n\n/**\n * Function used to update the result of the accumulation.\n */\nfinalize?: Javascript,\n\n/**\n * The language used in the $accumulator code.\n */\nlang: string,}};\n\n\n/**\n * A type describing the `$addToSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\nexport interface $addToSet {\n\n/**\n * Returns an array of unique expression values for each group. Order of the array elements is undefined.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\n$addToSet:Expression};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:ResolvesToNumber};\n\n\n/**\n * A type describing the `$bottom` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\nexport interface $bottom {\n\n/**\n * Returns the bottom element within a group according to the specified sort order.\n * New in MongoDB 5.2: Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\n$bottom:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$bottomN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\nexport interface $bottomN {\n\n/**\n * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. If the group contains fewer than n elements, $bottomN returns all elements in the group.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\n$bottomN:{\n\n/**\n * Limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\nexport interface $count {\n\n/**\n * Returns the number of documents in the group or window.\n * Distinct from the $count pipeline stage.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\n$count:Record};\n\n\n/**\n * A type describing the `$covariancePop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\nexport interface $covariancePop {\n\n/**\n * Returns the population covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\n$covariancePop:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$covarianceSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\nexport interface $covarianceSamp {\n\n/**\n * Returns the sample covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\n$covarianceSamp:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$denseRank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\nexport interface $denseRank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. There are no gaps in the ranks. Ties receive the same rank.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\n$denseRank:Record};\n\n\n/**\n * A type describing the `$derivative` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\nexport interface $derivative {\n\n/**\n * Returns the average rate of change within the specified window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\n$derivative:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$documentNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\nexport interface $documentNumber {\n\n/**\n * Returns the position of a document (known as the document number) in the $setWindowFields stage partition. Ties result in different adjacent document numbers.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\n$documentNumber:Record};\n\n\n/**\n * A type describing the `$expMovingAvg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\nexport interface $expMovingAvg {\n\n/**\n * Returns the exponential moving average for the numeric expression.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\n$expMovingAvg:{input: ResolvesToNumber,\n\n/**\n * An integer that specifies the number of historical documents that have a significant mathematical weight in the exponential moving average calculation, with the most recent documents contributing the most weight.\n * You must specify either N or alpha. You cannot specify both.\n * The N value is used in this formula to calculate the current result based on the expression value from the current document being read and the previous result of the calculation:\n */\nN?: Int,\n\n/**\n * A double that specifies the exponential decay value to use in the exponential moving average calculation. A higher alpha value assigns a lower mathematical significance to previous results from the calculation.\n * You must specify either N or alpha. You cannot specify both.\n */\nalpha?: Double,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:Expression};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\nexport interface $firstN {\n\n/**\n * Returns an aggregation of the first n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $firstN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * A positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$integral` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\nexport interface $integral {\n\n/**\n * Returns the approximation of the area under a curve.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\n$integral:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:Expression};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\nexport interface $lastN {\n\n/**\n * Returns an aggregation of the last n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $lastN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\n$lastN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$linearFill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\nexport interface $linearFill {\n\n/**\n * Fills null and missing fields in a window using linear interpolation based on surrounding field values.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\n$linearFill:ResolvesToNumber};\n\n\n/**\n * A type describing the `$locf` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\nexport interface $locf {\n\n/**\n * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\n$locf:Expression};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:Expression};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:ResolvesToObject};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:Expression};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$push` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\nexport interface $push {\n\n/**\n * Returns an array of values that result from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\n$push:Expression};\n\n\n/**\n * A type describing the `$rank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\nexport interface $rank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\n$rank:Record};\n\n\n/**\n * A type describing the `$shift` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\nexport interface $shift {\n\n/**\n * Returns the value from an expression applied to a document in a specified position relative to the current document in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\n$shift:{\n\n/**\n * Specifies an expression to evaluate and return in the output.\n */\noutput: Expression,\n\n/**\n * Specifies an integer with a numeric document position relative to the current document in the output.\n * For example:\n * 1 specifies the document position after the current document.\n * -1 specifies the document position before the current document.\n * -2 specifies the document position that is two positions before the current document.\n */\nby: Int,\n\n/**\n * Specifies an optional default expression to evaluate if the document position is outside of the implicit $setWindowFields stage window. The implicit window contains all the documents in the partition.\n * The default expression must evaluate to a constant value.\n * If you do not specify a default expression, $shift returns null for documents whose positions are outside of the implicit $setWindowFields stage window.\n */\ndefault: Expression,}};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:ResolvesToNumber};\n\n\n/**\n * A type describing the `$top` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\nexport interface $top {\n\n/**\n * Returns the top element within a group according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\n$top:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$topN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\nexport interface $topN {\n\n/**\n * Returns an aggregation of the top n fields within a group, according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\n$topN:{\n\n/**\n * limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n};\nexport namespace Aggregation.Expression {\n\n\n/**\n * A type describing the `$abs` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\nexport interface $abs {\n\n/**\n * Returns the absolute value of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\n$abs:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\nexport interface $acos {\n\n/**\n * Returns the inverse cosine (arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\n$acos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\nexport interface $acosh {\n\n/**\n * Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\n$acosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$add` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\nexport interface $add {\n\n/**\n * Adds numbers to return the sum, or adds numbers and a date to return a new date. If adding numbers and a date, treats the numbers as milliseconds. Accepts any number of argument expressions, but at most, one expression can resolve to a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\n$add:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date.\n */\n...(ResolvesToNumber | ResolvesToDate)[],]};\n\n\n/**\n * A type describing the `$allElementsTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\nexport interface $allElementsTrue {\n\n/**\n * Returns true if no element of a set evaluates to false, otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\n$allElementsTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\nexport interface $and {\n\n/**\n * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\n$and:[...(Expression | ResolvesToBool | ResolvesToNumber | ResolvesToString | ResolvesToNull)[],]};\n\n\n/**\n * A type describing the `$anyElementTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\nexport interface $anyElementTrue {\n\n/**\n * Returns true if any elements of a set evaluate to true; otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\n$anyElementTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$arrayElemAt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\nexport interface $arrayElemAt {\n\n/**\n * Returns the element at the specified array index.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\n$arrayElemAt:[array: ResolvesToArray,idx: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$arrayToObject` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\nexport interface $arrayToObject {\n\n/**\n * Converts an array of key value pairs to a document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\n$arrayToObject:[array: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$asin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\nexport interface $asin {\n\n/**\n * Returns the inverse sin (arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\n$asin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$asinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\nexport interface $asinh {\n\n/**\n * Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\n$asinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\nexport interface $atan {\n\n/**\n * Returns the inverse tangent (arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\n$atan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan2` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\nexport interface $atan2 {\n\n/**\n * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\n$atan2:[\n\n/**\n * $atan2 takes any valid expression that resolves to a number.\n * $atan2 returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.\n * By default $atan returns values as a double. $atan2 can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.\n */\ny: ResolvesToNumber,x: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$atanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\nexport interface $atanh {\n\n/**\n * Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\n$atanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$binarySize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\nexport interface $binarySize {\n\n/**\n * Returns the size of a given string or binary data value\'s content in bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\n$binarySize:ResolvesToString | ResolvesToBinData | ResolvesToNull};\n\n\n/**\n * A type describing the `$bitAnd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\nexport interface $bitAnd {\n\n/**\n * Returns the result of a bitwise and operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\n$bitAnd:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitNot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\nexport interface $bitNot {\n\n/**\n * Returns the result of a bitwise not operation on a single argument or an array that contains a single int or long value.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\n$bitNot:ResolvesToInt | ResolvesToLong};\n\n\n/**\n * A type describing the `$bitOr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\nexport interface $bitOr {\n\n/**\n * Returns the result of a bitwise or operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\n$bitOr:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitXor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\nexport interface $bitXor {\n\n/**\n * Returns the result of a bitwise xor (exclusive or) operation on an array of int and long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\n$bitXor:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bsonSize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\nexport interface $bsonSize {\n\n/**\n * Returns the size in bytes of a given document (i.e. BSON type Object) when encoded as BSON.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\n$bsonSize:ResolvesToObject | ResolvesToNull};\n\n\n/**\n * A type describing the `$case` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $case {\n\n/**\n * Represents a single case in a $switch expression\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$case:{\n\n/**\n * Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n */\ncase: ResolvesToBool,\n\n/**\n * Can be any valid expression.\n */\nthen: Expression,}};\n\n\n/**\n * A type describing the `$ceil` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\nexport interface $ceil {\n\n/**\n * Returns the smallest integer greater than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\n$ceil:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\nexport interface $cmp {\n\n/**\n * Returns 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\n$cmp:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$concat` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\nexport interface $concat {\n\n/**\n * Concatenates any number of strings.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\n$concat:[...(ResolvesToString)[],]};\n\n\n/**\n * A type describing the `$concatArrays` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\nexport interface $concatArrays {\n\n/**\n * Concatenates arrays to return the concatenated array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\n$concatArrays:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$cond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\nexport interface $cond {\n\n/**\n * A ternary operator that evaluates one expression, and depending on the result, returns the value of one of the other two expressions. Accepts either three expressions in an ordered list or three named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\n$cond:{if: ResolvesToBool,then: Expression,else: Expression,}};\n\n\n/**\n * A type describing the `$convert` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\nexport interface $convert {\n\n/**\n * Converts a value to a specified type.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\n$convert:{input: Expression,to: ResolvesToString | ResolvesToInt,\n\n/**\n * The value to return on encountering an error during conversion, including unsupported type conversions. The arguments can be any valid expression.\n * If unspecified, the operation throws an error upon encountering an error and stops.\n */\nonError?: Expression,\n\n/**\n * The value to return if the input is null or missing. The arguments can be any valid expression.\n * If unspecified, $convert returns null if the input is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$cos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\nexport interface $cos {\n\n/**\n * Returns the cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\n$cos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\nexport interface $cosh {\n\n/**\n * Returns the hyperbolic cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\n$cosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$dateAdd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\nexport interface $dateAdd {\n\n/**\n * Adds a number of time units to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\n$dateAdd:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateDiff` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\nexport interface $dateDiff {\n\n/**\n * Returns the difference between two dates.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\n$dateDiff:{\n\n/**\n * The start of the time period. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The end of the time period. The endDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nendDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The time measurement unit between the startDate and endDate\n */\nunit: TimeUnit,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * Used when the unit is equal to week. Defaults to Sunday. The startOfWeek parameter is an expression that resolves to a case insensitive string\n */\nstartOfWeek?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\nexport interface $dateFromParts {\n\n/**\n * Constructs a BSON Date object given the date\'s constituent parts.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\n$dateFromParts:{\n\n/**\n * Calendar year. Can be any expression that evaluates to a number.\n */\nyear?: ResolvesToNumber,\n\n/**\n * ISO Week Date Year. Can be any expression that evaluates to a number.\n */\nisoWeekYear?: ResolvesToNumber,\n\n/**\n * Month. Defaults to 1.\n */\nmonth?: ResolvesToNumber,\n\n/**\n * Week of year. Defaults to 1.\n */\nisoWeek?: ResolvesToNumber,\n\n/**\n * Day of month. Defaults to 1.\n */\nday?: ResolvesToNumber,\n\n/**\n * Day of week (Monday 1 - Sunday 7). Defaults to 1.\n */\nisoDayOfWeek?: ResolvesToNumber,\n\n/**\n * Hour. Defaults to 0.\n */\nhour?: ResolvesToNumber,\n\n/**\n * Minute. Defaults to 0.\n */\nminute?: ResolvesToNumber,\n\n/**\n * Second. Defaults to 0.\n */\nsecond?: ResolvesToNumber,\n\n/**\n * Millisecond. Defaults to 0.\n */\nmillisecond?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\nexport interface $dateFromString {\n\n/**\n * Converts a date/time string to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\n$dateFromString:{\n\n/**\n * The date/time string to convert to a date object.\n */\ndateString: ResolvesToString,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If $dateFromString encounters an error while parsing the given dateString, it outputs the result value of the provided onError expression. This result value can be of any type.\n * If you do not specify onError, $dateFromString throws an error if it cannot parse dateString.\n */\nonError?: Expression,\n\n/**\n * If the dateString provided to $dateFromString is null or missing, it outputs the result value of the provided onNull expression. This result value can be of any type.\n * If you do not specify onNull and dateString is null or missing, then $dateFromString outputs null.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateSubtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\nexport interface $dateSubtract {\n\n/**\n * Subtracts a number of time units from a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\n$dateSubtract:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateToParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\nexport interface $dateToParts {\n\n/**\n * Returns a document containing the constituent parts of a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\n$dateToParts:{\n\n/**\n * The input date for which to return parts. date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If set to true, modifies the output document to use ISO week date fields. Defaults to false.\n */\niso8601?: boolean,}};\n\n\n/**\n * A type describing the `$dateToString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\nexport interface $dateToString {\n\n/**\n * Returns the date as a formatted string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\n$dateToString:{\n\n/**\n * The date to convert to string. Must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The value to return if the date is null or missing.\n * If unspecified, $dateToString returns null if the date is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateTrunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\nexport interface $dateTrunc {\n\n/**\n * Truncates a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\n$dateTrunc:{\n\n/**\n * The date to truncate, specified in UTC. The date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit of time, specified as an expression that must resolve to one of these strings: year, quarter, week, month, day, hour, minute, second.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nunit: TimeUnit,\n\n/**\n * The numeric time value, specified as an expression that must resolve to a positive non-zero number. Defaults to 1.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nbinSize?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The start of the week. Used when\n * unit is week. Defaults to Sunday.\n */\nstartOfWeek?: string,}};\n\n\n/**\n * A type describing the `$dayOfMonth` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\nexport interface $dayOfMonth {\n\n/**\n * Returns the day of the month for a date as a number between 1 and 31.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\n$dayOfMonth:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\nexport interface $dayOfWeek {\n\n/**\n * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\n$dayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\nexport interface $dayOfYear {\n\n/**\n * Returns the day of the year for a date as a number between 1 and 366 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\n$dayOfYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$degreesToRadians` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\nexport interface $degreesToRadians {\n\n/**\n * Converts a value from degrees to radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\n$degreesToRadians:ResolvesToNumber};\n\n\n/**\n * A type describing the `$divide` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\nexport interface $divide {\n\n/**\n * Returns the result of dividing the first number by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\n$divide:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\nexport interface $eq {\n\n/**\n * Returns true if the values are equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\n$eq:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$exp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\nexport interface $exp {\n\n/**\n * Raises e to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\n$exp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$filter` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\nexport interface $filter {\n\n/**\n * Selects a subset of the array to return an array with only the elements that match the filter condition.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\n$filter:{input: ResolvesToArray,\n\n/**\n * An expression that resolves to a boolean value used to determine if an element should be included in the output array. The expression references each element of the input array individually with the variable name specified in as.\n */\ncond: ResolvesToBool,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: string,\n\n/**\n * A number expression that restricts the number of matching array elements that $filter returns. You cannot specify a limit less than 1. The matching array elements are returned in the order they appear in the input array.\n * If the specified limit is greater than the number of matching array elements, $filter returns all matching array elements. If the limit is null, $filter returns all matching array elements.\n */\nlimit?: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:ResolvesToArray};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\nexport interface $firstN {\n\n/**\n * Returns a specified number of elements from the beginning of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$floor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\nexport interface $floor {\n\n/**\n * Returns the largest integer less than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\n$floor:ResolvesToNumber};\n\n\n/**\n * A type describing the `$function` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\nexport interface $function {\n\n/**\n * Defines a custom function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\n$function:{\n\n/**\n * The function definition. You can specify the function definition as either BSON\\JavaScript or string.\n * function(arg1, arg2, ...) { ... }\n */\nbody: Javascript,\n\n/**\n * Arguments passed to the function body. If the body function does not take an argument, you can specify an empty array [ ].\n */\nargs: unknown[],lang: string,}};\n\n\n/**\n * A type describing the `$getField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\nexport interface $getField {\n\n/**\n * Returns the value of a specified field from a document. You can use $getField to retrieve the value of fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\n$getField:{\n\n/**\n * Field in the input object for which you want to return a value. field can be any valid expression that resolves to a string constant.\n * If field begins with a dollar sign ($), place the field name inside of a $literal expression to return its value.\n */\nfield: ResolvesToString,\n\n/**\n * Default: $$CURRENT\n * A valid expression that contains the field for which you want to return a value. input must resolve to an object, missing, null, or undefined. If omitted, defaults to the document currently being processed in the pipeline ($$CURRENT).\n */\ninput?: Expression,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\nexport interface $gt {\n\n/**\n * Returns true if the first value is greater than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\n$gt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\nexport interface $gte {\n\n/**\n * Returns true if the first value is greater than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\n$gte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$hour` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\nexport interface $hour {\n\n/**\n * Returns the hour for a date as a number between 0 and 23.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\n$hour:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$ifNull` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\nexport interface $ifNull {\n\n/**\n * Returns either the non-null result of the first expression or the result of the second expression if the first expression results in a null result. Null result encompasses instances of undefined values or missing fields. Accepts two expressions as arguments. The result of the second expression can be null.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\n$ifNull:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\nexport interface $in {\n\n/**\n * Returns a boolean indicating whether a specified value is in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\n$in:[\n\n/**\n * Any valid expression expression.\n */\nexpression: Expression,\n\n/**\n * Any valid expression that resolves to an array.\n */\narray: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$indexOfArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\nexport interface $indexOfArray {\n\n/**\n * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. Array indexes start at zero.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\n$indexOfArray:[\n\n/**\n * Can be any valid expression as long as it resolves to an array.\n * If the array expression resolves to a value of null or refers to a field that is missing, $indexOfArray returns null.\n * If the array expression does not resolve to an array or null nor refers to a missing field, $indexOfArray returns an error.\n */\narray: ResolvesToArray,search: Expression,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\nexport interface $indexOfBytes {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 byte index of the first occurrence. If the substring is not found, returns -1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\n$indexOfBytes:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfBytes returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfBytes returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\nexport interface $indexOfCP {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurrence. If the substring is not found, returns -1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\n$indexOfCP:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfCP returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfCP returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$isArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\nexport interface $isArray {\n\n/**\n * Determines if the operand is an array. Returns a boolean.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\n$isArray:[expression: Expression,]};\n\n\n/**\n * A type describing the `$isNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\nexport interface $isNumber {\n\n/**\n * Returns boolean true if the specified expression resolves to an integer, decimal, double, or long.\n * Returns boolean false if the expression resolves to any other BSON type, null, or a missing field.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\n$isNumber:Expression};\n\n\n/**\n * A type describing the `$isoDayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\nexport interface $isoDayOfWeek {\n\n/**\n * Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\n$isoDayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\nexport interface $isoWeek {\n\n/**\n * Returns the week number in ISO 8601 format, ranging from 1 to 53. Week numbers start at 1 with the week (Monday through Sunday) that contains the year\'s first Thursday.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\n$isoWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeekYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\nexport interface $isoWeekYear {\n\n/**\n * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\n$isoWeekYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:ResolvesToArray};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\nexport interface $lastN {\n\n/**\n * Returns a specified number of elements from the end of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\n$lastN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$let` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\nexport interface $let {\n\n/**\n * Defines variables for use within the scope of a subexpression and returns the result of the subexpression. Accepts named parameters.\n * Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\n$let:{\n\n/**\n * Assignment block for the variables accessible in the in expression. To assign a variable, specify a string for the variable name and assign a valid expression for the value.\n * The variable assignments have no meaning outside the in expression, not even within the vars block itself.\n */\nvars: ExpressionMap,\n\n/**\n * The expression to evaluate.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$literal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\nexport interface $literal {\n\n/**\n * Return a value without parsing. Use for values that the aggregation pipeline may interpret as an expression. For example, use a $literal expression to a string that starts with a dollar sign ($) to avoid parsing as a field path.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\n$literal:any};\n\n\n/**\n * A type describing the `$ln` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\nexport interface $ln {\n\n/**\n * Calculates the natural log of a number.\n * $ln is equivalent to $log: [ , Math.E ] expression, where Math.E is a JavaScript representation for Euler\'s number e.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\n$ln:ResolvesToNumber};\n\n\n/**\n * A type describing the `$log` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\nexport interface $log {\n\n/**\n * Calculates the log of a number in the specified base.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\n$log:[\n\n/**\n * Any valid expression as long as it resolves to a non-negative number.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Any valid expression as long as it resolves to a positive number greater than 1.\n */\nbase: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$log10` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\nexport interface $log10 {\n\n/**\n * Calculates the log base 10 of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\n$log10:ResolvesToNumber};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\nexport interface $lt {\n\n/**\n * Returns true if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\n$lt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\nexport interface $lte {\n\n/**\n * Returns true if the first value is less than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\n$lte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$ltrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\nexport interface $ltrim {\n\n/**\n * Removes whitespace or the specified characters from the beginning of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\n$ltrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$map` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\nexport interface $map {\n\n/**\n * Applies a subexpression to each element of an array and returns the array of resulting values in order. Accepts named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\n$map:{\n\n/**\n * An expression that resolves to an array.\n */\ninput: ResolvesToArray,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: ResolvesToString,\n\n/**\n * An expression that is applied to each element of the input array. The expression references each element individually with the variable name specified in as.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:[\n\n/**\n * Any valid expression that resolves to a document.\n */\n...(ResolvesToObject)[],]};\n\n\n/**\n * A type describing the `$meta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\nexport interface $meta {\n\n/**\n * Access available per-document metadata related to the aggregation operation.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\n$meta:string};\n\n\n/**\n * A type describing the `$millisecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\nexport interface $millisecond {\n\n/**\n * Returns the milliseconds of a date as a number between 0 and 999.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\n$millisecond:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$minute` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\nexport interface $minute {\n\n/**\n * Returns the minute for a date as a number between 0 and 59.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\n$minute:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\nexport interface $mod {\n\n/**\n * Returns the remainder of the first number divided by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\n$mod:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$month` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\nexport interface $month {\n\n/**\n * Returns the month for a date as a number between 1 (January) and 12 (December).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\n$month:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$multiply` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\nexport interface $multiply {\n\n/**\n * Multiplies numbers to return the product. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\n$multiply:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to numbers.\n * Starting in MongoDB 6.1 you can optimize the $multiply operation. To improve performance, group references at the end of the argument list.\n */\n...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\nexport interface $ne {\n\n/**\n * Returns true if the values are not equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\n$ne:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\nexport interface $not {\n\n/**\n * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\n$not:[expression: Expression | ResolvesToBool,]};\n\n\n/**\n * A type describing the `$objectToArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\nexport interface $objectToArray {\n\n/**\n * Converts a document to an array of documents representing key-value pairs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\n$objectToArray:ResolvesToObject};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\nexport interface $or {\n\n/**\n * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\n$or:[...(Expression | ResolvesToBool)[],]};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$pow` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\nexport interface $pow {\n\n/**\n * Raises a number to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\n$pow:[number: ResolvesToNumber,exponent: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$radiansToDegrees` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\nexport interface $radiansToDegrees {\n\n/**\n * Converts a value from radians to degrees.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\n$radiansToDegrees:ResolvesToNumber};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\nexport interface $rand {\n\n/**\n * Returns a random float between 0 and 1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$range` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\nexport interface $range {\n\n/**\n * Outputs an array containing a sequence of integers according to user-defined inputs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\n$range:[\n\n/**\n * An integer that specifies the start of the sequence. Can be any valid expression that resolves to an integer.\n */\nstart: ResolvesToInt,\n\n/**\n * An integer that specifies the exclusive upper limit of the sequence. Can be any valid expression that resolves to an integer.\n */\nend: ResolvesToInt,\n\n/**\n * An integer that specifies the increment value. Can be any valid expression that resolves to a non-zero integer. Defaults to 1.\n */\nstep?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$reduce` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\nexport interface $reduce {\n\n/**\n * Applies an expression to each element in an array and combines them into a single value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\n$reduce:{\n\n/**\n * Can be any valid expression that resolves to an array.\n * If the argument resolves to a value of null or refers to a missing field, $reduce returns null.\n * If the argument does not resolve to an array or null nor refers to a missing field, $reduce returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The initial cumulative value set before in is applied to the first element of the input array.\n */\ninitialValue: Expression,\n\n/**\n * A valid expression that $reduce applies to each element in the input array in left-to-right order. Wrap the input value with $reverseArray to yield the equivalent of applying the combining expression from right-to-left.\n * During evaluation of the in expression, two variables will be available:\n * - value is the variable that represents the cumulative value of the expression.\n * - this is the variable that refers to the element being processed.\n */\nin: Expression | ExpressionMap,}};\n\n\n/**\n * A type describing the `$regexFind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\nexport interface $regexFind {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the first matched substring.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\n$regexFind:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexFindAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\nexport interface $regexFindAll {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the all matched substrings.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\n$regexFindAll:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\nexport interface $regexMatch {\n\n/**\n * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\n$regexMatch:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$replaceAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\nexport interface $replaceAll {\n\n/**\n * Replaces all instances of a search string in an input string with a replacement string.\n * $replaceAll is both case-sensitive and diacritic-sensitive, and ignores any collation present on a collection.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\n$replaceAll:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$replaceOne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\nexport interface $replaceOne {\n\n/**\n * Replaces the first instance of a matched string in a given input.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\n$replaceOne:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$reverseArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\nexport interface $reverseArray {\n\n/**\n * Returns an array with the elements in reverse order.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\n$reverseArray:ResolvesToArray};\n\n\n/**\n * A type describing the `$round` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\nexport interface $round {\n\n/**\n * Rounds a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\n$round:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $round returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$rtrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\nexport interface $rtrim {\n\n/**\n * Removes whitespace characters, including null, or the specified characters from the end of a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\n$rtrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$second` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\nexport interface $second {\n\n/**\n * Returns the seconds for a date as a number between 0 and 60 (leap seconds).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\n$second:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$setDifference` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\nexport interface $setDifference {\n\n/**\n * Returns a set with elements that appear in the first set but not in the second set; i.e. performs a relative complement of the second set relative to the first. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\n$setDifference:[\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression1: ResolvesToArray,\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setEquals` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\nexport interface $setEquals {\n\n/**\n * Returns true if the input sets have the same distinct elements. Accepts two or more argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\n$setEquals:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\nexport interface $setField {\n\n/**\n * Adds, updates, or removes a specified field in a document. You can use $setField to add, update, or remove fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\n$setField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,\n\n/**\n * The value that you want to assign to field. value can be any valid expression.\n * Set to $$REMOVE to remove field from the input document.\n */\nvalue: Expression,}};\n\n\n/**\n * A type describing the `$setIntersection` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\nexport interface $setIntersection {\n\n/**\n * Returns a set with elements that appear in all of the input sets. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\n$setIntersection:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setIsSubset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\nexport interface $setIsSubset {\n\n/**\n * Returns true if all elements of the first set appear in the second set, including when the first set equals the second set; i.e. not a strict subset. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\n$setIsSubset:[expression1: ResolvesToArray,expression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setUnion` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\nexport interface $setUnion {\n\n/**\n * Returns a set with elements that appear in any of the input sets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\n$setUnion:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$sin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\nexport interface $sin {\n\n/**\n * Returns the sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\n$sin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\nexport interface $sinh {\n\n/**\n * Returns the hyperbolic sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\n$sinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\nexport interface $size {\n\n/**\n * Returns the number of elements in the array. Accepts a single expression as argument.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\n$size:ResolvesToArray};\n\n\n/**\n * A type describing the `$slice` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\nexport interface $slice {\n\n/**\n * Returns a subset of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\n$slice:| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer.\n * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array.\n * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array.\n */\nposition: ResolvesToInt,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n};\n\n\n/**\n * A type describing the `$sortArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\nexport interface $sortArray {\n\n/**\n * Sorts the elements of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\n$sortArray:{\n\n/**\n * The array to be sorted.\n * The result is null if the expression: is missing, evaluates to null, or evaluates to undefined\n * If the expression evaluates to any other non-array value, the document returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The document specifies a sort ordering.\n */\nsortBy: Int | SortSpec | SortBy,}};\n\n\n/**\n * A type describing the `$split` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\nexport interface $split {\n\n/**\n * Splits a string into substrings based on a delimiter. Returns an array of substrings. If the delimiter is not found within the string, returns an array containing the original string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\n$split:[\n\n/**\n * The string to be split. string expression can be any valid expression as long as it resolves to a string.\n */\nstring: ResolvesToString,\n\n/**\n * The delimiter to use when splitting the string expression. delimiter can be any valid expression as long as it resolves to a string.\n */\ndelimiter: ResolvesToString,]};\n\n\n/**\n * A type describing the `$sqrt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\nexport interface $sqrt {\n\n/**\n * Calculates the square root.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\n$sqrt:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$strLenBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\nexport interface $strLenBytes {\n\n/**\n * Returns the number of UTF-8 encoded bytes in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\n$strLenBytes:ResolvesToString};\n\n\n/**\n * A type describing the `$strLenCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\nexport interface $strLenCP {\n\n/**\n * Returns the number of UTF-8 code points in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\n$strLenCP:ResolvesToString};\n\n\n/**\n * A type describing the `$strcasecmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\nexport interface $strcasecmp {\n\n/**\n * Performs case-insensitive string comparison and returns: 0 if two strings are equivalent, 1 if the first string is greater than the second, and -1 if the first string is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\n$strcasecmp:[expression1: ResolvesToString,expression2: ResolvesToString,]};\n\n\n/**\n * A type describing the `$substr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\nexport interface $substr {\n\n/**\n * Deprecated. Use $substrBytes or $substrCP.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\n$substr:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\nexport interface $substrBytes {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the specified number of bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\n$substrBytes:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\nexport interface $substrCP {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string and continues for the number of code points specified.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\n$substrCP:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$subtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\nexport interface $subtract {\n\n/**\n * Returns the result of subtracting the second value from the first. If the two values are numbers, return the difference. If the two values are dates, return the difference in milliseconds. If the two values are a date and a number in milliseconds, return the resulting date. Accepts two argument expressions. If the two values are a date and a number, specify the date argument first as it is not meaningful to subtract a date from a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\n$subtract:[expression1: ResolvesToNumber | ResolvesToDate,expression2: ResolvesToNumber | ResolvesToDate,]};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:[...(ResolvesToNumber | ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$switch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $switch {\n\n/**\n * Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$switch:{\n\n/**\n * An array of control branch documents. Each branch is a document with the following fields:\n * - case Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n * - then Can be any valid expression.\n * The branches array must contain at least one branch document.\n */\nbranches: unknown[],\n\n/**\n * The path to take if no branch case expression evaluates to true.\n * Although optional, if default is unspecified and no branch case evaluates to true, $switch returns an error.\n */\ndefault?: Expression,}};\n\n\n/**\n * A type describing the `$tan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\nexport interface $tan {\n\n/**\n * Returns the tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\n$tan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$tanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\nexport interface $tanh {\n\n/**\n * Returns the hyperbolic tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\n$tanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$toBool` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\nexport interface $toBool {\n\n/**\n * Converts value to a boolean.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\n$toBool:Expression};\n\n\n/**\n * A type describing the `$toDate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\nexport interface $toDate {\n\n/**\n * Converts value to a Date.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\n$toDate:Expression};\n\n\n/**\n * A type describing the `$toDecimal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\nexport interface $toDecimal {\n\n/**\n * Converts value to a Decimal128.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\n$toDecimal:Expression};\n\n\n/**\n * A type describing the `$toDouble` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\nexport interface $toDouble {\n\n/**\n * Converts value to a double.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\n$toDouble:Expression};\n\n\n/**\n * A type describing the `$toHashedIndexKey` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\nexport interface $toHashedIndexKey {\n\n/**\n * Computes and returns the hash value of the input expression using the same hash function that MongoDB uses to create a hashed index. A hash function maps a key or string to a fixed-size numeric value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\n$toHashedIndexKey:Expression};\n\n\n/**\n * A type describing the `$toInt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\nexport interface $toInt {\n\n/**\n * Converts value to an integer.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\n$toInt:Expression};\n\n\n/**\n * A type describing the `$toLong` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\nexport interface $toLong {\n\n/**\n * Converts value to a long.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\n$toLong:Expression};\n\n\n/**\n * A type describing the `$toLower` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\nexport interface $toLower {\n\n/**\n * Converts a string to lowercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\n$toLower:ResolvesToString};\n\n\n/**\n * A type describing the `$toObjectId` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\nexport interface $toObjectId {\n\n/**\n * Converts value to an ObjectId.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\n$toObjectId:Expression};\n\n\n/**\n * A type describing the `$toString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\nexport interface $toString {\n\n/**\n * Converts value to a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\n$toString:Expression};\n\n\n/**\n * A type describing the `$toUpper` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\nexport interface $toUpper {\n\n/**\n * Converts a string to uppercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\n$toUpper:ResolvesToString};\n\n\n/**\n * A type describing the `$trim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\nexport interface $trim {\n\n/**\n * Removes whitespace or the specified characters from the beginning and end of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\n$trim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$trunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\nexport interface $trunc {\n\n/**\n * Truncates a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\n$trunc:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $trunc returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g. -20 < place < 100. Defaults to 0.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$tsIncrement` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\nexport interface $tsIncrement {\n\n/**\n * Returns the incrementing ordinal from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\n$tsIncrement:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$tsSecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\nexport interface $tsSecond {\n\n/**\n * Returns the seconds from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\n$tsSecond:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\nexport interface $type {\n\n/**\n * Return the BSON data type of the field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\n$type:Expression};\n\n\n/**\n * A type describing the `$unsetField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\nexport interface $unsetField {\n\n/**\n * You can use $unsetField to remove fields with names that contain periods (.) or that start with dollar signs ($).\n * $unsetField is an alias for $setField using $$REMOVE to remove fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\n$unsetField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$week` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\nexport interface $week {\n\n/**\n * Returns the week number for a date as a number between 0 (the partial week that precedes the first Sunday of the year) and 53 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\n$week:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$year` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\nexport interface $year {\n\n/**\n * Returns the year for a date as a number (e.g. 2014).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\n$year:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$zip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\nexport interface $zip {\n\n/**\n * Merge two arrays together.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\n$zip:{\n\n/**\n * An array of expressions that resolve to arrays. The elements of these input arrays combine to form the arrays of the output array.\n * If any of the inputs arrays resolves to a value of null or refers to a missing field, $zip returns null.\n * If any of the inputs arrays does not resolve to an array or null nor refers to a missing field, $zip returns an error.\n */\ninputs: ResolvesToArray,\n\n/**\n * A boolean which specifies whether the length of the longest array determines the number of arrays in the output array.\n * The default value is false: the shortest array length determines the number of arrays in the output array.\n */\nuseLongestLength?: boolean,\n\n/**\n * An array of default element values to use if the input arrays have different lengths. You must specify useLongestLength: true along with this field, or else $zip will return an error.\n * If useLongestLength: true but defaults is empty or not specified, $zip uses null as the default value.\n * If specifying a non-empty defaults, you must specify a default for each input array or else $zip will return an error.\n */\ndefaults?: unknown[],}};\n};\nexport namespace Aggregation.Query {\n\n\n/**\n * A type describing the `$all` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\nexport interface $all {\n\n/**\n * Matches arrays that contain all elements specified in the query.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\n$all:[...(FieldQuery)[],]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\nexport interface $and {\n\n/**\n * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\n$and:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$bitsAllClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\nexport interface $bitsAllClear {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\n$bitsAllClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAllSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\nexport interface $bitsAllSet {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\n$bitsAllSet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnyClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\nexport interface $bitsAnyClear {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\n$bitsAnyClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnySet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\nexport interface $bitsAnySet {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\n$bitsAnySet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$box` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\nexport interface $box {\n\n/**\n * Specifies a rectangular box using legacy coordinate pairs for $geoWithin queries. The 2d index supports $box.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\n$box:unknown[]};\n\n\n/**\n * A type describing the `$center` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\nexport interface $center {\n\n/**\n * Specifies a circle using legacy coordinate pairs to $geoWithin queries when using planar geometry. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\n$center:unknown[]};\n\n\n/**\n * A type describing the `$centerSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\nexport interface $centerSphere {\n\n/**\n * Specifies a circle using either legacy coordinate pairs or GeoJSON format for $geoWithin queries when using spherical geometry. The 2dsphere and 2d indexes support $centerSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\n$centerSphere:unknown[]};\n\n\n/**\n * A type describing the `$elemMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\nexport interface $elemMatch {\n\n/**\n * The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\n$elemMatch:Query | FieldQuery};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\nexport interface $eq {\n\n/**\n * Matches values that are equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\n$eq:Expression};\n\n\n/**\n * A type describing the `$exists` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\nexport interface $exists {\n\n/**\n * Matches documents that have the specified field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\n$exists:boolean};\n\n\n/**\n * A type describing the `$expr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\nexport interface $expr {\n\n/**\n * Allows use of aggregation expressions within the query language.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\n$expr:Expression};\n\n\n/**\n * A type describing the `$geoIntersects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\nexport interface $geoIntersects {\n\n/**\n * Selects geometries that intersect with a GeoJSON geometry. The 2dsphere index supports $geoIntersects.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\n$geoIntersects:Geometry & {}};\n\n\n/**\n * A type describing the `$geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\nexport interface $geoWithin {\n\n/**\n * Selects geometries within a bounding GeoJSON geometry. The 2dsphere and 2d indexes support $geoWithin.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\n$geoWithin:Geometry & {}};\n\n\n/**\n * A type describing the `$geometry` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\nexport interface $geometry {\n\n/**\n * Specifies a geometry in GeoJSON format to geospatial query operators.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\n$geometry:{type: string,coordinates: unknown[],crs?: Record,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\nexport interface $gt {\n\n/**\n * Matches values that are greater than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\n$gt:any};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\nexport interface $gte {\n\n/**\n * Matches values that are greater than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\n$gte:any};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\nexport interface $in {\n\n/**\n * Matches any of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\n$in:unknown[]};\n\n\n/**\n * A type describing the `$jsonSchema` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\nexport interface $jsonSchema {\n\n/**\n * Validate documents against the given JSON Schema.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\n$jsonSchema:Record};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\nexport interface $lt {\n\n/**\n * Matches values that are less than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\n$lt:any};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\nexport interface $lte {\n\n/**\n * Matches values that are less than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\n$lte:any};\n\n\n/**\n * A type describing the `$maxDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\nexport interface $maxDistance {\n\n/**\n * Specifies a maximum distance to limit the results of $near and $nearSphere queries. The 2dsphere and 2d indexes support $maxDistance.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\n$maxDistance:Number};\n\n\n/**\n * A type describing the `$minDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\nexport interface $minDistance {\n\n/**\n * Specifies a minimum distance to limit the results of $near and $nearSphere queries. For use with 2dsphere index only.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\n$minDistance:Int | Double};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\nexport interface $mod {\n\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\n$mod:[divisor: Number,remainder: Number,]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\nexport interface $ne {\n\n/**\n * Matches all values that are not equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\n$ne:any};\n\n\n/**\n * A type describing the `$near` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\nexport interface $near {\n\n/**\n * Returns geospatial objects in proximity to a point. Requires a geospatial index. The 2dsphere and 2d indexes support $near.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\n$near:Geometry & {\n\n/**\n * Distance in meters. Limits the results to those documents that are at most the specified distance from the center point.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nearSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\nexport interface $nearSphere {\n\n/**\n * Returns geospatial objects in proximity to a point on a sphere. Requires a geospatial index. The 2dsphere and 2d indexes support $nearSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\n$nearSphere:Geometry & {\n\n/**\n * Distance in meters.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\nexport interface $nin {\n\n/**\n * Matches none of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\n$nin:unknown[]};\n\n\n/**\n * A type describing the `$nor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\nexport interface $nor {\n\n/**\n * Joins query clauses with a logical NOR returns all documents that fail to match both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\n$nor:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\nexport interface $not {\n\n/**\n * Inverts the effect of a query expression and returns documents that do not match the query expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\n$not:FieldQuery};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\nexport interface $or {\n\n/**\n * Joins query clauses with a logical OR returns all documents that match the conditions of either clause.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\n$or:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$polygon` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\nexport interface $polygon {\n\n/**\n * Specifies a polygon to using legacy coordinate pairs for $geoWithin queries. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\n$polygon:unknown[]};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\nexport interface $rand {\n\n/**\n * Generates a random float between 0 and 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$regex` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\nexport interface $regex {\n\n/**\n * Selects documents where values match a specified regular expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\n$regex:Regex};\n\n\n/**\n * A type describing the `$sampleRate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\nexport interface $sampleRate {\n\n/**\n * Randomly select documents at a given rate. Although the exact number of documents selected varies on each run, the quantity chosen approximates the sample rate expressed as a percentage of the total number of documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\n$sampleRate:ResolvesToDouble};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\nexport interface $size {\n\n/**\n * Selects documents if the array field is a specified size.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\n$size:Int};\n\n\n/**\n * A type describing the `$text` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\nexport interface $text {\n\n/**\n * Performs text search.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\n$text:{\n\n/**\n * A string of terms that MongoDB parses and uses to query the text index. MongoDB performs a logical OR search of the terms unless specified as a phrase.\n */\n$search: string,\n\n/**\n * The language that determines the list of stop words for the search and the rules for the stemmer and tokenizer. If not specified, the search uses the default language of the index.\n * If you specify a default_language value of none, then the text index parses through each word in the field, including stop words, and ignores suffix stemming.\n */\n$language?: string,\n\n/**\n * A boolean flag to enable or disable case sensitive search. Defaults to false; i.e. the search defers to the case insensitivity of the text index.\n */\n$caseSensitive?: boolean,\n\n/**\n * A boolean flag to enable or disable diacritic sensitive search against version 3 text indexes. Defaults to false; i.e. the search defers to the diacritic insensitivity of the text index.\n * Text searches against earlier versions of the text index are inherently diacritic sensitive and cannot be diacritic insensitive. As such, the $diacriticSensitive option has no effect with earlier versions of the text index.\n */\n$diacriticSensitive?: boolean,}};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\nexport interface $type {\n\n/**\n * Selects documents if a field is of the specified type.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\n$type:[...(Int | string)[],]};\n\n\n/**\n * A type describing the `$where` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\nexport interface $where {\n\n/**\n * Matches documents that satisfy a JavaScript expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\n$where:Javascript};\n};\nexport namespace Aggregation.Search {\n\n\n/**\n * A type describing the `autocomplete` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nexport interface Autocomplete {\n\n/**\n * The autocomplete operator performs a search for a word or phrase that\n * contains a sequence of characters from an incomplete input string. The\n * fields that you intend to query with the autocomplete operator must be\n * indexed with the autocomplete data type in the collection\'s index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nautocomplete:{path: SearchPath,query: string,tokenOrder?: string,fuzzy?: Record,score?: SearchScore,}};\n\n\n/**\n * A type describing the `compound` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\nexport interface Compound {\n\n/**\n * The compound operator combines two or more operators into a single query.\n * Each element of a compound query is called a clause, and each clause\n * consists of one or more sub-queries.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\ncompound:{must?: (SearchOperator) | (SearchOperator)[],mustNot?: (SearchOperator) | (SearchOperator)[],should?: (SearchOperator) | (SearchOperator)[],filter?: (SearchOperator) | (SearchOperator)[],minimumShouldMatch?: Int,score?: SearchScore,}};\n\n\n/**\n * A type describing the `embeddedDocument` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nexport interface EmbeddedDocument {\n\n/**\n * The embeddedDocument operator is similar to $elemMatch operator.\n * It constrains multiple query predicates to be satisfied from a single\n * element of an array of embedded documents. embeddedDocument can be used only\n * for queries over fields of the embeddedDocuments\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nembeddedDocument:{path: SearchPath,operator: SearchOperator,score?: SearchScore,}};\n\n\n/**\n * A type describing the `equals` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nexport interface Equals {\n\n/**\n * The equals operator checks whether a field matches a value you specify.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nequals:{path: SearchPath,value: bson.Binary | boolean | Date | bson.ObjectId | null | Number | string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `exists` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexport interface Exists {\n\n/**\n * The exists operator tests if a path to a specified indexed field name exists in a document.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexists:{path: SearchPath,score?: SearchScore,}};\n\n\n/**\n * A type describing the `facet` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nexport interface Facet {\n\n/**\n * The facet collector groups results by values or ranges in the specified\n * faceted fields and returns the count for each of those groups.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nfacet:{facets: Record,operator?: SearchOperator,}};\n\n\n/**\n * A type describing the `geoShape` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\nexport interface GeoShape {\n\n/**\n * The geoShape operator supports querying shapes with a relation to a given\n * geometry if indexShapes is set to true in the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\ngeoShape:{path: SearchPath,relation: string,geometry: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\nexport interface GeoWithin {\n\n/**\n * The geoWithin operator supports querying geographic points within a given\n * geometry. Only points are returned, even if indexShapes value is true in\n * the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\ngeoWithin:{path: SearchPath,box?: Record,circle?: Record,geometry?: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `in` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nexport interface In {\n\n/**\n * The in operator performs a search for an array of BSON values in a field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nin:{path: SearchPath,value: (any) | (any)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `moreLikeThis` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nexport interface MoreLikeThis {\n\n/**\n * The moreLikeThis operator returns documents similar to input documents.\n * The moreLikeThis operator allows you to build features for your applications\n * that display similar or alternative results based on one or more given documents.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nmoreLikeThis:{like: (Record) | (Record)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `near` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nexport interface Near {\n\n/**\n * The near operator supports querying and scoring numeric, date, and GeoJSON point values.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nnear:{path: SearchPath,origin: Date | Number | Geometry,pivot: Number,score?: SearchScore,}};\n\n\n/**\n * A type describing the `phrase` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nexport interface Phrase {\n\n/**\n * The phrase operator performs search for documents containing an ordered sequence of terms using the analyzer specified in the index configuration.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nphrase:{path: SearchPath,query: (string) | (string)[],slop?: Int,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `queryString` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/}\n */\nexport interface QueryString {queryString:{defaultPath: SearchPath,query: string,}};\n\n\n/**\n * A type describing the `range` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nexport interface Range {\n\n/**\n * The range operator supports querying and scoring numeric, date, and string values.\n * You can use this operator to find results that are within a given numeric, date, objectId, or letter (from the English alphabet) range.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nrange:{path: SearchPath,gt?: Date | Number | string | bson.ObjectId,gte?: Date | Number | string | bson.ObjectId,lt?: Date | Number | string | bson.ObjectId,lte?: Date | Number | string | bson.ObjectId,score?: SearchScore,}};\n\n\n/**\n * A type describing the `regex` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nexport interface Regex {\n\n/**\n * regex interprets the query field as a regular expression.\n * regex is a term-level operator, meaning that the query field isn\'t analyzed.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nregex:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n\n\n/**\n * A type describing the `text` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\nexport interface Text {\n\n/**\n * The text operator performs a full-text search using the analyzer that you specify in the index configuration.\n * If you omit an analyzer, the text operator uses the default standard analyzer.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\ntext:{path: SearchPath,query: string,fuzzy?: Record,matchCriteria?: string,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `wildcard` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nexport interface Wildcard {\n\n/**\n * The wildcard operator enables queries which use special characters in the search string that can match any character.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nwildcard:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n};\nexport namespace Aggregation.Stage {\n\n\n/**\n * A type describing the `$addFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\nexport interface $addFields {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\n$addFields:{\n\n/**\n * Specify the name of each field to add and set its value to an aggregation expression or an empty object.\n */\n} & { [expression: string]: Expression,}};\n\n\n/**\n * A type describing the `$bucket` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\nexport interface $bucket {\n\n/**\n * Categorizes incoming documents into groups, called buckets, based on a specified expression and bucket boundaries.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\n$bucket:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n * Unless $bucket includes a default specification, each input document must resolve the groupBy field path or expression to a value that falls within one of the ranges specified by the boundaries.\n */\ngroupBy: Expression,\n\n/**\n * An array of values based on the groupBy expression that specify the boundaries for each bucket. Each adjacent pair of values acts as the inclusive lower boundary and the exclusive upper boundary for the bucket. You must specify at least two boundaries.\n * The specified values must be in ascending order and all of the same type. The exception is if the values are of mixed numeric types, such as:\n */\nboundaries: unknown[],\n\n/**\n * A literal that specifies the _id of an additional bucket that contains all documents whose groupBy expression result does not fall into a bucket specified by boundaries.\n * If unspecified, each input document must resolve the groupBy expression to a value within one of the bucket ranges specified by boundaries or the operation throws an error.\n * The default value must be less than the lowest boundaries value, or greater than or equal to the highest boundaries value.\n * The default value can be of a different type than the entries in boundaries.\n */\ndefault?: Expression,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * If you do not specify an output document, the operation returns a count field containing the number of documents in each bucket.\n * If you specify an output document, only the fields specified in the document are returned; i.e. the count field is not returned unless it is explicitly included in the output document.\n */\noutput?: Record,}};\n\n\n/**\n * A type describing the `$bucketAuto` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\nexport interface $bucketAuto {\n\n/**\n * Categorizes incoming documents into a specific number of groups, called buckets, based on a specified expression. Bucket boundaries are automatically determined in an attempt to evenly distribute the documents into the specified number of buckets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\n$bucketAuto:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n */\ngroupBy: Expression,\n\n/**\n * A positive 32-bit integer that specifies the number of buckets into which input documents are grouped.\n */\nbuckets: Int,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * The default count field is not included in the output document when output is specified. Explicitly specify the count expression as part of the output document to include it.\n */\noutput?: Record,\n\n/**\n * A string that specifies the preferred number series to use to ensure that the calculated boundary edges end on preferred round numbers or their powers of 10.\n * Available only if the all groupBy values are numeric and none of them are NaN.\n */\ngranularity?: Granularity,}};\n\n\n/**\n * A type describing the `$changeStream` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\nexport interface $changeStream {\n\n/**\n * Returns a Change Stream cursor for the collection or database. This stage can only occur once in an aggregation pipeline and it must occur as the first stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\n$changeStream:{\n\n/**\n * A flag indicating whether the stream should report all changes that occur on the deployment, aside from those on internal databases or collections.\n */\nallChangesForCluster?: boolean,\n\n/**\n * Specifies whether change notifications include a copy of the full document when modified by update operations.\n */\nfullDocument?: FullDocument,\n\n/**\n * Valid values are "off", "whenAvailable", or "required". If set to "off", the "fullDocumentBeforeChange" field of the output document is always omitted. If set to "whenAvailable", the "fullDocumentBeforeChange" field will be populated with the pre-image of the document modified by the current change event if such a pre-image is available, and will be omitted otherwise. If set to "required", then the "fullDocumentBeforeChange" field is always populated and an exception is thrown if the pre-image is not available.\n */\nfullDocumentBeforeChange?: FullDocumentBeforeChange,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with startAfter or startAtOperationTime fields.\n */\nresumeAfter?: Int,\n\n/**\n * Specifies whether to include additional change events, such as such as DDL and index operations.\n * New in MongoDB 6.0.\n */\nshowExpandedEvents?: boolean,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with resumeAfter or startAtOperationTime fields.\n */\nstartAfter?: Record,\n\n/**\n * Specifies a time as the logical starting point for the change stream. Cannot be used with resumeAfter or startAfter fields.\n */\nstartAtOperationTime?: bson.Timestamp,}};\n\n\n/**\n * A type describing the `$changeStreamSplitLargeEvent` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\nexport interface $changeStreamSplitLargeEvent {\n\n/**\n * Splits large change stream events that exceed 16 MB into smaller fragments returned in a change stream cursor.\n * You can only use $changeStreamSplitLargeEvent in a $changeStream pipeline and it must be the final stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\n$changeStreamSplitLargeEvent:Record};\n\n\n/**\n * A type describing the `$collStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\nexport interface $collStats {\n\n/**\n * Returns statistics regarding a collection or view.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\n$collStats:{latencyStats?: Record,storageStats?: Record,count?: Record,queryExecStats?: Record,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\nexport interface $count {\n\n/**\n * Returns a count of the number of documents at this stage of the aggregation pipeline.\n * Distinct from the $count aggregation accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\n$count:string};\n\n\n/**\n * A type describing the `$currentOp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\nexport interface $currentOp {\n\n/**\n * Returns information on active and/or dormant operations for the MongoDB deployment. To run, use the db.aggregate() method.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\n$currentOp:{allUsers?: boolean,idleConnections?: boolean,idleCursors?: boolean,idleSessions?: boolean,localOps?: boolean,}};\n\n\n/**\n * A type describing the `$densify` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\nexport interface $densify {\n\n/**\n * Creates new documents in a sequence of documents where certain values in a field are missing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\n$densify:{\n\n/**\n * The field to densify. The values of the specified field must either be all numeric values or all dates.\n * Documents that do not contain the specified field continue through the pipeline unmodified.\n * To specify a in an embedded document or in an array, use dot notation.\n */\nfield: string,\n\n/**\n * The field(s) that will be used as the partition keys.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specification for range based densification.\n */\nrange: Range,}};\n\n\n/**\n * A type describing the `$documents` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\nexport interface $documents {\n\n/**\n * Returns literal documents from input values.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\n$documents:ResolvesToArray};\n\n\n/**\n * A type describing the `$facet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\nexport interface $facet {\n\n/**\n * Processes multiple aggregation pipelines within a single stage on the same set of input documents. Enables the creation of multi-faceted aggregations capable of characterizing data across multiple dimensions, or facets, in a single stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\n$facet:{} & { [facet: string]: Pipeline,}};\n\n\n/**\n * A type describing the `$fill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\nexport interface $fill {\n\n/**\n * Populates null and missing field values within documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\n$fill:{\n\n/**\n * Specifies an expression to group the documents. In the $fill stage, a group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionBy?: Record | string,\n\n/**\n * Specifies an array of fields as the compound key to group the documents. In the $fill stage, each group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specifies the field or fields to sort the documents within each partition. Uses the same syntax as the $sort stage.\n */\nsortBy?: SortBy,\n\n/**\n * Specifies an object containing each field for which to fill missing values. You can specify multiple fields in the output object.\n * The object name is the name of the field to fill. The object value specifies how the field is filled.\n */\noutput: Record,}};\n\n\n/**\n * A type describing the `$geoNear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\nexport interface $geoNear {\n\n/**\n * Returns an ordered stream of documents based on the proximity to a geospatial point. Incorporates the functionality of $match, $sort, and $limit for geospatial data. The output documents include an additional distance field and can include a location identifier field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\n$geoNear:{\n\n/**\n * The output field that contains the calculated distance. To specify a field within an embedded document, use dot notation.\n */\ndistanceField?: string,\n\n/**\n * The factor to multiply all distances returned by the query. For example, use the distanceMultiplier to convert radians, as returned by a spherical query, to kilometers by multiplying by the radius of the Earth.\n */\ndistanceMultiplier?: Number,\n\n/**\n * This specifies the output field that identifies the location used to calculate the distance. This option is useful when a location field contains multiple locations. To specify a field within an embedded document, use dot notation.\n */\nincludeLocs?: string,\n\n/**\n * Specify the geospatial indexed field to use when calculating the distance.\n */\nkey?: string,\n\n/**\n * The maximum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall within the specified distance from the center point.\n * Specify the distance in meters if the specified point is GeoJSON and in radians if the specified point is legacy coordinate pairs.\n */\nmaxDistance?: Number,\n\n/**\n * The minimum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall outside the specified distance from the center point.\n * Specify the distance in meters for GeoJSON data and in radians for legacy coordinate pairs.\n */\nminDistance?: Number,\n\n/**\n * The point for which to find the closest documents.\n */\nnear: GeoPoint | ResolvesToObject,\n\n/**\n * Limits the results to the documents that match the query. The query syntax is the usual MongoDB read operation query syntax.\n * You cannot specify a $near predicate in the query field of the $geoNear stage.\n */\nquery?: Query,\n\n/**\n * Determines how MongoDB calculates the distance between two points:\n * - When true, MongoDB uses $nearSphere semantics and calculates distances using spherical geometry.\n * - When false, MongoDB uses $near semantics: spherical geometry for 2dsphere indexes and planar geometry for 2d indexes.\n * Default: false.\n */\nspherical?: boolean,}};\n\n\n/**\n * A type describing the `$graphLookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\nexport interface $graphLookup {\n\n/**\n * Performs a recursive search on a collection. To each output document, adds a new array field that contains the traversal results of the recursive search for that document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\n$graphLookup:{\n\n/**\n * Target collection for the $graphLookup operation to search, recursively matching the connectFromField to the connectToField. The from collection must be in the same database as any other collections used in the operation.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom: string,\n\n/**\n * Expression that specifies the value of the connectFromField with which to start the recursive search. Optionally, startWith may be array of values, each of which is individually followed through the traversal process.\n */\nstartWith: (Expression) | (Expression)[],\n\n/**\n * Field name whose value $graphLookup uses to recursively match against the connectToField of other documents in the collection. If the value is an array, each element is individually followed through the traversal process.\n */\nconnectFromField: string,\n\n/**\n * Field name in other documents against which to match the value of the field specified by the connectFromField parameter.\n */\nconnectToField: string,\n\n/**\n * Name of the array field added to each output document. Contains the documents traversed in the $graphLookup stage to reach the document.\n */\nas: string,\n\n/**\n * Non-negative integral number specifying the maximum recursion depth.\n */\nmaxDepth?: Int,\n\n/**\n * Name of the field to add to each traversed document in the search path. The value of this field is the recursion depth for the document, represented as a NumberLong. Recursion depth value starts at zero, so the first lookup corresponds to zero depth.\n */\ndepthField?: string,\n\n/**\n * A document specifying additional conditions for the recursive search. The syntax is identical to query filter syntax.\n */\nrestrictSearchWithMatch?: Query,}};\n\n\n/**\n * A type describing the `$group` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\nexport interface $group {\n\n/**\n * Groups input documents by a specified identifier expression and applies the accumulator expression(s), if specified, to each group. Consumes all input documents and outputs one document per each distinct group. The output documents only contain the identifier field and, if specified, accumulated fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\n$group:RecordWithStaticFields<{\n\n/**\n * The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents.\n */\n_id: Expression | ExpressionMap,}, \n\n/**\n * Computed using the accumulator operators.\n */\n Accumulator>};\n\n\n/**\n * A type describing the `$indexStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\nexport interface $indexStats {\n\n/**\n * Returns statistics regarding the use of each index for the collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\n$indexStats:Record};\n\n\n/**\n * A type describing the `$limit` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\nexport interface $limit {\n\n/**\n * Passes the first n documents unmodified to the pipeline where n is the specified limit. For each input document, outputs either one document (for the first n documents) or zero documents (after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\n$limit:Int};\n\n\n/**\n * A type describing the `$listLocalSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\nexport interface $listLocalSessions {\n\n/**\n * Lists all active sessions recently in use on the currently connected mongos or mongod instance. These sessions may have not yet propagated to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\n$listLocalSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$listSampledQueries` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\nexport interface $listSampledQueries {\n\n/**\n * Lists sampled queries for all collections or a specific collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\n$listSampledQueries:{namespace?: string,}};\n\n\n/**\n * A type describing the `$listSearchIndexes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\nexport interface $listSearchIndexes {\n\n/**\n * Returns information about existing Atlas Search indexes on a specified collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\n$listSearchIndexes:{\n\n/**\n * The id of the index to return information about.\n */\nid?: string,\n\n/**\n * The name of the index to return information about.\n */\nname?: string,}};\n\n\n/**\n * A type describing the `$listSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\nexport interface $listSessions {\n\n/**\n * Lists all sessions that have been active long enough to propagate to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\n$listSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$lookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\nexport interface $lookup {\n\n/**\n * Performs a left outer join to another collection in the same database to filter in documents from the "joined" collection for processing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\n$lookup:{\n\n/**\n * Specifies the collection in the same database to perform the join with.\n * from is optional, you can use a $documents stage in a $lookup stage instead. For an example, see Use a $documents Stage in a $lookup Stage.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom?: string,\n\n/**\n * Specifies the field from the documents input to the $lookup stage. $lookup performs an equality match on the localField to the foreignField from the documents of the from collection. If an input document does not contain the localField, the $lookup treats the field as having a value of null for matching purposes.\n */\nlocalField?: string,\n\n/**\n * Specifies the field from the documents in the from collection. $lookup performs an equality match on the foreignField to the localField from the input documents. If a document in the from collection does not contain the foreignField, the $lookup treats the value as null for matching purposes.\n */\nforeignField?: string,\n\n/**\n * Specifies variables to use in the pipeline stages. Use the variable expressions to access the fields from the joined collection\'s documents that are input to the pipeline.\n */\nlet?: Record,\n\n/**\n * Specifies the pipeline to run on the joined collection. The pipeline determines the resulting documents from the joined collection. To return all documents, specify an empty pipeline [].\n * The pipeline cannot include the $out stage or the $merge stage. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n * The pipeline cannot directly access the joined document fields. Instead, define variables for the joined document fields using the let option and then reference the variables in the pipeline stages.\n */\npipeline?: UntypedPipeline,\n\n/**\n * Specifies the name of the new array field to add to the input documents. The new array field contains the matching documents from the from collection. If the specified name already exists in the input document, the existing field is overwritten.\n */\nas: string,}};\n\n\n/**\n * A type describing the `$match` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\nexport interface $match {\n\n/**\n * Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. $match uses standard MongoDB queries. For each input document, outputs either one document (a match) or zero documents (no match).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\n$match:Query};\n\n\n/**\n * A type describing the `$merge` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\nexport interface $merge {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. The stage can incorporate (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) the results into an output collection. To use the $merge stage, it must be the last stage in the pipeline.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\n$merge:{\n\n/**\n * The output collection.\n */\ninto: string | OutCollection,\n\n/**\n * Field or fields that act as a unique identifier for a document. The identifier determines if a results document matches an existing document in the output collection.\n */\non?: (string) | (string)[],\n\n/**\n * Specifies variables for use in the whenMatched pipeline.\n */\nlet?: Record,\n\n/**\n * The behavior of $merge if a result document and an existing document in the collection have the same value for the specified on field(s).\n */\nwhenMatched?: WhenMatched | UntypedPipeline,\n\n/**\n * The behavior of $merge if a result document does not match an existing document in the out collection.\n */\nwhenNotMatched?: WhenNotMatched,}};\n\n\n/**\n * A type describing the `$out` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\nexport interface $out {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. To use the $out stage, it must be the last stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\n$out:string | OutCollection};\n\n\n/**\n * A type describing the `$planCacheStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\nexport interface $planCacheStats {\n\n/**\n * Returns plan cache information for a collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\n$planCacheStats:Record};\n\n\n/**\n * A type describing the `$project` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\nexport interface $project {\n\n/**\n * Reshapes each document in the stream, such as by adding new fields or removing existing fields. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\n$project:{} & { [specification: string]: Expression | ExpressionMap,}};\n\n\n/**\n * A type describing the `$redact` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\nexport interface $redact {\n\n/**\n * Reshapes each document in the stream by restricting the content for each document based on information stored in the documents themselves. Incorporates the functionality of $project and $match. Can be used to implement field level redaction. For each input document, outputs either one or zero documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\n$redact:Expression};\n\n\n/**\n * A type describing the `$replaceRoot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\nexport interface $replaceRoot {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\n$replaceRoot:{newRoot: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$replaceWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\nexport interface $replaceWith {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * Alias for $replaceRoot.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\n$replaceWith:ResolvesToObject};\n\n\n/**\n * A type describing the `$sample` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\nexport interface $sample {\n\n/**\n * Randomly selects the specified number of documents from its input.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\n$sample:{\n\n/**\n * The number of documents to randomly select.\n */\nsize: Int,}};\n\n\n/**\n * A type describing the `$search` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\nexport interface $search {\n\n/**\n * Performs a full-text search of the field or fields in an Atlas collection.\n * NOTE: $search is only available for MongoDB Atlas clusters, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\n$search:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to "default".\n */\nindex?: string,\n\n/**\n * Specifies the highlighting options for displaying search terms in their original context.\n */\nhighlight?: SearchHighlight,\n\n/**\n * Parallelize search across segments on dedicated search nodes.\n * If you don\'t have separate search nodes on your cluster,\n * Atlas Search ignores this flag. If omitted, defaults to false.\n */\nconcurrent?: boolean,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,\n\n/**\n * Reference point for retrieving results. searchAfter returns documents starting immediately following the specified reference point.\n */\nsearchAfter?: string,\n\n/**\n * Reference point for retrieving results. searchBefore returns documents starting immediately before the specified reference point.\n */\nsearchBefore?: string,\n\n/**\n * Flag that specifies whether to retrieve a detailed breakdown of the score for the documents in the results. If omitted, defaults to false.\n */\nscoreDetails?: boolean,\n\n/**\n * Document that specifies the fields to sort the Atlas Search results by in ascending or descending order.\n */\nsort?: Record,\n\n/**\n * Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from Atlas Search.\n */\nreturnStoredSource?: boolean,\n\n/**\n * Document that specifies the tracking option to retrieve analytics information on the search terms.\n */\ntracking?: Record,}};\n\n\n/**\n * A type describing the `$searchMeta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\nexport interface $searchMeta {\n\n/**\n * Returns different types of metadata result documents for the Atlas Search query against an Atlas collection.\n * NOTE: $searchMeta is only available for MongoDB Atlas clusters running MongoDB v4.4.9 or higher, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\n$searchMeta:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to default.\n */\nindex?: string,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,}};\n\n\n/**\n * A type describing the `$set` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\nexport interface $set {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * Alias for $addFields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\n$set:{} & { [field: string]: Expression,}};\n\n\n/**\n * A type describing the `$setWindowFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\nexport interface $setWindowFields {\n\n/**\n * Groups documents into windows and applies one or more operators to the documents in each window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\n$setWindowFields:{\n\n/**\n * Specifies the field(s) to sort the documents by in the partition. Uses the same syntax as the $sort stage. Default is no sorting.\n */\nsortBy: SortBy,\n\n/**\n * Specifies the field(s) to append to the documents in the output returned by the $setWindowFields stage. Each field is set to the result returned by the window operator.\n * A field can contain dots to specify embedded document fields and array fields. The semantics for the embedded document dotted notation in the $setWindowFields stage are the same as the $addFields and $set stages.\n */\noutput: Record,\n\n/**\n * Specifies an expression to group the documents. In the $setWindowFields stage, the group of documents is known as a partition. Default is one partition for the entire collection.\n */\npartitionBy?: Expression,}};\n\n\n/**\n * A type describing the `$shardedDataDistribution` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\nexport interface $shardedDataDistribution {\n\n/**\n * Provides data and size distribution information on sharded collections.\n * New in MongoDB 6.0.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\n$shardedDataDistribution:Record};\n\n\n/**\n * A type describing the `$skip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\nexport interface $skip {\n\n/**\n * Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. For each input document, outputs either zero documents (for the first n documents) or one document (if after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\n$skip:Int};\n\n\n/**\n * A type describing the `$sort` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\nexport interface $sort {\n\n/**\n * Reorders the document stream by a specified sort key. Only the order changes; the documents remain unmodified. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\n$sort:{} & { [sort: string]: Expression | SortSpec,}};\n\n\n/**\n * A type describing the `$sortByCount` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\nexport interface $sortByCount {\n\n/**\n * Groups incoming documents based on the value of a specified expression, then computes the count of documents in each distinct group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\n$sortByCount:Expression};\n\n\n/**\n * A type describing the `$unionWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\nexport interface $unionWith {\n\n/**\n * Performs a union of two collections; i.e. combines pipeline results from two collections into a single result set.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\n$unionWith:{\n\n/**\n * The collection or view whose pipeline results you wish to include in the result set.\n */\ncoll: string,\n\n/**\n * An aggregation pipeline to apply to the specified coll.\n * The pipeline cannot include the $out and $merge stages. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n */\npipeline?: UntypedPipeline,}};\n\n\n/**\n * A type describing the `$unset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\nexport interface $unset {\n\n/**\n * Removes or excludes fields from documents.\n * Alias for $project stage that removes or excludes fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\n$unset:[...(UnprefixedFieldPath)[],]};\n\n\n/**\n * A type describing the `$unwind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\nexport interface $unwind {\n\n/**\n * Deconstructs an array field from the input documents to output a document for each element. Each output document replaces the array with an element value. For each input document, outputs n documents where n is the number of array elements and can be zero for an empty array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\n$unwind:{\n\n/**\n * Field path to an array field.\n */\npath: ArrayFieldPath,\n\n/**\n * The name of a new field to hold the array index of the element. The name cannot start with a dollar sign $.\n */\nincludeArrayIndex?: string,\n\n/**\n * If true, if the path is null, missing, or an empty array, $unwind outputs the document.\n * If false, if path is null, missing, or an empty array, $unwind does not output a document.\n * The default value is false.\n */\npreserveNullAndEmptyArrays?: boolean,}};\n\n\n/**\n * A type describing the `$vectorSearch` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\nexport interface $vectorSearch {\n\n/**\n * The $vectorSearch stage performs an ANN or ENN search on a vector in the specified field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\n$vectorSearch:{\n\n/**\n * Name of the Atlas Vector Search index to use.\n */\nindex: string,\n\n/**\n * Number of documents to return in the results. This value can\'t exceed the value of numCandidates if you specify numCandidates.\n */\nlimit: Int,\n\n/**\n * Indexed vector type field to search.\n */\npath: string,\n\n/**\n * Array of numbers that represent the query vector. The number type must match the indexed field value type.\n */\nqueryVector: unknown[],\n\n/**\n * This is required if numCandidates is omitted. false to run ANN search. true to run ENN search.\n */\nexact?: boolean,\n\n/**\n * Any match query that compares an indexed field with a boolean, date, objectId, number (not decimals), string, or UUID to use as a pre-filter.\n */\nfilter?: Query,\n\n/**\n * This field is required if exact is false or omitted.\n * Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can\'t specify a number less than the number of documents to return (limit).\n */\nnumCandidates?: Int,}};\n};\n\nexport type Int = number|bson.Int32|{ $numberInt: string };\nexport type Double = number|bson.Double|{ $numberDouble: string };\nexport type Decimal = bson.Decimal128|{ $numberDecimal: string };\nexport type Regex = RegExp|bson.BSONRegExp|{ pattern: string, options?: string };\nexport type Long = bigint|bson.Long|{ $numberLong: string };\nexport type Javascript = bson.Code|Function|string;\nexport type Geometry = {type: "Point", coordinates: number[] }|{type:"MultiPoint", coordinates: number[][] }|{type:"LineString", coordinates: number[][] }|{type:"MultiLineString", coordinates: number[][][] }|{type:"Polygon", coordinates: number[][][] }|{type:"MultiPolygon", coordinates: number[][][][] }|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$geometry|Aggregation.Query.$polygon;\nexport type Number = Int|Long|Double|Decimal;\nexport type BsonPrimitive = Number|bson.Binary|bson.ObjectId|string|boolean|Date|null|Regex|Javascript|bson.Timestamp;\nexport type SearchPath = UnprefixedFieldPath|UnprefixedFieldPath[]|{ wildcard: string };\nexport type SearchScore = unknown;\nexport type Granularity = string;\nexport type FullDocument = string;\nexport type FullDocumentBeforeChange = string;\nexport type AccumulatorPercentile = string;\nexport type Range = unknown;\nexport type SortBy = unknown;\nexport type GeoPoint = unknown;\nexport type SortSpec = -1|1;\nexport type TimeUnit = "year"|"quarter"|"month"|"week"|"day"|"hour"|"minute"|"second"|"millisecond";\nexport type OutCollection = unknown;\nexport type WhenMatched = string;\nexport type WhenNotMatched = string;\nexport type Expression = ExpressionOperator|FieldPath|BsonPrimitive|FieldExpression|FieldPath[];\nexport type ExpressionMap = { [k: string]: Expression | ExpressionMap };\nexport type Stage = StageOperator|Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;\nexport type Pipeline = Stage[];\nexport type UntypedPipeline = Pipeline;\nexport type Query = QueryOperator|Partial<{ [k in keyof S]: Condition }>|Aggregation.Query.$and|Aggregation.Query.$expr|Aggregation.Query.$jsonSchema|Aggregation.Query.$nor|Aggregation.Query.$or|Aggregation.Query.$sampleRate|Aggregation.Query.$text|Aggregation.Query.$where;\nexport type Accumulator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type SearchHighlight = {\n path:\n | UnprefixedFieldPath\n | UnprefixedFieldPath[]\n | { wildcard: string }\n | \'*\'\n | MultiAnalyzerSpec\n | (UnprefixedFieldPath | MultiAnalyzerSpec)[];\n\n maxCharsToExamine?: number;\n maxNumPassages?: number;\n };\nexport type FieldPath = `$${AFieldPath}`;\nexport type UnprefixedFieldPath = AFieldPath;\nexport type NumberFieldPath = `$${AFieldPath}`;\nexport type DoubleFieldPath = `$${AFieldPath}`;\nexport type StringFieldPath = `$${AFieldPath}`;\nexport type ObjectFieldPath = `$${AFieldPath>}`;\nexport type ArrayFieldPath = `$${AFieldPath}`;\nexport type BinDataFieldPath = `$${AFieldPath}`;\nexport type ObjectIdFieldPath = `$${AFieldPath}`;\nexport type BoolFieldPath = `$${AFieldPath}`;\nexport type DateFieldPath = `$${AFieldPath}`;\nexport type NullFieldPath = `$${AFieldPath}`;\nexport type RegexFieldPath = `$${AFieldPath}`;\nexport type JavascriptFieldPath = `$${AFieldPath}`;\nexport type IntFieldPath = `$${AFieldPath}`;\nexport type TimestampFieldPath = `$${AFieldPath}`;\nexport type LongFieldPath = `$${AFieldPath}`;\nexport type DecimalFieldPath = `$${AFieldPath}`;\nexport type ResolvesToNumber = ResolvesToAny|NumberFieldPath|Number|ResolvesToInt|ResolvesToDouble|ResolvesToLong|ResolvesToDecimal|Aggregation.Expression.$abs|Aggregation.Expression.$avg|Aggregation.Expression.$pow|Aggregation.Expression.$sum;\nexport type ResolvesToDouble = ResolvesToAny|DoubleFieldPath|Double|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$exp|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$median|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDouble|Aggregation.Query.$rand;\nexport type ResolvesToString = ResolvesToAny|StringFieldPath|string|Aggregation.Expression.$concat|Aggregation.Expression.$dateToString|Aggregation.Expression.$ltrim|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$rtrim|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$toLower|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$type;\nexport type ResolvesToObject = \'$$ROOT\'|ResolvesToAny|ObjectFieldPath|Record|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$dateToParts|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$regexFind|Aggregation.Expression.$setField|Aggregation.Expression.$unsetField;\nexport type ResolvesToArray = ResolvesToAny|ArrayFieldPath|unknown[]|Aggregation.Expression.$concatArrays|Aggregation.Expression.$filter|Aggregation.Expression.$firstN|Aggregation.Expression.$lastN|Aggregation.Expression.$map|Aggregation.Expression.$maxN|Aggregation.Expression.$minN|Aggregation.Expression.$objectToArray|Aggregation.Expression.$percentile|Aggregation.Expression.$range|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$reverseArray|Aggregation.Expression.$setDifference|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setUnion|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$zip;\nexport type ResolvesToBinData = ResolvesToAny|BinDataFieldPath|bson.Binary;\nexport type ResolvesToObjectId = ResolvesToAny|ObjectIdFieldPath|bson.ObjectId|Aggregation.Expression.$toObjectId;\nexport type ResolvesToBool = ResolvesToAny|BoolFieldPath|boolean|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$eq|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$in|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$or|Aggregation.Expression.$regexMatch|Aggregation.Expression.$setEquals|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$toBool;\nexport type ResolvesToDate = \'$$NOW\'|ResolvesToAny|DateFieldPath|Date|Aggregation.Expression.$add|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$subtract|Aggregation.Expression.$toDate;\nexport type ResolvesToNull = ResolvesToAny|NullFieldPath|null;\nexport type ResolvesToRegex = ResolvesToAny|RegexFieldPath|Regex;\nexport type ResolvesToJavascript = ResolvesToAny|JavascriptFieldPath|Javascript;\nexport type ResolvesToInt = ResolvesToAny|IntFieldPath|Int|Aggregation.Expression.$add|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$floor|Aggregation.Expression.$hour|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$millisecond|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$round|Aggregation.Expression.$second|Aggregation.Expression.$size|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$subtract|Aggregation.Expression.$toInt|Aggregation.Expression.$week|Aggregation.Expression.$year;\nexport type ResolvesToTimestamp = ResolvesToAny|TimestampFieldPath|bson.Timestamp|\'$clusterTime\';\nexport type ResolvesToLong = ResolvesToAny|LongFieldPath|Long|Aggregation.Expression.$add|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$round|Aggregation.Expression.$subtract|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toLong|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond;\nexport type ResolvesToDecimal = ResolvesToAny|DecimalFieldPath|Decimal|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$multiply|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDecimal;\nexport type AccumulatorOperator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type Window = Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum;\nexport type ExpressionOperator = Aggregation.Expression.$abs|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$avg|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$case|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$concat|Aggregation.Expression.$concatArrays|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateToParts|Aggregation.Expression.$dateToString|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$eq|Aggregation.Expression.$exp|Aggregation.Expression.$filter|Aggregation.Expression.$first|Aggregation.Expression.$firstN|Aggregation.Expression.$floor|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$hour|Aggregation.Expression.$ifNull|Aggregation.Expression.$in|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$last|Aggregation.Expression.$lastN|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ltrim|Aggregation.Expression.$map|Aggregation.Expression.$max|Aggregation.Expression.$maxN|Aggregation.Expression.$median|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$meta|Aggregation.Expression.$millisecond|Aggregation.Expression.$min|Aggregation.Expression.$minN|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$multiply|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$objectToArray|Aggregation.Expression.$or|Aggregation.Expression.$percentile|Aggregation.Expression.$pow|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$range|Aggregation.Expression.$reduce|Aggregation.Expression.$regexFind|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$regexMatch|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$reverseArray|Aggregation.Expression.$round|Aggregation.Expression.$rtrim|Aggregation.Expression.$second|Aggregation.Expression.$setDifference|Aggregation.Expression.$setEquals|Aggregation.Expression.$setField|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$setUnion|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$size|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$subtract|Aggregation.Expression.$sum|Aggregation.Expression.$switch|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toBool|Aggregation.Expression.$toDate|Aggregation.Expression.$toDecimal|Aggregation.Expression.$toDouble|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toInt|Aggregation.Expression.$toLong|Aggregation.Expression.$toLower|Aggregation.Expression.$toObjectId|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond|Aggregation.Expression.$type|Aggregation.Expression.$unsetField|Aggregation.Expression.$week|Aggregation.Expression.$year|Aggregation.Expression.$zip;\nexport type ResolvesToAny = Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$first|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$ifNull|Aggregation.Expression.$last|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$max|Aggregation.Expression.$meta|Aggregation.Expression.$min|Aggregation.Expression.$reduce|Aggregation.Expression.$switch;\nexport type SwitchBranch = Aggregation.Expression.$case;\nexport type FieldQuery = Aggregation.Query.$all|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$not|Aggregation.Query.$regex|Aggregation.Query.$size|Aggregation.Query.$type;\nexport type QueryOperator = Aggregation.Query.$all|Aggregation.Query.$and|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$expr|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$geometry|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$jsonSchema|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$nor|Aggregation.Query.$not|Aggregation.Query.$or|Aggregation.Query.$polygon|Aggregation.Query.$rand|Aggregation.Query.$regex|Aggregation.Query.$sampleRate|Aggregation.Query.$size|Aggregation.Query.$text|Aggregation.Query.$type|Aggregation.Query.$where;\nexport type SearchOperator = Aggregation.Search.Autocomplete|Aggregation.Search.Compound|Aggregation.Search.EmbeddedDocument|Aggregation.Search.Equals|Aggregation.Search.Exists|Aggregation.Search.Facet|Aggregation.Search.GeoShape|Aggregation.Search.GeoWithin|Aggregation.Search.In|Aggregation.Search.MoreLikeThis|Aggregation.Search.Near|Aggregation.Search.Phrase|Aggregation.Search.QueryString|Aggregation.Search.Range|Aggregation.Search.Regex|Aggregation.Search.Text|Aggregation.Search.Wildcard;\nexport type StageOperator = Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;'; diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 94350d5f..6b727628 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -11,7 +11,7 @@ type AlternativeType = T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; type RegExpOrString = T extends string ? Regex | T : T; type KeysOfAType = { - [k in keyof T]: NonNullable extends Type ? k : never; + [k in keyof T]: Extract extends never ? never : k; }[keyof T]; type RecordWithStaticFields, TValue> = T & { [key: string]: TValue | T[keyof T]; @@ -4944,7 +4944,7 @@ export namespace Aggregation.Stage { * The pipeline cannot include the $out stage or the $merge stage. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline. * The pipeline cannot directly access the joined document fields. Instead, define variables for the joined document fields using the let option and then reference the variables in the pipeline stages. */ - pipeline?: Pipeline; + pipeline?: UntypedPipeline; /** * Specifies the name of the new array field to add to the input documents. The new array field contains the matching documents from the from collection. If the specified name already exists in the input document, the existing field is overwritten. @@ -4994,7 +4994,7 @@ export namespace Aggregation.Stage { /** * The behavior of $merge if a result document and an existing document in the collection have the same value for the specified on field(s). */ - whenMatched?: WhenMatched | Pipeline; + whenMatched?: WhenMatched | UntypedPipeline; /** * The behavior of $merge if a result document does not match an existing document in the out collection. @@ -5036,7 +5036,9 @@ export namespace Aggregation.Stage { * Reshapes each document in the stream, such as by adding new fields or removing existing fields. For each input document, outputs one document. * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/} */ - $project: {} & { [specification: string]: Expression }; + $project: {} & { + [specification: string]: Expression | ExpressionMap; + }; } /** @@ -5292,7 +5294,7 @@ export namespace Aggregation.Stage { * An aggregation pipeline to apply to the specified coll. * The pipeline cannot include the $out and $merge stages. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline. */ - pipeline?: Pipeline; + pipeline?: UntypedPipeline; }; } @@ -5452,7 +5454,9 @@ export type Expression = | BsonPrimitive | FieldExpression | FieldPath[]; -export type ExpressionMap = { [k: string]: Expression }; +export type ExpressionMap = { + [k: string]: Expression | ExpressionMap; +}; export type Stage = | StageOperator | Aggregation.Stage.$addFields @@ -5499,6 +5503,7 @@ export type Stage = | Aggregation.Stage.$unwind | Aggregation.Stage.$vectorSearch; export type Pipeline = Stage[]; +export type UntypedPipeline = Pipeline; export type Query = | QueryOperator | Partial<{ [k in keyof S]: Condition }> diff --git a/packages/mql-typescript/src/driverSchema/static-schemas.ts b/packages/mql-typescript/src/driverSchema/static-schemas.ts index c9ff3f73..e2a26163 100644 --- a/packages/mql-typescript/src/driverSchema/static-schemas.ts +++ b/packages/mql-typescript/src/driverSchema/static-schemas.ts @@ -1619,6 +1619,9 @@ const staticSchemas: SchemaMap = { searchMeta: mflixMoviesSchema, shardedDataDistribution: dummySchema, skip: dummySchema, + vectorSearch: { + 'ANN Filter': mflixMoviesSchema, + }, }, }; diff --git a/packages/mql-typescript/src/metaschema.ts b/packages/mql-typescript/src/metaschema.ts index cfb85a4b..d8b44d46 100644 --- a/packages/mql-typescript/src/metaschema.ts +++ b/packages/mql-typescript/src/metaschema.ts @@ -48,6 +48,7 @@ export const Operator = z 'query', 'fieldQuery', 'pipeline', + 'untypedPipeline', 'window', 'expression', 'expressionMap', diff --git a/packages/mql-typescript/src/schema-generator.ts b/packages/mql-typescript/src/schema-generator.ts index eb00cddb..6a501c86 100644 --- a/packages/mql-typescript/src/schema-generator.ts +++ b/packages/mql-typescript/src/schema-generator.ts @@ -119,9 +119,12 @@ export class SchemaGenerator extends GeneratorBase { 'FieldExpression', 'FieldPath[]', ], - expressionMap_S: [`{ [k: string]: ${this.toTypeName('Expression')} }`], + expressionMap_S: [ + `{ [k: string]: ${this.toTypeName('Expression')} | ${this.toTypeName('ExpressionMap')} }`, + ], stage_S: [this.toTypeName('StageOperator')], pipeline_S: [this.toTypeName('stage[]')], + untypedPipeline: [this.toTypeName('Pipeline')], query_S: [ this.toTypeName('QueryOperator'), 'Partial<{ [k in keyof S]: Condition }>', @@ -266,8 +269,8 @@ export class SchemaGenerator extends GeneratorBase { T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString; type RegExpOrString = T extends string ? Regex | T : T; type KeysOfAType = { - [k in keyof T]: NonNullable extends Type ? k : never; - }[keyof T]; + [k in keyof T]: Extract extends never ? never : k; + }[keyof T] type RecordWithStaticFields, TValue> = T & { [key: string]: TValue | T[keyof T]; }; @@ -293,6 +296,7 @@ export class SchemaGenerator extends GeneratorBase { if (this.typeMappings[`${type}_S`]) { let genericArg = 'S'; + if (syntheticVariables) { // If we have synthetic variables for this argument, we need to construct a temporary type and merge it with S const syntheticFields = syntheticVariables diff --git a/packages/mql-typescript/src/testGenerator/test-generator.ts b/packages/mql-typescript/src/testGenerator/test-generator.ts index 55325a11..3090fba9 100644 --- a/packages/mql-typescript/src/testGenerator/test-generator.ts +++ b/packages/mql-typescript/src/testGenerator/test-generator.ts @@ -183,16 +183,6 @@ export class TestGenerator extends GeneratorBase { protected override async generateImpl(yamlFiles: YamlFiles): Promise { for await (const file of yamlFiles) { - if ( - file.category !== 'query' && - file.category !== 'expression' && - file.category !== 'accumulator' && - file.category !== 'search' - ) { - // TODO: enable for others - continue; - } - const namespace = `${capitalize(file.category)}Operators`; const basePath = path.resolve( diff --git a/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts b/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts index 8ed37959..c89f0378 100644 --- a/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts +++ b/packages/mql-typescript/src/testGenerator/unsupported-aggregations.ts @@ -179,4 +179,90 @@ export const unsupportedAggregations: { }, }, }, + stage: { + addFields: { + 'Using Two $addFields Stages': { + stage: 1, + }, + }, + bucket: { + 'Bucket by Year and Filter by Bucket Results': { + stage: 1, + comment: + 'the output field of the $bucket stage generates new fields that are not available statically', + }, + }, + currentOp: { + 'Inactive Sessions': { + stage: 1, + comment: + '$currentOp emits new fields that are not available statically', + }, + 'Sampled Queries': { + stage: 1, + comment: + '$currentOp emits new fields that are not available statically', + }, + }, + group: { + 'Group by Item Having': { + stage: 1, + }, + 'Group Documents by author': { + stage: 1, + }, + }, + planCacheStats: { + 'Find Cache Entry Details for a Query Hash': { + stage: 1, + comment: + '$planCacheStats emits new fields that are not available statically', + }, + }, + replaceRoot: { + 'with a Document Nested in an Array': { + stage: 1, + comment: nestedFieldsExplanation, + }, + }, + replaceWith: { + 'a Document Nested in an Array': { + stage: 1, + comment: nestedFieldsExplanation, + }, + }, + search: { + Example: { + stage: 3, + comment: + '$search emits new fields that are not available statically, such as $$SEARCH_META', + }, + 'Number Search and Sort': { + stage: 0, + comment: nestedFieldsExplanation, + }, + 'Return Stored Source Fields': { + stage: 1, + comment: nestedFieldsExplanation, + }, + }, + set: { + 'Using Two $set Stages': { + stage: 1, + comment: 'second $set stage references fields created in the first', + }, + }, + unset: { + 'Remove Embedded Fields': { + stage: 0, + comment: nestedFieldsExplanation, + }, + }, + unwind: { + 'Unwind Embedded Arrays': { + stage: 1, + comment: nestedFieldsExplanation, + }, + }, + }, }; diff --git a/packages/mql-typescript/tests/stage/addFields.spec.ts b/packages/mql-typescript/tests/stage/addFields.spec.ts new file mode 100644 index 00000000..969b5d22 --- /dev/null +++ b/packages/mql-typescript/tests/stage/addFields.spec.ts @@ -0,0 +1,89 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Using Two $addFields Stages + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/#using-two--addfields-stages} + */ +function test0() { + type scores = { + _id: number; + student: string; + homework: Array; + quiz: Array; + extraCredit: number; + }; + + const aggregation: schema.Pipeline = [ + { + $addFields: { + totalHomework: { $sum: ['$homework'] }, + totalQuiz: { $sum: ['$quiz'] }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { + $addFields: { + totalScore: { $add: ['$totalHomework', '$totalQuiz', '$extraCredit'] }, + }, + } as any, + ]; +} + +/** + * Adding Fields to an Embedded Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/#adding-fields-to-an-embedded-document} + */ +function test1() { + type vehicles = { + _id: number; + type: string; + specs: { + doors: number; + wheels: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $addFields: { 'specs.fuel_type': 'unleaded' } }, + ]; +} + +/** + * Overwriting an existing field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/#overwriting-an-existing-field} + */ +function test2() { + type animals = { + _id: number; + dogs: number; + cats: number; + }; + + const aggregation: schema.Pipeline = [{ $addFields: { cats: 20 } }]; +} + +/** + * Add Element to an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/#add-element-to-an-array} + */ +function test3() { + type scores = { + _id: number; + student: string; + homework: Array; + quiz: Array; + extraCredit: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { _id: 1 } }, + { $addFields: { homework: { $concatArrays: ['$homework', [7]] } } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/bucket.spec.ts b/packages/mql-typescript/tests/stage/bucket.spec.ts new file mode 100644 index 00000000..3087cdb2 --- /dev/null +++ b/packages/mql-typescript/tests/stage/bucket.spec.ts @@ -0,0 +1,92 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Bucket by Year and Filter by Bucket Results + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/#bucket-by-year-and-filter-by-bucket-results} + */ +function test0() { + type artists = { + _id: number; + last_name: string; + first_name: string; + year_born: number; + year_died: number; + nationality: string; + }; + + const aggregation: schema.Pipeline = [ + { + $bucket: { + groupBy: '$year_born', + boundaries: [1840, 1850, 1860, 1870, 1880], + default: 'Other', + output: { + count: { $sum: 1 }, + artists: { + $push: { + name: { $concat: ['$first_name', ' ', '$last_name'] }, + year_born: '$year_born', + }, + }, + }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (the output field of the $bucket stage generates new fields that are not available statically). + */ + { $match: { count: { $gt: 3 } } } as any, + ]; +} + +/** + * Use $bucket with $facet to Bucket by Multiple Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/#use--bucket-with--facet-to-bucket-by-multiple-fields} + */ +function test1() { + type artwork = { + _id: number; + title: string; + artist: string; + year: number; + price: bson.Decimal128; + }; + + const aggregation: schema.Pipeline = [ + { + $facet: { + price: [ + { + $bucket: { + groupBy: '$price', + boundaries: [0, 200, 400], + default: 'Other', + output: { + count: { $sum: 1 }, + artwork: { $push: { title: '$title', price: '$price' } }, + averagePrice: { $avg: '$price' }, + }, + }, + }, + ], + year: [ + { + $bucket: { + groupBy: '$year', + boundaries: [1890, 1910, 1920, 1940], + default: 'Unknown', + output: { + count: { $sum: 1 }, + artwork: { $push: { title: '$title', year: '$year' } }, + }, + }, + }, + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/bucketAuto.spec.ts b/packages/mql-typescript/tests/stage/bucketAuto.spec.ts new file mode 100644 index 00000000..eb003ef8 --- /dev/null +++ b/packages/mql-typescript/tests/stage/bucketAuto.spec.ts @@ -0,0 +1,28 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Single Facet Aggregation + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/#single-facet-aggregation} + */ +function test0() { + type artwork = { + _id: bson.Int32 | number; + title: string; + artist: string; + year: bson.Int32 | number; + price: bson.Decimal128; + dimensions: { + height: bson.Int32 | number; + width: bson.Int32 | number; + units: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { $bucketAuto: { groupBy: '$price', buckets: 4 } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/changeStream.spec.ts b/packages/mql-typescript/tests/stage/changeStream.spec.ts new file mode 100644 index 00000000..1aeb4aa0 --- /dev/null +++ b/packages/mql-typescript/tests/stage/changeStream.spec.ts @@ -0,0 +1,17 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/#examples} + */ +function test0() { + type names = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [{ $changeStream: {} }]; +} diff --git a/packages/mql-typescript/tests/stage/changeStreamSplitLargeEvent.spec.ts b/packages/mql-typescript/tests/stage/changeStreamSplitLargeEvent.spec.ts new file mode 100644 index 00000000..ea1e2fc0 --- /dev/null +++ b/packages/mql-typescript/tests/stage/changeStreamSplitLargeEvent.spec.ts @@ -0,0 +1,20 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/#example} + */ +function test0() { + type myCollection = { + _id: bson.Int32 | number; + largeField: string; + }; + + const aggregation: schema.Pipeline = [ + { $changeStreamSplitLargeEvent: {} }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/collStats.spec.ts b/packages/mql-typescript/tests/stage/collStats.spec.ts new file mode 100644 index 00000000..84573f94 --- /dev/null +++ b/packages/mql-typescript/tests/stage/collStats.spec.ts @@ -0,0 +1,61 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * latencyStats Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/#latencystats-document} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $collStats: { latencyStats: { histograms: true } } }, + ]; +} + +/** + * storageStats Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/#storagestats-document} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $collStats: { storageStats: {} } }, + ]; +} + +/** + * count Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/#count-field} + */ +function test2() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $collStats: { count: {} } }, + ]; +} + +/** + * queryExecStats Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/#queryexecstats-document} + */ +function test3() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $collStats: { queryExecStats: {} } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/count.spec.ts b/packages/mql-typescript/tests/stage/count.spec.ts new file mode 100644 index 00000000..d5f9e9d4 --- /dev/null +++ b/packages/mql-typescript/tests/stage/count.spec.ts @@ -0,0 +1,22 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/#examples} + */ +function test0() { + type scores = { + _id: number; + subject: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { score: { $gt: 80 } } }, + { $count: 'passing_scores' }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/currentOp.spec.ts b/packages/mql-typescript/tests/stage/currentOp.spec.ts new file mode 100644 index 00000000..f4dd6573 --- /dev/null +++ b/packages/mql-typescript/tests/stage/currentOp.spec.ts @@ -0,0 +1,43 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Inactive Sessions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/#inactive-sessions} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $currentOp: { allUsers: true, idleSessions: true } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($currentOp emits new fields that are not available statically). + */ + { $match: { active: false, transaction: { $exists: true } } } as any, + ]; +} + +/** + * Sampled Queries + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/#sampled-queries} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $currentOp: { allUsers: true, localOps: true } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($currentOp emits new fields that are not available statically). + */ + { $match: { desc: 'query analyzer' } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/stage/densify.spec.ts b/packages/mql-typescript/tests/stage/densify.spec.ts new file mode 100644 index 00000000..d603a75c --- /dev/null +++ b/packages/mql-typescript/tests/stage/densify.spec.ts @@ -0,0 +1,59 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Densify Time Series Data + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/#densify-time-series-data} + */ +function test0() { + type weather = { + metadata: { + sensorId: number; + type: string; + }; + timestamp: Date; + temp: number; + }; + + const aggregation: schema.Pipeline = [ + { + $densify: { + field: 'timestamp', + range: { + step: 1, + unit: 'hour', + bounds: [ + new Date('2021-05-18T00:00:00.000Z'), + new Date('2021-05-18T08:00:00.000Z'), + ], + }, + }, + }, + ]; +} + +/** + * Densifiction with Partitions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/#densification-with-partitions} + */ +function test1() { + type coffee = { + altitude: number; + variety: string; + score: number; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { + $densify: { + field: 'altitude', + partitionByFields: ['variety'], + range: { bounds: 'full', step: 200 }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/documents.spec.ts b/packages/mql-typescript/tests/stage/documents.spec.ts new file mode 100644 index 00000000..2c560b0e --- /dev/null +++ b/packages/mql-typescript/tests/stage/documents.spec.ts @@ -0,0 +1,50 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Test a Pipeline Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/#test-a-pipeline-stage} + */ +function test0() { + type TestCollection = { + x: number; + }; + + const aggregation: schema.Pipeline = [ + { $documents: [{ x: 10 }, { x: 2 }, { x: 5 }] }, + { $bucketAuto: { groupBy: '$x', buckets: 4 } }, + ]; +} + +/** + * Use a $documents Stage in a $lookup Stage + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/#use-a--documents-stage-in-a--lookup-stage} + */ +function test1() { + type locations = { + zip: number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: {} }, + { + $lookup: { + localField: 'zip', + foreignField: 'zip_id', + as: 'city_state', + pipeline: [ + { + $documents: [ + { zip_id: 94301, name: 'Palo Alto, CA' }, + { zip_id: 10019, name: 'New York, NY' }, + ], + }, + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/facet.spec.ts b/packages/mql-typescript/tests/stage/facet.spec.ts new file mode 100644 index 00000000..0c6eddf8 --- /dev/null +++ b/packages/mql-typescript/tests/stage/facet.spec.ts @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/#example} + */ +function test0() { + type artwork = { + _id: number; + title: string; + artist: string; + year: number; + price: bson.Decimal128; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $facet: { + categorizedByTags: [ + { $unwind: { path: '$tags' } }, + { $sortByCount: '$tags' }, + ], + categorizedByPrice: [ + { $match: { price: { $exists: true } } }, + { + $bucket: { + groupBy: '$price', + boundaries: [0, 150, 200, 300, 400], + default: 'Other', + output: { count: { $sum: 1 }, titles: { $push: '$title' } }, + }, + }, + ], + 'categorizedByYears(Auto)': [ + { $bucketAuto: { groupBy: '$year', buckets: 4 } }, + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/fill.spec.ts b/packages/mql-typescript/tests/stage/fill.spec.ts new file mode 100644 index 00000000..2a29d4e7 --- /dev/null +++ b/packages/mql-typescript/tests/stage/fill.spec.ts @@ -0,0 +1,104 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Fill Missing Field Values with a Constant Value + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/#fill-missing-field-values-with-a-constant-value} + */ +function test0() { + type dailySales = { + date: Date; + bootsSold: number; + sandalsSold: number; + sneakersSold: number; + }; + + const aggregation: schema.Pipeline = [ + { + $fill: { + output: { + bootsSold: { value: 0 }, + sandalsSold: { value: 0 }, + sneakersSold: { value: 0 }, + }, + }, + }, + ]; +} + +/** + * Fill Missing Field Values with Linear Interpolation + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/#fill-missing-field-values-with-linear-interpolation} + */ +function test1() { + type stock = { + time: Date; + price: number; + }; + + const aggregation: schema.Pipeline = [ + { $fill: { sortBy: { time: 1 }, output: { price: { method: 'linear' } } } }, + ]; +} + +/** + * Fill Missing Field Values Based on the Last Observed Value + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/#fill-missing-field-values-based-on-the-last-observed-value} + */ +function test2() { + type restaurantReviews = { + date: Date; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { $fill: { sortBy: { date: 1 }, output: { score: { method: 'locf' } } } }, + ]; +} + +/** + * Fill Data for Distinct Partitions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/#fill-data-for-distinct-partitions} + */ +function test3() { + type restaurantReviewsMultiple = { + date: Date; + restaurant: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $fill: { + sortBy: { date: 1 }, + partitionBy: { restaurant: '$restaurant' }, + output: { score: { method: 'locf' } }, + }, + }, + ]; +} + +/** + * Indicate if a Field was Populated Using $fill + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/#indicate-if-a-field-was-populated-using--fill} + */ +function test4() { + type restaurantReviews = { + date: Date; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $set: { + valueExisted: { + $ifNull: [{ $toBool: { $toString: '$score' } }, false], + }, + }, + }, + { $fill: { sortBy: { date: 1 }, output: { score: { method: 'locf' } } } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/geoNear.spec.ts b/packages/mql-typescript/tests/stage/geoNear.spec.ts new file mode 100644 index 00000000..986f4470 --- /dev/null +++ b/packages/mql-typescript/tests/stage/geoNear.spec.ts @@ -0,0 +1,145 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Maximum Distance + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/#maximum-distance} + */ +function test0() { + type places = { + name: string; + location: { + type: string; + coordinates: Array; + }; + category: string; + }; + + const aggregation: schema.Pipeline = [ + { + $geoNear: { + near: { type: 'Point', coordinates: [-73.99279, 40.719296] }, + distanceField: 'dist.calculated', + maxDistance: 2, + query: { category: 'Parks' }, + includeLocs: 'dist.location', + spherical: true, + }, + }, + ]; +} + +/** + * Minimum Distance + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/#minimum-distance} + */ +function test1() { + type places = { + name: string; + location: { + type: string; + coordinates: Array; + }; + category: string; + }; + + const aggregation: schema.Pipeline = [ + { + $geoNear: { + near: { type: 'Point', coordinates: [-73.99279, 40.719296] }, + distanceField: 'dist.calculated', + minDistance: 2, + query: { category: 'Parks' }, + includeLocs: 'dist.location', + spherical: true, + }, + }, + ]; +} + +/** + * with the let option + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/#-geonear-with-the-let-option} + */ +function test2() { + type places = { + name: string; + location: { + type: string; + coordinates: Array; + }; + category: string; + }; + + const aggregation: schema.Pipeline = [ + { + $geoNear: { + near: '$$pt', + distanceField: 'distance', + maxDistance: 2, + query: { category: 'Parks' }, + includeLocs: 'dist.location', + spherical: true, + }, + }, + ]; +} + +/** + * with Bound let Option + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/#-geonear-with-bound-let-option} + */ +function test3() { + type places = { + name: string; + location: { + type: string; + coordinates: Array; + }; + category: string; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'places', + let: { pt: '$location' }, + pipeline: [{ $geoNear: { near: '$$pt', distanceField: 'distance' } }], + as: 'joinedField', + }, + }, + { $match: { name: 'Sara D. Roosevelt Park' } }, + ]; +} + +/** + * Specify Which Geospatial Index to Use + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/#specify-which-geospatial-index-to-use} + */ +function test4() { + type places = { + _id: number; + name: string; + location: { + type: string; + coordinates: Array; + }; + legacy: Array; + category: string; + }; + + const aggregation: schema.Pipeline = [ + { + $geoNear: { + near: { type: 'Point', coordinates: [-73.98142, 40.71782] }, + key: 'location', + distanceField: 'dist.calculated', + query: { category: 'Parks' }, + }, + }, + { $limit: 5 }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/graphLookup.spec.ts b/packages/mql-typescript/tests/stage/graphLookup.spec.ts new file mode 100644 index 00000000..55db1c37 --- /dev/null +++ b/packages/mql-typescript/tests/stage/graphLookup.spec.ts @@ -0,0 +1,89 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Within a Single Collection + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/#within-a-single-collection} + */ +function test0() { + type employees = { + _id: number; + name: string; + reportsTo: string; + }; + + const aggregation: schema.Pipeline = [ + { + $graphLookup: { + from: 'employees', + startWith: '$reportsTo', + connectFromField: 'reportsTo', + connectToField: 'name', + as: 'reportingHierarchy', + }, + }, + ]; +} + +/** + * Across Multiple Collections + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/#across-multiple-collections} + */ +function test1() { + type airports = { + _id: number; + airport: string; + connects: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $graphLookup: { + from: 'airports', + startWith: '$nearestAirport', + connectFromField: 'connects', + connectToField: 'airport', + maxDepth: 2, + depthField: 'numConnections', + as: 'destinations', + }, + }, + ]; +} + +/** + * With a Query Filter + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/#with-a-query-filter} + */ +function test2() { + type people = { + _id: number; + name: string; + friends: Array; + hobbies: Array; + }; + + const aggregation: schema.Pipeline = [ + { $match: { name: 'Tanya Jordan' } }, + { + $graphLookup: { + from: 'people', + startWith: '$friends', + connectFromField: 'friends', + connectToField: 'name', + as: 'golfers', + restrictSearchWithMatch: { hobbies: 'golf' }, + }, + }, + { + $project: { + name: 1, + friends: 1, + 'connections who play golf': '$golfers.name', + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/group.spec.ts b/packages/mql-typescript/tests/stage/group.spec.ts new file mode 100644 index 00000000..8bccbcc5 --- /dev/null +++ b/packages/mql-typescript/tests/stage/group.spec.ts @@ -0,0 +1,166 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Count the Number of Documents in a Collection + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#count-the-number-of-documents-in-a-collection} + */ +function test0() { + type sales = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: bson.Int32 | number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: null, count: { $count: {} } } }, + ]; +} + +/** + * Retrieve Distinct Values + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#retrieve-distinct-values} + */ +function test1() { + type sales = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: bson.Int32 | number; + date: Date; + }; + + const aggregation: schema.Pipeline = [{ $group: { _id: '$item' } }]; +} + +/** + * Group by Item Having + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#group-by-item-having} + */ +function test2() { + type sales = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: bson.Int32 | number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: '$item', + totalSaleAmount: { $sum: { $multiply: ['$price', '$quantity'] } }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $match: { totalSaleAmount: { $gte: 100 } } } as any, + ]; +} + +/** + * Calculate Count Sum and Average + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#calculate-count--sum--and-average} + */ +function test3() { + type sales = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: bson.Int32 | number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + date: { + $gte: new Date('2014-01-01T00:00:00.000Z'), + $lt: new Date('2015-01-01T00:00:00.000Z'), + }, + }, + }, + { + $group: { + _id: { $dateToString: { format: '%Y-%m-%d', date: '$date' } }, + totalSaleAmount: { $sum: { $multiply: ['$price', '$quantity'] } }, + averageQuantity: { $avg: '$quantity' }, + count: { $sum: 1 }, + }, + }, + { $sort: { totalSaleAmount: -1 } }, + ]; +} + +/** + * Group by null + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#group-by-null} + */ +function test4() { + type sales = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: bson.Int32 | number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: null, + totalSaleAmount: { $sum: { $multiply: ['$price', '$quantity'] } }, + averageQuantity: { $avg: '$quantity' }, + count: { $sum: 1 }, + }, + }, + ]; +} + +/** + * Pivot Data + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#pivot-data} + */ +function test5() { + type books = { + _id: number; + title: string; + author: string; + copies: number; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$author', books: { $push: '$title' } } }, + ]; +} + +/** + * Group Documents by author + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/#group-documents-by-author} + */ +function test6() { + type sales = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: bson.Int32 | number; + date: Date; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$author', books: { $push: '$$ROOT' } } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). + */ + { $addFields: { totalCopies: { $sum: ['$books.copies'] } } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/stage/indexStats.spec.ts b/packages/mql-typescript/tests/stage/indexStats.spec.ts new file mode 100644 index 00000000..c61d65c2 --- /dev/null +++ b/packages/mql-typescript/tests/stage/indexStats.spec.ts @@ -0,0 +1,21 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/#example} + */ +function test0() { + type orders = { + _id: number; + item: string; + price: number; + quantity: number; + type: string; + }; + + const aggregation: schema.Pipeline = [{ $indexStats: {} }]; +} diff --git a/packages/mql-typescript/tests/stage/limit.spec.ts b/packages/mql-typescript/tests/stage/limit.spec.ts new file mode 100644 index 00000000..91c1f15f --- /dev/null +++ b/packages/mql-typescript/tests/stage/limit.spec.ts @@ -0,0 +1,17 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/#example} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [{ $limit: 5 }]; +} diff --git a/packages/mql-typescript/tests/stage/listLocalSessions.spec.ts b/packages/mql-typescript/tests/stage/listLocalSessions.spec.ts new file mode 100644 index 00000000..cd4c9736 --- /dev/null +++ b/packages/mql-typescript/tests/stage/listLocalSessions.spec.ts @@ -0,0 +1,47 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * List All Local Sessions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/#list-all-local-sessions} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listLocalSessions: { allUsers: true } }, + ]; +} + +/** + * List All Local Sessions for the Specified Users + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/#list-all-local-sessions-for-the-specified-users} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listLocalSessions: { users: [{ user: 'myAppReader', db: 'test' }] } }, + ]; +} + +/** + * List All Local Sessions for the Current User + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/#list-all-local-sessions-for-the-current-user} + */ +function test2() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listLocalSessions: {} }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/listSampledQueries.spec.ts b/packages/mql-typescript/tests/stage/listSampledQueries.spec.ts new file mode 100644 index 00000000..da8ddda6 --- /dev/null +++ b/packages/mql-typescript/tests/stage/listSampledQueries.spec.ts @@ -0,0 +1,33 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * List Sampled Queries for All Collections + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/#list-sampled-queries-for-all-collections} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSampledQueries: {} }, + ]; +} + +/** + * List Sampled Queries for A Specific Collection + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/#list-sampled-queries-for-a-specific-collection} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSampledQueries: { namespace: 'social.post' } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/listSearchIndexes.spec.ts b/packages/mql-typescript/tests/stage/listSearchIndexes.spec.ts new file mode 100644 index 00000000..535fc125 --- /dev/null +++ b/packages/mql-typescript/tests/stage/listSearchIndexes.spec.ts @@ -0,0 +1,47 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Return All Search Indexes + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/#return-all-search-indexes} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSearchIndexes: {} }, + ]; +} + +/** + * Return a Single Search Index by Name + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/#return-a-single-search-index-by-name} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSearchIndexes: { name: 'synonym-mappings' } }, + ]; +} + +/** + * Return a Single Search Index by id + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/#return-a-single-search-index-by-id} + */ +function test2() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSearchIndexes: { id: '6524096020da840844a4c4a7' } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/listSessions.spec.ts b/packages/mql-typescript/tests/stage/listSessions.spec.ts new file mode 100644 index 00000000..dd14b8f2 --- /dev/null +++ b/packages/mql-typescript/tests/stage/listSessions.spec.ts @@ -0,0 +1,45 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * List All Sessions + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/#list-all-sessions} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSessions: { allUsers: true } }, + ]; +} + +/** + * List All Sessions for the Specified Users + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/#list-all-sessions-for-the-specified-users} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $listSessions: { users: [{ user: 'myAppReader', db: 'test' }] } }, + ]; +} + +/** + * List All Sessions for the Current User + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/#list-all-sessions-for-the-current-user} + */ +function test2() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [{ $listSessions: {} }]; +} diff --git a/packages/mql-typescript/tests/stage/lookup.spec.ts b/packages/mql-typescript/tests/stage/lookup.spec.ts new file mode 100644 index 00000000..580ce1d2 --- /dev/null +++ b/packages/mql-typescript/tests/stage/lookup.spec.ts @@ -0,0 +1,147 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Perform a Single Equality Join with $lookup + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#perform-a-single-equality-join-with--lookup} + */ +function test0() { + type orders = { + _id: number; + item: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'inventory', + localField: 'item', + foreignField: 'sku', + as: 'inventory_docs', + }, + }, + ]; +} + +/** + * Use $lookup with an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#use--lookup-with-an-array} + */ +function test1() { + type classes = { + _id: number; + title: string; + enrollmentlist: Array; + days: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'members', + localField: 'enrollmentlist', + foreignField: 'name', + as: 'enrollee_info', + }, + }, + ]; +} + +/** + * Use $lookup with $mergeObjects + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#use--lookup-with--mergeobjects} + */ +function test2() { + type orders = { + _id: number; + item: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'items', + localField: 'item', + foreignField: 'item', + as: 'fromItems', + }, + }, + { + $replaceRoot: { + newRoot: { + $mergeObjects: [{ $arrayElemAt: ['$fromItems', 0] }, '$$ROOT'], + }, + }, + }, + { $project: { fromItems: 0 } }, + ]; +} + +/** + * Perform Multiple Joins and a Correlated Subquery with $lookup + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#perform-multiple-joins-and-a-correlated-subquery-with--lookup} + */ +function test3() { + // TODO: no schema found for lookup.Perform Multiple Joins and a Correlated Subquery with $lookup: // TODO: No schema found in docs +} + +/** + * Perform an Uncorrelated Subquery with $lookup + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#perform-an-uncorrelated-subquery-with--lookup} + */ +function test4() { + type absences = { + _id: number; + student: string; + sickdays: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'holidays', + pipeline: [ + { $match: { year: 2018 } }, + { $project: { _id: 0, date: { name: '$name', date: '$date' } } }, + { $replaceRoot: { newRoot: '$date' } }, + ], + as: 'holidays', + }, + }, + ]; +} + +/** + * Perform a Concise Correlated Subquery with $lookup + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/#perform-a-concise-correlated-subquery-with--lookup} + */ +function test5() { + type restaurants = { + _id: number; + name: string; + food: Array; + beverages: Array; + }; + + const aggregation: schema.Pipeline = [ + { + $lookup: { + from: 'restaurants', + localField: 'restaurant_name', + foreignField: 'name', + let: { orders_drink: '$drink' }, + pipeline: [ + { $match: { $expr: { $in: ['$$orders_drink', '$beverages'] } } }, + ], + as: 'matches', + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/match.spec.ts b/packages/mql-typescript/tests/stage/match.spec.ts new file mode 100644 index 00000000..040f9ad4 --- /dev/null +++ b/packages/mql-typescript/tests/stage/match.spec.ts @@ -0,0 +1,44 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Equality Match + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/#equality-match} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + author: string; + score: number; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { author: 'dave' } }, + ]; +} + +/** + * Perform a Count + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/#perform-a-count} + */ +function test1() { + type TestCollection = { + _id: bson.ObjectId; + author: string; + score: number; + views: number; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + $or: [{ score: { $gt: 70, $lt: 90 } }, { views: { $gte: 1000 } }], + }, + }, + { $group: { _id: null, count: { $sum: 1 } } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/merge.spec.ts b/packages/mql-typescript/tests/stage/merge.spec.ts new file mode 100644 index 00000000..4f2cea30 --- /dev/null +++ b/packages/mql-typescript/tests/stage/merge.spec.ts @@ -0,0 +1,202 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * On-Demand Materialized View Initial Creation + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/#on-demand-materialized-view--initial-creation} + */ +function test0() { + type salaries = { + _id: number; + employee: string; + dept: string; + salary: number; + fiscal_year: number; + }; + + const aggregation: schema.Pipeline = [ + { + $group: { + _id: { fiscal_year: '$fiscal_year', dept: '$dept' }, + salaries: { $sum: '$salary' }, + }, + }, + { + $merge: { + into: { db: 'reporting', coll: 'budgets' }, + on: '_id', + whenMatched: 'replace', + whenNotMatched: 'insert', + }, + }, + ]; +} + +/** + * On-Demand Materialized View Update Replace Data + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/#on-demand-materialized-view--update-replace-data} + */ +function test1() { + type salaries = { + _id: number; + employee: string; + dept: string; + salary: number; + fiscal_year: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { fiscal_year: { $gte: 2019 } } }, + { + $group: { + _id: { fiscal_year: '$fiscal_year', dept: '$dept' }, + salaries: { $sum: '$salary' }, + }, + }, + { + $merge: { + into: { db: 'reporting', coll: 'budgets' }, + on: '_id', + whenMatched: 'replace', + whenNotMatched: 'insert', + }, + }, + ]; +} + +/** + * Only Insert New Data + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/#only-insert-new-data} + */ +function test2() { + type salaries = { + _id: number; + employee: string; + dept: string; + salary: number; + fiscal_year: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { fiscal_year: 2019 } }, + { + $group: { + _id: { fiscal_year: '$fiscal_year', dept: '$dept' }, + employees: { $push: '$employee' }, + }, + }, + { + $project: { + _id: 0, + dept: '$_id.dept', + fiscal_year: '$_id.fiscal_year', + employees: 1, + }, + }, + { + $merge: { + into: { db: 'reporting', coll: 'orgArchive' }, + on: ['dept', 'fiscal_year'], + whenMatched: 'fail', + }, + }, + ]; +} + +/** + * Merge Results from Multiple Collections + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/#merge-results-from-multiple-collections} + */ +function test3() { + type purchaseorders = { + _id: number; + quarter: string; + region: string; + qty: number; + reportDate: Date; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$quarter', purchased: { $sum: '$qty' } } }, + { + $merge: { + into: 'quarterlyreport', + on: '_id', + whenMatched: 'merge', + whenNotMatched: 'insert', + }, + }, + ]; +} + +/** + * Use the Pipeline to Customize the Merge + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/#use-the-pipeline-to-customize-the-merge} + */ +function test4() { + type votes = { + date: Date; + thumbsup: number; + thumbsdown: number; + }; + + const aggregation: schema.Pipeline = [ + { + $match: { + date: { + $gte: new Date('2019-05-07T00:00:00.000Z'), + $lt: new Date('2019-05-08T00:00:00.000Z'), + }, + }, + }, + { + $project: { + _id: { $dateToString: { format: '%Y-%m', date: '$date' } }, + thumbsup: 1, + thumbsdown: 1, + }, + }, + { + $merge: { + into: 'monthlytotals', + on: '_id', + whenMatched: [ + { + $addFields: { + thumbsup: { $add: ['$thumbsup', '$$new.thumbsup'] }, + thumbsdown: { $add: ['$thumbsdown', '$$new.thumbsdown'] }, + }, + }, + ], + whenNotMatched: 'insert', + }, + }, + ]; +} + +/** + * Use Variables to Customize the Merge + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/#use-variables-to-customize-the-merge} + */ +function test5() { + type salaries = { + _id: number; + employee: string; + dept: string; + salary: number; + fiscal_year: number; + }; + + const aggregation: schema.Pipeline = [ + { + $merge: { + into: 'cakeSales', + let: { year: '2020' }, + whenMatched: [{ $addFields: { salesYear: '$$year' } }], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/out.spec.ts b/packages/mql-typescript/tests/stage/out.spec.ts new file mode 100644 index 00000000..842dac45 --- /dev/null +++ b/packages/mql-typescript/tests/stage/out.spec.ts @@ -0,0 +1,41 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Output to Same Database + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/#output-to-same-database} + */ +function test0() { + type books = { + _id: number; + title: string; + author: string; + copies: number; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$author', books: { $push: '$title' } } }, + { $out: 'authors' }, + ]; +} + +/** + * Output to a Different Database + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/#output-to-a-different-database} + */ +function test1() { + type books = { + _id: number; + title: string; + author: string; + copies: number; + }; + + const aggregation: schema.Pipeline = [ + { $group: { _id: '$author', books: { $push: '$title' } } }, + { $out: { db: 'reporting', coll: 'authors' } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/planCacheStats.spec.ts b/packages/mql-typescript/tests/stage/planCacheStats.spec.ts new file mode 100644 index 00000000..65a247c4 --- /dev/null +++ b/packages/mql-typescript/tests/stage/planCacheStats.spec.ts @@ -0,0 +1,44 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Return Information for All Entries in the Query Cache + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/#return-information-for-all-entries-in-the-query-cache} + */ +function test0() { + type orders = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: number; + type: string; + }; + + const aggregation: schema.Pipeline = [{ $planCacheStats: {} }]; +} + +/** + * Find Cache Entry Details for a Query Hash + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/#find-cache-entry-details-for-a-query-hash} + */ +function test1() { + type orders = { + _id: number; + item: string; + price: bson.Decimal128; + quantity: number; + type: string; + }; + + const aggregation: schema.Pipeline = [ + { $planCacheStats: {} }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($planCacheStats emits new fields that are not available statically). + */ + { $match: { planCacheKey: 'B1435201' } } as any, + ]; +} diff --git a/packages/mql-typescript/tests/stage/project.spec.ts b/packages/mql-typescript/tests/stage/project.spec.ts new file mode 100644 index 00000000..4ca4b905 --- /dev/null +++ b/packages/mql-typescript/tests/stage/project.spec.ts @@ -0,0 +1,205 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Include Specific Fields in Output Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#include-specific-fields-in-output-documents} + */ +function test0() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { title: 1, author: 1 } }, + ]; +} + +/** + * Suppress id Field in the Output Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#suppress-_id-field-in-the-output-documents} + */ +function test1() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { _id: 0, title: 1, author: 1 } }, + ]; +} + +/** + * Exclude Fields from Output Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#exclude-fields-from-output-documents} + */ +function test2() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: number; + lastModified: string; + }; + + const aggregation: schema.Pipeline = [ + { $project: { lastModified: 0 } }, + ]; +} + +/** + * Exclude Fields from Embedded Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#exclude-fields-from-embedded-documents} + */ +function test3() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: number; + lastModified: string; + }; + + const aggregation: schema.Pipeline = [ + { $project: { 'author.first': 0, lastModified: 0 } }, + { $project: { author: { first: 0 }, lastModified: 0 } }, + ]; +} + +/** + * Conditionally Exclude Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#conditionally-exclude-fields} + */ +function test4() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + middle: string; + }; + copies: number; + lastModified: string; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + title: 1, + 'author.first': 1, + 'author.last': 1, + 'author.middle': { + $cond: { + if: { $eq: ['', '$author.middle'] }, + then: '$$REMOVE', + else: '$author.middle', + }, + }, + }, + }, + ]; +} + +/** + * Include Specific Fields from Embedded Documents + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#include-specific-fields-from-embedded-documents} + */ +function test5() { + type bookmarks = { + _id: number; + user: string; + stop: + | { + title: string; + author: string; + page: number; + } + | Array<{ + title: string; + author: string; + page: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + { $project: { 'stop.title': 1 } }, + { $project: { stop: { title: 1 } } }, + ]; +} + +/** + * Include Computed Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#include-computed-fields} + */ +function test6() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: number; + }; + + const aggregation: schema.Pipeline = [ + { + $project: { + title: 1, + isbn: { + prefix: { $substr: ['$isbn', 0, 3] }, + group: { $substr: ['$isbn', 3, 2] }, + publisher: { $substr: ['$isbn', 5, 4] }, + title: { $substr: ['$isbn', 9, 3] }, + checkDigit: { $substr: ['$isbn', 12, 1] }, + }, + lastName: '$author.last', + copiesSold: '$copies', + }, + }, + ]; +} + +/** + * Project New Array Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/#project-new-array-fields} + */ +function test7() { + type TestCollection = { + _id: bson.ObjectId; + x: number; + y: number; + }; + + const aggregation: schema.Pipeline = [ + { $project: { myArray: ['$x', '$y'] } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/redact.spec.ts b/packages/mql-typescript/tests/stage/redact.spec.ts new file mode 100644 index 00000000..9f98954a --- /dev/null +++ b/packages/mql-typescript/tests/stage/redact.spec.ts @@ -0,0 +1,85 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Evaluate Access at Every Document Level + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/#evaluate-access-at-every-document-level} + */ +function test0() { + type forecasts = { + _id: number; + title: string; + tags: Array; + year: number; + subsections: Array<{ + subtitle: string; + tags: Array; + content: + | string + | { + text: string; + tags: Array; + }; + }>; + }; + + const aggregation: schema.Pipeline = [ + { $match: { year: 2014 } }, + { + $redact: { + $cond: { + if: { + $gt: [{ $size: { $setIntersection: ['$tags', ['STLW', 'G']] } }, 0], + }, + then: '$$DESCEND', + else: '$$PRUNE', + }, + }, + }, + ]; +} + +/** + * Exclude All Fields at a Given Level + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/#exclude-all-fields-at-a-given-level} + */ +function test1() { + type accounts = { + _id: number; + level: number; + acct_id: string; + cc: { + level: number; + type: string; + num: number; + exp_date: Date; + billing_addr: { + level: number; + addr1: string; + city: string; + }; + shipping_addr: Array<{ + level: number; + addr1: string; + city: string; + }>; + }; + status: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { status: 'A' } }, + { + $redact: { + $cond: { + if: { $eq: ['$level', 5] }, + then: '$$PRUNE', + else: '$$DESCEND', + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/replaceRoot.spec.ts b/packages/mql-typescript/tests/stage/replaceRoot.spec.ts new file mode 100644 index 00000000..e4d1308e --- /dev/null +++ b/packages/mql-typescript/tests/stage/replaceRoot.spec.ts @@ -0,0 +1,110 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * with an Embedded Document Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/#-replaceroot-with-an-embedded-document-field} + */ +function test0() { + type TestCollection = { + _id: number; + name: string; + age: number; + pets: { + dogs: number; + cats: number; + fish: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceRoot: { + newRoot: { + $mergeObjects: [{ dogs: 0, cats: 0, birds: 0, fish: 0 }, '$pets'], + }, + }, + }, + ]; +} + +/** + * with a Document Nested in an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/#-replaceroot-with-a-document-nested-in-an-array} + */ +function test1() { + type students = { + _id: number; + grades: Array<{ + test: number; + grade: number; + mean: number; + std: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$grades' } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $match: { 'grades.grade': { $gte: 90 } } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $replaceRoot: { newRoot: '$grades' } } as any, + ]; +} + +/** + * with a newly created document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/#-replaceroot-with-a-newly-created-document} + */ +function test2() { + type TestCollection = { + _id: number; + first_name: string; + last_name: string; + city: string; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceRoot: { + newRoot: { full_name: { $concat: ['$first_name', ' ', '$last_name'] } }, + }, + }, + ]; +} + +/** + * with a New Document Created from $$ROOT and a Default Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/#-replaceroot-with-a-new-document-created-from---root-and-a-default-document} + */ +function test3() { + type contacts = { + _id: number; + name: string; + email: string; + cell: string; + home: string; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceRoot: { + newRoot: { + $mergeObjects: [ + { _id: '', name: '', email: '', cell: '', home: '' }, + '$$ROOT', + ], + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/replaceWith.spec.ts b/packages/mql-typescript/tests/stage/replaceWith.spec.ts new file mode 100644 index 00000000..6da06f72 --- /dev/null +++ b/packages/mql-typescript/tests/stage/replaceWith.spec.ts @@ -0,0 +1,112 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * an Embedded Document Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/#-replacewith-an-embedded-document-field} + */ +function test0() { + type people = { + _id: number; + name: string; + age: number; + pets: { + dogs: number; + cats: number; + fish: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $mergeObjects: [{ dogs: 0, cats: 0, birds: 0, fish: 0 }, '$pets'], + }, + }, + ]; +} + +/** + * a Document Nested in an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/#-replacewith-a-document-nested-in-an-array} + */ +function test1() { + type students = { + _id: number; + grades: Array<{ + test: number; + grade: number; + mean: number; + std: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$grades' } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $match: { 'grades.grade': { $gte: 90 } } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $replaceWith: '$grades' } as any, + ]; +} + +/** + * a Newly Created Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/#-replacewith-a-newly-created-document} + */ +function test2() { + type sales = { + _id: number; + item: string; + price: number; + quantity: number; + date: Date; + status: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { status: 'C' } }, + { + $replaceWith: { + _id: '$_id', + item: '$item', + amount: { $multiply: ['$price', '$quantity'] }, + status: 'Complete', + asofDate: '$$NOW', + }, + }, + ]; +} + +/** + * a New Document Created from $$ROOT and a Default Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/#-replacewith-a-new-document-created-from---root-and-a-default-document} + */ +function test3() { + type contacts = { + _id: number; + name: string; + email: string; + cell: string; + }; + + const aggregation: schema.Pipeline = [ + { + $replaceWith: { + $mergeObjects: [ + { _id: '', name: '', email: '', cell: '', home: '' }, + '$$ROOT', + ], + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/sample.spec.ts b/packages/mql-typescript/tests/stage/sample.spec.ts new file mode 100644 index 00000000..bfe00b5a --- /dev/null +++ b/packages/mql-typescript/tests/stage/sample.spec.ts @@ -0,0 +1,20 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/#examples} + */ +function test0() { + type users = { + _id: number; + name: string; + q1: boolean; + q2: boolean; + }; + + const aggregation: schema.Pipeline = [{ $sample: { size: 3 } }]; +} diff --git a/packages/mql-typescript/tests/stage/search.spec.ts b/packages/mql-typescript/tests/stage/search.spec.ts new file mode 100644 index 00000000..000b14b4 --- /dev/null +++ b/packages/mql-typescript/tests/stage/search.spec.ts @@ -0,0 +1,714 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/aggregation-stages/search/#aggregation-variable} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + near: { + path: 'released', + origin: new Date('2011-09-01T00:00:00.000Z'), + pivot: 7776000000, + }, + }, + }, + { $project: { _id: 0, title: 1, released: 1 } }, + { $limit: 5 }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' ($search emits new fields that are not available statically, such as $$SEARCH_META). + */ + { + $facet: { + docs: [], + meta: [{ $replaceWith: '$$SEARCH_META' }, { $limit: 1 }], + }, + } as any, + ]; +} + +/** + * Date Search and Sort + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/sort/#date-search-and-sort} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + range: { + path: 'released', + gt: new Date('2010-01-01T00:00:00.000Z'), + lt: new Date('2015-01-01T00:00:00.000Z'), + }, + sort: { released: -1 }, + }, + }, + { $limit: 5 }, + { $project: { _id: 0, title: 1, released: 1 } }, + ]; +} + +/** + * Number Search and Sort + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/sort/#number-search-and-sort} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $search: { + range: { path: 'awards.wins', gt: 3 }, + sort: { 'awards.wins': -1 }, + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $limit: 5 } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $project: { _id: 0, title: 1, 'awards.wins': 1 } } as any, + ]; +} + +/** + * Sort by score + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/sort/#sort-by-score} + */ +function test3() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { path: 'title', query: 'story' }, + sort: { score: { $meta: 'searchScore', order: 1 } }, + }, + }, + { $limit: 5 }, + { $project: { _id: 0, title: 1, score: { $meta: 'searchScore' } } }, + ]; +} + +/** + * Paginate results after a token + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/paginate-results/#search-after-the-reference-point} + */ +function test4() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { path: 'title', query: 'war' }, + sort: { score: { $meta: 'searchScore' }, released: 1 }, + searchAfter: 'CMtJGgYQuq+ngwgaCSkAjBYH7AAAAA==', + }, + }, + ]; +} + +/** + * Paginate results before a token + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/paginate-results/#search-before-the-reference-point} + */ +function test5() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { path: 'title', query: 'war' }, + sort: { score: { $meta: 'searchScore' }, released: 1 }, + searchBefore: 'CJ6kARoGELqvp4MIGgkpACDA3U8BAAA=', + }, + }, + ]; +} + +/** + * Count results + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/counting/#count-results} + */ +function test6() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + near: { + path: 'released', + origin: new Date('2011-09-01T00:00:00.000Z'), + pivot: 7776000000, + }, + count: { type: 'total' }, + }, + }, + { $project: { meta: '$$SEARCH_META', title: 1, released: 1 } }, + { $limit: 2 }, + ]; +} + +/** + * Track Search terms + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/tracking/#examples} + */ +function test7() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { query: 'summer', path: 'title' }, + tracking: { searchTerms: 'summer' }, + }, + }, + { $limit: 5 }, + { $project: { _id: 0, title: 1 } }, + ]; +} + +/** + * Return Stored Source Fields + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/return-stored-source/#examples} + */ +function test8() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $search: { + text: { query: 'baseball', path: 'title' }, + returnStoredSource: true, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $match: { + $or: [ + { 'imdb.rating': { $gt: 8.2 } }, + { 'imdb.votes': { $gte: 4500 } }, + ], + }, + } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $lookup: { + from: 'movies', + localField: '_id', + foreignField: '_id', + as: 'document', + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/stage/searchMeta.spec.ts b/packages/mql-typescript/tests/stage/searchMeta.spec.ts new file mode 100644 index 00000000..cc3e598d --- /dev/null +++ b/packages/mql-typescript/tests/stage/searchMeta.spec.ts @@ -0,0 +1,410 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/aggregation-stages/searchMeta/#example} + */ +function test0() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $searchMeta: { + range: { path: 'year', gte: 1998, lt: 1999 }, + count: { type: 'total' }, + }, + }, + ]; +} + +/** + * Year Facet + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/#example-1} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $searchMeta: { + facet: { + operator: { range: { path: 'year', gte: 1980, lte: 2000 } }, + facets: { + yearFacet: { + type: 'number', + path: 'year', + boundaries: [1980, 1990, 2000], + default: 'other', + }, + }, + }, + }, + }, + ]; +} + +/** + * Date Facet + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/#example-2} + */ +function test2() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $searchMeta: { + facet: { + operator: { + range: { + path: 'released', + gte: new Date('2000-01-01T00:00:00.000Z'), + lte: new Date('2015-01-31T00:00:00.000Z'), + }, + }, + facets: { + yearFacet: { + type: 'date', + path: 'released', + boundaries: [ + new Date('2000-01-01T00:00:00.000Z'), + new Date('2005-01-01T00:00:00.000Z'), + new Date('2010-01-01T00:00:00.000Z'), + new Date('2015-01-01T00:00:00.000Z'), + ], + default: 'other', + }, + }, + }, + }, + }, + ]; +} + +/** + * Metadata Results + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/#examples} + */ +function test3() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $searchMeta: { + facet: { + operator: { + range: { + path: 'released', + gte: new Date('2000-01-01T00:00:00.000Z'), + lte: new Date('2015-01-31T00:00:00.000Z'), + }, + }, + facets: { + directorsFacet: { + type: 'string', + path: 'directors', + numBuckets: 7, + }, + yearFacet: { + type: 'number', + path: 'year', + boundaries: [2000, 2005, 2010, 2015], + }, + }, + }, + }, + }, + ]; +} + +/** + * Autocomplete Bucket Results through Facet Queries + * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/#bucket-results-through-facet-queries} + */ +function test4() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $searchMeta: { + facet: { + operator: { autocomplete: { path: 'title', query: 'Gravity' } }, + facets: { titleFacet: { type: 'string', path: 'title' } }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/set.spec.ts b/packages/mql-typescript/tests/stage/set.spec.ts new file mode 100644 index 00000000..2f56605d --- /dev/null +++ b/packages/mql-typescript/tests/stage/set.spec.ts @@ -0,0 +1,107 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Using Two $set Stages + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/#using-two--set-stages} + */ +function test0() { + type scores = { + _id: number; + student: string; + homework: Array; + quiz: Array; + extraCredit: number; + }; + + const aggregation: schema.Pipeline = [ + { + $set: { + totalHomework: { $sum: ['$homework'] }, + totalQuiz: { $sum: ['$quiz'] }, + }, + }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (second $set stage references fields created in the first). + */ + { + $set: { + totalScore: { $add: ['$totalHomework', '$totalQuiz', '$extraCredit'] }, + }, + } as any, + ]; +} + +/** + * Adding Fields to an Embedded Document + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/#adding-fields-to-an-embedded-document} + */ +function test1() { + type vehicles = { + _id: number; + type: string; + specs: { + doors: number; + wheels: number; + }; + }; + + const aggregation: schema.Pipeline = [ + { $set: { 'specs.fuel_type': 'unleaded' } }, + ]; +} + +/** + * Overwriting an existing field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/#overwriting-an-existing-field} + */ +function test2() { + type animals = { + _id: number; + dogs: number; + cats: number; + }; + + const aggregation: schema.Pipeline = [{ $set: { cats: 20 } }]; +} + +/** + * Add Element to an Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/#add-element-to-an-array} + */ +function test3() { + type scores = { + _id: number; + student: string; + homework: Array; + quiz: Array; + extraCredit: number; + }; + + const aggregation: schema.Pipeline = [ + { $match: { _id: 1 } }, + { $set: { homework: { $concatArrays: ['$homework', [7]] } } }, + ]; +} + +/** + * Creating a New Field with Existing Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/#creating-a-new-field-with-existing-fields} + */ +function test4() { + type scores = { + _id: number; + student: string; + homework: Array; + quiz: Array; + extraCredit: number; + }; + + const aggregation: schema.Pipeline = [ + { $set: { quizAverage: { $avg: '$quiz' } } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/setWindowFields.spec.ts b/packages/mql-typescript/tests/stage/setWindowFields.spec.ts new file mode 100644 index 00000000..13584fc6 --- /dev/null +++ b/packages/mql-typescript/tests/stage/setWindowFields.spec.ts @@ -0,0 +1,219 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Use Documents Window to Obtain Cumulative Quantity for Each State + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#use-documents-window-to-obtain-cumulative-quantity-for-each-state} + */ +function test0() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + cumulativeQuantityForState: { + $sum: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} + +/** + * Use Documents Window to Obtain Cumulative Quantity for Each Year + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#use-documents-window-to-obtain-cumulative-quantity-for-each-year} + */ +function test1() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: { $year: { date: '$orderDate' } }, + sortBy: { orderDate: 1 }, + output: { + cumulativeQuantityForYear: { + $sum: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + }, + }, + }, + ]; +} + +/** + * Use Documents Window to Obtain Moving Average Quantity for Each Year + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#use-documents-window-to-obtain-moving-average-quantity-for-each-year} + */ +function test2() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: { $year: { date: '$orderDate' } }, + sortBy: { orderDate: 1 }, + output: { + averageQuantity: { + $avg: '$quantity', + window: { documents: [-1, 0] }, + }, + }, + }, + }, + ]; +} + +/** + * Use Documents Window to Obtain Cumulative and Maximum Quantity for Each Year + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#use-documents-window-to-obtain-cumulative-and-maximum-quantity-for-each-year} + */ +function test3() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: { $year: { date: '$orderDate' } }, + sortBy: { orderDate: 1 }, + output: { + cumulativeQuantityForYear: { + $sum: '$quantity', + window: { documents: ['unbounded', 'current'] }, + }, + maximumQuantityForYear: { + $max: '$quantity', + window: { documents: ['unbounded', 'unbounded'] }, + }, + }, + }, + }, + ]; +} + +/** + * Range Window Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#range-window-example} + */ +function test4() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { price: 1 }, + output: { + quantityFromSimilarOrders: { + $sum: '$quantity', + window: { range: [-10, 10] }, + }, + }, + }, + }, + ]; +} + +/** + * Use a Time Range Window with a Positive Upper Bound + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#use-a-time-range-window-with-a-positive-upper-bound} + */ +function test5() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + recentOrders: { + $push: '$orderDate', + window: { range: ['unbounded', 10], unit: 'month' }, + }, + }, + }, + }, + ]; +} + +/** + * Use a Time Range Window with a Negative Upper Bound + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/#use-a-time-range-window-with-a-negative-upper-bound} + */ +function test6() { + type cakeSales = { + _id: number; + type: string; + orderDate: Date; + state: string; + price: number; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { + $setWindowFields: { + partitionBy: '$state', + sortBy: { orderDate: 1 }, + output: { + recentOrders: { + $push: '$orderDate', + window: { range: ['unbounded', -10], unit: 'month' }, + }, + }, + }, + }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/shardedDataDistribution.spec.ts b/packages/mql-typescript/tests/stage/shardedDataDistribution.spec.ts new file mode 100644 index 00000000..7f4d66ed --- /dev/null +++ b/packages/mql-typescript/tests/stage/shardedDataDistribution.spec.ts @@ -0,0 +1,19 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/#examples} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [ + { $shardedDataDistribution: {} }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/skip.spec.ts b/packages/mql-typescript/tests/stage/skip.spec.ts new file mode 100644 index 00000000..12e7e5b5 --- /dev/null +++ b/packages/mql-typescript/tests/stage/skip.spec.ts @@ -0,0 +1,17 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/#examples} + */ +function test0() { + type TestCollection = { + _id: bson.ObjectId; + }; + + const aggregation: schema.Pipeline = [{ $skip: 5 }]; +} diff --git a/packages/mql-typescript/tests/stage/sort.spec.ts b/packages/mql-typescript/tests/stage/sort.spec.ts new file mode 100644 index 00000000..0744771d --- /dev/null +++ b/packages/mql-typescript/tests/stage/sort.spec.ts @@ -0,0 +1,38 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Ascending Descending Sort + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/#ascending-descending-sort} + */ +function test0() { + type users = { + age: bson.Int32 | number; + posts: bson.Int32 | number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $sort: { age: -1, posts: 1 } }, + ]; +} + +/** + * Text Score Metadata Sort + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/#text-score-metadata-sort} + */ +function test1() { + type users = { + age: bson.Int32 | number; + posts: bson.Int32 | number; + name: string; + }; + + const aggregation: schema.Pipeline = [ + { $match: { $text: { $search: 'operating' } } }, + { $sort: { score: { $meta: 'textScore' }, posts: -1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/sortByCount.spec.ts b/packages/mql-typescript/tests/stage/sortByCount.spec.ts new file mode 100644 index 00000000..d8fe9ac8 --- /dev/null +++ b/packages/mql-typescript/tests/stage/sortByCount.spec.ts @@ -0,0 +1,24 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Example + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/#examples} + */ +function test0() { + type exhibits = { + _id: number; + title: string; + artist: string; + year: number; + tags: Array; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$tags' } }, + { $sortByCount: '$tags' }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/unionWith.spec.ts b/packages/mql-typescript/tests/stage/unionWith.spec.ts new file mode 100644 index 00000000..1a661717 --- /dev/null +++ b/packages/mql-typescript/tests/stage/unionWith.spec.ts @@ -0,0 +1,51 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Report 1 All Sales by Year and Stores and Items + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/#report-1--all-sales-by-year-and-stores-and-items} + */ +function test0() { + type sales_2017 = { + store: string; + item: string; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { $set: { _id: '2017' } }, + { + $unionWith: { coll: 'sales_2018', pipeline: [{ $set: { _id: '2018' } }] }, + }, + { + $unionWith: { coll: 'sales_2019', pipeline: [{ $set: { _id: '2019' } }] }, + }, + { + $unionWith: { coll: 'sales_2020', pipeline: [{ $set: { _id: '2020' } }] }, + }, + { $sort: { _id: 1, store: 1, item: 1 } }, + ]; +} + +/** + * Report 2 Aggregated Sales by Items + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/#report-2--aggregated-sales-by-items} + */ +function test1() { + type sales_2017 = { + store: string; + item: string; + quantity: number; + }; + + const aggregation: schema.Pipeline = [ + { $unionWith: { coll: 'sales_2018' } }, + { $unionWith: { coll: 'sales_2019' } }, + { $unionWith: { coll: 'sales_2020' } }, + { $group: { _id: '$item', total: { $sum: '$quantity' } } }, + { $sort: { total: -1 } }, + ]; +} diff --git a/packages/mql-typescript/tests/stage/unset.spec.ts b/packages/mql-typescript/tests/stage/unset.spec.ts new file mode 100644 index 00000000..2ef5b245 --- /dev/null +++ b/packages/mql-typescript/tests/stage/unset.spec.ts @@ -0,0 +1,76 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Remove a Single Field + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/#remove-a-single-field} + */ +function test0() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: Array<{ + warehouse: string; + qty: number; + }>; + }; + + const aggregation: schema.Pipeline = [{ $unset: ['copies'] }]; +} + +/** + * Remove Top-Level Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/#remove-top-level-fields} + */ +function test1() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: Array<{ + warehouse: string; + qty: number; + }>; + }; + + const aggregation: schema.Pipeline = [{ $unset: ['isbn', 'copies'] }]; +} + +/** + * Remove Embedded Fields + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/#remove-embedded-fields} + */ +function test2() { + type books = { + _id: number; + title: string; + isbn: string; + author: { + last: string; + first: string; + }; + copies: Array<{ + warehouse: string; + qty: number; + }>; + }; + + const aggregation: schema.Pipeline = [ + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $unset: ['isbn', 'author.first', 'copies.warehouse'] } as any, + ]; +} diff --git a/packages/mql-typescript/tests/stage/unwind.spec.ts b/packages/mql-typescript/tests/stage/unwind.spec.ts new file mode 100644 index 00000000..b9781c68 --- /dev/null +++ b/packages/mql-typescript/tests/stage/unwind.spec.ts @@ -0,0 +1,109 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * Unwind Array + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/#unwind-array} + */ +function test0() { + type inventory = { + _id: number; + item: string; + sizes: Array; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$sizes' } }, + ]; +} + +/** + * preserveNullAndEmptyArrays + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/#preservenullandemptyarrays} + */ +function test1() { + type inventory = { + _id: number; + item: string; + sizes: Array; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$sizes', preserveNullAndEmptyArrays: true } }, + ]; +} + +/** + * includeArrayIndex + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/#includearrayindex} + */ +function test2() { + type inventory = { + _id: number; + item: string; + sizes: Array; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$sizes', includeArrayIndex: 'arrayIndex' } }, + ]; +} + +/** + * Group by Unwound Values + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/#group-by-unwound-values} + */ +function test3() { + type inventory2 = { + _id: number; + item: string; + price: bson.Decimal128; + sizes: Array | string | null; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$sizes', preserveNullAndEmptyArrays: true } }, + { $group: { _id: '$sizes', averagePrice: { $avg: '$price' } } }, + { $sort: { averagePrice: -1 } }, + ]; +} + +/** + * Unwind Embedded Arrays + * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/#unwind-embedded-arrays} + */ +function test4() { + type sales = { + _id: string; + items: Array<{ + name: string; + tags: Array; + price: bson.Decimal128; + quantity: bson.Int32 | number; + }>; + }; + + const aggregation: schema.Pipeline = [ + { $unwind: { path: '$items' } }, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { $unwind: { path: '$items.tags' } } as any, + + /** + * This stage is unsupported by the static type system, so we're casting it to 'any' (this test accesses nested fields, which is not currently supported). + */ + { + $group: { + _id: '$items.tags', + totalSalesAmount: { + $sum: { $multiply: ['$items.price', '$items.quantity'] }, + }, + }, + } as any, + ]; +} diff --git a/packages/mql-typescript/tests/stage/vectorSearch.spec.ts b/packages/mql-typescript/tests/stage/vectorSearch.spec.ts new file mode 100644 index 00000000..1234c90c --- /dev/null +++ b/packages/mql-typescript/tests/stage/vectorSearch.spec.ts @@ -0,0 +1,153 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable filename-rules/match */ +/* eslint-disable @typescript-eslint/consistent-type-imports */ +import type * as schema from '../../out/schema'; +import * as bson from 'bson'; + +/** + * ANN Basic + * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#ann-examples} + */ +function test0() { + type TestCollection = { + plot: string; + title: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $vectorSearch: { + index: 'vector_index', + path: 'plot_embedding', + queryVector: [-0.0016261312, -0.028070757, -0.011342932], + numCandidates: 150, + limit: 10, + }, + }, + { + $project: { + _id: 0, + plot: 1, + title: 1, + score: { $meta: 'vectorSearchScore' }, + }, + }, + ]; +} + +/** + * ANN Filter + * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#ann-examples} + */ +function test1() { + type movies = { + _id: { + $oid: string; + }; + title: string; + year: { + $numberInt: string; + }; + runtime: { + $numberInt: string; + }; + released: { + $date: { + $numberLong: string; + }; + }; + poster: string; + plot: string; + fullplot: string; + lastupdated: string; + type: string; + directors: Array; + imdb: { + rating: { + $numberDouble: string; + }; + votes: { + $numberInt: string; + }; + id: { + $numberInt: string; + }; + }; + cast: Array; + countries: Array; + genres: Array; + tomatoes: { + viewer: { + rating: { + $numberDouble: string; + }; + numReviews: { + $numberInt: string; + }; + }; + lastUpdated: { + $date: { + $numberLong: string; + }; + }; + }; + num_mflix_comments: { + $numberInt: string; + }; + }; + + const aggregation: schema.Pipeline = [ + { + $vectorSearch: { + index: 'vector_index', + path: 'plot_embedding', + filter: { $and: [{ year: { $lt: 1975 } }] }, + queryVector: [0.02421053, -0.022372592, -0.006231137], + numCandidates: 150, + limit: 10, + }, + }, + { + $project: { + _id: 0, + title: 1, + plot: 1, + year: 1, + score: { $meta: 'vectorSearchScore' }, + }, + }, + ]; +} + +/** + * ENN + * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/#enn-example} + */ +function test2() { + type TestCollection = { + plot: string; + title: string; + score: number; + }; + + const aggregation: schema.Pipeline = [ + { + $vectorSearch: { + index: 'vector_index', + path: 'plot_embedding', + queryVector: [-0.006954097, -0.009932499, -0.001311474], + exact: true, + limit: 10, + }, + }, + { + $project: { + _id: 0, + plot: 1, + title: 1, + score: { $meta: 'vectorSearchScore' }, + }, + }, + ]; +} From ce8e7bdd3ecb6eb35491689a140544dd86576bc5 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Tue, 10 Jun 2025 13:59:32 +0200 Subject: [PATCH 22/26] chore: remove json5 dependency --- package-lock.json | 4 ++-- packages/mql-typescript/package.json | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8f4e1a06..ae8f550b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31419,10 +31419,10 @@ "version": "0.1.0", "license": "Apache-2.0", "dependencies": { + "@mongodb-js/shell-bson-parser": "^1.2.2", "bson": "^6.10.3", "js-yaml": "^4.1.0", "jsdom": "^24.1.3", - "json5": "^2.2.3", "mongodb": "^6.9.0", "mongodb-schema": "^12.6.2", "yargs": "^17.7.2", @@ -39583,6 +39583,7 @@ "requires": { "@mongodb-js/eslint-config-devtools": "0.9.11", "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/shell-bson-parser": "^1.2.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/chai": "^4.2.21", "@types/js-yaml": "^4.0.9", @@ -39596,7 +39597,6 @@ "jsdom": "^24.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", - "json5": "^2.2.3", "mongodb": "^6.9.0", "mongodb-schema": "^12.6.2", "prettier": "^3.5.3", diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 6bd971a4..6d3c6c77 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -79,7 +79,6 @@ "bson": "^6.10.3", "js-yaml": "^4.1.0", "jsdom": "^24.1.3", - "json5": "^2.2.3", "mongodb": "^6.9.0", "mongodb-schema": "^12.6.2", "yargs": "^17.7.2", From 7cd7cde9e3b103d269b5df96d66d07011343d196 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 11 Jun 2025 12:35:29 +0200 Subject: [PATCH 23/26] Remove ejson syntax support --- package-lock.json | 640 +----------------- packages/mql-typescript/.gitattributes | 2 + packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema.ts | 13 +- .../src/driverSchema/docs-crawler.ts | 8 + packages/mql-typescript/src/generator.ts | 18 + .../src/testGenerator/test-generator.ts | 8 + .../tests/expression/bitAnd.spec.ts | 2 +- .../tests/expression/bitOr.spec.ts | 2 +- .../tests/expression/regexFind.spec.ts | 6 +- .../tests/expression/regexFindAll.spec.ts | 22 +- .../tests/expression/regexMatch.spec.ts | 8 +- .../tests/expression/split.spec.ts | 2 +- .../mql-typescript/tests/query/eq.spec.ts | 4 +- .../mql-typescript/tests/query/in.spec.ts | 5 +- .../mql-typescript/tests/query/not.spec.ts | 2 +- .../mql-typescript/tests/query/regex.spec.ts | 4 +- packages/shell-bson-parser/src/index.spec.ts | 2 +- packages/shell-bson-parser/src/scope.ts | 9 +- 19 files changed, 97 insertions(+), 662 deletions(-) diff --git a/package-lock.json b/package-lock.json index ae8f550b..a1e08ce5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10369,9 +10369,13 @@ "dev": true }, "node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "version": "22.15.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", + "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } }, "node_modules/@types/node-fetch": { "version": "2.6.3", @@ -10399,6 +10403,12 @@ "node": ">= 6" } }, + "node_modules/@types/node/node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "license": "MIT" + }, "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", @@ -30095,16 +30105,6 @@ "typescript": "^5.0.4" } }, - "packages/device-id/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/device-id/node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -30119,13 +30119,6 @@ "node": ">=14.17" } }, - "packages/device-id/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/devtools-connect": { "name": "@mongodb-js/devtools-connect", "version": "3.7.2", @@ -30177,16 +30170,6 @@ "mongodb-log-writer": "^2.4.1" } }, - "packages/devtools-connect/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/devtools-connect/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -30201,13 +30184,6 @@ "node": ">=14.17" } }, - "packages/devtools-connect/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/devtools-proxy-support": { "name": "@mongodb-js/devtools-proxy-support", "version": "0.4.4", @@ -30248,16 +30224,6 @@ "xvfb-maybe": "^0.2.1" } }, - "packages/devtools-proxy-support/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/devtools-proxy-support/node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -30306,13 +30272,6 @@ "node": ">=14.17" } }, - "packages/devtools-proxy-support/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/dl-center": { "name": "@mongodb-js/dl-center", "version": "1.3.2", @@ -30346,16 +30305,6 @@ "typescript": "^5.0.4" } }, - "packages/dl-center/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/dl-center/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -30396,13 +30345,6 @@ "node": ">=14.17" } }, - "packages/dl-center/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/dl-center/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -30451,16 +30393,6 @@ "typescript": "^5.0.4" } }, - "packages/download-url/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/download-url/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -30513,13 +30445,6 @@ "node": ">=14.17" } }, - "packages/download-url/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/download-url/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -30623,16 +30548,6 @@ "typescript": "^5.0.4" } }, - "packages/get-os-info/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/get-os-info/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -30647,13 +30562,6 @@ "node": ">=14.17" } }, - "packages/get-os-info/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/machine-id": { "name": "native-machine-id", "version": "1.1.0", @@ -30715,16 +30623,6 @@ "typescript": "^5.0.4" } }, - "packages/mongodb-cloud-info/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/mongodb-cloud-info/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -30739,13 +30637,6 @@ "node": ">=14.17" } }, - "packages/mongodb-cloud-info/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/mongodb-constants": { "name": "@mongodb-js/mongodb-constants", "version": "0.11.1", @@ -30843,16 +30734,6 @@ "typescript": "^5.0.4" } }, - "packages/mongodb-downloader/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/mongodb-downloader/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -30917,13 +30798,6 @@ "node": ">=14.17" } }, - "packages/mongodb-downloader/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/mongodb-downloader/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -31067,16 +30941,6 @@ "typescript": "^5.0.4" } }, - "packages/mongodb-runner/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/mongodb-runner/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -31104,13 +30968,6 @@ "node": ">=14.17" } }, - "packages/mongodb-runner/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/mongodb-runner/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31171,16 +31028,6 @@ "@mongosh/shell-api": "^3.11.0" } }, - "packages/mongodb-ts-autocomplete/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/mongodb-ts-autocomplete/node_modules/typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", @@ -31194,13 +31041,6 @@ "node": ">=14.17" } }, - "packages/mongodb-ts-autocomplete/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/monorepo-tools": { "name": "@mongodb-js/monorepo-tools", "version": "1.1.18", @@ -31242,16 +31082,6 @@ "typescript": "^5.0.4" } }, - "packages/monorepo-tools/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/monorepo-tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -31407,13 +31237,6 @@ "node": ">=14.17" } }, - "packages/monorepo-tools/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/mql-typescript": { "name": "@mongodb-js/mql-typescript", "version": "0.1.0", @@ -31459,16 +31282,6 @@ "@types/deep-eql": "*" } }, - "packages/mql-typescript/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/mql-typescript/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -31515,13 +31328,6 @@ "node": ">=14.17" } }, - "packages/mql-typescript/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/mql-typescript/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31577,16 +31383,6 @@ "typescript": "^5.0.4" } }, - "packages/native-machine-id/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/native-machine-id/node_modules/node-addon-api": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", @@ -31610,13 +31406,6 @@ "node": ">=14.17" } }, - "packages/native-machine-id/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/node-webpack-startup-snapshot-checker": { "version": "0.2.3", "license": "Apache-2.0", @@ -31647,16 +31436,6 @@ "typescript": "^5.0.4" } }, - "packages/node-webpack-startup-snapshot-checker/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/node-webpack-startup-snapshot-checker/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -31671,13 +31450,6 @@ "node": ">=14.17" } }, - "packages/node-webpack-startup-snapshot-checker/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/oidc-http-server-pages": { "name": "@mongodb-js/oidc-http-server-pages", "version": "1.1.4", @@ -31750,16 +31522,6 @@ "typescript": "^5.0.4" } }, - "packages/oidc-mock-provider/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/oidc-mock-provider/node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -31787,13 +31549,6 @@ "node": ">=14.17" } }, - "packages/oidc-mock-provider/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/oidc-mock-provider/node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -31852,16 +31607,6 @@ "bson": "^4.6.3 || ^5 || ^6" } }, - "packages/query-parser/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/query-parser/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -31876,13 +31621,6 @@ "node": ">=14.17" } }, - "packages/query-parser/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/saslprep": { "name": "@mongodb-js/saslprep", "version": "1.2.2", @@ -31911,16 +31649,6 @@ "typescript": "^5.0.4" } }, - "packages/saslprep/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/saslprep/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -31935,13 +31663,6 @@ "node": ">=14.17" } }, - "packages/saslprep/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/sbom-tools": { "name": "@mongodb-js/sbom-tools", "version": "0.7.4", @@ -32140,16 +31861,6 @@ "@octokit/openapi-types": "^24.2.0" } }, - "packages/sbom-tools/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/sbom-tools/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -32361,13 +32072,6 @@ "node": ">=14.17" } }, - "packages/sbom-tools/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/sbom-tools/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -32505,16 +32209,6 @@ "typescript": "^5.0.4" } }, - "packages/signing-utils/node_modules/@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "packages/signing-utils/node_modules/typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", @@ -32529,13 +32223,6 @@ "node": ">=14.17" } }, - "packages/signing-utils/node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, "packages/ts-autocomplete": { "name": "@mongodb-js/ts-autocomplete", "version": "0.3.1", @@ -38913,26 +38600,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -38974,26 +38646,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -39033,15 +38690,6 @@ "xvfb-maybe": "^0.2.1" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -39067,12 +38715,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -39118,15 +38760,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -39146,12 +38779,6 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -39208,26 +38835,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -39320,15 +38932,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -39366,12 +38969,6 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -39416,25 +39013,10 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==" - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -39469,15 +39051,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -39569,12 +39142,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -39614,15 +39181,6 @@ "@types/deep-eql": "*" } }, - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -39652,12 +39210,6 @@ "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -39736,15 +39288,6 @@ "yargs": "^17.7.2" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -39761,12 +39304,6 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -39849,26 +39386,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -40014,15 +39536,6 @@ "@octokit/openapi-types": "^24.2.0" } }, - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -40148,12 +39661,6 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -40239,26 +39746,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -42177,9 +41669,19 @@ "dev": true }, "@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "version": "22.15.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.31.tgz", + "integrity": "sha512-jnVe5ULKl6tijxUhvQeNbQG/84fHfg+yMak02cT8QVhBx/F05rAVxCGBYYTh2EKz22D6JF5ktXuNwdx7b9iEGw==", + "requires": { + "undici-types": "~6.21.0" + }, + "dependencies": { + "undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" + } + } }, "@types/node-fetch": { "version": "2.6.3", @@ -51328,26 +50830,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -51385,15 +50872,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -51418,12 +50896,6 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -51510,26 +50982,11 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -51592,15 +51049,6 @@ "yargs": "^17.7.2" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -51617,12 +51065,6 @@ "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, "yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -51807,15 +51249,6 @@ "typescript": "^5.0.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "node-addon-api": { "version": "8.3.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", @@ -51826,12 +51259,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, @@ -52316,26 +51743,11 @@ "webpack-cli": "^5.1.4" }, "dependencies": { - "@types/node": { - "version": "22.15.30", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", - "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, "typescript": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true } } }, diff --git a/packages/mql-typescript/.gitattributes b/packages/mql-typescript/.gitattributes index 9d89191d..97ab88a9 100644 --- a/packages/mql-typescript/.gitattributes +++ b/packages/mql-typescript/.gitattributes @@ -1,2 +1,4 @@ tests/**/*.spec.ts linguist-generated=true src/metaschema.ts linguist-generated=true +out/*.ts linguist-generated=true +out/*.js linguist-generated=true diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 37a957cc..34b9a20c 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 37a957ccafa002d3e322c455205d5f848b4dfe43 +Subproject commit 34b9a20c85886127908ea94609c6bba3e021859b diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.ts index 6b727628..9163ee0d 100644 --- a/packages/mql-typescript/out/schema.ts +++ b/packages/mql-typescript/out/schema.ts @@ -5389,14 +5389,11 @@ export namespace Aggregation.Stage { } } -export type Int = number | bson.Int32 | { $numberInt: string }; -export type Double = number | bson.Double | { $numberDouble: string }; -export type Decimal = bson.Decimal128 | { $numberDecimal: string }; -export type Regex = - | RegExp - | bson.BSONRegExp - | { pattern: string; options?: string }; -export type Long = bigint | bson.Long | { $numberLong: string }; +export type Int = number | bson.Int32; +export type Double = number | bson.Double; +export type Decimal = bson.Decimal128; +export type Regex = RegExp | bson.BSONRegExp; +export type Long = bigint | bson.Long; export type Javascript = bson.Code | Function | string; export type Geometry = | { type: 'Point'; coordinates: number[] } diff --git a/packages/mql-typescript/src/driverSchema/docs-crawler.ts b/packages/mql-typescript/src/driverSchema/docs-crawler.ts index b04bc260..2854321a 100644 --- a/packages/mql-typescript/src/driverSchema/docs-crawler.ts +++ b/packages/mql-typescript/src/driverSchema/docs-crawler.ts @@ -29,6 +29,14 @@ export class DocsCrawler { // Insert commas between array elements json = json.replace(/\}\s*\{/g, '},{'); + // There are a few cases in the docs examples where we construct a NumberDecimal + // from a js number rather than a string, which is deprecated (due to being imprecise). + // See https://jira.mongodb.org/browse/DOCSP-50657 + json = json.replace( + /NumberDecimal\((?[\d.]*)\)/g, + 'NumberDecimal("$")', + ); + try { let result = parse(json, { mode: ParseMode.Loose }); diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index 94d7c517..6ed8c137 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -171,6 +171,24 @@ export abstract class GeneratorBase { ); }, }), + new yaml.Type('!bson_int64', { + kind: 'scalar', + construct(data: string) { + return bson.Long.fromString(data); + }, + predicate(data) { + return data instanceof bson.Long; + }, + represent(data) { + if (data instanceof bson.Long) { + return data.toString(); + } + + throw new Error( + `Expected bson.Long, but got ${data.constructor.name}`, + ); + }, + }), ]), }; diff --git a/packages/mql-typescript/src/testGenerator/test-generator.ts b/packages/mql-typescript/src/testGenerator/test-generator.ts index 3090fba9..8d9ca707 100644 --- a/packages/mql-typescript/src/testGenerator/test-generator.ts +++ b/packages/mql-typescript/src/testGenerator/test-generator.ts @@ -106,10 +106,18 @@ export class TestGenerator extends GeneratorBase { return `bson.ObjectId.createFromHexString('${stage.toHexString()}')`; } + if (stage instanceof bson.Long) { + return `new bson.Long('${stage.toString()}')`; + } + if (stage instanceof Date) { return `new Date('${stage.toISOString()}')`; } + if (stage instanceof bson.BSONRegExp) { + return `new bson.BSONRegExp('${stage.pattern}', '${stage.options}')`; + } + if ('$code' in stage && typeof stage.$code === 'string') { return JSON.stringify(removeNewlines(stage.$code)); } diff --git a/packages/mql-typescript/tests/expression/bitAnd.spec.ts b/packages/mql-typescript/tests/expression/bitAnd.spec.ts index cf9aa01e..a77dcd15 100644 --- a/packages/mql-typescript/tests/expression/bitAnd.spec.ts +++ b/packages/mql-typescript/tests/expression/bitAnd.spec.ts @@ -32,6 +32,6 @@ function test1() { }; const aggregation: schema.Pipeline = [ - { $project: { result: { $bitAnd: ['$a', { $numberLong: '63' }] } } }, + { $project: { result: { $bitAnd: ['$a', new bson.Long('63')] } } }, ]; } diff --git a/packages/mql-typescript/tests/expression/bitOr.spec.ts b/packages/mql-typescript/tests/expression/bitOr.spec.ts index 4563bbc0..d40d5fc5 100644 --- a/packages/mql-typescript/tests/expression/bitOr.spec.ts +++ b/packages/mql-typescript/tests/expression/bitOr.spec.ts @@ -32,6 +32,6 @@ function test1() { }; const aggregation: schema.Pipeline = [ - { $project: { result: { $bitOr: ['$a', { $numberLong: '63' }] } } }, + { $project: { result: { $bitOr: ['$a', new bson.Long('63')] } } }, ]; } diff --git a/packages/mql-typescript/tests/expression/regexFind.spec.ts b/packages/mql-typescript/tests/expression/regexFind.spec.ts index 4519ac85..ee22a286 100644 --- a/packages/mql-typescript/tests/expression/regexFind.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFind.spec.ts @@ -20,7 +20,7 @@ function test0() { returnObject: { $regexFind: { input: '$description', - regex: { pattern: 'line', options: '' }, + regex: new bson.BSONRegExp('line', ''), }, }, }, @@ -44,7 +44,7 @@ function test1() { returnObject: { $regexFind: { input: '$description', - regex: { pattern: 'line', options: 'i' }, + regex: new bson.BSONRegExp('line', 'i'), }, }, }, @@ -61,7 +61,7 @@ function test1() { returnObject: { $regexFind: { input: '$description', - regex: { pattern: 'line', options: '' }, + regex: new bson.BSONRegExp('line', ''), options: 'i', }, }, diff --git a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts index 8044aab0..51c9a1c3 100644 --- a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts @@ -20,7 +20,7 @@ function test0() { returnObject: { $regexFindAll: { input: '$description', - regex: { pattern: 'line', options: '' }, + regex: new bson.BSONRegExp('line', ''), }, }, }, @@ -44,7 +44,7 @@ function test1() { returnObject: { $regexFindAll: { input: '$description', - regex: { pattern: 'line', options: 'i' }, + regex: new bson.BSONRegExp('line', 'i'), }, }, }, @@ -61,7 +61,7 @@ function test1() { returnObject: { $regexFindAll: { input: '$description', - regex: { pattern: 'line', options: '' }, + regex: new bson.BSONRegExp('line', ''), options: 'i', }, }, @@ -86,10 +86,10 @@ function test2() { email: { $regexFindAll: { input: '$comment', - regex: { - pattern: '[a-z0-9_.+-]+@[a-z0-9_.+-]+\\.[a-z0-9_.+-]+', - options: 'i', - }, + regex: new bson.BSONRegExp( + '[a-z0-9_.+-]+@[a-z0-9_.+-]+\.[a-z0-9_.+-]+', + 'i', + ), }, }, }, @@ -114,10 +114,10 @@ function test3() { names: { $regexFindAll: { input: '$comment', - regex: { - pattern: '([a-z0-9_.+-]+)@[a-z0-9_.+-]+\\.[a-z0-9_.+-]+', - options: 'i', - }, + regex: new bson.BSONRegExp( + '([a-z0-9_.+-]+)@[a-z0-9_.+-]+\.[a-z0-9_.+-]+', + 'i', + ), }, }, }, diff --git a/packages/mql-typescript/tests/expression/regexMatch.spec.ts b/packages/mql-typescript/tests/expression/regexMatch.spec.ts index 6adcf785..efd5bee3 100644 --- a/packages/mql-typescript/tests/expression/regexMatch.spec.ts +++ b/packages/mql-typescript/tests/expression/regexMatch.spec.ts @@ -20,7 +20,7 @@ function test0() { result: { $regexMatch: { input: '$description', - regex: { pattern: 'line', options: '' }, + regex: new bson.BSONRegExp('line', ''), }, }, }, @@ -44,7 +44,7 @@ function test1() { result: { $regexMatch: { input: '$description', - regex: { pattern: 'line', options: 'i' }, + regex: new bson.BSONRegExp('line', 'i'), }, }, }, @@ -61,7 +61,7 @@ function test1() { result: { $regexMatch: { input: '$description', - regex: { pattern: 'line', options: '' }, + regex: new bson.BSONRegExp('line', ''), options: 'i', }, }, @@ -88,7 +88,7 @@ function test2() { if: { $regexMatch: { input: '$comment', - regex: { pattern: '[a-z0-9_.+-]+@mongodb.com', options: 'i' }, + regex: new bson.BSONRegExp('[a-z0-9_.+-]+@mongodb.com', 'i'), }, }, then: 'Employee', diff --git a/packages/mql-typescript/tests/expression/split.spec.ts b/packages/mql-typescript/tests/expression/split.spec.ts index ab5d5a42..4be0dff3 100644 --- a/packages/mql-typescript/tests/expression/split.spec.ts +++ b/packages/mql-typescript/tests/expression/split.spec.ts @@ -26,7 +26,7 @@ function test0() { /** * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). */ - { $match: { city_state: { pattern: '[A-Z]{2}', options: '' } } } as any, + { $match: { city_state: new bson.BSONRegExp('[A-Z]{2}', '') } } as any, /** * This stage is unsupported by the static type system, so we're casting it to 'any' (it may involve a projected field). diff --git a/packages/mql-typescript/tests/query/eq.spec.ts b/packages/mql-typescript/tests/query/eq.spec.ts index 47e03db6..a1e68caf 100644 --- a/packages/mql-typescript/tests/query/eq.spec.ts +++ b/packages/mql-typescript/tests/query/eq.spec.ts @@ -80,7 +80,7 @@ function test3() { const aggregation: schema.Pipeline = [ { $match: { company: 'MongoDB' } }, { $match: { company: { $eq: 'MongoDB' } } }, - { $match: { company: { pattern: '^MongoDB', options: '' } } }, - { $match: { company: { $eq: { pattern: '^MongoDB', options: '' } } } }, + { $match: { company: new bson.BSONRegExp('^MongoDB', '') } }, + { $match: { company: { $eq: new bson.BSONRegExp('^MongoDB', '') } } }, ]; } diff --git a/packages/mql-typescript/tests/query/in.spec.ts b/packages/mql-typescript/tests/query/in.spec.ts index 042de043..159ca727 100644 --- a/packages/mql-typescript/tests/query/in.spec.ts +++ b/packages/mql-typescript/tests/query/in.spec.ts @@ -35,10 +35,7 @@ function test1() { { $match: { tags: { - $in: [ - { pattern: '^be', options: '' }, - { pattern: '^st', options: '' }, - ], + $in: [new bson.BSONRegExp('^be', ''), new bson.BSONRegExp('^st', '')], }, }, }, diff --git a/packages/mql-typescript/tests/query/not.spec.ts b/packages/mql-typescript/tests/query/not.spec.ts index 6c55b4fc..d27cf7be 100644 --- a/packages/mql-typescript/tests/query/not.spec.ts +++ b/packages/mql-typescript/tests/query/not.spec.ts @@ -36,6 +36,6 @@ function test1() { }; const aggregation: schema.Pipeline = [ - { $match: { price: { $not: { pattern: '^p.*', options: '' } } } }, + { $match: { price: { $not: new bson.BSONRegExp('^p.*', '') } } }, ]; } diff --git a/packages/mql-typescript/tests/query/regex.spec.ts b/packages/mql-typescript/tests/query/regex.spec.ts index 9a92f4b7..aa0f1fcf 100644 --- a/packages/mql-typescript/tests/query/regex.spec.ts +++ b/packages/mql-typescript/tests/query/regex.spec.ts @@ -16,7 +16,7 @@ function test0() { }; const aggregation: schema.Pipeline = [ - { $match: { sku: { $regex: { pattern: '789$', options: '' } } } }, + { $match: { sku: { $regex: new bson.BSONRegExp('789$', '') } } }, ]; } @@ -32,6 +32,6 @@ function test1() { }; const aggregation: schema.Pipeline = [ - { $match: { sku: { $regex: { pattern: '^ABC', options: 'i' } } } }, + { $match: { sku: { $regex: new bson.BSONRegExp('^ABC', 'i') } } }, ]; } diff --git a/packages/shell-bson-parser/src/index.spec.ts b/packages/shell-bson-parser/src/index.spec.ts index 9eaaaa61..cb1342fb 100644 --- a/packages/shell-bson-parser/src/index.spec.ts +++ b/packages/shell-bson-parser/src/index.spec.ts @@ -98,7 +98,7 @@ describe('@mongodb-js/shell-bson-parser', function () { NumberDecimal: bson.Decimal128.fromString('12345'), Double: new bson.Double(10.1), Int32: new bson.Int32(10), - NumberInt: 100, + NumberInt: new bson.Int32(100), Long: new bson.Long(234, 200), NumberLong: bson.Long.fromNumber(123456789), Int64: bson.Long.fromNumber(120), diff --git a/packages/shell-bson-parser/src/scope.ts b/packages/shell-bson-parser/src/scope.ts index 2125ed1d..1485bba2 100644 --- a/packages/shell-bson-parser/src/scope.ts +++ b/packages/shell-bson-parser/src/scope.ts @@ -60,14 +60,7 @@ const SCOPE_ANY: { [x: string]: Function } = lookupMap({ return bson.Decimal128.fromString(s); }, NumberDecimal: function (s: any) { - switch (typeof s) { - case 'string': - return bson.Decimal128.fromString(s); - case 'number': - return bson.Decimal128.fromString(s.toString()); - default: - throw new Error(`${JSON.stringify(s)} is not a valid Decimal128`); - } + return bson.Decimal128.fromString(s); }, Double: function (s: any) { return new bson.Double(s); From 9a389839d9444e98576ff628047c055f9b092022 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 11 Jun 2025 13:23:18 +0200 Subject: [PATCH 24/26] remove schema-export.js, rename schema to .d.ts --- packages/mql-typescript/mongo-php-library | 2 +- packages/mql-typescript/out/schema-export.js | 2 -- .../out/{schema.ts => schema.d.ts} | 0 packages/mql-typescript/package.json | 5 +++-- .../mql-typescript/src/schema-generator.ts | 20 ++----------------- .../tests/expression/regexFindAll.spec.ts | 4 ++-- 6 files changed, 8 insertions(+), 25 deletions(-) delete mode 100644 packages/mql-typescript/out/schema-export.js rename packages/mql-typescript/out/{schema.ts => schema.d.ts} (100%) diff --git a/packages/mql-typescript/mongo-php-library b/packages/mql-typescript/mongo-php-library index 34b9a20c..4a2867b1 160000 --- a/packages/mql-typescript/mongo-php-library +++ b/packages/mql-typescript/mongo-php-library @@ -1 +1 @@ -Subproject commit 34b9a20c85886127908ea94609c6bba3e021859b +Subproject commit 4a2867b1267c96190ccf7e813f21a9d7a00236cc diff --git a/packages/mql-typescript/out/schema-export.js b/packages/mql-typescript/out/schema-export.js deleted file mode 100644 index 1cc232ef..00000000 --- a/packages/mql-typescript/out/schema-export.js +++ /dev/null @@ -1,2 +0,0 @@ -exports.schema = - '\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* eslint-disable @typescript-eslint/no-namespace */\n /* eslint-disable @typescript-eslint/ban-types */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n\n import type * as bson from \'bson\';\n import type { FilterOperators } from \'mongodb\';\n\n type Condition = AlternativeType | FilterOperators | QueryOperator;\n type AlternativeType =\n T extends ReadonlyArray ? T | RegExpOrString : RegExpOrString;\n type RegExpOrString = T extends string ? Regex | T : T;\n type KeysOfAType = {\n [k in keyof T]: Extract extends never ? never : k;\n }[keyof T]\n type RecordWithStaticFields, TValue> = T & {\n [key: string]: TValue | T[keyof T];\n };\n\n // TBD: Nested fields\n type AFieldPath = KeysOfAType & string;\n type FieldExpression = { [k: string]: FieldPath };\n\n type MultiAnalyzerSpec = {\n value: KeysOfAType;\n multi: string;\n };\n export namespace Aggregation.Accumulator {\n\n\n/**\n * A type describing the `$accumulator` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\nexport interface $accumulator {\n\n/**\n * Defines a custom accumulator function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/accumulator/}\n */\n$accumulator:{\n\n/**\n * Function used to initialize the state. The init function receives its arguments from the initArgs array expression. You can specify the function definition as either BSON type Code or String.\n */\ninit: Javascript,\n\n/**\n * Arguments passed to the init function.\n */\ninitArgs?: ResolvesToArray,\n\n/**\n * Function used to accumulate documents. The accumulate function receives its arguments from the current state and accumulateArgs array expression. The result of the accumulate function becomes the new state. You can specify the function definition as either BSON type Code or String.\n */\naccumulate: Javascript,\n\n/**\n * Arguments passed to the accumulate function. You can use accumulateArgs to specify what field value(s) to pass to the accumulate function.\n */\naccumulateArgs: ResolvesToArray,\n\n/**\n * Function used to merge two internal states. merge must be either a String or Code BSON type. merge returns the combined result of the two merged states. For information on when the merge function is called, see Merge Two States with $merge.\n */\nmerge: Javascript,\n\n/**\n * Function used to update the result of the accumulation.\n */\nfinalize?: Javascript,\n\n/**\n * The language used in the $accumulator code.\n */\nlang: string,}};\n\n\n/**\n * A type describing the `$addToSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\nexport interface $addToSet {\n\n/**\n * Returns an array of unique expression values for each group. Order of the array elements is undefined.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addToSet/}\n */\n$addToSet:Expression};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:ResolvesToNumber};\n\n\n/**\n * A type describing the `$bottom` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\nexport interface $bottom {\n\n/**\n * Returns the bottom element within a group according to the specified sort order.\n * New in MongoDB 5.2: Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottom/}\n */\n$bottom:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$bottomN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\nexport interface $bottomN {\n\n/**\n * Returns an aggregation of the bottom n elements within a group, according to the specified sort order. If the group contains fewer than n elements, $bottomN returns all elements in the group.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bottomN/}\n */\n$bottomN:{\n\n/**\n * Limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\nexport interface $count {\n\n/**\n * Returns the number of documents in the group or window.\n * Distinct from the $count pipeline stage.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count-accumulator/}\n */\n$count:Record};\n\n\n/**\n * A type describing the `$covariancePop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\nexport interface $covariancePop {\n\n/**\n * Returns the population covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covariancePop/}\n */\n$covariancePop:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$covarianceSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\nexport interface $covarianceSamp {\n\n/**\n * Returns the sample covariance of two numeric expressions.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/covarianceSamp/}\n */\n$covarianceSamp:[expression1: ResolvesToNumber,expression2: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$denseRank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\nexport interface $denseRank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition. There are no gaps in the ranks. Ties receive the same rank.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/denseRank/}\n */\n$denseRank:Record};\n\n\n/**\n * A type describing the `$derivative` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\nexport interface $derivative {\n\n/**\n * Returns the average rate of change within the specified window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/derivative/}\n */\n$derivative:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$documentNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\nexport interface $documentNumber {\n\n/**\n * Returns the position of a document (known as the document number) in the $setWindowFields stage partition. Ties result in different adjacent document numbers.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documentNumber/}\n */\n$documentNumber:Record};\n\n\n/**\n * A type describing the `$expMovingAvg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\nexport interface $expMovingAvg {\n\n/**\n * Returns the exponential moving average for the numeric expression.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/expMovingAvg/}\n */\n$expMovingAvg:{input: ResolvesToNumber,\n\n/**\n * An integer that specifies the number of historical documents that have a significant mathematical weight in the exponential moving average calculation, with the most recent documents contributing the most weight.\n * You must specify either N or alpha. You cannot specify both.\n * The N value is used in this formula to calculate the current result based on the expression value from the current document being read and the previous result of the calculation:\n */\nN?: Int,\n\n/**\n * A double that specifies the exponential decay value to use in the exponential moving average calculation. A higher alpha value assigns a lower mathematical significance to previous results from the calculation.\n * You must specify either N or alpha. You cannot specify both.\n */\nalpha?: Double,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:Expression};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\nexport interface $firstN {\n\n/**\n * Returns an aggregation of the first n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $firstN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * A positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$integral` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\nexport interface $integral {\n\n/**\n * Returns the approximation of the area under a curve.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/integral/}\n */\n$integral:{input: ResolvesToNumber | ResolvesToDate,\n\n/**\n * A string that specifies the time unit. Use one of these strings: "week", "day","hour", "minute", "second", "millisecond".\n * If the sortBy field is not a date, you must omit a unit. If you specify a unit, you must specify a date in the sortBy field.\n */\nunit?: TimeUnit,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in a group or window.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:Expression};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\nexport interface $lastN {\n\n/**\n * Returns an aggregation of the last n elements within a group.\n * The elements returned are meaningful only if in a specified sort order.\n * If the group contains fewer than n elements, $lastN returns all elements in the group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/}\n */\n$lastN:{\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: Expression,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$linearFill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\nexport interface $linearFill {\n\n/**\n * Fills null and missing fields in a window using linear interpolation based on surrounding field values.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/linearFill/}\n */\n$linearFill:ResolvesToNumber};\n\n\n/**\n * A type describing the `$locf` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\nexport interface $locf {\n\n/**\n * Last observation carried forward. Sets values for null and missing fields in a window to the last non-null value for the field.\n * Available in the $setWindowFields stage.\n * New in MongoDB 5.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/locf/}\n */\n$locf:Expression};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:Expression};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:ResolvesToObject};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:Expression};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: ResolvesToNumber,\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$push` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\nexport interface $push {\n\n/**\n * Returns an array of values that result from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/push/}\n */\n$push:Expression};\n\n\n/**\n * A type describing the `$rank` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\nexport interface $rank {\n\n/**\n * Returns the document position (known as the rank) relative to other documents in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rank/}\n */\n$rank:Record};\n\n\n/**\n * A type describing the `$shift` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\nexport interface $shift {\n\n/**\n * Returns the value from an expression applied to a document in a specified position relative to the current document in the $setWindowFields stage partition.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shift/}\n */\n$shift:{\n\n/**\n * Specifies an expression to evaluate and return in the output.\n */\noutput: Expression,\n\n/**\n * Specifies an integer with a numeric document position relative to the current document in the output.\n * For example:\n * 1 specifies the document position after the current document.\n * -1 specifies the document position before the current document.\n * -2 specifies the document position that is two positions before the current document.\n */\nby: Int,\n\n/**\n * Specifies an optional default expression to evaluate if the document position is outside of the implicit $setWindowFields stage window. The implicit window contains all the documents in the partition.\n * The default expression must evaluate to a constant value.\n * If you do not specify a default expression, $shift returns null for documents whose positions are outside of the implicit $setWindowFields stage window.\n */\ndefault: Expression,}};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:ResolvesToNumber};\n\n\n/**\n * A type describing the `$top` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\nexport interface $top {\n\n/**\n * Returns the top element within a group according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/top/}\n */\n$top:{\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n\n\n/**\n * A type describing the `$topN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\nexport interface $topN {\n\n/**\n * Returns an aggregation of the top n fields within a group, according to the specified sort order.\n * New in MongoDB 5.2.\n * Available in the $group and $setWindowFields stages.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/topN/}\n */\n$topN:{\n\n/**\n * limits the number of results per group and has to be a positive integral expression that is either a constant or depends on the _id value for $group.\n */\nn: ResolvesToInt,\n\n/**\n * Specifies the order of results, with syntax similar to $sort.\n */\nsortBy: SortBy,\n\n/**\n * Represents the output for each element in the group and can be any expression.\n */\noutput: Expression,}};\n};\nexport namespace Aggregation.Expression {\n\n\n/**\n * A type describing the `$abs` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\nexport interface $abs {\n\n/**\n * Returns the absolute value of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/abs/}\n */\n$abs:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\nexport interface $acos {\n\n/**\n * Returns the inverse cosine (arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acos/}\n */\n$acos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$acosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\nexport interface $acosh {\n\n/**\n * Returns the inverse hyperbolic cosine (hyperbolic arc cosine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/acosh/}\n */\n$acosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$add` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\nexport interface $add {\n\n/**\n * Adds numbers to return the sum, or adds numbers and a date to return a new date. If adding numbers and a date, treats the numbers as milliseconds. Accepts any number of argument expressions, but at most, one expression can resolve to a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/add/}\n */\n$add:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to either all numbers or to numbers and a date.\n */\n...(ResolvesToNumber | ResolvesToDate)[],]};\n\n\n/**\n * A type describing the `$allElementsTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\nexport interface $allElementsTrue {\n\n/**\n * Returns true if no element of a set evaluates to false, otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/allElementsTrue/}\n */\n$allElementsTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\nexport interface $and {\n\n/**\n * Returns true only when all its expressions evaluate to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/and/}\n */\n$and:[...(Expression | ResolvesToBool | ResolvesToNumber | ResolvesToString | ResolvesToNull)[],]};\n\n\n/**\n * A type describing the `$anyElementTrue` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\nexport interface $anyElementTrue {\n\n/**\n * Returns true if any elements of a set evaluate to true; otherwise, returns false. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/anyElementTrue/}\n */\n$anyElementTrue:[expression: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$arrayElemAt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\nexport interface $arrayElemAt {\n\n/**\n * Returns the element at the specified array index.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayElemAt/}\n */\n$arrayElemAt:[array: ResolvesToArray,idx: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$arrayToObject` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\nexport interface $arrayToObject {\n\n/**\n * Converts an array of key value pairs to a document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/arrayToObject/}\n */\n$arrayToObject:[array: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$asin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\nexport interface $asin {\n\n/**\n * Returns the inverse sin (arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asin/}\n */\n$asin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$asinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\nexport interface $asinh {\n\n/**\n * Returns the inverse hyperbolic sine (hyperbolic arc sine) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/asinh/}\n */\n$asinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\nexport interface $atan {\n\n/**\n * Returns the inverse tangent (arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan/}\n */\n$atan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$atan2` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\nexport interface $atan2 {\n\n/**\n * Returns the inverse tangent (arc tangent) of y / x in radians, where y and x are the first and second values passed to the expression respectively.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atan2/}\n */\n$atan2:[\n\n/**\n * $atan2 takes any valid expression that resolves to a number.\n * $atan2 returns values in radians. Use $radiansToDegrees operator to convert the output value from radians to degrees.\n * By default $atan returns values as a double. $atan2 can also return values as a 128-bit decimal as long as the expression resolves to a 128-bit decimal value.\n */\ny: ResolvesToNumber,x: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$atanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\nexport interface $atanh {\n\n/**\n * Returns the inverse hyperbolic tangent (hyperbolic arc tangent) of a value in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/atanh/}\n */\n$atanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$avg` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\nexport interface $avg {\n\n/**\n * Returns an average of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/avg/}\n */\n$avg:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$binarySize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\nexport interface $binarySize {\n\n/**\n * Returns the size of a given string or binary data value\'s content in bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/binarySize/}\n */\n$binarySize:ResolvesToString | ResolvesToBinData | ResolvesToNull};\n\n\n/**\n * A type describing the `$bitAnd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\nexport interface $bitAnd {\n\n/**\n * Returns the result of a bitwise and operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitAnd/}\n */\n$bitAnd:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitNot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\nexport interface $bitNot {\n\n/**\n * Returns the result of a bitwise not operation on a single argument or an array that contains a single int or long value.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitNot/}\n */\n$bitNot:ResolvesToInt | ResolvesToLong};\n\n\n/**\n * A type describing the `$bitOr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\nexport interface $bitOr {\n\n/**\n * Returns the result of a bitwise or operation on an array of int or long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitOr/}\n */\n$bitOr:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bitXor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\nexport interface $bitXor {\n\n/**\n * Returns the result of a bitwise xor (exclusive or) operation on an array of int and long values.\n * New in MongoDB 6.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bitXor/}\n */\n$bitXor:[...(ResolvesToInt | ResolvesToLong)[],]};\n\n\n/**\n * A type describing the `$bsonSize` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\nexport interface $bsonSize {\n\n/**\n * Returns the size in bytes of a given document (i.e. BSON type Object) when encoded as BSON.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bsonSize/}\n */\n$bsonSize:ResolvesToObject | ResolvesToNull};\n\n\n/**\n * A type describing the `$case` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $case {\n\n/**\n * Represents a single case in a $switch expression\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$case:{\n\n/**\n * Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n */\ncase: ResolvesToBool,\n\n/**\n * Can be any valid expression.\n */\nthen: Expression,}};\n\n\n/**\n * A type describing the `$ceil` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\nexport interface $ceil {\n\n/**\n * Returns the smallest integer greater than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ceil/}\n */\n$ceil:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\nexport interface $cmp {\n\n/**\n * Returns 0 if the two values are equivalent, 1 if the first value is greater than the second, and -1 if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cmp/}\n */\n$cmp:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$concat` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\nexport interface $concat {\n\n/**\n * Concatenates any number of strings.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concat/}\n */\n$concat:[...(ResolvesToString)[],]};\n\n\n/**\n * A type describing the `$concatArrays` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\nexport interface $concatArrays {\n\n/**\n * Concatenates arrays to return the concatenated array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/concatArrays/}\n */\n$concatArrays:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$cond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\nexport interface $cond {\n\n/**\n * A ternary operator that evaluates one expression, and depending on the result, returns the value of one of the other two expressions. Accepts either three expressions in an ordered list or three named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cond/}\n */\n$cond:{if: ResolvesToBool,then: Expression,else: Expression,}};\n\n\n/**\n * A type describing the `$convert` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\nexport interface $convert {\n\n/**\n * Converts a value to a specified type.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/convert/}\n */\n$convert:{input: Expression,to: ResolvesToString | ResolvesToInt,\n\n/**\n * The value to return on encountering an error during conversion, including unsupported type conversions. The arguments can be any valid expression.\n * If unspecified, the operation throws an error upon encountering an error and stops.\n */\nonError?: Expression,\n\n/**\n * The value to return if the input is null or missing. The arguments can be any valid expression.\n * If unspecified, $convert returns null if the input is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$cos` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\nexport interface $cos {\n\n/**\n * Returns the cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cos/}\n */\n$cos:ResolvesToNumber};\n\n\n/**\n * A type describing the `$cosh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\nexport interface $cosh {\n\n/**\n * Returns the hyperbolic cosine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/cosh/}\n */\n$cosh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$dateAdd` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\nexport interface $dateAdd {\n\n/**\n * Adds a number of time units to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateAdd/}\n */\n$dateAdd:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateDiff` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\nexport interface $dateDiff {\n\n/**\n * Returns the difference between two dates.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateDiff/}\n */\n$dateDiff:{\n\n/**\n * The start of the time period. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The end of the time period. The endDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nendDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The time measurement unit between the startDate and endDate\n */\nunit: TimeUnit,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * Used when the unit is equal to week. Defaults to Sunday. The startOfWeek parameter is an expression that resolves to a case insensitive string\n */\nstartOfWeek?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\nexport interface $dateFromParts {\n\n/**\n * Constructs a BSON Date object given the date\'s constituent parts.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromParts/}\n */\n$dateFromParts:{\n\n/**\n * Calendar year. Can be any expression that evaluates to a number.\n */\nyear?: ResolvesToNumber,\n\n/**\n * ISO Week Date Year. Can be any expression that evaluates to a number.\n */\nisoWeekYear?: ResolvesToNumber,\n\n/**\n * Month. Defaults to 1.\n */\nmonth?: ResolvesToNumber,\n\n/**\n * Week of year. Defaults to 1.\n */\nisoWeek?: ResolvesToNumber,\n\n/**\n * Day of month. Defaults to 1.\n */\nday?: ResolvesToNumber,\n\n/**\n * Day of week (Monday 1 - Sunday 7). Defaults to 1.\n */\nisoDayOfWeek?: ResolvesToNumber,\n\n/**\n * Hour. Defaults to 0.\n */\nhour?: ResolvesToNumber,\n\n/**\n * Minute. Defaults to 0.\n */\nminute?: ResolvesToNumber,\n\n/**\n * Second. Defaults to 0.\n */\nsecond?: ResolvesToNumber,\n\n/**\n * Millisecond. Defaults to 0.\n */\nmillisecond?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateFromString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\nexport interface $dateFromString {\n\n/**\n * Converts a date/time string to a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateFromString/}\n */\n$dateFromString:{\n\n/**\n * The date/time string to convert to a date object.\n */\ndateString: ResolvesToString,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If $dateFromString encounters an error while parsing the given dateString, it outputs the result value of the provided onError expression. This result value can be of any type.\n * If you do not specify onError, $dateFromString throws an error if it cannot parse dateString.\n */\nonError?: Expression,\n\n/**\n * If the dateString provided to $dateFromString is null or missing, it outputs the result value of the provided onNull expression. This result value can be of any type.\n * If you do not specify onNull and dateString is null or missing, then $dateFromString outputs null.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateSubtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\nexport interface $dateSubtract {\n\n/**\n * Subtracts a number of time units from a date object.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateSubtract/}\n */\n$dateSubtract:{\n\n/**\n * The beginning date, in UTC, for the addition operation. The startDate can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\nstartDate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit used to measure the amount of time added to the startDate.\n */\nunit: TimeUnit,amount: ResolvesToInt | ResolvesToLong,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dateToParts` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\nexport interface $dateToParts {\n\n/**\n * Returns a document containing the constituent parts of a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToParts/}\n */\n$dateToParts:{\n\n/**\n * The input date for which to return parts. date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * If set to true, modifies the output document to use ISO week date fields. Defaults to false.\n */\niso8601?: boolean,}};\n\n\n/**\n * A type describing the `$dateToString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\nexport interface $dateToString {\n\n/**\n * Returns the date as a formatted string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateToString/}\n */\n$dateToString:{\n\n/**\n * The date to convert to string. Must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The date format specification of the dateString. The format can be any expression that evaluates to a string literal, containing 0 or more format specifiers.\n * If unspecified, $dateFromString uses "%Y-%m-%dT%H:%M:%S.%LZ" as the default format but accepts a variety of formats and attempts to parse the dateString if possible.\n */\nformat?: ResolvesToString,\n\n/**\n * The time zone to use to format the date.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The value to return if the date is null or missing.\n * If unspecified, $dateToString returns null if the date is null or missing.\n */\nonNull?: Expression,}};\n\n\n/**\n * A type describing the `$dateTrunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\nexport interface $dateTrunc {\n\n/**\n * Truncates a date.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dateTrunc/}\n */\n$dateTrunc:{\n\n/**\n * The date to truncate, specified in UTC. The date can be any expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The unit of time, specified as an expression that must resolve to one of these strings: year, quarter, week, month, day, hour, minute, second.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nunit: TimeUnit,\n\n/**\n * The numeric time value, specified as an expression that must resolve to a positive non-zero number. Defaults to 1.\n * Together, binSize and unit specify the time period used in the $dateTrunc calculation.\n */\nbinSize?: ResolvesToNumber,\n\n/**\n * The timezone to carry out the operation. $timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,\n\n/**\n * The start of the week. Used when\n * unit is week. Defaults to Sunday.\n */\nstartOfWeek?: string,}};\n\n\n/**\n * A type describing the `$dayOfMonth` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\nexport interface $dayOfMonth {\n\n/**\n * Returns the day of the month for a date as a number between 1 and 31.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfMonth/}\n */\n$dayOfMonth:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\nexport interface $dayOfWeek {\n\n/**\n * Returns the day of the week for a date as a number between 1 (Sunday) and 7 (Saturday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfWeek/}\n */\n$dayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$dayOfYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\nexport interface $dayOfYear {\n\n/**\n * Returns the day of the year for a date as a number between 1 and 366 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/dayOfYear/}\n */\n$dayOfYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$degreesToRadians` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\nexport interface $degreesToRadians {\n\n/**\n * Converts a value from degrees to radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/degreesToRadians/}\n */\n$degreesToRadians:ResolvesToNumber};\n\n\n/**\n * A type describing the `$divide` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\nexport interface $divide {\n\n/**\n * Returns the result of dividing the first number by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/divide/}\n */\n$divide:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. the first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\nexport interface $eq {\n\n/**\n * Returns true if the values are equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/eq/}\n */\n$eq:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$exp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\nexport interface $exp {\n\n/**\n * Raises e to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/exp/}\n */\n$exp:ResolvesToNumber};\n\n\n/**\n * A type describing the `$filter` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\nexport interface $filter {\n\n/**\n * Selects a subset of the array to return an array with only the elements that match the filter condition.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/filter/}\n */\n$filter:{input: ResolvesToArray,\n\n/**\n * An expression that resolves to a boolean value used to determine if an element should be included in the output array. The expression references each element of the input array individually with the variable name specified in as.\n */\ncond: ResolvesToBool,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: string,\n\n/**\n * A number expression that restricts the number of matching array elements that $filter returns. You cannot specify a limit less than 1. The matching array elements are returned in the order they appear in the input array.\n * If the specified limit is greater than the number of matching array elements, $filter returns all matching array elements. If the limit is null, $filter returns all matching array elements.\n */\nlimit?: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$first` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\nexport interface $first {\n\n/**\n * Returns the result of an expression for the first document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/first/}\n */\n$first:ResolvesToArray};\n\n\n/**\n * A type describing the `$firstN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\nexport interface $firstN {\n\n/**\n * Returns a specified number of elements from the beginning of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/firstN-array-element/}\n */\n$firstN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$floor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\nexport interface $floor {\n\n/**\n * Returns the largest integer less than or equal to the specified number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/floor/}\n */\n$floor:ResolvesToNumber};\n\n\n/**\n * A type describing the `$function` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\nexport interface $function {\n\n/**\n * Defines a custom function.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/function/}\n */\n$function:{\n\n/**\n * The function definition. You can specify the function definition as either BSON\\JavaScript or string.\n * function(arg1, arg2, ...) { ... }\n */\nbody: Javascript,\n\n/**\n * Arguments passed to the function body. If the body function does not take an argument, you can specify an empty array [ ].\n */\nargs: unknown[],lang: string,}};\n\n\n/**\n * A type describing the `$getField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\nexport interface $getField {\n\n/**\n * Returns the value of a specified field from a document. You can use $getField to retrieve the value of fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/getField/}\n */\n$getField:{\n\n/**\n * Field in the input object for which you want to return a value. field can be any valid expression that resolves to a string constant.\n * If field begins with a dollar sign ($), place the field name inside of a $literal expression to return its value.\n */\nfield: ResolvesToString,\n\n/**\n * Default: $$CURRENT\n * A valid expression that contains the field for which you want to return a value. input must resolve to an object, missing, null, or undefined. If omitted, defaults to the document currently being processed in the pipeline ($$CURRENT).\n */\ninput?: Expression,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\nexport interface $gt {\n\n/**\n * Returns true if the first value is greater than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gt/}\n */\n$gt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\nexport interface $gte {\n\n/**\n * Returns true if the first value is greater than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/gte/}\n */\n$gte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$hour` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\nexport interface $hour {\n\n/**\n * Returns the hour for a date as a number between 0 and 23.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/hour/}\n */\n$hour:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$ifNull` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\nexport interface $ifNull {\n\n/**\n * Returns either the non-null result of the first expression or the result of the second expression if the first expression results in a null result. Null result encompasses instances of undefined values or missing fields. Accepts two expressions as arguments. The result of the second expression can be null.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ifNull/}\n */\n$ifNull:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\nexport interface $in {\n\n/**\n * Returns a boolean indicating whether a specified value is in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/}\n */\n$in:[\n\n/**\n * Any valid expression expression.\n */\nexpression: Expression,\n\n/**\n * Any valid expression that resolves to an array.\n */\narray: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$indexOfArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\nexport interface $indexOfArray {\n\n/**\n * Searches an array for an occurrence of a specified value and returns the array index of the first occurrence. Array indexes start at zero.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfArray/}\n */\n$indexOfArray:[\n\n/**\n * Can be any valid expression as long as it resolves to an array.\n * If the array expression resolves to a value of null or refers to a field that is missing, $indexOfArray returns null.\n * If the array expression does not resolve to an array or null nor refers to a missing field, $indexOfArray returns an error.\n */\narray: ResolvesToArray,search: Expression,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\nexport interface $indexOfBytes {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 byte index of the first occurrence. If the substring is not found, returns -1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfBytes/}\n */\n$indexOfBytes:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfBytes returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfBytes returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$indexOfCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\nexport interface $indexOfCP {\n\n/**\n * Searches a string for an occurrence of a substring and returns the UTF-8 code point index of the first occurrence. If the substring is not found, returns -1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexOfCP/}\n */\n$indexOfCP:[\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n * If the string expression resolves to a value of null or refers to a field that is missing, $indexOfCP returns null.\n * If the string expression does not resolve to a string or null nor refers to a missing field, $indexOfCP returns an error.\n */\nstring: ResolvesToString,\n\n/**\n * Can be any valid expression as long as it resolves to a string.\n */\nsubstring: ResolvesToString,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the starting index position for the search. Can be any valid expression that resolves to a non-negative integral number.\n * If unspecified, the starting index position for the search is the beginning of the string.\n */\nstart?: ResolvesToInt,\n\n/**\n * An integer, or a number that can be represented as integers (such as 2.0), that specifies the ending index position for the search. Can be any valid expression that resolves to a non-negative integral number. If you specify a index value, you should also specify a index value; otherwise, $indexOfArray uses the value as the index value instead of the value.\n * If unspecified, the ending index position for the search is the end of the string.\n */\nend?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$isArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\nexport interface $isArray {\n\n/**\n * Determines if the operand is an array. Returns a boolean.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isArray/}\n */\n$isArray:[expression: Expression,]};\n\n\n/**\n * A type describing the `$isNumber` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\nexport interface $isNumber {\n\n/**\n * Returns boolean true if the specified expression resolves to an integer, decimal, double, or long.\n * Returns boolean false if the expression resolves to any other BSON type, null, or a missing field.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isNumber/}\n */\n$isNumber:Expression};\n\n\n/**\n * A type describing the `$isoDayOfWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\nexport interface $isoDayOfWeek {\n\n/**\n * Returns the weekday number in ISO 8601 format, ranging from 1 (for Monday) to 7 (for Sunday).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoDayOfWeek/}\n */\n$isoDayOfWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeek` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\nexport interface $isoWeek {\n\n/**\n * Returns the week number in ISO 8601 format, ranging from 1 to 53. Week numbers start at 1 with the week (Monday through Sunday) that contains the year\'s first Thursday.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeek/}\n */\n$isoWeek:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$isoWeekYear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\nexport interface $isoWeekYear {\n\n/**\n * Returns the year number in ISO 8601 format. The year starts with the Monday of week 1 (ISO 8601) and ends with the Sunday of the last week (ISO 8601).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/isoWeekYear/}\n */\n$isoWeekYear:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$last` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\nexport interface $last {\n\n/**\n * Returns the result of an expression for the last document in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/last/}\n */\n$last:ResolvesToArray};\n\n\n/**\n * A type describing the `$lastN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\nexport interface $lastN {\n\n/**\n * Returns a specified number of elements from the end of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lastN/#array-operator}\n */\n$lastN:{\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $firstN returns.\n */\nn: ResolvesToInt,\n\n/**\n * An expression that resolves to the array from which to return n elements.\n */\ninput: ResolvesToArray,}};\n\n\n/**\n * A type describing the `$let` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\nexport interface $let {\n\n/**\n * Defines variables for use within the scope of a subexpression and returns the result of the subexpression. Accepts named parameters.\n * Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/let/}\n */\n$let:{\n\n/**\n * Assignment block for the variables accessible in the in expression. To assign a variable, specify a string for the variable name and assign a valid expression for the value.\n * The variable assignments have no meaning outside the in expression, not even within the vars block itself.\n */\nvars: ExpressionMap,\n\n/**\n * The expression to evaluate.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$literal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\nexport interface $literal {\n\n/**\n * Return a value without parsing. Use for values that the aggregation pipeline may interpret as an expression. For example, use a $literal expression to a string that starts with a dollar sign ($) to avoid parsing as a field path.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/literal/}\n */\n$literal:any};\n\n\n/**\n * A type describing the `$ln` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\nexport interface $ln {\n\n/**\n * Calculates the natural log of a number.\n * $ln is equivalent to $log: [ , Math.E ] expression, where Math.E is a JavaScript representation for Euler\'s number e.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ln/}\n */\n$ln:ResolvesToNumber};\n\n\n/**\n * A type describing the `$log` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\nexport interface $log {\n\n/**\n * Calculates the log of a number in the specified base.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log/}\n */\n$log:[\n\n/**\n * Any valid expression as long as it resolves to a non-negative number.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Any valid expression as long as it resolves to a positive number greater than 1.\n */\nbase: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$log10` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\nexport interface $log10 {\n\n/**\n * Calculates the log base 10 of a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/log10/}\n */\n$log10:ResolvesToNumber};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\nexport interface $lt {\n\n/**\n * Returns true if the first value is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lt/}\n */\n$lt:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\nexport interface $lte {\n\n/**\n * Returns true if the first value is less than or equal to the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lte/}\n */\n$lte:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$ltrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\nexport interface $ltrim {\n\n/**\n * Removes whitespace or the specified characters from the beginning of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ltrim/}\n */\n$ltrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$map` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\nexport interface $map {\n\n/**\n * Applies a subexpression to each element of an array and returns the array of resulting values in order. Accepts named parameters.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/map/}\n */\n$map:{\n\n/**\n * An expression that resolves to an array.\n */\ninput: ResolvesToArray,\n\n/**\n * A name for the variable that represents each individual element of the input array. If no name is specified, the variable name defaults to this.\n */\nas?: ResolvesToString,\n\n/**\n * An expression that is applied to each element of the input array. The expression references each element individually with the variable name specified in as.\n */\nin: Expression,}};\n\n\n/**\n * A type describing the `$max` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\nexport interface $max {\n\n/**\n * Returns the maximum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/max/}\n */\n$max:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$maxN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\nexport interface $maxN {\n\n/**\n * Returns the n largest values in an array. Distinct from the $maxN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/maxN-array-element/}\n */\n$maxN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$median` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\nexport interface $median {\n\n/**\n * Returns an approximation of the median, the 50th percentile, as a scalar value.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/median/}\n */\n$median:{\n\n/**\n * $median calculates the 50th percentile value of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $median calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * The method that mongod uses to calculate the 50th percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$mergeObjects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\nexport interface $mergeObjects {\n\n/**\n * Combines multiple documents into a single document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mergeObjects/}\n */\n$mergeObjects:[\n\n/**\n * Any valid expression that resolves to a document.\n */\n...(ResolvesToObject)[],]};\n\n\n/**\n * A type describing the `$meta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\nexport interface $meta {\n\n/**\n * Access available per-document metadata related to the aggregation operation.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/meta/}\n */\n$meta:string};\n\n\n/**\n * A type describing the `$millisecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\nexport interface $millisecond {\n\n/**\n * Returns the milliseconds of a date as a number between 0 and 999.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/millisecond/}\n */\n$millisecond:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$min` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\nexport interface $min {\n\n/**\n * Returns the minimum value that results from applying an expression to each document.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/min/}\n */\n$min:[...(Expression)[],]};\n\n\n/**\n * A type describing the `$minN` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\nexport interface $minN {\n\n/**\n * Returns the n smallest values in an array. Distinct from the $minN accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minN-array-element/}\n */\n$minN:{\n\n/**\n * An expression that resolves to the array from which to return the maximal n elements.\n */\ninput: ResolvesToArray,\n\n/**\n * An expression that resolves to a positive integer. The integer specifies the number of array elements that $maxN returns.\n */\nn: ResolvesToInt,}};\n\n\n/**\n * A type describing the `$minute` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\nexport interface $minute {\n\n/**\n * Returns the minute for a date as a number between 0 and 59.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/minute/}\n */\n$minute:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\nexport interface $mod {\n\n/**\n * Returns the remainder of the first number divided by the second. Accepts two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/mod/}\n */\n$mod:[\n\n/**\n * The first argument is the dividend, and the second argument is the divisor; i.e. first argument is divided by the second argument.\n */\ndividend: ResolvesToNumber,divisor: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$month` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\nexport interface $month {\n\n/**\n * Returns the month for a date as a number between 1 (January) and 12 (December).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/month/}\n */\n$month:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$multiply` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\nexport interface $multiply {\n\n/**\n * Multiplies numbers to return the product. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/multiply/}\n */\n$multiply:[\n\n/**\n * The arguments can be any valid expression as long as they resolve to numbers.\n * Starting in MongoDB 6.1 you can optimize the $multiply operation. To improve performance, group references at the end of the argument list.\n */\n...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\nexport interface $ne {\n\n/**\n * Returns true if the values are not equivalent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/ne/}\n */\n$ne:[expression1: Expression,expression2: Expression,]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\nexport interface $not {\n\n/**\n * Returns the boolean value that is the opposite of its argument expression. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/not/}\n */\n$not:[expression: Expression | ResolvesToBool,]};\n\n\n/**\n * A type describing the `$objectToArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\nexport interface $objectToArray {\n\n/**\n * Converts a document to an array of documents representing key-value pairs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/objectToArray/}\n */\n$objectToArray:ResolvesToObject};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\nexport interface $or {\n\n/**\n * Returns true when any of its expressions evaluates to true. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/or/}\n */\n$or:[...(Expression | ResolvesToBool)[],]};\n\n\n/**\n * A type describing the `$percentile` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\nexport interface $percentile {\n\n/**\n * Returns an array of scalar values that correspond to specified percentile values.\n * New in MongoDB 7.0.\n * This operator is available as an accumulator in these stages:\n * $group\n * $setWindowFields\n * It is also available as an aggregation expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/percentile/}\n */\n$percentile:{\n\n/**\n * $percentile calculates the percentile values of this data. input must be a field name or an expression that evaluates to a numeric type. If the expression cannot be converted to a numeric type, the $percentile calculation ignores it.\n */\ninput: (ResolvesToNumber) | (ResolvesToNumber)[],\n\n/**\n * $percentile calculates a percentile value for each element in p. The elements represent percentages and must evaluate to numeric values in the range 0.0 to 1.0, inclusive.\n * $percentile returns results in the same order as the elements in p.\n */\np: ResolvesToArray,\n\n/**\n * The method that mongod uses to calculate the percentile value. The method must be \'approximate\'.\n */\nmethod: AccumulatorPercentile,}};\n\n\n/**\n * A type describing the `$pow` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\nexport interface $pow {\n\n/**\n * Raises a number to the specified exponent.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/pow/}\n */\n$pow:[number: ResolvesToNumber,exponent: ResolvesToNumber,]};\n\n\n/**\n * A type describing the `$radiansToDegrees` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\nexport interface $radiansToDegrees {\n\n/**\n * Converts a value from radians to degrees.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/radiansToDegrees/}\n */\n$radiansToDegrees:ResolvesToNumber};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\nexport interface $rand {\n\n/**\n * Returns a random float between 0 and 1\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$range` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\nexport interface $range {\n\n/**\n * Outputs an array containing a sequence of integers according to user-defined inputs.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/range/}\n */\n$range:[\n\n/**\n * An integer that specifies the start of the sequence. Can be any valid expression that resolves to an integer.\n */\nstart: ResolvesToInt,\n\n/**\n * An integer that specifies the exclusive upper limit of the sequence. Can be any valid expression that resolves to an integer.\n */\nend: ResolvesToInt,\n\n/**\n * An integer that specifies the increment value. Can be any valid expression that resolves to a non-zero integer. Defaults to 1.\n */\nstep?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$reduce` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\nexport interface $reduce {\n\n/**\n * Applies an expression to each element in an array and combines them into a single value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reduce/}\n */\n$reduce:{\n\n/**\n * Can be any valid expression that resolves to an array.\n * If the argument resolves to a value of null or refers to a missing field, $reduce returns null.\n * If the argument does not resolve to an array or null nor refers to a missing field, $reduce returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The initial cumulative value set before in is applied to the first element of the input array.\n */\ninitialValue: Expression,\n\n/**\n * A valid expression that $reduce applies to each element in the input array in left-to-right order. Wrap the input value with $reverseArray to yield the equivalent of applying the combining expression from right-to-left.\n * During evaluation of the in expression, two variables will be available:\n * - value is the variable that represents the cumulative value of the expression.\n * - this is the variable that refers to the element being processed.\n */\nin: Expression | ExpressionMap,}};\n\n\n/**\n * A type describing the `$regexFind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\nexport interface $regexFind {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the first matched substring.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFind/}\n */\n$regexFind:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexFindAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\nexport interface $regexFindAll {\n\n/**\n * Applies a regular expression (regex) to a string and returns information on the all matched substrings.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexFindAll/}\n */\n$regexFindAll:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$regexMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\nexport interface $regexMatch {\n\n/**\n * Applies a regular expression (regex) to a string and returns a boolean that indicates if a match is found or not.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/regexMatch/}\n */\n$regexMatch:{\n\n/**\n * The string on which you wish to apply the regex pattern. Can be a string or any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The regex pattern to apply. Can be any valid expression that resolves to either a string or regex pattern //. When using the regex //, you can also specify the regex options i and m (but not the s or x options)\n */\nregex: ResolvesToString | Regex,options?: string,}};\n\n\n/**\n * A type describing the `$replaceAll` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\nexport interface $replaceAll {\n\n/**\n * Replaces all instances of a search string in an input string with a replacement string.\n * $replaceAll is both case-sensitive and diacritic-sensitive, and ignores any collation present on a collection.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceAll/}\n */\n$replaceAll:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$replaceOne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\nexport interface $replaceOne {\n\n/**\n * Replaces the first instance of a matched string in a given input.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceOne/}\n */\n$replaceOne:{\n\n/**\n * The string on which you wish to apply the find. Can be any valid expression that resolves to a string or a null. If input refers to a field that is missing, $replaceAll returns null.\n */\ninput: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to search for within the given input. Can be any valid expression that resolves to a string or a null. If find refers to a field that is missing, $replaceAll returns null.\n */\nfind: ResolvesToString | ResolvesToNull,\n\n/**\n * The string to use to replace all matched instances of find in input. Can be any valid expression that resolves to a string or a null.\n */\nreplacement: ResolvesToString | ResolvesToNull,}};\n\n\n/**\n * A type describing the `$reverseArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\nexport interface $reverseArray {\n\n/**\n * Returns an array with the elements in reverse order.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/reverseArray/}\n */\n$reverseArray:ResolvesToArray};\n\n\n/**\n * A type describing the `$round` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\nexport interface $round {\n\n/**\n * Rounds a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/round/}\n */\n$round:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $round returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$rtrim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\nexport interface $rtrim {\n\n/**\n * Removes whitespace characters, including null, or the specified characters from the end of a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/rtrim/}\n */\n$rtrim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$second` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\nexport interface $second {\n\n/**\n * Returns the seconds for a date as a number between 0 and 60 (leap seconds).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/second/}\n */\n$second:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$setDifference` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\nexport interface $setDifference {\n\n/**\n * Returns a set with elements that appear in the first set but not in the second set; i.e. performs a relative complement of the second set relative to the first. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setDifference/}\n */\n$setDifference:[\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression1: ResolvesToArray,\n\n/**\n * The arguments can be any valid expression as long as they each resolve to an array.\n */\nexpression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setEquals` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\nexport interface $setEquals {\n\n/**\n * Returns true if the input sets have the same distinct elements. Accepts two or more argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setEquals/}\n */\n$setEquals:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\nexport interface $setField {\n\n/**\n * Adds, updates, or removes a specified field in a document. You can use $setField to add, update, or remove fields with names that contain periods (.) or start with dollar signs ($).\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setField/}\n */\n$setField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,\n\n/**\n * The value that you want to assign to field. value can be any valid expression.\n * Set to $$REMOVE to remove field from the input document.\n */\nvalue: Expression,}};\n\n\n/**\n * A type describing the `$setIntersection` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\nexport interface $setIntersection {\n\n/**\n * Returns a set with elements that appear in all of the input sets. Accepts any number of argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIntersection/}\n */\n$setIntersection:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$setIsSubset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\nexport interface $setIsSubset {\n\n/**\n * Returns true if all elements of the first set appear in the second set, including when the first set equals the second set; i.e. not a strict subset. Accepts exactly two argument expressions.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setIsSubset/}\n */\n$setIsSubset:[expression1: ResolvesToArray,expression2: ResolvesToArray,]};\n\n\n/**\n * A type describing the `$setUnion` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\nexport interface $setUnion {\n\n/**\n * Returns a set with elements that appear in any of the input sets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setUnion/}\n */\n$setUnion:[...(ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$sin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\nexport interface $sin {\n\n/**\n * Returns the sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sin/}\n */\n$sin:ResolvesToNumber};\n\n\n/**\n * A type describing the `$sinh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\nexport interface $sinh {\n\n/**\n * Returns the hyperbolic sine of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sinh/}\n */\n$sinh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\nexport interface $size {\n\n/**\n * Returns the number of elements in the array. Accepts a single expression as argument.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/size/}\n */\n$size:ResolvesToArray};\n\n\n/**\n * A type describing the `$slice` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\nexport interface $slice {\n\n/**\n * Returns a subset of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/slice/}\n */\n$slice:| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n| [\n\n/**\n * Any valid expression as long as it resolves to an array.\n */\nexpression: ResolvesToArray,\n\n/**\n * Any valid expression as long as it resolves to an integer.\n * If positive, $slice determines the starting position from the start of the array. If position is greater than the number of elements, the $slice returns an empty array.\n * If negative, $slice determines the starting position from the end of the array. If the absolute value of the is greater than the number of elements, the starting position is the start of the array.\n */\nposition: ResolvesToInt,\n\n/**\n * Any valid expression as long as it resolves to an integer. If position is specified, n must resolve to a positive integer.\n * If positive, $slice returns up to the first n elements in the array. If the position is specified, $slice returns the first n elements starting from the position.\n * If negative, $slice returns up to the last n elements in the array. n cannot resolve to a negative number if is specified.\n */\nn: ResolvesToInt,]\n};\n\n\n/**\n * A type describing the `$sortArray` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\nexport interface $sortArray {\n\n/**\n * Sorts the elements of an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortArray/}\n */\n$sortArray:{\n\n/**\n * The array to be sorted.\n * The result is null if the expression: is missing, evaluates to null, or evaluates to undefined\n * If the expression evaluates to any other non-array value, the document returns an error.\n */\ninput: ResolvesToArray,\n\n/**\n * The document specifies a sort ordering.\n */\nsortBy: Int | SortSpec | SortBy,}};\n\n\n/**\n * A type describing the `$split` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\nexport interface $split {\n\n/**\n * Splits a string into substrings based on a delimiter. Returns an array of substrings. If the delimiter is not found within the string, returns an array containing the original string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/split/}\n */\n$split:[\n\n/**\n * The string to be split. string expression can be any valid expression as long as it resolves to a string.\n */\nstring: ResolvesToString,\n\n/**\n * The delimiter to use when splitting the string expression. delimiter can be any valid expression as long as it resolves to a string.\n */\ndelimiter: ResolvesToString,]};\n\n\n/**\n * A type describing the `$sqrt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\nexport interface $sqrt {\n\n/**\n * Calculates the square root.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sqrt/}\n */\n$sqrt:ResolvesToNumber};\n\n\n/**\n * A type describing the `$stdDevPop` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\nexport interface $stdDevPop {\n\n/**\n * Calculates the population standard deviation of the input values. Use if the values encompass the entire population of data you want to represent and do not wish to generalize about a larger population. $stdDevPop ignores non-numeric values.\n * If the values represent only a sample of a population of data from which to generalize about the population, use $stdDevSamp instead.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevPop/}\n */\n$stdDevPop:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$stdDevSamp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\nexport interface $stdDevSamp {\n\n/**\n * Calculates the sample standard deviation of the input values. Use if the values encompass a sample of a population of data from which to generalize about the population. $stdDevSamp ignores non-numeric values.\n * If the values represent the entire population of data or you do not wish to generalize about a larger population, use $stdDevPop instead.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/stdDevSamp/}\n */\n$stdDevSamp:[...(ResolvesToNumber)[],]};\n\n\n/**\n * A type describing the `$strLenBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\nexport interface $strLenBytes {\n\n/**\n * Returns the number of UTF-8 encoded bytes in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenBytes/}\n */\n$strLenBytes:ResolvesToString};\n\n\n/**\n * A type describing the `$strLenCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\nexport interface $strLenCP {\n\n/**\n * Returns the number of UTF-8 code points in a string.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strLenCP/}\n */\n$strLenCP:ResolvesToString};\n\n\n/**\n * A type describing the `$strcasecmp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\nexport interface $strcasecmp {\n\n/**\n * Performs case-insensitive string comparison and returns: 0 if two strings are equivalent, 1 if the first string is greater than the second, and -1 if the first string is less than the second.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/strcasecmp/}\n */\n$strcasecmp:[expression1: ResolvesToString,expression2: ResolvesToString,]};\n\n\n/**\n * A type describing the `$substr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\nexport interface $substr {\n\n/**\n * Deprecated. Use $substrBytes or $substrCP.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substr/}\n */\n$substr:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrBytes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\nexport interface $substrBytes {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 byte index (zero-based) in the string and continues for the specified number of bytes.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrBytes/}\n */\n$substrBytes:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$substrCP` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\nexport interface $substrCP {\n\n/**\n * Returns the substring of a string. Starts with the character at the specified UTF-8 code point (CP) index (zero-based) in the string and continues for the number of code points specified.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/substrCP/}\n */\n$substrCP:[string: ResolvesToString,\n\n/**\n * If start is a negative number, $substr returns an empty string "".\n */\nstart: ResolvesToInt,\n\n/**\n * If length is a negative number, $substr returns a substring that starts at the specified index and includes the rest of the string.\n */\nlength: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$subtract` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\nexport interface $subtract {\n\n/**\n * Returns the result of subtracting the second value from the first. If the two values are numbers, return the difference. If the two values are dates, return the difference in milliseconds. If the two values are a date and a number in milliseconds, return the resulting date. Accepts two argument expressions. If the two values are a date and a number, specify the date argument first as it is not meaningful to subtract a date from a number.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/subtract/}\n */\n$subtract:[expression1: ResolvesToNumber | ResolvesToDate,expression2: ResolvesToNumber | ResolvesToDate,]};\n\n\n/**\n * A type describing the `$sum` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\nexport interface $sum {\n\n/**\n * Returns a sum of numerical values. Ignores non-numeric values.\n * Changed in MongoDB 5.0: Available in the $setWindowFields stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sum/}\n */\n$sum:[...(ResolvesToNumber | ResolvesToArray)[],]};\n\n\n/**\n * A type describing the `$switch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\nexport interface $switch {\n\n/**\n * Evaluates a series of case expressions. When it finds an expression which evaluates to true, $switch executes a specified expression and breaks out of the control flow.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/switch/}\n */\n$switch:{\n\n/**\n * An array of control branch documents. Each branch is a document with the following fields:\n * - case Can be any valid expression that resolves to a boolean. If the result is not a boolean, it is coerced to a boolean value. More information about how MongoDB evaluates expressions as either true or false can be found here.\n * - then Can be any valid expression.\n * The branches array must contain at least one branch document.\n */\nbranches: unknown[],\n\n/**\n * The path to take if no branch case expression evaluates to true.\n * Although optional, if default is unspecified and no branch case evaluates to true, $switch returns an error.\n */\ndefault?: Expression,}};\n\n\n/**\n * A type describing the `$tan` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\nexport interface $tan {\n\n/**\n * Returns the tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tan/}\n */\n$tan:ResolvesToNumber};\n\n\n/**\n * A type describing the `$tanh` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\nexport interface $tanh {\n\n/**\n * Returns the hyperbolic tangent of a value that is measured in radians.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tanh/}\n */\n$tanh:ResolvesToNumber};\n\n\n/**\n * A type describing the `$toBool` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\nexport interface $toBool {\n\n/**\n * Converts value to a boolean.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toBool/}\n */\n$toBool:Expression};\n\n\n/**\n * A type describing the `$toDate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\nexport interface $toDate {\n\n/**\n * Converts value to a Date.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDate/}\n */\n$toDate:Expression};\n\n\n/**\n * A type describing the `$toDecimal` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\nexport interface $toDecimal {\n\n/**\n * Converts value to a Decimal128.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDecimal/}\n */\n$toDecimal:Expression};\n\n\n/**\n * A type describing the `$toDouble` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\nexport interface $toDouble {\n\n/**\n * Converts value to a double.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toDouble/}\n */\n$toDouble:Expression};\n\n\n/**\n * A type describing the `$toHashedIndexKey` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\nexport interface $toHashedIndexKey {\n\n/**\n * Computes and returns the hash value of the input expression using the same hash function that MongoDB uses to create a hashed index. A hash function maps a key or string to a fixed-size numeric value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toHashedIndexKey/}\n */\n$toHashedIndexKey:Expression};\n\n\n/**\n * A type describing the `$toInt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\nexport interface $toInt {\n\n/**\n * Converts value to an integer.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toInt/}\n */\n$toInt:Expression};\n\n\n/**\n * A type describing the `$toLong` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\nexport interface $toLong {\n\n/**\n * Converts value to a long.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLong/}\n */\n$toLong:Expression};\n\n\n/**\n * A type describing the `$toLower` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\nexport interface $toLower {\n\n/**\n * Converts a string to lowercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toLower/}\n */\n$toLower:ResolvesToString};\n\n\n/**\n * A type describing the `$toObjectId` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\nexport interface $toObjectId {\n\n/**\n * Converts value to an ObjectId.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toObjectId/}\n */\n$toObjectId:Expression};\n\n\n/**\n * A type describing the `$toString` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\nexport interface $toString {\n\n/**\n * Converts value to a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toString/}\n */\n$toString:Expression};\n\n\n/**\n * A type describing the `$toUpper` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\nexport interface $toUpper {\n\n/**\n * Converts a string to uppercase. Accepts a single argument expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/toUpper/}\n */\n$toUpper:ResolvesToString};\n\n\n/**\n * A type describing the `$trim` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\nexport interface $trim {\n\n/**\n * Removes whitespace or the specified characters from the beginning and end of a string.\n * New in MongoDB 4.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trim/}\n */\n$trim:{\n\n/**\n * The string to trim. The argument can be any valid expression that resolves to a string.\n */\ninput: ResolvesToString,\n\n/**\n * The character(s) to trim from the beginning of the input.\n * The argument can be any valid expression that resolves to a string. The $ltrim operator breaks down the string into individual UTF code point to trim from input.\n * If unspecified, $ltrim removes whitespace characters, including the null character.\n */\nchars?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$trunc` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\nexport interface $trunc {\n\n/**\n * Truncates a number to a whole integer or to a specified decimal place.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/trunc/}\n */\n$trunc:[\n\n/**\n * Can be any valid expression that resolves to a number. Specifically, the expression must resolve to an integer, double, decimal, or long.\n * $trunc returns an error if the expression resolves to a non-numeric data type.\n */\nnumber: ResolvesToNumber,\n\n/**\n * Can be any valid expression that resolves to an integer between -20 and 100, exclusive. e.g. -20 < place < 100. Defaults to 0.\n */\nplace?: ResolvesToInt,]};\n\n\n/**\n * A type describing the `$tsIncrement` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\nexport interface $tsIncrement {\n\n/**\n * Returns the incrementing ordinal from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsIncrement/}\n */\n$tsIncrement:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$tsSecond` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\nexport interface $tsSecond {\n\n/**\n * Returns the seconds from a timestamp as a long.\n * New in MongoDB 5.1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/tsSecond/}\n */\n$tsSecond:ResolvesToTimestamp};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\nexport interface $type {\n\n/**\n * Return the BSON data type of the field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/type/}\n */\n$type:Expression};\n\n\n/**\n * A type describing the `$unsetField` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\nexport interface $unsetField {\n\n/**\n * You can use $unsetField to remove fields with names that contain periods (.) or that start with dollar signs ($).\n * $unsetField is an alias for $setField using $$REMOVE to remove fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unsetField/}\n */\n$unsetField:{\n\n/**\n * Field in the input object that you want to add, update, or remove. field can be any valid expression that resolves to a string constant.\n */\nfield: ResolvesToString,\n\n/**\n * Document that contains the field that you want to add or update. input must resolve to an object, missing, null, or undefined.\n */\ninput: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$week` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\nexport interface $week {\n\n/**\n * Returns the week number for a date as a number between 0 (the partial week that precedes the first Sunday of the year) and 53 (leap year).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/week/}\n */\n$week:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$year` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\nexport interface $year {\n\n/**\n * Returns the year for a date as a number (e.g. 2014).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/year/}\n */\n$year:{\n\n/**\n * The date to which the operator is applied. date must be a valid expression that resolves to a Date, a Timestamp, or an ObjectID.\n */\ndate: ResolvesToDate | ResolvesToTimestamp | ResolvesToObjectId,\n\n/**\n * The timezone of the operation result. timezone must be a valid expression that resolves to a string formatted as either an Olson Timezone Identifier or a UTC Offset. If no timezone is provided, the result is displayed in UTC.\n */\ntimezone?: ResolvesToString,}};\n\n\n/**\n * A type describing the `$zip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\nexport interface $zip {\n\n/**\n * Merge two arrays together.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/zip/}\n */\n$zip:{\n\n/**\n * An array of expressions that resolve to arrays. The elements of these input arrays combine to form the arrays of the output array.\n * If any of the inputs arrays resolves to a value of null or refers to a missing field, $zip returns null.\n * If any of the inputs arrays does not resolve to an array or null nor refers to a missing field, $zip returns an error.\n */\ninputs: ResolvesToArray,\n\n/**\n * A boolean which specifies whether the length of the longest array determines the number of arrays in the output array.\n * The default value is false: the shortest array length determines the number of arrays in the output array.\n */\nuseLongestLength?: boolean,\n\n/**\n * An array of default element values to use if the input arrays have different lengths. You must specify useLongestLength: true along with this field, or else $zip will return an error.\n * If useLongestLength: true but defaults is empty or not specified, $zip uses null as the default value.\n * If specifying a non-empty defaults, you must specify a default for each input array or else $zip will return an error.\n */\ndefaults?: unknown[],}};\n};\nexport namespace Aggregation.Query {\n\n\n/**\n * A type describing the `$all` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\nexport interface $all {\n\n/**\n * Matches arrays that contain all elements specified in the query.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/all/}\n */\n$all:[...(FieldQuery)[],]};\n\n\n/**\n * A type describing the `$and` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\nexport interface $and {\n\n/**\n * Joins query clauses with a logical AND returns all documents that match the conditions of both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/and/}\n */\n$and:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$bitsAllClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\nexport interface $bitsAllClear {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllClear/}\n */\n$bitsAllClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAllSet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\nexport interface $bitsAllSet {\n\n/**\n * Matches numeric or binary values in which a set of bit positions all have a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAllSet/}\n */\n$bitsAllSet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnyClear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\nexport interface $bitsAnyClear {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnyClear/}\n */\n$bitsAnyClear:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$bitsAnySet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\nexport interface $bitsAnySet {\n\n/**\n * Matches numeric or binary values in which any bit from a set of bit positions has a value of 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/bitsAnySet/}\n */\n$bitsAnySet:(Int | bson.Binary) | (Int | bson.Binary)[]};\n\n\n/**\n * A type describing the `$box` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\nexport interface $box {\n\n/**\n * Specifies a rectangular box using legacy coordinate pairs for $geoWithin queries. The 2d index supports $box.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/box/}\n */\n$box:unknown[]};\n\n\n/**\n * A type describing the `$center` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\nexport interface $center {\n\n/**\n * Specifies a circle using legacy coordinate pairs to $geoWithin queries when using planar geometry. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/center/}\n */\n$center:unknown[]};\n\n\n/**\n * A type describing the `$centerSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\nexport interface $centerSphere {\n\n/**\n * Specifies a circle using either legacy coordinate pairs or GeoJSON format for $geoWithin queries when using spherical geometry. The 2dsphere and 2d indexes support $centerSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/centerSphere/}\n */\n$centerSphere:unknown[]};\n\n\n/**\n * A type describing the `$elemMatch` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\nexport interface $elemMatch {\n\n/**\n * The $elemMatch operator matches documents that contain an array field with at least one element that matches all the specified query criteria.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/elemMatch/}\n */\n$elemMatch:Query | FieldQuery};\n\n\n/**\n * A type describing the `$eq` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\nexport interface $eq {\n\n/**\n * Matches values that are equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/eq/}\n */\n$eq:Expression};\n\n\n/**\n * A type describing the `$exists` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\nexport interface $exists {\n\n/**\n * Matches documents that have the specified field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/exists/}\n */\n$exists:boolean};\n\n\n/**\n * A type describing the `$expr` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\nexport interface $expr {\n\n/**\n * Allows use of aggregation expressions within the query language.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/expr/}\n */\n$expr:Expression};\n\n\n/**\n * A type describing the `$geoIntersects` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\nexport interface $geoIntersects {\n\n/**\n * Selects geometries that intersect with a GeoJSON geometry. The 2dsphere index supports $geoIntersects.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoIntersects/}\n */\n$geoIntersects:Geometry & {}};\n\n\n/**\n * A type describing the `$geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\nexport interface $geoWithin {\n\n/**\n * Selects geometries within a bounding GeoJSON geometry. The 2dsphere and 2d indexes support $geoWithin.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geoWithin/}\n */\n$geoWithin:Geometry & {}};\n\n\n/**\n * A type describing the `$geometry` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\nexport interface $geometry {\n\n/**\n * Specifies a geometry in GeoJSON format to geospatial query operators.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/geometry/}\n */\n$geometry:{type: string,coordinates: unknown[],crs?: Record,}};\n\n\n/**\n * A type describing the `$gt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\nexport interface $gt {\n\n/**\n * Matches values that are greater than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gt/}\n */\n$gt:any};\n\n\n/**\n * A type describing the `$gte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\nexport interface $gte {\n\n/**\n * Matches values that are greater than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/gte/}\n */\n$gte:any};\n\n\n/**\n * A type describing the `$in` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\nexport interface $in {\n\n/**\n * Matches any of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/in/}\n */\n$in:unknown[]};\n\n\n/**\n * A type describing the `$jsonSchema` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\nexport interface $jsonSchema {\n\n/**\n * Validate documents against the given JSON Schema.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/jsonSchema/}\n */\n$jsonSchema:Record};\n\n\n/**\n * A type describing the `$lt` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\nexport interface $lt {\n\n/**\n * Matches values that are less than a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lt/}\n */\n$lt:any};\n\n\n/**\n * A type describing the `$lte` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\nexport interface $lte {\n\n/**\n * Matches values that are less than or equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/lte/}\n */\n$lte:any};\n\n\n/**\n * A type describing the `$maxDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\nexport interface $maxDistance {\n\n/**\n * Specifies a maximum distance to limit the results of $near and $nearSphere queries. The 2dsphere and 2d indexes support $maxDistance.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/maxDistance/}\n */\n$maxDistance:Number};\n\n\n/**\n * A type describing the `$minDistance` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\nexport interface $minDistance {\n\n/**\n * Specifies a minimum distance to limit the results of $near and $nearSphere queries. For use with 2dsphere index only.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/minDistance/}\n */\n$minDistance:Int | Double};\n\n\n/**\n * A type describing the `$mod` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\nexport interface $mod {\n\n/**\n * Performs a modulo operation on the value of a field and selects documents with a specified result.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/mod/}\n */\n$mod:[divisor: Number,remainder: Number,]};\n\n\n/**\n * A type describing the `$ne` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\nexport interface $ne {\n\n/**\n * Matches all values that are not equal to a specified value.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/ne/}\n */\n$ne:any};\n\n\n/**\n * A type describing the `$near` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\nexport interface $near {\n\n/**\n * Returns geospatial objects in proximity to a point. Requires a geospatial index. The 2dsphere and 2d indexes support $near.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/near/}\n */\n$near:Geometry & {\n\n/**\n * Distance in meters. Limits the results to those documents that are at most the specified distance from the center point.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nearSphere` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\nexport interface $nearSphere {\n\n/**\n * Returns geospatial objects in proximity to a point on a sphere. Requires a geospatial index. The 2dsphere and 2d indexes support $nearSphere.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nearSphere/}\n */\n$nearSphere:Geometry & {\n\n/**\n * Distance in meters.\n */\n$maxDistance?: Number,\n\n/**\n * Distance in meters. Limits the results to those documents that are at least the specified distance from the center point.\n */\n$minDistance?: Number,}};\n\n\n/**\n * A type describing the `$nin` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\nexport interface $nin {\n\n/**\n * Matches none of the values specified in an array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nin/}\n */\n$nin:unknown[]};\n\n\n/**\n * A type describing the `$nor` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\nexport interface $nor {\n\n/**\n * Joins query clauses with a logical NOR returns all documents that fail to match both clauses.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/nor/}\n */\n$nor:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$not` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\nexport interface $not {\n\n/**\n * Inverts the effect of a query expression and returns documents that do not match the query expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/not/}\n */\n$not:FieldQuery};\n\n\n/**\n * A type describing the `$or` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\nexport interface $or {\n\n/**\n * Joins query clauses with a logical OR returns all documents that match the conditions of either clause.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/or/}\n */\n$or:[Query,...(Query)[],]};\n\n\n/**\n * A type describing the `$polygon` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\nexport interface $polygon {\n\n/**\n * Specifies a polygon to using legacy coordinate pairs for $geoWithin queries. The 2d index supports $center.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/polygon/}\n */\n$polygon:unknown[]};\n\n\n/**\n * A type describing the `$rand` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\nexport interface $rand {\n\n/**\n * Generates a random float between 0 and 1.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/rand/}\n */\n$rand:Record};\n\n\n/**\n * A type describing the `$regex` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\nexport interface $regex {\n\n/**\n * Selects documents where values match a specified regular expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/regex/}\n */\n$regex:Regex};\n\n\n/**\n * A type describing the `$sampleRate` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\nexport interface $sampleRate {\n\n/**\n * Randomly select documents at a given rate. Although the exact number of documents selected varies on each run, the quantity chosen approximates the sample rate expressed as a percentage of the total number of documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sampleRate/}\n */\n$sampleRate:ResolvesToDouble};\n\n\n/**\n * A type describing the `$size` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\nexport interface $size {\n\n/**\n * Selects documents if the array field is a specified size.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/size/}\n */\n$size:Int};\n\n\n/**\n * A type describing the `$text` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\nexport interface $text {\n\n/**\n * Performs text search.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/text/}\n */\n$text:{\n\n/**\n * A string of terms that MongoDB parses and uses to query the text index. MongoDB performs a logical OR search of the terms unless specified as a phrase.\n */\n$search: string,\n\n/**\n * The language that determines the list of stop words for the search and the rules for the stemmer and tokenizer. If not specified, the search uses the default language of the index.\n * If you specify a default_language value of none, then the text index parses through each word in the field, including stop words, and ignores suffix stemming.\n */\n$language?: string,\n\n/**\n * A boolean flag to enable or disable case sensitive search. Defaults to false; i.e. the search defers to the case insensitivity of the text index.\n */\n$caseSensitive?: boolean,\n\n/**\n * A boolean flag to enable or disable diacritic sensitive search against version 3 text indexes. Defaults to false; i.e. the search defers to the diacritic insensitivity of the text index.\n * Text searches against earlier versions of the text index are inherently diacritic sensitive and cannot be diacritic insensitive. As such, the $diacriticSensitive option has no effect with earlier versions of the text index.\n */\n$diacriticSensitive?: boolean,}};\n\n\n/**\n * A type describing the `$type` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\nexport interface $type {\n\n/**\n * Selects documents if a field is of the specified type.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/type/}\n */\n$type:[...(Int | string)[],]};\n\n\n/**\n * A type describing the `$where` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\nexport interface $where {\n\n/**\n * Matches documents that satisfy a JavaScript expression.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/query/where/}\n */\n$where:Javascript};\n};\nexport namespace Aggregation.Search {\n\n\n/**\n * A type describing the `autocomplete` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nexport interface Autocomplete {\n\n/**\n * The autocomplete operator performs a search for a word or phrase that\n * contains a sequence of characters from an incomplete input string. The\n * fields that you intend to query with the autocomplete operator must be\n * indexed with the autocomplete data type in the collection\'s index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/autocomplete/}\n */\nautocomplete:{path: SearchPath,query: string,tokenOrder?: string,fuzzy?: Record,score?: SearchScore,}};\n\n\n/**\n * A type describing the `compound` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\nexport interface Compound {\n\n/**\n * The compound operator combines two or more operators into a single query.\n * Each element of a compound query is called a clause, and each clause\n * consists of one or more sub-queries.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/compound/}\n */\ncompound:{must?: (SearchOperator) | (SearchOperator)[],mustNot?: (SearchOperator) | (SearchOperator)[],should?: (SearchOperator) | (SearchOperator)[],filter?: (SearchOperator) | (SearchOperator)[],minimumShouldMatch?: Int,score?: SearchScore,}};\n\n\n/**\n * A type describing the `embeddedDocument` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nexport interface EmbeddedDocument {\n\n/**\n * The embeddedDocument operator is similar to $elemMatch operator.\n * It constrains multiple query predicates to be satisfied from a single\n * element of an array of embedded documents. embeddedDocument can be used only\n * for queries over fields of the embeddedDocuments\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/embedded-document/}\n */\nembeddedDocument:{path: SearchPath,operator: SearchOperator,score?: SearchScore,}};\n\n\n/**\n * A type describing the `equals` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nexport interface Equals {\n\n/**\n * The equals operator checks whether a field matches a value you specify.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/equals/}\n */\nequals:{path: SearchPath,value: bson.Binary | boolean | Date | bson.ObjectId | null | Number | string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `exists` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexport interface Exists {\n\n/**\n * The exists operator tests if a path to a specified indexed field name exists in a document.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/exists/}\n */\nexists:{path: SearchPath,score?: SearchScore,}};\n\n\n/**\n * A type describing the `facet` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nexport interface Facet {\n\n/**\n * The facet collector groups results by values or ranges in the specified\n * faceted fields and returns the count for each of those groups.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/facet/}\n */\nfacet:{facets: Record,operator?: SearchOperator,}};\n\n\n/**\n * A type describing the `geoShape` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\nexport interface GeoShape {\n\n/**\n * The geoShape operator supports querying shapes with a relation to a given\n * geometry if indexShapes is set to true in the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoShape/}\n */\ngeoShape:{path: SearchPath,relation: string,geometry: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `geoWithin` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\nexport interface GeoWithin {\n\n/**\n * The geoWithin operator supports querying geographic points within a given\n * geometry. Only points are returned, even if indexShapes value is true in\n * the index definition.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/geoWithin/}\n */\ngeoWithin:{path: SearchPath,box?: Record,circle?: Record,geometry?: Geometry,score?: SearchScore,}};\n\n\n/**\n * A type describing the `in` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nexport interface In {\n\n/**\n * The in operator performs a search for an array of BSON values in a field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/in/}\n */\nin:{path: SearchPath,value: (any) | (any)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `moreLikeThis` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nexport interface MoreLikeThis {\n\n/**\n * The moreLikeThis operator returns documents similar to input documents.\n * The moreLikeThis operator allows you to build features for your applications\n * that display similar or alternative results based on one or more given documents.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/moreLikeThis/}\n */\nmoreLikeThis:{like: (Record) | (Record)[],score?: SearchScore,}};\n\n\n/**\n * A type describing the `near` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nexport interface Near {\n\n/**\n * The near operator supports querying and scoring numeric, date, and GeoJSON point values.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/near/}\n */\nnear:{path: SearchPath,origin: Date | Number | Geometry,pivot: Number,score?: SearchScore,}};\n\n\n/**\n * A type describing the `phrase` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nexport interface Phrase {\n\n/**\n * The phrase operator performs search for documents containing an ordered sequence of terms using the analyzer specified in the index configuration.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/phrase/}\n */\nphrase:{path: SearchPath,query: (string) | (string)[],slop?: Int,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `queryString` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/queryString/}\n */\nexport interface QueryString {queryString:{defaultPath: SearchPath,query: string,}};\n\n\n/**\n * A type describing the `range` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nexport interface Range {\n\n/**\n * The range operator supports querying and scoring numeric, date, and string values.\n * You can use this operator to find results that are within a given numeric, date, objectId, or letter (from the English alphabet) range.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/range/}\n */\nrange:{path: SearchPath,gt?: Date | Number | string | bson.ObjectId,gte?: Date | Number | string | bson.ObjectId,lt?: Date | Number | string | bson.ObjectId,lte?: Date | Number | string | bson.ObjectId,score?: SearchScore,}};\n\n\n/**\n * A type describing the `regex` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nexport interface Regex {\n\n/**\n * regex interprets the query field as a regular expression.\n * regex is a term-level operator, meaning that the query field isn\'t analyzed.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/regex/}\n */\nregex:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n\n\n/**\n * A type describing the `text` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\nexport interface Text {\n\n/**\n * The text operator performs a full-text search using the analyzer that you specify in the index configuration.\n * If you omit an analyzer, the text operator uses the default standard analyzer.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/text/}\n */\ntext:{path: SearchPath,query: string,fuzzy?: Record,matchCriteria?: string,synonyms?: string,score?: SearchScore,}};\n\n\n/**\n * A type describing the `wildcard` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nexport interface Wildcard {\n\n/**\n * The wildcard operator enables queries which use special characters in the search string that can match any character.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-search/wildcard/}\n */\nwildcard:{path: SearchPath,query: string,allowAnalyzedField?: boolean,score?: SearchScore,}};\n};\nexport namespace Aggregation.Stage {\n\n\n/**\n * A type describing the `$addFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\nexport interface $addFields {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/addFields/}\n */\n$addFields:{\n\n/**\n * Specify the name of each field to add and set its value to an aggregation expression or an empty object.\n */\n} & { [expression: string]: Expression,}};\n\n\n/**\n * A type describing the `$bucket` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\nexport interface $bucket {\n\n/**\n * Categorizes incoming documents into groups, called buckets, based on a specified expression and bucket boundaries.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucket/}\n */\n$bucket:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n * Unless $bucket includes a default specification, each input document must resolve the groupBy field path or expression to a value that falls within one of the ranges specified by the boundaries.\n */\ngroupBy: Expression,\n\n/**\n * An array of values based on the groupBy expression that specify the boundaries for each bucket. Each adjacent pair of values acts as the inclusive lower boundary and the exclusive upper boundary for the bucket. You must specify at least two boundaries.\n * The specified values must be in ascending order and all of the same type. The exception is if the values are of mixed numeric types, such as:\n */\nboundaries: unknown[],\n\n/**\n * A literal that specifies the _id of an additional bucket that contains all documents whose groupBy expression result does not fall into a bucket specified by boundaries.\n * If unspecified, each input document must resolve the groupBy expression to a value within one of the bucket ranges specified by boundaries or the operation throws an error.\n * The default value must be less than the lowest boundaries value, or greater than or equal to the highest boundaries value.\n * The default value can be of a different type than the entries in boundaries.\n */\ndefault?: Expression,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * If you do not specify an output document, the operation returns a count field containing the number of documents in each bucket.\n * If you specify an output document, only the fields specified in the document are returned; i.e. the count field is not returned unless it is explicitly included in the output document.\n */\noutput?: Record,}};\n\n\n/**\n * A type describing the `$bucketAuto` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\nexport interface $bucketAuto {\n\n/**\n * Categorizes incoming documents into a specific number of groups, called buckets, based on a specified expression. Bucket boundaries are automatically determined in an attempt to evenly distribute the documents into the specified number of buckets.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/bucketAuto/}\n */\n$bucketAuto:{\n\n/**\n * An expression to group documents by. To specify a field path, prefix the field name with a dollar sign $ and enclose it in quotes.\n */\ngroupBy: Expression,\n\n/**\n * A positive 32-bit integer that specifies the number of buckets into which input documents are grouped.\n */\nbuckets: Int,\n\n/**\n * A document that specifies the fields to include in the output documents in addition to the _id field. To specify the field to include, you must use accumulator expressions.\n * The default count field is not included in the output document when output is specified. Explicitly specify the count expression as part of the output document to include it.\n */\noutput?: Record,\n\n/**\n * A string that specifies the preferred number series to use to ensure that the calculated boundary edges end on preferred round numbers or their powers of 10.\n * Available only if the all groupBy values are numeric and none of them are NaN.\n */\ngranularity?: Granularity,}};\n\n\n/**\n * A type describing the `$changeStream` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\nexport interface $changeStream {\n\n/**\n * Returns a Change Stream cursor for the collection or database. This stage can only occur once in an aggregation pipeline and it must occur as the first stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStream/}\n */\n$changeStream:{\n\n/**\n * A flag indicating whether the stream should report all changes that occur on the deployment, aside from those on internal databases or collections.\n */\nallChangesForCluster?: boolean,\n\n/**\n * Specifies whether change notifications include a copy of the full document when modified by update operations.\n */\nfullDocument?: FullDocument,\n\n/**\n * Valid values are "off", "whenAvailable", or "required". If set to "off", the "fullDocumentBeforeChange" field of the output document is always omitted. If set to "whenAvailable", the "fullDocumentBeforeChange" field will be populated with the pre-image of the document modified by the current change event if such a pre-image is available, and will be omitted otherwise. If set to "required", then the "fullDocumentBeforeChange" field is always populated and an exception is thrown if the pre-image is not available.\n */\nfullDocumentBeforeChange?: FullDocumentBeforeChange,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with startAfter or startAtOperationTime fields.\n */\nresumeAfter?: Int,\n\n/**\n * Specifies whether to include additional change events, such as such as DDL and index operations.\n * New in MongoDB 6.0.\n */\nshowExpandedEvents?: boolean,\n\n/**\n * Specifies a resume token as the logical starting point for the change stream. Cannot be used with resumeAfter or startAtOperationTime fields.\n */\nstartAfter?: Record,\n\n/**\n * Specifies a time as the logical starting point for the change stream. Cannot be used with resumeAfter or startAfter fields.\n */\nstartAtOperationTime?: bson.Timestamp,}};\n\n\n/**\n * A type describing the `$changeStreamSplitLargeEvent` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\nexport interface $changeStreamSplitLargeEvent {\n\n/**\n * Splits large change stream events that exceed 16 MB into smaller fragments returned in a change stream cursor.\n * You can only use $changeStreamSplitLargeEvent in a $changeStream pipeline and it must be the final stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/changeStreamSplitLargeEvent/}\n */\n$changeStreamSplitLargeEvent:Record};\n\n\n/**\n * A type describing the `$collStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\nexport interface $collStats {\n\n/**\n * Returns statistics regarding a collection or view.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/collStats/}\n */\n$collStats:{latencyStats?: Record,storageStats?: Record,count?: Record,queryExecStats?: Record,}};\n\n\n/**\n * A type describing the `$count` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\nexport interface $count {\n\n/**\n * Returns a count of the number of documents at this stage of the aggregation pipeline.\n * Distinct from the $count aggregation accumulator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/count/}\n */\n$count:string};\n\n\n/**\n * A type describing the `$currentOp` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\nexport interface $currentOp {\n\n/**\n * Returns information on active and/or dormant operations for the MongoDB deployment. To run, use the db.aggregate() method.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/currentOp/}\n */\n$currentOp:{allUsers?: boolean,idleConnections?: boolean,idleCursors?: boolean,idleSessions?: boolean,localOps?: boolean,}};\n\n\n/**\n * A type describing the `$densify` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\nexport interface $densify {\n\n/**\n * Creates new documents in a sequence of documents where certain values in a field are missing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/densify/}\n */\n$densify:{\n\n/**\n * The field to densify. The values of the specified field must either be all numeric values or all dates.\n * Documents that do not contain the specified field continue through the pipeline unmodified.\n * To specify a in an embedded document or in an array, use dot notation.\n */\nfield: string,\n\n/**\n * The field(s) that will be used as the partition keys.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specification for range based densification.\n */\nrange: Range,}};\n\n\n/**\n * A type describing the `$documents` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\nexport interface $documents {\n\n/**\n * Returns literal documents from input values.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/documents/}\n */\n$documents:ResolvesToArray};\n\n\n/**\n * A type describing the `$facet` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\nexport interface $facet {\n\n/**\n * Processes multiple aggregation pipelines within a single stage on the same set of input documents. Enables the creation of multi-faceted aggregations capable of characterizing data across multiple dimensions, or facets, in a single stage.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/facet/}\n */\n$facet:{} & { [facet: string]: Pipeline,}};\n\n\n/**\n * A type describing the `$fill` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\nexport interface $fill {\n\n/**\n * Populates null and missing field values within documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/fill/}\n */\n$fill:{\n\n/**\n * Specifies an expression to group the documents. In the $fill stage, a group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionBy?: Record | string,\n\n/**\n * Specifies an array of fields as the compound key to group the documents. In the $fill stage, each group of documents is known as a partition.\n * If you omit partitionBy and partitionByFields, $fill uses one partition for the entire collection.\n * partitionBy and partitionByFields are mutually exclusive.\n */\npartitionByFields?: unknown[],\n\n/**\n * Specifies the field or fields to sort the documents within each partition. Uses the same syntax as the $sort stage.\n */\nsortBy?: SortBy,\n\n/**\n * Specifies an object containing each field for which to fill missing values. You can specify multiple fields in the output object.\n * The object name is the name of the field to fill. The object value specifies how the field is filled.\n */\noutput: Record,}};\n\n\n/**\n * A type describing the `$geoNear` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\nexport interface $geoNear {\n\n/**\n * Returns an ordered stream of documents based on the proximity to a geospatial point. Incorporates the functionality of $match, $sort, and $limit for geospatial data. The output documents include an additional distance field and can include a location identifier field.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/geoNear/}\n */\n$geoNear:{\n\n/**\n * The output field that contains the calculated distance. To specify a field within an embedded document, use dot notation.\n */\ndistanceField?: string,\n\n/**\n * The factor to multiply all distances returned by the query. For example, use the distanceMultiplier to convert radians, as returned by a spherical query, to kilometers by multiplying by the radius of the Earth.\n */\ndistanceMultiplier?: Number,\n\n/**\n * This specifies the output field that identifies the location used to calculate the distance. This option is useful when a location field contains multiple locations. To specify a field within an embedded document, use dot notation.\n */\nincludeLocs?: string,\n\n/**\n * Specify the geospatial indexed field to use when calculating the distance.\n */\nkey?: string,\n\n/**\n * The maximum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall within the specified distance from the center point.\n * Specify the distance in meters if the specified point is GeoJSON and in radians if the specified point is legacy coordinate pairs.\n */\nmaxDistance?: Number,\n\n/**\n * The minimum distance from the center point that the documents can be. MongoDB limits the results to those documents that fall outside the specified distance from the center point.\n * Specify the distance in meters for GeoJSON data and in radians for legacy coordinate pairs.\n */\nminDistance?: Number,\n\n/**\n * The point for which to find the closest documents.\n */\nnear: GeoPoint | ResolvesToObject,\n\n/**\n * Limits the results to the documents that match the query. The query syntax is the usual MongoDB read operation query syntax.\n * You cannot specify a $near predicate in the query field of the $geoNear stage.\n */\nquery?: Query,\n\n/**\n * Determines how MongoDB calculates the distance between two points:\n * - When true, MongoDB uses $nearSphere semantics and calculates distances using spherical geometry.\n * - When false, MongoDB uses $near semantics: spherical geometry for 2dsphere indexes and planar geometry for 2d indexes.\n * Default: false.\n */\nspherical?: boolean,}};\n\n\n/**\n * A type describing the `$graphLookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\nexport interface $graphLookup {\n\n/**\n * Performs a recursive search on a collection. To each output document, adds a new array field that contains the traversal results of the recursive search for that document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/graphLookup/}\n */\n$graphLookup:{\n\n/**\n * Target collection for the $graphLookup operation to search, recursively matching the connectFromField to the connectToField. The from collection must be in the same database as any other collections used in the operation.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom: string,\n\n/**\n * Expression that specifies the value of the connectFromField with which to start the recursive search. Optionally, startWith may be array of values, each of which is individually followed through the traversal process.\n */\nstartWith: (Expression) | (Expression)[],\n\n/**\n * Field name whose value $graphLookup uses to recursively match against the connectToField of other documents in the collection. If the value is an array, each element is individually followed through the traversal process.\n */\nconnectFromField: string,\n\n/**\n * Field name in other documents against which to match the value of the field specified by the connectFromField parameter.\n */\nconnectToField: string,\n\n/**\n * Name of the array field added to each output document. Contains the documents traversed in the $graphLookup stage to reach the document.\n */\nas: string,\n\n/**\n * Non-negative integral number specifying the maximum recursion depth.\n */\nmaxDepth?: Int,\n\n/**\n * Name of the field to add to each traversed document in the search path. The value of this field is the recursion depth for the document, represented as a NumberLong. Recursion depth value starts at zero, so the first lookup corresponds to zero depth.\n */\ndepthField?: string,\n\n/**\n * A document specifying additional conditions for the recursive search. The syntax is identical to query filter syntax.\n */\nrestrictSearchWithMatch?: Query,}};\n\n\n/**\n * A type describing the `$group` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\nexport interface $group {\n\n/**\n * Groups input documents by a specified identifier expression and applies the accumulator expression(s), if specified, to each group. Consumes all input documents and outputs one document per each distinct group. The output documents only contain the identifier field and, if specified, accumulated fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/group/}\n */\n$group:RecordWithStaticFields<{\n\n/**\n * The _id expression specifies the group key. If you specify an _id value of null, or any other constant value, the $group stage returns a single document that aggregates values across all of the input documents.\n */\n_id: Expression | ExpressionMap,}, \n\n/**\n * Computed using the accumulator operators.\n */\n Accumulator>};\n\n\n/**\n * A type describing the `$indexStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\nexport interface $indexStats {\n\n/**\n * Returns statistics regarding the use of each index for the collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/indexStats/}\n */\n$indexStats:Record};\n\n\n/**\n * A type describing the `$limit` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\nexport interface $limit {\n\n/**\n * Passes the first n documents unmodified to the pipeline where n is the specified limit. For each input document, outputs either one document (for the first n documents) or zero documents (after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/limit/}\n */\n$limit:Int};\n\n\n/**\n * A type describing the `$listLocalSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\nexport interface $listLocalSessions {\n\n/**\n * Lists all active sessions recently in use on the currently connected mongos or mongod instance. These sessions may have not yet propagated to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listLocalSessions/}\n */\n$listLocalSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$listSampledQueries` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\nexport interface $listSampledQueries {\n\n/**\n * Lists sampled queries for all collections or a specific collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSampledQueries/}\n */\n$listSampledQueries:{namespace?: string,}};\n\n\n/**\n * A type describing the `$listSearchIndexes` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\nexport interface $listSearchIndexes {\n\n/**\n * Returns information about existing Atlas Search indexes on a specified collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSearchIndexes/}\n */\n$listSearchIndexes:{\n\n/**\n * The id of the index to return information about.\n */\nid?: string,\n\n/**\n * The name of the index to return information about.\n */\nname?: string,}};\n\n\n/**\n * A type describing the `$listSessions` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\nexport interface $listSessions {\n\n/**\n * Lists all sessions that have been active long enough to propagate to the system.sessions collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/listSessions/}\n */\n$listSessions:{\n\n/**\n * Returns all sessions for the specified users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster to list sessions for other users.\n */\nusers?: unknown[],\n\n/**\n * Returns all sessions for all users. If running with access control, the authenticated user must have privileges with listSessions action on the cluster.\n */\nallUsers?: boolean,}};\n\n\n/**\n * A type describing the `$lookup` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\nexport interface $lookup {\n\n/**\n * Performs a left outer join to another collection in the same database to filter in documents from the "joined" collection for processing.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/lookup/}\n */\n$lookup:{\n\n/**\n * Specifies the collection in the same database to perform the join with.\n * from is optional, you can use a $documents stage in a $lookup stage instead. For an example, see Use a $documents Stage in a $lookup Stage.\n * Starting in MongoDB 5.1, the collection specified in the from parameter can be sharded.\n */\nfrom?: string,\n\n/**\n * Specifies the field from the documents input to the $lookup stage. $lookup performs an equality match on the localField to the foreignField from the documents of the from collection. If an input document does not contain the localField, the $lookup treats the field as having a value of null for matching purposes.\n */\nlocalField?: string,\n\n/**\n * Specifies the field from the documents in the from collection. $lookup performs an equality match on the foreignField to the localField from the input documents. If a document in the from collection does not contain the foreignField, the $lookup treats the value as null for matching purposes.\n */\nforeignField?: string,\n\n/**\n * Specifies variables to use in the pipeline stages. Use the variable expressions to access the fields from the joined collection\'s documents that are input to the pipeline.\n */\nlet?: Record,\n\n/**\n * Specifies the pipeline to run on the joined collection. The pipeline determines the resulting documents from the joined collection. To return all documents, specify an empty pipeline [].\n * The pipeline cannot include the $out stage or the $merge stage. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n * The pipeline cannot directly access the joined document fields. Instead, define variables for the joined document fields using the let option and then reference the variables in the pipeline stages.\n */\npipeline?: UntypedPipeline,\n\n/**\n * Specifies the name of the new array field to add to the input documents. The new array field contains the matching documents from the from collection. If the specified name already exists in the input document, the existing field is overwritten.\n */\nas: string,}};\n\n\n/**\n * A type describing the `$match` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\nexport interface $match {\n\n/**\n * Filters the document stream to allow only matching documents to pass unmodified into the next pipeline stage. $match uses standard MongoDB queries. For each input document, outputs either one document (a match) or zero documents (no match).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/match/}\n */\n$match:Query};\n\n\n/**\n * A type describing the `$merge` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\nexport interface $merge {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. The stage can incorporate (insert new documents, merge documents, replace documents, keep existing documents, fail the operation, process documents with a custom update pipeline) the results into an output collection. To use the $merge stage, it must be the last stage in the pipeline.\n * New in MongoDB 4.2.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/merge/}\n */\n$merge:{\n\n/**\n * The output collection.\n */\ninto: string | OutCollection,\n\n/**\n * Field or fields that act as a unique identifier for a document. The identifier determines if a results document matches an existing document in the output collection.\n */\non?: (string) | (string)[],\n\n/**\n * Specifies variables for use in the whenMatched pipeline.\n */\nlet?: Record,\n\n/**\n * The behavior of $merge if a result document and an existing document in the collection have the same value for the specified on field(s).\n */\nwhenMatched?: WhenMatched | UntypedPipeline,\n\n/**\n * The behavior of $merge if a result document does not match an existing document in the out collection.\n */\nwhenNotMatched?: WhenNotMatched,}};\n\n\n/**\n * A type describing the `$out` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\nexport interface $out {\n\n/**\n * Writes the resulting documents of the aggregation pipeline to a collection. To use the $out stage, it must be the last stage in the pipeline.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/out/}\n */\n$out:string | OutCollection};\n\n\n/**\n * A type describing the `$planCacheStats` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\nexport interface $planCacheStats {\n\n/**\n * Returns plan cache information for a collection.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/planCacheStats/}\n */\n$planCacheStats:Record};\n\n\n/**\n * A type describing the `$project` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\nexport interface $project {\n\n/**\n * Reshapes each document in the stream, such as by adding new fields or removing existing fields. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/project/}\n */\n$project:{} & { [specification: string]: Expression | ExpressionMap,}};\n\n\n/**\n * A type describing the `$redact` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\nexport interface $redact {\n\n/**\n * Reshapes each document in the stream by restricting the content for each document based on information stored in the documents themselves. Incorporates the functionality of $project and $match. Can be used to implement field level redaction. For each input document, outputs either one or zero documents.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/redact/}\n */\n$redact:Expression};\n\n\n/**\n * A type describing the `$replaceRoot` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\nexport interface $replaceRoot {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceRoot/}\n */\n$replaceRoot:{newRoot: ResolvesToObject,}};\n\n\n/**\n * A type describing the `$replaceWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\nexport interface $replaceWith {\n\n/**\n * Replaces a document with the specified embedded document. The operation replaces all existing fields in the input document, including the _id field. Specify a document embedded in the input document to promote the embedded document to the top level.\n * Alias for $replaceRoot.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/replaceWith/}\n */\n$replaceWith:ResolvesToObject};\n\n\n/**\n * A type describing the `$sample` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\nexport interface $sample {\n\n/**\n * Randomly selects the specified number of documents from its input.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sample/}\n */\n$sample:{\n\n/**\n * The number of documents to randomly select.\n */\nsize: Int,}};\n\n\n/**\n * A type describing the `$search` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\nexport interface $search {\n\n/**\n * Performs a full-text search of the field or fields in an Atlas collection.\n * NOTE: $search is only available for MongoDB Atlas clusters, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/search/}\n */\n$search:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to "default".\n */\nindex?: string,\n\n/**\n * Specifies the highlighting options for displaying search terms in their original context.\n */\nhighlight?: SearchHighlight,\n\n/**\n * Parallelize search across segments on dedicated search nodes.\n * If you don\'t have separate search nodes on your cluster,\n * Atlas Search ignores this flag. If omitted, defaults to false.\n */\nconcurrent?: boolean,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,\n\n/**\n * Reference point for retrieving results. searchAfter returns documents starting immediately following the specified reference point.\n */\nsearchAfter?: string,\n\n/**\n * Reference point for retrieving results. searchBefore returns documents starting immediately before the specified reference point.\n */\nsearchBefore?: string,\n\n/**\n * Flag that specifies whether to retrieve a detailed breakdown of the score for the documents in the results. If omitted, defaults to false.\n */\nscoreDetails?: boolean,\n\n/**\n * Document that specifies the fields to sort the Atlas Search results by in ascending or descending order.\n */\nsort?: Record,\n\n/**\n * Flag that specifies whether to perform a full document lookup on the backend database or return only stored source fields directly from Atlas Search.\n */\nreturnStoredSource?: boolean,\n\n/**\n * Document that specifies the tracking option to retrieve analytics information on the search terms.\n */\ntracking?: Record,}};\n\n\n/**\n * A type describing the `$searchMeta` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\nexport interface $searchMeta {\n\n/**\n * Returns different types of metadata result documents for the Atlas Search query against an Atlas collection.\n * NOTE: $searchMeta is only available for MongoDB Atlas clusters running MongoDB v4.4.9 or higher, and is not available for self-managed deployments.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/searchMeta/}\n */\n$searchMeta:SearchOperator & {\n\n/**\n * Name of the Atlas Search index to use. If omitted, defaults to default.\n */\nindex?: string,\n\n/**\n * Document that specifies the count options for retrieving a count of the results.\n */\ncount?: Record,}};\n\n\n/**\n * A type describing the `$set` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\nexport interface $set {\n\n/**\n * Adds new fields to documents. Outputs documents that contain all existing fields from the input documents and newly added fields.\n * Alias for $addFields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/set/}\n */\n$set:{} & { [field: string]: Expression,}};\n\n\n/**\n * A type describing the `$setWindowFields` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\nexport interface $setWindowFields {\n\n/**\n * Groups documents into windows and applies one or more operators to the documents in each window.\n * New in MongoDB 5.0.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/setWindowFields/}\n */\n$setWindowFields:{\n\n/**\n * Specifies the field(s) to sort the documents by in the partition. Uses the same syntax as the $sort stage. Default is no sorting.\n */\nsortBy: SortBy,\n\n/**\n * Specifies the field(s) to append to the documents in the output returned by the $setWindowFields stage. Each field is set to the result returned by the window operator.\n * A field can contain dots to specify embedded document fields and array fields. The semantics for the embedded document dotted notation in the $setWindowFields stage are the same as the $addFields and $set stages.\n */\noutput: Record,\n\n/**\n * Specifies an expression to group the documents. In the $setWindowFields stage, the group of documents is known as a partition. Default is one partition for the entire collection.\n */\npartitionBy?: Expression,}};\n\n\n/**\n * A type describing the `$shardedDataDistribution` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\nexport interface $shardedDataDistribution {\n\n/**\n * Provides data and size distribution information on sharded collections.\n * New in MongoDB 6.0.3.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/shardedDataDistribution/}\n */\n$shardedDataDistribution:Record};\n\n\n/**\n * A type describing the `$skip` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\nexport interface $skip {\n\n/**\n * Skips the first n documents where n is the specified skip number and passes the remaining documents unmodified to the pipeline. For each input document, outputs either zero documents (for the first n documents) or one document (if after the first n documents).\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/skip/}\n */\n$skip:Int};\n\n\n/**\n * A type describing the `$sort` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\nexport interface $sort {\n\n/**\n * Reorders the document stream by a specified sort key. Only the order changes; the documents remain unmodified. For each input document, outputs one document.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sort/}\n */\n$sort:{} & { [sort: string]: Expression | SortSpec,}};\n\n\n/**\n * A type describing the `$sortByCount` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\nexport interface $sortByCount {\n\n/**\n * Groups incoming documents based on the value of a specified expression, then computes the count of documents in each distinct group.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/sortByCount/}\n */\n$sortByCount:Expression};\n\n\n/**\n * A type describing the `$unionWith` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\nexport interface $unionWith {\n\n/**\n * Performs a union of two collections; i.e. combines pipeline results from two collections into a single result set.\n * New in MongoDB 4.4.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unionWith/}\n */\n$unionWith:{\n\n/**\n * The collection or view whose pipeline results you wish to include in the result set.\n */\ncoll: string,\n\n/**\n * An aggregation pipeline to apply to the specified coll.\n * The pipeline cannot include the $out and $merge stages. Starting in v6.0, the pipeline can contain the Atlas Search $search stage as the first stage inside the pipeline.\n */\npipeline?: UntypedPipeline,}};\n\n\n/**\n * A type describing the `$unset` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\nexport interface $unset {\n\n/**\n * Removes or excludes fields from documents.\n * Alias for $project stage that removes or excludes fields.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unset/}\n */\n$unset:[...(UnprefixedFieldPath)[],]};\n\n\n/**\n * A type describing the `$unwind` operator.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\nexport interface $unwind {\n\n/**\n * Deconstructs an array field from the input documents to output a document for each element. Each output document replaces the array with an element value. For each input document, outputs n documents where n is the number of array elements and can be zero for an empty array.\n * @see {@link https://www.mongodb.com/docs/manual/reference/operator/aggregation/unwind/}\n */\n$unwind:{\n\n/**\n * Field path to an array field.\n */\npath: ArrayFieldPath,\n\n/**\n * The name of a new field to hold the array index of the element. The name cannot start with a dollar sign $.\n */\nincludeArrayIndex?: string,\n\n/**\n * If true, if the path is null, missing, or an empty array, $unwind outputs the document.\n * If false, if path is null, missing, or an empty array, $unwind does not output a document.\n * The default value is false.\n */\npreserveNullAndEmptyArrays?: boolean,}};\n\n\n/**\n * A type describing the `$vectorSearch` operator.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\nexport interface $vectorSearch {\n\n/**\n * The $vectorSearch stage performs an ANN or ENN search on a vector in the specified field.\n * @see {@link https://www.mongodb.com/docs/atlas/atlas-vector-search/vector-search-stage/}\n */\n$vectorSearch:{\n\n/**\n * Name of the Atlas Vector Search index to use.\n */\nindex: string,\n\n/**\n * Number of documents to return in the results. This value can\'t exceed the value of numCandidates if you specify numCandidates.\n */\nlimit: Int,\n\n/**\n * Indexed vector type field to search.\n */\npath: string,\n\n/**\n * Array of numbers that represent the query vector. The number type must match the indexed field value type.\n */\nqueryVector: unknown[],\n\n/**\n * This is required if numCandidates is omitted. false to run ANN search. true to run ENN search.\n */\nexact?: boolean,\n\n/**\n * Any match query that compares an indexed field with a boolean, date, objectId, number (not decimals), string, or UUID to use as a pre-filter.\n */\nfilter?: Query,\n\n/**\n * This field is required if exact is false or omitted.\n * Number of nearest neighbors to use during the search. Value must be less than or equal to (<=) 10000. You can\'t specify a number less than the number of documents to return (limit).\n */\nnumCandidates?: Int,}};\n};\n\nexport type Int = number|bson.Int32|{ $numberInt: string };\nexport type Double = number|bson.Double|{ $numberDouble: string };\nexport type Decimal = bson.Decimal128|{ $numberDecimal: string };\nexport type Regex = RegExp|bson.BSONRegExp|{ pattern: string, options?: string };\nexport type Long = bigint|bson.Long|{ $numberLong: string };\nexport type Javascript = bson.Code|Function|string;\nexport type Geometry = {type: "Point", coordinates: number[] }|{type:"MultiPoint", coordinates: number[][] }|{type:"LineString", coordinates: number[][] }|{type:"MultiLineString", coordinates: number[][][] }|{type:"Polygon", coordinates: number[][][] }|{type:"MultiPolygon", coordinates: number[][][][] }|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$geometry|Aggregation.Query.$polygon;\nexport type Number = Int|Long|Double|Decimal;\nexport type BsonPrimitive = Number|bson.Binary|bson.ObjectId|string|boolean|Date|null|Regex|Javascript|bson.Timestamp;\nexport type SearchPath = UnprefixedFieldPath|UnprefixedFieldPath[]|{ wildcard: string };\nexport type SearchScore = unknown;\nexport type Granularity = string;\nexport type FullDocument = string;\nexport type FullDocumentBeforeChange = string;\nexport type AccumulatorPercentile = string;\nexport type Range = unknown;\nexport type SortBy = unknown;\nexport type GeoPoint = unknown;\nexport type SortSpec = -1|1;\nexport type TimeUnit = "year"|"quarter"|"month"|"week"|"day"|"hour"|"minute"|"second"|"millisecond";\nexport type OutCollection = unknown;\nexport type WhenMatched = string;\nexport type WhenNotMatched = string;\nexport type Expression = ExpressionOperator|FieldPath|BsonPrimitive|FieldExpression|FieldPath[];\nexport type ExpressionMap = { [k: string]: Expression | ExpressionMap };\nexport type Stage = StageOperator|Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;\nexport type Pipeline = Stage[];\nexport type UntypedPipeline = Pipeline;\nexport type Query = QueryOperator|Partial<{ [k in keyof S]: Condition }>|Aggregation.Query.$and|Aggregation.Query.$expr|Aggregation.Query.$jsonSchema|Aggregation.Query.$nor|Aggregation.Query.$or|Aggregation.Query.$sampleRate|Aggregation.Query.$text|Aggregation.Query.$where;\nexport type Accumulator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type SearchHighlight = {\n path:\n | UnprefixedFieldPath\n | UnprefixedFieldPath[]\n | { wildcard: string }\n | \'*\'\n | MultiAnalyzerSpec\n | (UnprefixedFieldPath | MultiAnalyzerSpec)[];\n\n maxCharsToExamine?: number;\n maxNumPassages?: number;\n };\nexport type FieldPath = `$${AFieldPath}`;\nexport type UnprefixedFieldPath = AFieldPath;\nexport type NumberFieldPath = `$${AFieldPath}`;\nexport type DoubleFieldPath = `$${AFieldPath}`;\nexport type StringFieldPath = `$${AFieldPath}`;\nexport type ObjectFieldPath = `$${AFieldPath>}`;\nexport type ArrayFieldPath = `$${AFieldPath}`;\nexport type BinDataFieldPath = `$${AFieldPath}`;\nexport type ObjectIdFieldPath = `$${AFieldPath}`;\nexport type BoolFieldPath = `$${AFieldPath}`;\nexport type DateFieldPath = `$${AFieldPath}`;\nexport type NullFieldPath = `$${AFieldPath}`;\nexport type RegexFieldPath = `$${AFieldPath}`;\nexport type JavascriptFieldPath = `$${AFieldPath}`;\nexport type IntFieldPath = `$${AFieldPath}`;\nexport type TimestampFieldPath = `$${AFieldPath}`;\nexport type LongFieldPath = `$${AFieldPath}`;\nexport type DecimalFieldPath = `$${AFieldPath}`;\nexport type ResolvesToNumber = ResolvesToAny|NumberFieldPath|Number|ResolvesToInt|ResolvesToDouble|ResolvesToLong|ResolvesToDecimal|Aggregation.Expression.$abs|Aggregation.Expression.$avg|Aggregation.Expression.$pow|Aggregation.Expression.$sum;\nexport type ResolvesToDouble = ResolvesToAny|DoubleFieldPath|Double|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$exp|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$median|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDouble|Aggregation.Query.$rand;\nexport type ResolvesToString = ResolvesToAny|StringFieldPath|string|Aggregation.Expression.$concat|Aggregation.Expression.$dateToString|Aggregation.Expression.$ltrim|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$rtrim|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$toLower|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$type;\nexport type ResolvesToObject = \'$$ROOT\'|ResolvesToAny|ObjectFieldPath|Record|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$dateToParts|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$regexFind|Aggregation.Expression.$setField|Aggregation.Expression.$unsetField;\nexport type ResolvesToArray = ResolvesToAny|ArrayFieldPath|unknown[]|Aggregation.Expression.$concatArrays|Aggregation.Expression.$filter|Aggregation.Expression.$firstN|Aggregation.Expression.$lastN|Aggregation.Expression.$map|Aggregation.Expression.$maxN|Aggregation.Expression.$minN|Aggregation.Expression.$objectToArray|Aggregation.Expression.$percentile|Aggregation.Expression.$range|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$reverseArray|Aggregation.Expression.$setDifference|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setUnion|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$zip;\nexport type ResolvesToBinData = ResolvesToAny|BinDataFieldPath|bson.Binary;\nexport type ResolvesToObjectId = ResolvesToAny|ObjectIdFieldPath|bson.ObjectId|Aggregation.Expression.$toObjectId;\nexport type ResolvesToBool = ResolvesToAny|BoolFieldPath|boolean|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$eq|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$in|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$or|Aggregation.Expression.$regexMatch|Aggregation.Expression.$setEquals|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$toBool;\nexport type ResolvesToDate = \'$$NOW\'|ResolvesToAny|DateFieldPath|Date|Aggregation.Expression.$add|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$subtract|Aggregation.Expression.$toDate;\nexport type ResolvesToNull = ResolvesToAny|NullFieldPath|null;\nexport type ResolvesToRegex = ResolvesToAny|RegexFieldPath|Regex;\nexport type ResolvesToJavascript = ResolvesToAny|JavascriptFieldPath|Javascript;\nexport type ResolvesToInt = ResolvesToAny|IntFieldPath|Int|Aggregation.Expression.$add|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$floor|Aggregation.Expression.$hour|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$millisecond|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$round|Aggregation.Expression.$second|Aggregation.Expression.$size|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$subtract|Aggregation.Expression.$toInt|Aggregation.Expression.$week|Aggregation.Expression.$year;\nexport type ResolvesToTimestamp = ResolvesToAny|TimestampFieldPath|bson.Timestamp|\'$clusterTime\';\nexport type ResolvesToLong = ResolvesToAny|LongFieldPath|Long|Aggregation.Expression.$add|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$round|Aggregation.Expression.$subtract|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toLong|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond;\nexport type ResolvesToDecimal = ResolvesToAny|DecimalFieldPath|Decimal|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$multiply|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$round|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$subtract|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toDecimal;\nexport type AccumulatorOperator = Aggregation.Accumulator.$accumulator|Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$mergeObjects|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum|Aggregation.Accumulator.$top|Aggregation.Accumulator.$topN;\nexport type Window = Aggregation.Accumulator.$addToSet|Aggregation.Accumulator.$avg|Aggregation.Accumulator.$bottom|Aggregation.Accumulator.$bottomN|Aggregation.Accumulator.$count|Aggregation.Accumulator.$covariancePop|Aggregation.Accumulator.$covarianceSamp|Aggregation.Accumulator.$denseRank|Aggregation.Accumulator.$derivative|Aggregation.Accumulator.$documentNumber|Aggregation.Accumulator.$expMovingAvg|Aggregation.Accumulator.$first|Aggregation.Accumulator.$firstN|Aggregation.Accumulator.$integral|Aggregation.Accumulator.$last|Aggregation.Accumulator.$lastN|Aggregation.Accumulator.$linearFill|Aggregation.Accumulator.$locf|Aggregation.Accumulator.$max|Aggregation.Accumulator.$maxN|Aggregation.Accumulator.$median|Aggregation.Accumulator.$min|Aggregation.Accumulator.$minN|Aggregation.Accumulator.$percentile|Aggregation.Accumulator.$push|Aggregation.Accumulator.$rank|Aggregation.Accumulator.$shift|Aggregation.Accumulator.$stdDevPop|Aggregation.Accumulator.$stdDevSamp|Aggregation.Accumulator.$sum;\nexport type ExpressionOperator = Aggregation.Expression.$abs|Aggregation.Expression.$acos|Aggregation.Expression.$acosh|Aggregation.Expression.$add|Aggregation.Expression.$allElementsTrue|Aggregation.Expression.$and|Aggregation.Expression.$anyElementTrue|Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$arrayToObject|Aggregation.Expression.$asin|Aggregation.Expression.$asinh|Aggregation.Expression.$atan|Aggregation.Expression.$atan2|Aggregation.Expression.$atanh|Aggregation.Expression.$avg|Aggregation.Expression.$binarySize|Aggregation.Expression.$bitAnd|Aggregation.Expression.$bitNot|Aggregation.Expression.$bitOr|Aggregation.Expression.$bitXor|Aggregation.Expression.$bsonSize|Aggregation.Expression.$case|Aggregation.Expression.$ceil|Aggregation.Expression.$cmp|Aggregation.Expression.$concat|Aggregation.Expression.$concatArrays|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$cos|Aggregation.Expression.$cosh|Aggregation.Expression.$dateAdd|Aggregation.Expression.$dateDiff|Aggregation.Expression.$dateFromParts|Aggregation.Expression.$dateFromString|Aggregation.Expression.$dateSubtract|Aggregation.Expression.$dateToParts|Aggregation.Expression.$dateToString|Aggregation.Expression.$dateTrunc|Aggregation.Expression.$dayOfMonth|Aggregation.Expression.$dayOfWeek|Aggregation.Expression.$dayOfYear|Aggregation.Expression.$degreesToRadians|Aggregation.Expression.$divide|Aggregation.Expression.$eq|Aggregation.Expression.$exp|Aggregation.Expression.$filter|Aggregation.Expression.$first|Aggregation.Expression.$firstN|Aggregation.Expression.$floor|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$gt|Aggregation.Expression.$gte|Aggregation.Expression.$hour|Aggregation.Expression.$ifNull|Aggregation.Expression.$in|Aggregation.Expression.$indexOfArray|Aggregation.Expression.$indexOfBytes|Aggregation.Expression.$indexOfCP|Aggregation.Expression.$isArray|Aggregation.Expression.$isNumber|Aggregation.Expression.$isoDayOfWeek|Aggregation.Expression.$isoWeek|Aggregation.Expression.$isoWeekYear|Aggregation.Expression.$last|Aggregation.Expression.$lastN|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$ln|Aggregation.Expression.$log|Aggregation.Expression.$log10|Aggregation.Expression.$lt|Aggregation.Expression.$lte|Aggregation.Expression.$ltrim|Aggregation.Expression.$map|Aggregation.Expression.$max|Aggregation.Expression.$maxN|Aggregation.Expression.$median|Aggregation.Expression.$mergeObjects|Aggregation.Expression.$meta|Aggregation.Expression.$millisecond|Aggregation.Expression.$min|Aggregation.Expression.$minN|Aggregation.Expression.$minute|Aggregation.Expression.$mod|Aggregation.Expression.$month|Aggregation.Expression.$multiply|Aggregation.Expression.$ne|Aggregation.Expression.$not|Aggregation.Expression.$objectToArray|Aggregation.Expression.$or|Aggregation.Expression.$percentile|Aggregation.Expression.$pow|Aggregation.Expression.$radiansToDegrees|Aggregation.Expression.$rand|Aggregation.Expression.$range|Aggregation.Expression.$reduce|Aggregation.Expression.$regexFind|Aggregation.Expression.$regexFindAll|Aggregation.Expression.$regexMatch|Aggregation.Expression.$replaceAll|Aggregation.Expression.$replaceOne|Aggregation.Expression.$reverseArray|Aggregation.Expression.$round|Aggregation.Expression.$rtrim|Aggregation.Expression.$second|Aggregation.Expression.$setDifference|Aggregation.Expression.$setEquals|Aggregation.Expression.$setField|Aggregation.Expression.$setIntersection|Aggregation.Expression.$setIsSubset|Aggregation.Expression.$setUnion|Aggregation.Expression.$sin|Aggregation.Expression.$sinh|Aggregation.Expression.$size|Aggregation.Expression.$slice|Aggregation.Expression.$sortArray|Aggregation.Expression.$split|Aggregation.Expression.$sqrt|Aggregation.Expression.$stdDevPop|Aggregation.Expression.$stdDevSamp|Aggregation.Expression.$strLenBytes|Aggregation.Expression.$strLenCP|Aggregation.Expression.$strcasecmp|Aggregation.Expression.$substr|Aggregation.Expression.$substrBytes|Aggregation.Expression.$substrCP|Aggregation.Expression.$subtract|Aggregation.Expression.$sum|Aggregation.Expression.$switch|Aggregation.Expression.$tan|Aggregation.Expression.$tanh|Aggregation.Expression.$toBool|Aggregation.Expression.$toDate|Aggregation.Expression.$toDecimal|Aggregation.Expression.$toDouble|Aggregation.Expression.$toHashedIndexKey|Aggregation.Expression.$toInt|Aggregation.Expression.$toLong|Aggregation.Expression.$toLower|Aggregation.Expression.$toObjectId|Aggregation.Expression.$toString|Aggregation.Expression.$toUpper|Aggregation.Expression.$trim|Aggregation.Expression.$trunc|Aggregation.Expression.$tsIncrement|Aggregation.Expression.$tsSecond|Aggregation.Expression.$type|Aggregation.Expression.$unsetField|Aggregation.Expression.$week|Aggregation.Expression.$year|Aggregation.Expression.$zip;\nexport type ResolvesToAny = Aggregation.Expression.$arrayElemAt|Aggregation.Expression.$cond|Aggregation.Expression.$convert|Aggregation.Expression.$first|Aggregation.Expression.$function|Aggregation.Expression.$getField|Aggregation.Expression.$ifNull|Aggregation.Expression.$last|Aggregation.Expression.$let|Aggregation.Expression.$literal|Aggregation.Expression.$max|Aggregation.Expression.$meta|Aggregation.Expression.$min|Aggregation.Expression.$reduce|Aggregation.Expression.$switch;\nexport type SwitchBranch = Aggregation.Expression.$case;\nexport type FieldQuery = Aggregation.Query.$all|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$not|Aggregation.Query.$regex|Aggregation.Query.$size|Aggregation.Query.$type;\nexport type QueryOperator = Aggregation.Query.$all|Aggregation.Query.$and|Aggregation.Query.$bitsAllClear|Aggregation.Query.$bitsAllSet|Aggregation.Query.$bitsAnyClear|Aggregation.Query.$bitsAnySet|Aggregation.Query.$box|Aggregation.Query.$center|Aggregation.Query.$centerSphere|Aggregation.Query.$elemMatch|Aggregation.Query.$eq|Aggregation.Query.$exists|Aggregation.Query.$expr|Aggregation.Query.$geoIntersects|Aggregation.Query.$geoWithin|Aggregation.Query.$geometry|Aggregation.Query.$gt|Aggregation.Query.$gte|Aggregation.Query.$in|Aggregation.Query.$jsonSchema|Aggregation.Query.$lt|Aggregation.Query.$lte|Aggregation.Query.$maxDistance|Aggregation.Query.$minDistance|Aggregation.Query.$mod|Aggregation.Query.$ne|Aggregation.Query.$near|Aggregation.Query.$nearSphere|Aggregation.Query.$nin|Aggregation.Query.$nor|Aggregation.Query.$not|Aggregation.Query.$or|Aggregation.Query.$polygon|Aggregation.Query.$rand|Aggregation.Query.$regex|Aggregation.Query.$sampleRate|Aggregation.Query.$size|Aggregation.Query.$text|Aggregation.Query.$type|Aggregation.Query.$where;\nexport type SearchOperator = Aggregation.Search.Autocomplete|Aggregation.Search.Compound|Aggregation.Search.EmbeddedDocument|Aggregation.Search.Equals|Aggregation.Search.Exists|Aggregation.Search.Facet|Aggregation.Search.GeoShape|Aggregation.Search.GeoWithin|Aggregation.Search.In|Aggregation.Search.MoreLikeThis|Aggregation.Search.Near|Aggregation.Search.Phrase|Aggregation.Search.QueryString|Aggregation.Search.Range|Aggregation.Search.Regex|Aggregation.Search.Text|Aggregation.Search.Wildcard;\nexport type StageOperator = Aggregation.Stage.$addFields|Aggregation.Stage.$bucket|Aggregation.Stage.$bucketAuto|Aggregation.Stage.$changeStream|Aggregation.Stage.$changeStreamSplitLargeEvent|Aggregation.Stage.$collStats|Aggregation.Stage.$count|Aggregation.Stage.$currentOp|Aggregation.Stage.$densify|Aggregation.Stage.$documents|Aggregation.Stage.$facet|Aggregation.Stage.$fill|Aggregation.Stage.$geoNear|Aggregation.Stage.$graphLookup|Aggregation.Stage.$group|Aggregation.Stage.$indexStats|Aggregation.Stage.$limit|Aggregation.Stage.$listLocalSessions|Aggregation.Stage.$listSampledQueries|Aggregation.Stage.$listSearchIndexes|Aggregation.Stage.$listSessions|Aggregation.Stage.$lookup|Aggregation.Stage.$match|Aggregation.Stage.$merge|Aggregation.Stage.$out|Aggregation.Stage.$planCacheStats|Aggregation.Stage.$project|Aggregation.Stage.$redact|Aggregation.Stage.$replaceRoot|Aggregation.Stage.$replaceWith|Aggregation.Stage.$sample|Aggregation.Stage.$search|Aggregation.Stage.$searchMeta|Aggregation.Stage.$set|Aggregation.Stage.$setWindowFields|Aggregation.Stage.$shardedDataDistribution|Aggregation.Stage.$skip|Aggregation.Stage.$sort|Aggregation.Stage.$sortByCount|Aggregation.Stage.$unionWith|Aggregation.Stage.$unset|Aggregation.Stage.$unwind|Aggregation.Stage.$vectorSearch;'; diff --git a/packages/mql-typescript/out/schema.ts b/packages/mql-typescript/out/schema.d.ts similarity index 100% rename from packages/mql-typescript/out/schema.ts rename to packages/mql-typescript/out/schema.d.ts diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 6d3c6c77..02f43695 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -28,8 +28,9 @@ "license": "Apache-2.0", "main": "dist/index.js", "exports": { - "require": "./dist/index.js", - "import": "./dist/.esm-wrapper.mjs" + "./schema": { + "types": "./dist/schema/schema.d.ts" + } }, "types": "./dist/index.d.ts", "scripts": { diff --git a/packages/mql-typescript/src/schema-generator.ts b/packages/mql-typescript/src/schema-generator.ts index 6a501c86..d9e4f875 100644 --- a/packages/mql-typescript/src/schema-generator.ts +++ b/packages/mql-typescript/src/schema-generator.ts @@ -3,7 +3,6 @@ import type { YamlFiles } from './generator'; import { GeneratorBase } from './generator'; import { Operator } from './metaschema'; import { capitalize } from './utils'; -import * as fs from 'fs/promises'; type ArgType = NonNullable< typeof Operator._type.arguments @@ -14,12 +13,11 @@ type SyntheticVariables = NonNullable< >[number]['syntheticVariables']; export class SchemaGenerator extends GeneratorBase { - private schemaOutputFile = path.resolve(__dirname, '..', 'out', 'schema.ts'); - private schemaExportFile = path.resolve( + private schemaOutputFile = path.resolve( __dirname, '..', 'out', - 'schema-export.js', + 'schema.d.ts', ); private toTypeName(type: string): string { @@ -579,19 +577,5 @@ export class SchemaGenerator extends GeneratorBase { } = ${[...new Set(interfaces)].join('|')};`, ); } - - // Generate the schema-export.js which will be used by the autocomplete package to load the types - // Switch to the new file that will just export the types as a giant string: - // exports.schema = "** contents of the out/schema.ts file **"; - await this.emitToFile(this.schemaExportFile); - const schemaDefinition = await fs.readFile(this.schemaOutputFile, 'utf8'); - this.emit("exports.schema = '"); - this.emit( - schemaDefinition - .replace(/\\/g, '\\\\') // Escape backslashes - .replace(/'/g, "\\'") // Escape double quotes - .replace(/\n/g, '\\n'), // Escape newlines - ); - this.emit("'\n"); } } diff --git a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts index 51c9a1c3..02c1bec7 100644 --- a/packages/mql-typescript/tests/expression/regexFindAll.spec.ts +++ b/packages/mql-typescript/tests/expression/regexFindAll.spec.ts @@ -87,7 +87,7 @@ function test2() { $regexFindAll: { input: '$comment', regex: new bson.BSONRegExp( - '[a-z0-9_.+-]+@[a-z0-9_.+-]+\.[a-z0-9_.+-]+', + '[a-z0-9_.+-]+@[a-z0-9_.+-]+\\.[a-z0-9_.+-]+', 'i', ), }, @@ -115,7 +115,7 @@ function test3() { $regexFindAll: { input: '$comment', regex: new bson.BSONRegExp( - '([a-z0-9_.+-]+)@[a-z0-9_.+-]+\.[a-z0-9_.+-]+', + '([a-z0-9_.+-]+)@[a-z0-9_.+-]+\\.[a-z0-9_.+-]+', 'i', ), }, From f878c8a5075242e0088fa4500ee30d5d4b8c3a23 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Wed, 11 Jun 2025 16:42:16 +0200 Subject: [PATCH 25/26] fix query parser test --- packages/query-parser/src/index.spec.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/query-parser/src/index.spec.ts b/packages/query-parser/src/index.spec.ts index bbde3000..87c08313 100644 --- a/packages/query-parser/src/index.spec.ts +++ b/packages/query-parser/src/index.spec.ts @@ -291,15 +291,11 @@ describe('mongodb-query-parser', function () { }); it('should support NumberInt', function () { - assert.deepEqual(convert('NumberInt("1234567890")'), { - $numberInt: '1234567890', - }); + assert.deepEqual(convert('NumberInt("1234567890")'), 1234567890); }); it('should support NumberInt with number', function () { - assert.deepEqual(convert('NumberInt(1234567890)'), { - $numberInt: '1234567890', - }); + assert.deepEqual(convert('NumberInt(1234567890)'), 1234567890); }); it('should support NumberDecimal', function () { From edeb493cb02ca486f716dc5808fae230771b6529 Mon Sep 17 00:00:00 2001 From: Nikola Irinchev Date: Thu, 12 Jun 2025 14:57:43 +0200 Subject: [PATCH 26/26] move dev dependencies to devDependencies --- packages/mql-typescript/package.json | 16 ++++++++-------- packages/mql-typescript/src/generator.ts | 16 ++++------------ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/packages/mql-typescript/package.json b/packages/mql-typescript/package.json index 02f43695..63f0f80d 100644 --- a/packages/mql-typescript/package.json +++ b/packages/mql-typescript/package.json @@ -61,6 +61,7 @@ "devDependencies": { "@mongodb-js/eslint-config-devtools": "0.9.11", "@mongodb-js/prettier-config-devtools": "^1.0.2", + "@mongodb-js/shell-bson-parser": "^1.2.2", "@mongodb-js/tsconfig-devtools": "^1.0.3", "@types/js-yaml": "^4.0.9", "@types/jsdom": "^21.1.7", @@ -69,20 +70,19 @@ "depcheck": "^1.4.7", "eslint": "^7.25.0", "gen-esm-wrapper": "^1.1.3", + "js-yaml": "^4.1.0", + "jsdom": "^24.1.3", "json-refs": "^3.0.15", "json-schema-to-zod": "^2.6.0", "prettier": "^3.5.3", "ts-node": "^10.9.2", - "typescript": "^5.0.4" - }, - "dependencies": { - "@mongodb-js/shell-bson-parser": "^1.2.2", - "bson": "^6.10.3", - "js-yaml": "^4.1.0", - "jsdom": "^24.1.3", - "mongodb": "^6.9.0", + "typescript": "^5.0.4", "mongodb-schema": "^12.6.2", "yargs": "^17.7.2", "zod": "^3.24.2" + }, + "dependencies": { + "bson": "^6.10.3", + "mongodb": "^6.9.0" } } diff --git a/packages/mql-typescript/src/generator.ts b/packages/mql-typescript/src/generator.ts index 6ed8c137..a8591d3e 100644 --- a/packages/mql-typescript/src/generator.ts +++ b/packages/mql-typescript/src/generator.ts @@ -5,6 +5,7 @@ import path from 'path'; import * as fs from 'fs/promises'; import * as yaml from 'js-yaml'; import * as bson from 'bson'; +import { once } from 'events'; export type YamlFiles = ReturnType; @@ -257,20 +258,11 @@ export abstract class GeneratorBase { this.outputStream = createWriteStream(filePath, { encoding: 'utf8' }); } - private flushFile(): Promise { + private async flushFile(): Promise { if (this.outputStream) { - return new Promise((resolve, reject) => { - this.outputStream?.close((err) => { - if (err) { - reject(err); - } else { - resolve(); - } - }); - }); + this.outputStream.end(); + await once(this.outputStream, 'close'); } - - return Promise.resolve(); } protected emit(str: string): void {