From 4bd504ae5834b4915dc26173226373f0aec4adce Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 15 Apr 2026 11:32:59 +0400 Subject: [PATCH 01/30] OSN-1407. [Dependabot] Prototype Pollution via parse() in NodeJS flatted ## Description _flatted_ version updated to 3.4.2 --- jira_ui/ui/package-lock.json | 15 ++++++++------- ngui/pnpm-lock.yaml | 8 ++++---- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index c3042fd32..279fc02fc 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -4188,10 +4188,11 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", - "dev": true + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" }, "node_modules/focus-lock": { "version": "1.0.0", @@ -10909,9 +10910,9 @@ } }, "flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true }, "focus-lock": { diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index b306643f9..ae7285248 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -4334,8 +4334,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} flatten-vertex-data@1.0.2: resolution: {integrity: sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==} @@ -12437,10 +12437,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.3 + flatted: 3.4.2 keyv: 4.5.4 - flatted@3.3.3: {} + flatted@3.4.2: {} flatten-vertex-data@1.0.2: dependencies: From b9ad1d4e9207f02922c5032b98d2395b879f0e3f Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 15 Apr 2026 11:45:22 +0400 Subject: [PATCH 02/30] OSN-1410. [Dependabot] Axios has Unrestricted Cloud Metadata Exfiltration via Header Injection Chain ## Description Axios version up from 1.13.5 to 1.15.0 --- ngui/pnpm-lock.yaml | 32 +++++++++++--------------------- ngui/ui/package.json | 2 +- 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index ae7285248..8349674cd 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -230,8 +230,8 @@ importers: specifier: 0.8.1 version: 0.8.1(@types/dlv@1.1.5) axios: - specifier: 1.13.5 - version: 1.13.5 + specifier: 1.15.0 + version: 1.15.0 core-js: specifier: 3.27.2 version: 3.27.2 @@ -3156,8 +3156,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.13.5: - resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} + axios@1.15.0: + resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} babel-plugin-macros@3.1.0: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} @@ -4349,15 +4349,6 @@ packages: debug: optional: true - follow-redirects@1.15.9: - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - font-atlas@2.1.0: resolution: {integrity: sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg==} @@ -6068,8 +6059,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} @@ -11020,11 +11012,11 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.13.5: + axios@1.15.0: dependencies: follow-redirects: 1.15.11 form-data: 4.0.5 - proxy-from-env: 1.1.0 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug @@ -12448,8 +12440,6 @@ snapshots: follow-redirects@1.15.11: {} - follow-redirects@1.15.9: {} - font-atlas@2.1.0: dependencies: css-font: 1.2.0 @@ -13009,7 +12999,7 @@ snapshots: http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.9 + follow-redirects: 1.15.11 requires-port: 1.0.0 transitivePeerDependencies: - debug @@ -14598,7 +14588,7 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} psl@1.15.0: dependencies: diff --git a/ngui/ui/package.json b/ngui/ui/package.json index ff8fec3b7..96ed7a64d 100644 --- a/ngui/ui/package.json +++ b/ngui/ui/package.json @@ -35,7 +35,7 @@ "@vitejs/plugin-react-swc": "3.10.2", "ajv": "8.12.0", "analytics": "0.8.1", - "axios": "1.13.5", + "axios": "1.15.0", "core-js": "3.27.2", "d3-array": "3.2.4", "d3-scale": "4.0.2", From 4468674158f14ec3f0c1da6e22ea5f997948b464 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 15 Apr 2026 16:12:00 +0400 Subject: [PATCH 03/30] OSN-1408. [Dependabot] Immutable is vulnerable to Prototype Pollution ## Description - update @graphql-codegen/* dependencies to latest minor versions - Disable "no-redeclare" rule for _\*\*/graphql/__generated__/\*\*_ files due to function overloads generated by @graphql-codegen/typescript-react-apollo (https://github.com/dotansimha/graphql-code-generator-community/commit/78ff366cfda124b8e519d44d619bfceb5f44c31b) --- ngui/package.json | 8 +- ngui/pnpm-lock.yaml | 1383 +++++------------ ngui/ui/eslint.config.mjs | 19 +- ngui/ui/package.json | 2 +- .../src/graphql/__generated__/hooks/auth.ts | 9 + .../src/graphql/__generated__/hooks/keeper.ts | 7 + .../graphql/__generated__/hooks/restapi.ts | 172 ++ .../graphql/__generated__/hooks/slacker.ts | 7 + ngui/ui/src/utils/datetime.ts | 2 +- 9 files changed, 636 insertions(+), 973 deletions(-) diff --git a/ngui/package.json b/ngui/package.json index 2583c9124..464ae6089 100644 --- a/ngui/package.json +++ b/ngui/package.json @@ -16,10 +16,10 @@ "dev": "concurrently \"pnpm -r dev\" \"pnpm codegen:watch\"" }, "devDependencies": { - "@graphql-codegen/cli": "5.0.3", - "@graphql-codegen/typescript": "4.1.2", - "@graphql-codegen/typescript-react-apollo": "4.3.3", - "@graphql-codegen/typescript-resolvers": "4.4.1", + "@graphql-codegen/cli": "5.0.7", + "@graphql-codegen/typescript": "4.1.6", + "@graphql-codegen/typescript-react-apollo": "4.4.1", + "@graphql-codegen/typescript-resolvers": "4.5.2", "@parcel/watcher": "2.5.1", "@types/file-saver": "2.0.7", "@types/jest": "29.5.12", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 8349674cd..ce4cba9e9 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -10,17 +10,17 @@ importers: .: devDependencies: '@graphql-codegen/cli': - specifier: 5.0.3 - version: 5.0.3(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) + specifier: 5.0.7 + version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) '@graphql-codegen/typescript': - specifier: 4.1.2 - version: 4.1.2(graphql@16.10.0) + specifier: 4.1.6 + version: 4.1.6(graphql@16.10.0) '@graphql-codegen/typescript-react-apollo': - specifier: 4.3.3 - version: 4.3.3(graphql@16.10.0) - '@graphql-codegen/typescript-resolvers': specifier: 4.4.1 version: 4.4.1(graphql@16.10.0) + '@graphql-codegen/typescript-resolvers': + specifier: 4.5.2 + version: 4.5.2(graphql@16.10.0) '@parcel/watcher': specifier: 2.5.1 version: 2.5.1 @@ -129,7 +129,7 @@ importers: version: 12.0.2 eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) + version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-node: specifier: 11.1.0 version: 11.1.0(eslint@9.34.0(jiti@2.4.2)) @@ -219,7 +219,7 @@ importers: version: 8.7.6(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@uiw/react-textarea-code-editor': specifier: 2.1.1 - version: 2.1.1(@babel/runtime@7.28.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + version: 2.1.1(@babel/runtime@7.29.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@vitejs/plugin-react-swc': specifier: 3.10.2 version: 3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) @@ -360,8 +360,8 @@ importers: version: 5.1.4(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) devDependencies: '@hystax/eslint-config-ui': - specifier: 1.0.0 - version: 1.0.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + specifier: 2.1.0 + version: 2.1.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) '@storybook/addon-actions': specifier: 8.6.15 version: 8.6.15(storybook@8.6.17(prettier@3.3.3)) @@ -560,15 +560,8 @@ packages: resolution: {integrity: sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==} engines: {node: '>=16'} - '@ardatan/relay-compiler@12.0.0': - resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} - hasBin: true - peerDependencies: - graphql: '*' - - '@ardatan/relay-compiler@12.0.3': - resolution: {integrity: sha512-mBDFOGvAoVlWaWqs3hm1AciGHSQE1rqFc/liZTyYz/Oek9yZdT5H26pH2zAFuEiTiBVPPyMuqf5VjOFPI2DGsQ==} - hasBin: true + '@ardatan/relay-compiler@13.0.1': + resolution: {integrity: sha512-afG3YPwuSA0E5foouZusz5GlXKs74dObv4cuWyLyfKsYFj2r7oGRNB28v18HvwuLSQtQFCi+DpIe0TZkgQDYyg==} peerDependencies: graphql: '*' @@ -605,28 +598,14 @@ packages: resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.27.3': - resolution: {integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==} - engines: {node: '>=6.9.0'} - '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} - '@babel/helper-create-class-features-plugin@7.27.1': - resolution: {integrity: sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} - '@babel/helper-member-expression-to-functions@7.27.1': - resolution: {integrity: sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==} - engines: {node: '>=6.9.0'} - '@babel/helper-module-imports@7.27.1': resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} @@ -637,24 +616,10 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/helper-optimise-call-expression@7.27.1': - resolution: {integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==} - engines: {node: '>=6.9.0'} - '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} - '@babel/helper-replace-supers@7.27.1': - resolution: {integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - resolution: {integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==} - engines: {node: '>=6.9.0'} - '@babel/helper-string-parser@7.27.1': resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==} engines: {node: '>=6.9.0'} @@ -676,168 +641,12 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.20.7': - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-flow@7.27.1': - resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-assertions@7.27.1': resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.27.1': - resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-arrow-functions@7.27.1': - resolution: {integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.27.1': - resolution: {integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.28.0': - resolution: {integrity: sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-classes@7.28.0': - resolution: {integrity: sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.27.1': - resolution: {integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.28.0': - resolution: {integrity: sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-flow-strip-types@7.27.1': - resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.27.1': - resolution: {integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.27.1': - resolution: {integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.27.1': - resolution: {integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.27.1': - resolution: {integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.27.1': - resolution: {integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.27.1': - resolution: {integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.27.7': - resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.27.1': - resolution: {integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.28.0': - resolution: {integrity: sha512-D6Eujc2zMxKjfa4Zxl4GHMsmhKKZ9VpcqIchJLvwTxad9zWIYulwYItBovpDOoNLISpcZSXoDJ5gaGbQUDqViA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.27.1': - resolution: {integrity: sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.27.1': - resolution: {integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.27.1': - resolution: {integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.27.1': - resolution: {integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/runtime@7.27.6': resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} @@ -846,6 +655,10 @@ packages: resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -880,6 +693,15 @@ packages: '@loaders.gl/core': ^3.0.0 '@luma.gl/core': ^8.0.0 + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emotion/babel-plugin@11.13.5': resolution: {integrity: sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==} @@ -1205,8 +1027,8 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/cli@5.0.3': - resolution: {integrity: sha512-ULpF6Sbu2d7vNEOgBtE9avQp2oMgcPY/QBYcCqk0Xru5fz+ISjcovQX29V7CS7y5wWBRzNLoXwJQGeEyWbl05g==} + '@graphql-codegen/cli@5.0.7': + resolution: {integrity: sha512-h/sxYvSaWtxZxo8GtaA8SvcHTyViaaPd7dweF/hmRDpaQU1o3iU3EZxlcJ+oLTunU0tSMFsnrIXm/mhXxI11Cw==} engines: {node: '>=16'} hasBin: true peerDependencies: @@ -1237,13 +1059,14 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/plugin-helpers@3.1.2': - resolution: {integrity: sha512-emOQiHyIliVOIjKVKdsI5MXj312zmRDwmHpyUTZMjfpvxq/UVAHUJIVdVf+lnjjrI+LXBTgMlTWTgHQfmICxjg==} + '@graphql-codegen/plugin-helpers@5.1.1': + resolution: {integrity: sha512-28GHODK2HY1NhdyRcPP3sCz0Kqxyfiz7boIZ8qIxFYmpLYnlDgiYok5fhFLVSZihyOpCs4Fa37gVHf/Q4I2FEg==} + engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/plugin-helpers@5.1.1': - resolution: {integrity: sha512-28GHODK2HY1NhdyRcPP3sCz0Kqxyfiz7boIZ8qIxFYmpLYnlDgiYok5fhFLVSZihyOpCs4Fa37gVHf/Q4I2FEg==} + '@graphql-codegen/plugin-helpers@6.3.0': + resolution: {integrity: sha512-Auc+/B7okDx9+pVgLVliZtZLYh6iltWXlnzzM+bRE+zh1T4r3hKbnr8xAmtT937ArfSgk5GHcQHr8LfPYnrRBg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1269,23 +1092,21 @@ packages: graphql-sock: optional: true - '@graphql-codegen/typescript-react-apollo@4.3.3': - resolution: {integrity: sha512-ecuzzqoZEHCtlxaEXL1LQTrfzVYwNNtbVUBHc/KQDfkJIQZon+dG5ZXOoJ4BpbRA2L99yTx+TZc2VkpOVfSypw==} + '@graphql-codegen/typescript-react-apollo@4.4.1': + resolution: {integrity: sha512-lrjUfDCNlCWQU07jO6EvZE8I2OLfJl9XKKGCcol27OhW6B9xaUEPaId+TvL6o/NfV+T4z4eQ/Y8BuKWyYjD+mQ==} engines: {node: '>= 16.0.0'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/typescript-resolvers@4.4.1': - resolution: {integrity: sha512-xN/co3NofnHxpOzu5qi2Lc55C0hQZi6jJeV5mn+EnESKZBedGK0yPlaIpsUvieC6DGzGdLFA74wuSgWYULb3LA==} + '@graphql-codegen/typescript-resolvers@4.5.2': + resolution: {integrity: sha512-u7Zz30UmtJCOmfAIcCYefS/3lE8LK7bF0COPz4VOva5v/EuxmLNCFreCuj4dztEZzBmuwJOJRm278MAxiz0fzg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - '@graphql-codegen/typescript@4.1.2': - resolution: {integrity: sha512-GhPgfxgWEkBrvKR2y77OThus3K8B6U3ESo68l7+sHH1XiL2WapK5DdClViblJWKQerJRjfJu8tcaxQ8Wpk6Ogw==} - engines: {node: '>=16'} - peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql-sock: ^1.0.0 + peerDependenciesMeta: + graphql-sock: + optional: true '@graphql-codegen/typescript@4.1.6': resolution: {integrity: sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA==} @@ -1293,19 +1114,14 @@ packages: peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/visitor-plugin-common@2.13.8': - resolution: {integrity: sha512-IQWu99YV4wt8hGxIbBQPtqRuaWZhkQRG2IZKbMoSvh0vGeWb3dB0n0hSgKaOOxDY+tljtOf9MTcUYvJslQucMQ==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - '@graphql-codegen/visitor-plugin-common@5.6.0': - resolution: {integrity: sha512-PowcVPJbUqMC9xTJ/ZRX1p/fsdMZREc+69CM1YY+AlFng2lL0zsdBskFJSRoviQk2Ch9IPhKGyHxlJCy9X22tg==} + '@graphql-codegen/visitor-plugin-common@5.8.0': + resolution: {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/visitor-plugin-common@5.8.0': - resolution: {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} + '@graphql-codegen/visitor-plugin-common@6.3.0': + resolution: {integrity: sha512-vGBoE+4huzZyNhyGSAhXAkdROHlwKxxuziZm4XtP1mxe7nuI+VgyOmXebafLijbmuDsptPXQN0C/htL54O8hrg==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1453,11 +1269,6 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/optimize@1.4.0': - resolution: {integrity: sha512-dJs/2XvZp+wgHH8T5J2TqptT9/6uVzIYvA6uFACha+ufvdMBedkfR4b4GbT8jAKLRARiqRTxy3dctnwkTM2tdw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/optimize@2.0.0': resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} engines: {node: '>=16.0.0'} @@ -1471,13 +1282,8 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/relay-operation-optimizer@6.5.18': - resolution: {integrity: sha512-mc5VPyTeV+LwiM+DNvoDQfPqwQYhPV/cl5jOBjTgSniyaq8/86aODfMkrE2OduhQ5E00hqrkuL2Fdrgk0w1QJg==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - - '@graphql-tools/relay-operation-optimizer@7.0.19': - resolution: {integrity: sha512-xnjLpfzw63yIX1bo+BVh4j1attSwqEkUbpJ+HAhdiSUa3FOQFfpWgijRju+3i87CwhjBANqdTZbcsqLT1hEXig==} + '@graphql-tools/relay-operation-optimizer@7.1.3': + resolution: {integrity: sha512-Vzh5QORIqX0KtwxgNepl/T16a85Br7YbOxxxmnyVpS7yza9vBjkrERbvAwADcYyPH7kyShmH1Gu5+88+vCVhuA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1511,6 +1317,12 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/utils@11.0.1': + resolution: {integrity: sha512-pNyCOb95ab/z3zkkiPwIPYxigX7IcpyFVcgD1XACDEvg/7yGnKCESx3k/XHEeneKYx/aWKGzEh/uuf6M6Q8HOw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/utils@9.2.1': resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: @@ -1547,8 +1359,8 @@ packages: resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} - '@hystax/eslint-config-ui@1.0.0': - resolution: {integrity: sha512-qYpNav7dk2QyY0Mdgn8e9HqMQF4FEog2no2ESKKrkVt9EuSyR4dGtpMgAUGLET2GI2cEn+DTIaALJkmhYr0h1w==} + '@hystax/eslint-config-ui@2.1.0': + resolution: {integrity: sha512-ZBUcpjKf1Sr40o5nZk4mtpSNxgP6GQ/gcbyig7lMO8HZs8NR44P/iheALZcb5uJEzaqxLOowR7mdrzboVi2mcQ==} peerDependencies: eslint: ^9.34.0 @@ -1598,9 +1410,6 @@ packages: '@jridgewell/source-map@0.3.11': resolution: {integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==} - '@jridgewell/sourcemap-codec@1.5.4': - resolution: {integrity: sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw==} - '@jridgewell/sourcemap-codec@1.5.5': resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} @@ -1610,9 +1419,6 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@kamilkisiela/fast-url-parser@1.1.4': - resolution: {integrity: sha512-gbkePEBupNydxCelHCESvFSFM8XPh1Zs/OAVRW/rKpEqPAl5PbOM90Si8mv9bvnR53uPD2s/FiRxdvSejpRJew==} - '@loaders.gl/core@3.4.15': resolution: {integrity: sha512-rPOOTuusWlRRNMWg7hymZBoFmPCXWThsA5ZYRfqqXnsgVeQIi8hzcAhJ7zDUIFAd/OSR8ravtqb0SH+3k6MOFQ==} @@ -1799,6 +1605,9 @@ packages: '@types/react': optional: true + '@napi-rs/wasm-runtime@0.2.12': + resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==} + '@nivo/annotations@0.99.0': resolution: {integrity: sha512-jCuuXPbvpaqaz4xF7k5dv0OT2ubn5Nt0gWryuTe/8oVsC/9bzSuK8bM9vBty60m9tfO+X8vUYliuaCDwGksC2g==} peerDependencies: @@ -2436,6 +2245,9 @@ packages: '@turf/meta@7.3.3': resolution: {integrity: sha512-Tz1j4h70iFB5SebWWoVv/uL59x4aOngXU+d1xQDXzOCn/O6txnreGVGMcYU362c5F06yqZx38H9UFTQ553lK0w==} + '@tybys/wasm-util@0.10.1': + resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -2837,6 +2649,101 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + resolution: {integrity: sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==} + cpu: [arm] + os: [android] + + '@unrs/resolver-binding-android-arm64@1.11.1': + resolution: {integrity: sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==} + cpu: [arm64] + os: [android] + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + resolution: {integrity: sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==} + cpu: [arm64] + os: [darwin] + + '@unrs/resolver-binding-darwin-x64@1.11.1': + resolution: {integrity: sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==} + cpu: [x64] + os: [darwin] + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + resolution: {integrity: sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==} + cpu: [x64] + os: [freebsd] + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + resolution: {integrity: sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + resolution: {integrity: sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==} + cpu: [arm] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} + cpu: [arm64] + os: [linux] + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} + cpu: [ppc64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} + cpu: [riscv64] + os: [linux] + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} + cpu: [s390x] + os: [linux] + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} + cpu: [x64] + os: [linux] + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + resolution: {integrity: sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==} + cpu: [arm64] + os: [win32] + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + resolution: {integrity: sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==} + cpu: [ia32] + os: [win32] + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + resolution: {integrity: sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==} + cpu: [x64] + os: [win32] + '@vitejs/plugin-react-swc@3.10.2': resolution: {integrity: sha512-xD3Rdvrt5LgANug7WekBn1KhcvLn1H3jNBfJRL3reeOIua/WnZOEV5qi5qIBq5T8R0jUDmRtxuvk4bPhzGHDWw==} peerDependencies: @@ -2924,14 +2831,6 @@ packages: resolution: {integrity: sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg==} engines: {node: '>=18.0.0'} - '@whatwg-node/fetch@0.9.23': - resolution: {integrity: sha512-7xlqWel9JsmxahJnYVUj/LLxWcnA93DR4c9xlw3U814jWTiYalryiH1qToik1hOxweKKRLi4haXHM5ycRksPBA==} - engines: {node: '>=18.0.0'} - - '@whatwg-node/node-fetch@0.6.0': - resolution: {integrity: sha512-tcZAhrpx6oVlkEsRngeTEEE7I5/QdLjeEz4IlekabGaESP7+Dkm/6a9KcF1KdCBB7mO9PXtBkwCuTCt8+UPg8Q==} - engines: {node: '>=18.0.0'} - '@whatwg-node/node-fetch@0.7.21': resolution: {integrity: sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw==} engines: {node: '>=18.0.0'} @@ -3123,9 +3022,6 @@ packages: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} - asap@2.0.6: - resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} - assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -3163,14 +3059,6 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} - babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: - resolution: {integrity: sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==} - - babel-preset-fbjs@3.4.0: - resolution: {integrity: sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==} - peerDependencies: - '@babel/core': ^7.0.0 - bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} @@ -3238,19 +3126,12 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - bser@2.1.1: - resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} - buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} buffer@5.7.1: resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -3278,10 +3159,6 @@ packages: camel-case@4.1.2: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - camelcase@5.3.1: - resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} - engines: {node: '>=6'} - caniuse-lite@1.0.30001727: resolution: {integrity: sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==} @@ -3373,9 +3250,6 @@ packages: resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} engines: {node: '>= 10'} - cliui@6.0.0: - resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} - cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -3738,10 +3612,6 @@ packages: supports-color: optional: true - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - decimal.js@10.6.0: resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} @@ -3792,6 +3662,10 @@ packages: resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} engines: {node: '>= 0.6.0'} + dependency-graph@1.0.0: + resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} + engines: {node: '>=4'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -4029,9 +3903,31 @@ packages: peerDependencies: eslint: '>=7.0.0' + eslint-import-context@0.1.9: + resolution: {integrity: sha512-K9Hb+yRaGAGUbwjhFNHvSmmkZs9+zbuoe3kFQ4V1wYjrepUFYM2dZAfNtjbbj3qsPfUfsA68Bx/ICWQMi+C8Eg==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + peerDependencies: + unrs-resolver: ^1.0.0 + peerDependenciesMeta: + unrs-resolver: + optional: true + eslint-import-resolver-node@0.3.9: resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-typescript@4.4.4: + resolution: {integrity: sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==} + engines: {node: ^16.17.0 || >=18.6.0} + peerDependencies: + eslint: '*' + eslint-plugin-import: '*' + eslint-plugin-import-x: '*' + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + eslint-module-utils@2.12.1: resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} @@ -4232,9 +4128,6 @@ packages: resolution: {integrity: sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==} engines: {node: '>=0.4.0'} - fast-decode-uri-component@1.0.1: - resolution: {integrity: sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -4257,21 +4150,9 @@ packages: fast-png@6.4.0: resolution: {integrity: sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==} - fast-querystring@1.1.2: - resolution: {integrity: sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==} - fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} - fb-watchman@2.0.2: - resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} - - fbjs-css-vars@1.0.2: - resolution: {integrity: sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==} - - fbjs@3.0.5: - resolution: {integrity: sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==} - fdir@6.4.6: resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==} peerDependencies: @@ -4322,10 +4203,6 @@ packages: find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} - find-up@4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} @@ -4386,9 +4263,6 @@ packages: from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} - fs.realpath@1.0.0: - resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -4481,10 +4355,6 @@ packages: resolution: {integrity: sha512-B7U/vJpE3DkJ5WXTgTpTRN63uV42DseiXXKMwG14LQBXmsdeIoHAPbU/MEo6II0k5ED74uc2ZGTC6MwHFQhF6w==} engines: {node: 20 || >=22} - glob@7.2.3: - resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - global-prefix@4.0.0: resolution: {integrity: sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==} engines: {node: '>=16'} @@ -4801,12 +4671,8 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - immutable@3.7.6: - resolution: {integrity: sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==} - engines: {node: '>=0.8.0'} - - immutable@5.1.4: - resolution: {integrity: sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==} + immutable@5.1.5: + resolution: {integrity: sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -4824,10 +4690,6 @@ packages: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} - inflight@1.0.6: - resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4917,6 +4779,9 @@ packages: resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} engines: {node: '>=4'} + is-bun-module@2.0.0: + resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} + is-callable@1.2.7: resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} engines: {node: '>= 0.4'} @@ -5266,10 +5131,6 @@ packages: localforage@1.10.0: resolution: {integrity: sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==} - locate-path@5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} @@ -5630,6 +5491,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + napi-postinstall@0.3.4: + resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + hasBin: true + native-promise-only@0.8.1: resolution: {integrity: sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==} @@ -5682,9 +5548,6 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - node-int64@0.4.0: - resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} - node-macaroons@0.0.6: resolution: {integrity: sha512-xfag1wWl3kjvKxRUT7IkT0+A108L4glOV/6mTMSjndanvahUM7loNvWS0EUH+xzU1hMt9ywipTX7pdo0iv0RAA==} @@ -5713,9 +5576,6 @@ packages: normalize-svg-path@1.1.0: resolution: {integrity: sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==} - nullthrows@1.1.1: - resolution: {integrity: sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==} - number-is-integer@1.0.1: resolution: {integrity: sha512-Dq3iuiFBkrbmuQjGFFF3zckXNCQoSD37/SdSbgcBailUx6knDvDwb5CympBgcoWHy36sfS12u74MHYkXyHq6bg==} engines: {node: '>=0.10.0'} @@ -5792,18 +5652,10 @@ packages: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} - p-limit@2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-locate@4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} @@ -5812,10 +5664,6 @@ packages: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} engines: {node: '>=10'} - p-try@2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -5875,10 +5723,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-is-absolute@1.0.1: - resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} - engines: {node: '>=0.10.0'} - path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -6040,9 +5884,6 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} - promise@7.3.1: - resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==} - prop-types@15.8.1: resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} @@ -6339,9 +6180,6 @@ packages: rehype@12.0.1: resolution: {integrity: sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==} - relay-runtime@12.0.0: - resolution: {integrity: sha512-QU6JKr1tMsry22DXNy9Whsq5rmvwr3LSZiiWV/9+DFpuTWvp+WFhobWMc8TC4OjKFfNhEZy7mOiqUAn5atQtug==} - remark-gfm@4.0.1: resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} @@ -6376,9 +6214,6 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} - require-main-filename@2.0.0: - resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} - requires-port@1.0.0: resolution: {integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==} @@ -6544,9 +6379,6 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} - set-blocking@2.0.0: - resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -6559,9 +6391,6 @@ packages: resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} engines: {node: '>= 0.4'} - setimmediate@1.0.5: - resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -6611,9 +6440,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - signedsource@1.0.0: - resolution: {integrity: sha512-6+eerH9fEnNmi/hyM1DXcRK3pWdoMQtlkQ+ns0ntzunjKqp5i3sKCc80ym8Fib3iaYhdJUOPdhlJWj1tvge2Ww==} - signum@1.0.0: resolution: {integrity: sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw==} @@ -6664,6 +6490,10 @@ packages: sponge-case@1.0.1: resolution: {integrity: sha512-dblb9Et4DAtiZ5YSUZHLl4XhH4uK80GhAZrVXdN4O2P4gQ40Wa5UIOPUHlA/nFd2PLblBZWUioLMMAVrgpoYcA==} + stable-hash-x@0.2.0: + resolution: {integrity: sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==} + engines: {node: '>=12.0.0'} + stack-trace@0.0.9: resolution: {integrity: sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==} @@ -6711,10 +6541,6 @@ packages: stream-shift@1.0.3: resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==} - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - string-env-interpolation@1.0.1: resolution: {integrity: sha512-78lwMoCcn0nNu8LszbP1UA7g55OeE4v7rCeWnM5B453rnNr4aq+5it3FEYtZrSEiMvHZOZ9Jlqb0OD0M2VInqg==} @@ -7036,9 +6862,6 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tslib@2.4.1: - resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==} - tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} @@ -7112,10 +6935,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - ua-parser-js@1.0.40: - resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} - hasBin: true - unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} @@ -7196,6 +7015,9 @@ packages: unquote@1.1.1: resolution: {integrity: sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==} + unrs-resolver@1.11.1: + resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==} + update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -7448,9 +7270,6 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-module@2.0.1: - resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} - which-typed-array@1.1.19: resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} @@ -7519,9 +7338,6 @@ packages: resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} engines: {node: '>=0.4'} - y18n@4.0.3: - resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} - y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -7541,18 +7357,10 @@ packages: engines: {node: '>= 14.6'} hasBin: true - yargs-parser@18.1.3: - resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} - engines: {node: '>=6'} - yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} - yargs@15.4.1: - resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} - engines: {node: '>=8'} - yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} @@ -7775,45 +7583,12 @@ snapshots: '@apollo/utils.withrequired@3.0.0': {} - '@ardatan/relay-compiler@12.0.0(graphql@16.10.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/runtime': 7.28.6 - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 - babel-preset-fbjs: 3.4.0(@babel/core@7.28.0) - chalk: 4.1.2 - fb-watchman: 2.0.2 - fbjs: 3.0.5 - glob: 7.2.3 - graphql: 16.10.0 - immutable: 3.7.6 - invariant: 2.2.4 - nullthrows: 1.1.1 - relay-runtime: 12.0.0 - signedsource: 1.0.0 - yargs: 15.4.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@ardatan/relay-compiler@12.0.3(graphql@16.10.0)': + '@ardatan/relay-compiler@13.0.1(graphql@16.10.0)': dependencies: - '@babel/generator': 7.28.0 - '@babel/parser': 7.28.0 - '@babel/runtime': 7.28.6 - chalk: 4.1.2 - fb-watchman: 2.0.2 + '@babel/runtime': 7.29.2 graphql: 16.10.0 - immutable: 3.7.6 + immutable: 5.1.5 invariant: 2.2.4 - nullthrows: 1.1.1 - relay-runtime: 12.0.0 - signedsource: 1.0.0 - transitivePeerDependencies: - - encoding '@azure/msal-browser@2.32.1': dependencies: @@ -7858,14 +7633,10 @@ snapshots: dependencies: '@babel/parser': 7.28.0 '@babel/types': 7.28.0 - '@jridgewell/gen-mapping': 0.3.12 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.27.3': - dependencies: - '@babel/types': 7.28.0 - '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.28.0 @@ -7874,28 +7645,8 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-globals@7.28.0': {} - '@babel/helper-member-expression-to-functions@7.27.1': - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-imports@7.27.1': dependencies: '@babel/traverse': 7.28.0 @@ -7912,28 +7663,8 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-optimise-call-expression@7.27.1': - dependencies: - '@babel/types': 7.28.0 - '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.27.1': - dependencies: - '@babel/traverse': 7.28.0 - '@babel/types': 7.28.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} @@ -7949,186 +7680,17 @@ snapshots: dependencies: '@babel/types': 7.28.0 - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.28.0)': - dependencies: - '@babel/compat-data': 7.28.0 - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-block-scoping@7.28.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-classes@7.28.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-globals': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/template': 7.27.2 - - '@babel/plugin-transform-destructuring@7.28.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.0) - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.28.0) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-display-name@7.28.0(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-react-jsx@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/types': 7.28.0 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.0)': - dependencies: - '@babel/core': 7.28.0 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.27.6': {} '@babel/runtime@7.28.6': {} + '@babel/runtime@7.29.2': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -8193,6 +7755,22 @@ snapshots: '@math.gl/web-mercator': 3.6.3 earcut: 2.2.4 + '@emnapi/core@1.9.2': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 + optional: true + + '@emnapi/wasi-threads@1.2.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.27.1 @@ -8504,7 +8082,7 @@ snapshots: graphql: 16.10.0 tslib: 2.6.3 - '@graphql-codegen/cli@5.0.3(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2)': dependencies: '@babel/generator': 7.28.0 '@babel/template': 7.27.2 @@ -8521,8 +8099,8 @@ snapshots: '@graphql-tools/load': 8.1.0(graphql@16.10.0) '@graphql-tools/prisma-loader': 8.0.17(@types/node@22.10.5)(graphql@16.10.0) '@graphql-tools/url-loader': 8.0.31(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) - '@whatwg-node/fetch': 0.9.23 + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@whatwg-node/fetch': 0.10.8 chalk: 4.1.2 cosmiconfig: 8.3.6(typescript@5.7.2) debounce: 1.2.1 @@ -8570,18 +8148,16 @@ snapshots: '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.10.0) '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) '@graphql-tools/documents': 1.0.1(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) graphql: 16.10.0 tslib: 2.6.3 - transitivePeerDependencies: - - encoding '@graphql-codegen/core@4.0.2(graphql@16.10.0)': dependencies: '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) graphql: 16.10.0 tslib: 2.6.3 @@ -8593,33 +8169,30 @@ snapshots: auto-bind: 4.0.0 graphql: 16.10.0 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - '@graphql-codegen/plugin-helpers@3.1.2(graphql@16.10.0)': + '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.10.0)': dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.10.0) + '@graphql-tools/utils': 10.8.6(graphql@16.10.0) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.10.0 import-from: 4.0.0 lodash: 4.17.23 - tslib: 2.4.1 + tslib: 2.6.3 - '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.10.0)': + '@graphql-codegen/plugin-helpers@6.3.0(graphql@16.10.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) change-case-all: 1.0.15 common-tags: 1.8.2 graphql: 16.10.0 import-from: 4.0.0 - lodash: 4.17.23 - tslib: 2.6.3 + tslib: 2.8.1 '@graphql-codegen/schema-ast@4.1.0(graphql@16.10.0)': dependencies: '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) graphql: 16.10.0 tslib: 2.6.3 @@ -8631,8 +8204,6 @@ snapshots: change-case-all: 1.0.15 graphql: 16.10.0 tslib: 2.6.3 - transitivePeerDependencies: - - encoding '@graphql-codegen/typescript-operations@4.6.1(graphql@16.10.0)': dependencies: @@ -8642,43 +8213,25 @@ snapshots: auto-bind: 4.0.0 graphql: 16.10.0 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - '@graphql-codegen/typescript-react-apollo@4.3.3(graphql@16.10.0)': - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 2.13.8(graphql@16.10.0) - auto-bind: 4.0.0 - change-case-all: 1.0.15 - graphql: 16.10.0 - tslib: 2.8.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@graphql-codegen/typescript-resolvers@4.4.1(graphql@16.10.0)': - dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/typescript': 4.1.2(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.6.0(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-codegen/typescript-react-apollo@4.4.1(graphql@16.10.0)': + dependencies: + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) auto-bind: 4.0.0 + change-case-all: 1.0.15 graphql: 16.10.0 - tslib: 2.6.3 - transitivePeerDependencies: - - encoding + tslib: 2.8.1 - '@graphql-codegen/typescript@4.1.2(graphql@16.10.0)': + '@graphql-codegen/typescript-resolvers@4.5.2(graphql@16.10.0)': dependencies: '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/schema-ast': 4.1.0(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.6.0(graphql@16.10.0) + '@graphql-codegen/typescript': 4.1.6(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) auto-bind: 4.0.0 graphql: 16.10.0 tslib: 2.6.3 - transitivePeerDependencies: - - encoding '@graphql-codegen/typescript@4.1.6(graphql@16.10.0)': dependencies: @@ -8688,32 +8241,13 @@ snapshots: auto-bind: 4.0.0 graphql: 16.10.0 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - - '@graphql-codegen/visitor-plugin-common@2.13.8(graphql@16.10.0)': - dependencies: - '@graphql-codegen/plugin-helpers': 3.1.2(graphql@16.10.0) - '@graphql-tools/optimize': 1.4.0(graphql@16.10.0) - '@graphql-tools/relay-operation-optimizer': 6.5.18(graphql@16.10.0) - '@graphql-tools/utils': 9.2.1(graphql@16.10.0) - auto-bind: 4.0.0 - change-case-all: 1.0.15 - dependency-graph: 0.11.0 - graphql: 16.10.0 - graphql-tag: 2.12.6(graphql@16.10.0) - parse-filepath: 1.0.2 - tslib: 2.4.1 - transitivePeerDependencies: - - encoding - - supports-color - '@graphql-codegen/visitor-plugin-common@5.6.0(graphql@16.10.0)': + '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.10.0)': dependencies: '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) '@graphql-tools/optimize': 2.0.0(graphql@16.10.0) - '@graphql-tools/relay-operation-optimizer': 7.0.19(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/relay-operation-optimizer': 7.1.3(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 0.11.0 @@ -8721,24 +8255,20 @@ snapshots: graphql-tag: 2.12.6(graphql@16.10.0) parse-filepath: 1.0.2 tslib: 2.6.3 - transitivePeerDependencies: - - encoding - '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.10.0)': + '@graphql-codegen/visitor-plugin-common@6.3.0(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) '@graphql-tools/optimize': 2.0.0(graphql@16.10.0) - '@graphql-tools/relay-operation-optimizer': 7.0.19(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/relay-operation-optimizer': 7.1.3(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) auto-bind: 4.0.0 change-case-all: 1.0.15 - dependency-graph: 0.11.0 + dependency-graph: 1.0.0 graphql: 16.10.0 graphql-tag: 2.12.6(graphql@16.10.0) parse-filepath: 1.0.2 - tslib: 2.6.3 - transitivePeerDependencies: - - encoding + tslib: 2.8.1 '@graphql-eslint/eslint-plugin@4.4.0(@types/node@22.10.5)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': dependencies: @@ -8767,7 +8297,7 @@ snapshots: '@graphql-tools/apollo-engine-loader@8.0.20(graphql@16.10.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@whatwg-node/fetch': 0.10.8 graphql: 16.10.0 sync-fetch: 0.6.0-2 @@ -8820,7 +8350,7 @@ snapshots: '@graphql-tools/executor-graphql-ws@2.0.5(graphql@16.10.0)': dependencies: '@graphql-tools/executor-common': 0.0.4(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@whatwg-node/disposablestack': 0.0.6 graphql: 16.10.0 graphql-ws: 6.0.5(graphql@16.10.0)(ws@8.18.3) @@ -8838,7 +8368,7 @@ snapshots: dependencies: '@graphql-hive/signal': 1.0.0 '@graphql-tools/executor-common': 0.0.4(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/fetch': 0.10.8 @@ -8851,7 +8381,7 @@ snapshots: '@graphql-tools/executor-legacy-ws@1.1.17(graphql@16.10.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@types/ws': 8.18.1 graphql: 16.10.0 isomorphic-ws: 5.0.0(ws@8.18.3) @@ -8874,7 +8404,7 @@ snapshots: '@graphql-tools/git-loader@8.0.24(graphql@16.10.0)': dependencies: '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) graphql: 16.10.0 is-glob: 4.0.3 micromatch: 4.0.8 @@ -8887,7 +8417,7 @@ snapshots: dependencies: '@graphql-tools/executor-http': 1.3.3(@types/node@22.10.5)(graphql@16.10.0) '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@whatwg-node/fetch': 0.10.8 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.10.0 @@ -8900,7 +8430,7 @@ snapshots: '@graphql-tools/graphql-file-loader@8.0.20(graphql@16.10.0)': dependencies: '@graphql-tools/import': 7.0.19(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) globby: 11.1.0 graphql: 16.10.0 tslib: 2.8.1 @@ -8928,7 +8458,7 @@ snapshots: '@graphql-tools/json-file-loader@8.0.18(graphql@16.10.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) globby: 11.1.0 graphql: 16.10.0 tslib: 2.8.1 @@ -8944,7 +8474,7 @@ snapshots: '@graphql-tools/load@8.1.0(graphql@16.10.0)': dependencies: '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) graphql: 16.10.0 p-limit: 3.1.0 tslib: 2.8.1 @@ -8967,11 +8497,6 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 - '@graphql-tools/optimize@1.4.0(graphql@16.10.0)': - dependencies: - graphql: 16.10.0 - tslib: 2.8.1 - '@graphql-tools/optimize@2.0.0(graphql@16.10.0)': dependencies: graphql: 16.10.0 @@ -8980,11 +8505,11 @@ snapshots: '@graphql-tools/prisma-loader@8.0.17(@types/node@22.10.5)(graphql@16.10.0)': dependencies: '@graphql-tools/url-loader': 8.0.31(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@types/js-yaml': 4.0.9 '@whatwg-node/fetch': 0.10.8 chalk: 4.1.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 dotenv: 16.6.1 graphql: 16.10.0 graphql-request: 6.1.0(graphql@16.10.0) @@ -9006,24 +8531,12 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/relay-operation-optimizer@6.5.18(graphql@16.10.0)': - dependencies: - '@ardatan/relay-compiler': 12.0.0(graphql@16.10.0) - '@graphql-tools/utils': 9.2.1(graphql@16.10.0) - graphql: 16.10.0 - tslib: 2.8.1 - transitivePeerDependencies: - - encoding - - supports-color - - '@graphql-tools/relay-operation-optimizer@7.0.19(graphql@16.10.0)': + '@graphql-tools/relay-operation-optimizer@7.1.3(graphql@16.10.0)': dependencies: - '@ardatan/relay-compiler': 12.0.3(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@ardatan/relay-compiler': 13.0.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) graphql: 16.10.0 tslib: 2.8.1 - transitivePeerDependencies: - - encoding '@graphql-tools/schema@10.0.25(graphql@16.10.0)': dependencies: @@ -9045,7 +8558,7 @@ snapshots: '@graphql-tools/executor-graphql-ws': 2.0.5(graphql@16.10.0) '@graphql-tools/executor-http': 1.3.3(@types/node@22.10.5)(graphql@16.10.0) '@graphql-tools/executor-legacy-ws': 1.1.17(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@graphql-tools/wrap': 10.1.2(graphql@16.10.0) '@types/ws': 8.18.1 '@whatwg-node/fetch': 0.10.8 @@ -9081,6 +8594,14 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 + '@graphql-tools/utils@11.0.1(graphql@16.10.0)': + dependencies: + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@whatwg-node/promise-helpers': 1.3.2 + cross-inspect: 1.0.1 + graphql: 16.10.0 + tslib: 2.8.1 + '@graphql-tools/utils@9.2.1(graphql@16.10.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) @@ -9091,7 +8612,7 @@ snapshots: dependencies: '@graphql-tools/delegate': 10.2.21(graphql@16.10.0) '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.10.0 tslib: 2.8.1 @@ -9113,14 +8634,15 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@hystax/eslint-config-ui@1.0.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@hystax/eslint-config-ui@2.1.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint/js': 9.39.2 '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) eslint: 9.34.0(jiti@2.4.2) eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-prettier: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3) eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.4.2)) eslint-plugin-react-hooks: 5.1.0(eslint@9.34.0(jiti@2.4.2)) @@ -9129,8 +8651,8 @@ snapshots: prettier: 3.3.3 transitivePeerDependencies: - '@types/eslint' - - eslint-import-resolver-typescript - eslint-import-resolver-webpack + - eslint-plugin-import-x - supports-color - typescript @@ -9177,8 +8699,8 @@ snapshots: '@jridgewell/gen-mapping@0.3.12': dependencies: - '@jridgewell/sourcemap-codec': 1.5.4 - '@jridgewell/trace-mapping': 0.3.29 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/gen-mapping@0.3.13': dependencies: @@ -9192,22 +8714,18 @@ snapshots: '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.5.4': {} - '@jridgewell/sourcemap-codec@1.5.5': {} '@jridgewell/trace-mapping@0.3.29': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.4 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 - '@kamilkisiela/fast-url-parser@1.1.4': {} - '@loaders.gl/core@3.4.15': dependencies: '@babel/runtime': 7.27.6 @@ -9427,6 +8945,13 @@ snapshots: optionalDependencies: '@types/react': 18.2.45 + '@napi-rs/wasm-runtime@0.2.12': + dependencies: + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@tybys/wasm-util': 0.10.1 + optional: true + '@nivo/annotations@0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@nivo/colors': 0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) @@ -10149,6 +9674,11 @@ snapshots: '@types/geojson': 7946.0.16 tslib: 2.8.1 + '@tybys/wasm-util@0.10.1': + dependencies: + tslib: 2.8.1 + optional: true + '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.28.0 @@ -10621,9 +10151,9 @@ snapshots: '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 - '@uiw/react-textarea-code-editor@2.1.1(@babel/runtime@7.28.6)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': + '@uiw/react-textarea-code-editor@2.1.1(@babel/runtime@7.29.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) rehype: 12.0.1 @@ -10631,6 +10161,65 @@ snapshots: '@ungap/structured-clone@1.3.0': {} + '@unrs/resolver-binding-android-arm-eabi@1.11.1': + optional: true + + '@unrs/resolver-binding-android-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-arm64@1.11.1': + optional: true + + '@unrs/resolver-binding-darwin-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-freebsd-x64@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-gnueabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm-musleabihf@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-arm64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-gnu@1.11.1': + optional: true + + '@unrs/resolver-binding-linux-x64-musl@1.11.1': + optional: true + + '@unrs/resolver-binding-wasm32-wasi@1.11.1': + dependencies: + '@napi-rs/wasm-runtime': 0.2.12 + optional: true + + '@unrs/resolver-binding-win32-arm64-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-ia32-msvc@1.11.1': + optional: true + + '@unrs/resolver-binding-win32-x64-msvc@1.11.1': + optional: true + '@vitejs/plugin-react-swc@3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.11 @@ -10767,18 +10356,6 @@ snapshots: '@whatwg-node/node-fetch': 0.7.21 urlpattern-polyfill: 10.1.0 - '@whatwg-node/fetch@0.9.23': - dependencies: - '@whatwg-node/node-fetch': 0.6.0 - urlpattern-polyfill: 10.1.0 - - '@whatwg-node/node-fetch@0.6.0': - dependencies: - '@kamilkisiela/fast-url-parser': 1.1.4 - busboy: 1.6.0 - fast-querystring: 1.1.2 - tslib: 2.8.1 - '@whatwg-node/node-fetch@0.7.21': dependencies: '@fastify/busboy': 3.1.1 @@ -10988,8 +10565,6 @@ snapshots: arrify@1.0.1: {} - asap@2.0.6: {} - assertion-error@2.0.1: {} ast-types@0.16.1: @@ -11026,41 +10601,6 @@ snapshots: cosmiconfig: 7.1.0 resolve: 1.22.10 - babel-plugin-syntax-trailing-function-commas@7.0.0-beta.0: {} - - babel-preset-fbjs@3.4.0(@babel/core@7.28.0): - dependencies: - '@babel/core': 7.28.0 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.0) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.28.0) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.0) - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.0) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-block-scoping': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-classes': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-destructuring': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.0) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-react-display-name': 7.28.0(@babel/core@7.28.0) - '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.0) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.0) - babel-plugin-syntax-trailing-function-commas: 7.0.0-beta.0 - transitivePeerDependencies: - - supports-color - bail@2.0.2: {} balanced-match@1.0.2: {} @@ -11141,10 +10681,6 @@ snapshots: node-releases: 2.0.27 update-browserslist-db: 1.2.3(browserslist@4.28.1) - bser@2.1.1: - dependencies: - node-int64: 0.4.0 - buffer-from@1.1.2: {} buffer@5.7.1: @@ -11152,10 +10688,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - bytes@3.1.2: {} cac@6.7.14: {} @@ -11184,8 +10716,6 @@ snapshots: pascal-case: 3.1.2 tslib: 2.8.1 - camelcase@5.3.1: {} - caniuse-lite@1.0.30001727: {} caniuse-lite@1.0.30001769: {} @@ -11304,12 +10834,6 @@ snapshots: cli-width@3.0.0: {} - cliui@6.0.0: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 6.2.0 - cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -11672,8 +11196,6 @@ snapshots: dependencies: ms: 2.1.3 - decamelize@1.2.0: {} - decimal.js@10.6.0: {} decode-named-character-reference@1.2.0: @@ -11716,6 +11238,8 @@ snapshots: dependency-graph@0.11.0: {} + dependency-graph@1.0.0: {} + dequal@2.0.3: {} destroy@1.2.0: {} @@ -12035,6 +11559,13 @@ snapshots: dependencies: eslint: 9.34.0(jiti@2.4.2) + eslint-import-context@0.1.9(unrs-resolver@1.11.1): + dependencies: + get-tsconfig: 4.10.1 + stable-hash-x: 0.2.0 + optionalDependencies: + unrs-resolver: 1.11.1 + eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 @@ -12043,13 +11574,29 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.4.2)): + dependencies: + debug: 4.4.3 + eslint: 9.34.0(jiti@2.4.2) + eslint-import-context: 0.1.9(unrs-resolver@1.11.1) + get-tsconfig: 4.10.1 + is-bun-module: 2.0.0 + stable-hash-x: 0.2.0 + tinyglobby: 0.2.15 + unrs-resolver: 1.11.1 + optionalDependencies: + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) + transitivePeerDependencies: + - supports-color + + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color @@ -12059,7 +11606,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -12070,7 +11617,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.34.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint@9.34.0(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12318,8 +11865,6 @@ snapshots: acorn: 7.4.1 isarray: 2.0.5 - fast-decode-uri-component@1.0.1: {} - fast-deep-equal@3.1.3: {} fast-diff@1.3.0: {} @@ -12346,32 +11891,10 @@ snapshots: iobuffer: 5.4.0 pako: 2.1.0 - fast-querystring@1.1.2: - dependencies: - fast-decode-uri-component: 1.0.1 - fastq@1.19.1: dependencies: reusify: 1.1.0 - fb-watchman@2.0.2: - dependencies: - bser: 2.1.1 - - fbjs-css-vars@1.0.2: {} - - fbjs@3.0.5: - dependencies: - cross-fetch: 3.2.0 - fbjs-css-vars: 1.0.2 - loose-envify: 1.4.0 - object-assign: 4.1.1 - promise: 7.3.1 - setimmediate: 1.0.5 - ua-parser-js: 1.0.40 - transitivePeerDependencies: - - encoding - fdir@6.4.6(picomatch@4.0.2): optionalDependencies: picomatch: 4.0.2 @@ -12417,11 +11940,6 @@ snapshots: find-root@1.1.0: {} - find-up@4.1.0: - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - find-up@5.0.0: dependencies: locate-path: 6.0.0 @@ -12486,8 +12004,6 @@ snapshots: inherits: 2.0.4 readable-stream: 2.3.8 - fs.realpath@1.0.0: {} - fsevents@2.3.3: optional: true @@ -12611,15 +12127,6 @@ snapshots: minipass: 7.1.2 path-scurry: 2.0.1 - glob@7.2.3: - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.1.2 - once: 1.4.0 - path-is-absolute: 1.0.1 - global-prefix@4.0.0: dependencies: ini: 4.1.3 @@ -12752,7 +12259,7 @@ snapshots: '@graphql-tools/load': 8.1.0(graphql@16.10.0) '@graphql-tools/merge': 9.0.17(graphql@16.10.0) '@graphql-tools/url-loader': 8.0.31(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.10.0) cosmiconfig: 8.3.6(typescript@5.7.2) graphql: 16.10.0 jiti: 2.4.2 @@ -12980,7 +12487,7 @@ snapshots: http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13014,7 +12521,7 @@ snapshots: https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13040,9 +12547,7 @@ snapshots: immediate@3.0.6: {} - immutable@3.7.6: {} - - immutable@5.1.4: {} + immutable@5.1.5: {} import-fresh@3.3.1: dependencies: @@ -13055,11 +12560,6 @@ snapshots: indent-string@4.0.0: {} - inflight@1.0.6: - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - inherits@2.0.4: {} ini@4.1.3: {} @@ -13163,6 +12663,10 @@ snapshots: is-buffer@2.0.5: {} + is-bun-module@2.0.0: + dependencies: + semver: 7.7.4 + is-callable@1.2.7: {} is-core-module@2.16.1: @@ -13510,10 +13014,6 @@ snapshots: dependencies: lie: 3.1.1 - locate-path@5.0.0: - dependencies: - p-locate: 4.1.0 - locate-path@6.0.0: dependencies: p-locate: 5.0.0 @@ -14003,7 +13503,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -14090,6 +13590,8 @@ snapshots: nanoid@3.3.11: {} + napi-postinstall@0.3.4: {} + native-promise-only@0.8.1: {} natural-compare@1.4.0: {} @@ -14131,8 +13633,6 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 - node-int64@0.4.0: {} - node-macaroons@0.0.6: dependencies: sjcl: 1.0.3 @@ -14167,8 +13667,6 @@ snapshots: dependencies: svg-arc-to-cubic-bezier: 3.2.0 - nullthrows@1.1.1: {} - number-is-integer@1.0.1: dependencies: is-finite: 1.1.0 @@ -14275,18 +13773,10 @@ snapshots: object-keys: 1.1.1 safe-push-apply: 1.0.0 - p-limit@2.3.0: - dependencies: - p-try: 2.2.0 - p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@4.1.0: - dependencies: - p-limit: 2.3.0 - p-locate@5.0.0: dependencies: p-limit: 3.1.0 @@ -14295,8 +13785,6 @@ snapshots: dependencies: aggregate-error: 3.1.0 - p-try@2.2.0: {} - package-json-from-dist@1.0.1: {} pako@2.1.0: {} @@ -14365,8 +13853,6 @@ snapshots: path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} - path-key@3.1.1: {} path-parse@1.0.7: {} @@ -14567,10 +14053,6 @@ snapshots: process@0.11.10: {} - promise@7.3.1: - dependencies: - asap: 2.0.6 - prop-types@15.8.1: dependencies: loose-envify: 1.4.0 @@ -14990,14 +14472,6 @@ snapshots: rehype-stringify: 9.0.4 unified: 10.1.2 - relay-runtime@12.0.0: - dependencies: - '@babel/runtime': 7.28.6 - fbjs: 3.0.5 - invariant: 2.2.4 - transitivePeerDependencies: - - encoding - remark-gfm@4.0.1: dependencies: '@types/mdast': 4.0.4 @@ -15047,8 +14521,6 @@ snapshots: require-from-string@2.0.2: {} - require-main-filename@2.0.0: {} - requires-port@1.0.0: {} reselect@4.1.7: {} @@ -15178,7 +14650,7 @@ snapshots: sass@1.97.3: dependencies: chokidar: 4.0.3 - immutable: 5.1.4 + immutable: 5.1.5 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 @@ -15247,8 +14719,6 @@ snapshots: transitivePeerDependencies: - supports-color - set-blocking@2.0.0: {} - set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -15271,8 +14741,6 @@ snapshots: es-errors: 1.3.0 es-object-atoms: 1.1.1 - setimmediate@1.0.5: {} - setprototypeof@1.2.0: {} sha.js@2.4.12: @@ -15325,8 +14793,6 @@ snapshots: signal-exit@4.1.0: {} - signedsource@1.0.0: {} - signum@1.0.0: {} simple-update-notifier@2.0.0: @@ -15373,6 +14839,8 @@ snapshots: dependencies: tslib: 2.8.1 + stable-hash-x@0.2.0: {} + stack-trace@0.0.9: {} stack-utils@2.0.6: @@ -15417,8 +14885,6 @@ snapshots: stream-shift@1.0.3: {} - streamsearch@1.1.0: {} - string-env-interpolation@1.0.1: {} string-hash@1.1.3: {} @@ -15747,8 +15213,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@2.4.1: {} - tslib@2.6.3: {} tslib@2.8.1: {} @@ -15836,8 +15300,6 @@ snapshots: typescript@5.7.2: {} - ua-parser-js@1.0.40: {} - unbox-primitive@1.1.0: dependencies: call-bound: 1.0.4 @@ -15948,6 +15410,30 @@ snapshots: unquote@1.1.1: {} + unrs-resolver@1.11.1: + dependencies: + napi-postinstall: 0.3.4 + optionalDependencies: + '@unrs/resolver-binding-android-arm-eabi': 1.11.1 + '@unrs/resolver-binding-android-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-arm64': 1.11.1 + '@unrs/resolver-binding-darwin-x64': 1.11.1 + '@unrs/resolver-binding-freebsd-x64': 1.11.1 + '@unrs/resolver-binding-linux-arm-gnueabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm-musleabihf': 1.11.1 + '@unrs/resolver-binding-linux-arm64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-arm64-musl': 1.11.1 + '@unrs/resolver-binding-linux-ppc64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-riscv64-musl': 1.11.1 + '@unrs/resolver-binding-linux-s390x-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-gnu': 1.11.1 + '@unrs/resolver-binding-linux-x64-musl': 1.11.1 + '@unrs/resolver-binding-wasm32-wasi': 1.11.1 + '@unrs/resolver-binding-win32-arm64-msvc': 1.11.1 + '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 + '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: browserslist: 4.25.1 @@ -16255,8 +15741,6 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-module@2.0.1: {} - which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 @@ -16316,8 +15800,6 @@ snapshots: xtend@4.0.2: {} - y18n@4.0.3: {} - y18n@5.0.8: {} yallist@3.1.1: {} @@ -16328,27 +15810,8 @@ snapshots: yaml@2.8.0: {} - yargs-parser@18.1.3: - dependencies: - camelcase: 5.3.1 - decamelize: 1.2.0 - yargs-parser@21.1.1: {} - yargs@15.4.1: - dependencies: - cliui: 6.0.0 - decamelize: 1.2.0 - find-up: 4.1.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - require-main-filename: 2.0.0 - set-blocking: 2.0.0 - string-width: 4.2.3 - which-module: 2.0.1 - y18n: 4.0.3 - yargs-parser: 18.1.3 - yargs@17.7.2: dependencies: cliui: 8.0.1 diff --git a/ngui/ui/eslint.config.mjs b/ngui/ui/eslint.config.mjs index 6124045e7..eb96563ac 100644 --- a/ngui/ui/eslint.config.mjs +++ b/ngui/ui/eslint.config.mjs @@ -2,12 +2,17 @@ import hystaxConfig from "@hystax/eslint-config-ui"; import reactPlugin from "eslint-plugin-react"; export default [ - hystaxConfig, + ...hystaxConfig, { - rules: { "react/jsx-curly-brace-presence": ["error", { props: "never", children: "never" }] }, - ignores: [], - settings: {}, - languageOptions: {}, - plugins: { react: reactPlugin }, - }, // custom rules can be added here + files: ["**/graphql/__generated__/**"], + rules: { + "no-redeclare": "off", + }, + }, + // Temporary rule to avoid warnings during checks with eslint-config-ui@2.1.0 + { + files: ["**/BookingsCalendar.tsx", "**/datetime.ts"], + rules: { "import/no-duplicates": "off" }, + }, + // custom rules can be added here ]; diff --git a/ngui/ui/package.json b/ngui/ui/package.json index 96ed7a64d..c02baf14c 100644 --- a/ngui/ui/package.json +++ b/ngui/ui/package.json @@ -113,7 +113,7 @@ ] }, "devDependencies": { - "@hystax/eslint-config-ui": "1.0.0", + "@hystax/eslint-config-ui": "2.1.0", "@storybook/addon-actions": "8.6.15", "@storybook/addon-backgrounds": "8.6.15", "@storybook/addon-controls": "8.6.15", diff --git a/ngui/ui/src/graphql/__generated__/hooks/auth.ts b/ngui/ui/src/graphql/__generated__/hooks/auth.ts index a506647cf..394ea8b0a 100644 --- a/ngui/ui/src/graphql/__generated__/hooks/auth.ts +++ b/ngui/ui/src/graphql/__generated__/hooks/auth.ts @@ -178,6 +178,15 @@ export function useOrganizationAllowedActionsLazyQuery( options ); } +// @ts-ignore +export function useOrganizationAllowedActionsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useOrganizationAllowedActionsSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useOrganizationAllowedActionsSuspenseQuery( baseOptions?: | Apollo.SkipToken diff --git a/ngui/ui/src/graphql/__generated__/hooks/keeper.ts b/ngui/ui/src/graphql/__generated__/hooks/keeper.ts index 466692af6..91eae1d1e 100644 --- a/ngui/ui/src/graphql/__generated__/hooks/keeper.ts +++ b/ngui/ui/src/graphql/__generated__/hooks/keeper.ts @@ -136,6 +136,13 @@ export function useEventsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions(EventsDocument, options); } +// @ts-ignore +export function useEventsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useEventsSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useEventsSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { diff --git a/ngui/ui/src/graphql/__generated__/hooks/restapi.ts b/ngui/ui/src/graphql/__generated__/hooks/restapi.ts index 812218b39..d35a37e56 100644 --- a/ngui/ui/src/graphql/__generated__/hooks/restapi.ts +++ b/ngui/ui/src/graphql/__generated__/hooks/restapi.ts @@ -2539,6 +2539,13 @@ export function useOrganizationsLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(OrganizationsDocument, options); } +// @ts-ignore +export function useOrganizationsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useOrganizationsSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useOrganizationsSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -2725,6 +2732,13 @@ export function useCurrentEmployeeLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(CurrentEmployeeDocument, options); } +// @ts-ignore +export function useCurrentEmployeeSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useCurrentEmployeeSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useCurrentEmployeeSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -2810,6 +2824,13 @@ export function useDataSourcesLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(DataSourcesDocument, options); } +// @ts-ignore +export function useDataSourcesSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useDataSourcesSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useDataSourcesSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -2906,6 +2927,13 @@ export function useDataSourceLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(DataSourceDocument, options); } +// @ts-ignore +export function useDataSourceSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useDataSourceSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useDataSourceSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -2962,6 +2990,13 @@ export function useInvitationsLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(InvitationsDocument, options); } +// @ts-ignore +export function useInvitationsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useInvitationsSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useInvitationsSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -3050,6 +3085,15 @@ export function useOrganizationFeaturesLazyQuery( options ); } +// @ts-ignore +export function useOrganizationFeaturesSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useOrganizationFeaturesSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useOrganizationFeaturesSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3109,6 +3153,15 @@ export function useOrganizationThemeSettingsLazyQuery( options ); } +// @ts-ignore +export function useOrganizationThemeSettingsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useOrganizationThemeSettingsSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useOrganizationThemeSettingsSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3217,6 +3270,15 @@ export function useOrganizationPerspectivesLazyQuery( options ); } +// @ts-ignore +export function useOrganizationPerspectivesSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useOrganizationPerspectivesSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useOrganizationPerspectivesSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3365,6 +3427,13 @@ export function useEmployeeEmailsLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(EmployeeEmailsDocument, options); } +// @ts-ignore +export function useEmployeeEmailsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useEmployeeEmailsSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useEmployeeEmailsSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -3426,6 +3495,15 @@ export function useGetOrganizationConstraintLazyQuery( options ); } +// @ts-ignore +export function useGetOrganizationConstraintSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useGetOrganizationConstraintSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useGetOrganizationConstraintSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3543,6 +3621,15 @@ export function useGetResourceCountBreakdownLazyQuery( options ); } +// @ts-ignore +export function useGetResourceCountBreakdownSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useGetResourceCountBreakdownSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useGetResourceCountBreakdownSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3605,6 +3692,13 @@ export function useMetaBreakdownLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(MetaBreakdownDocument, options); } +// @ts-ignore +export function useMetaBreakdownSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useMetaBreakdownSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useMetaBreakdownSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -3804,6 +3898,15 @@ export function useGetExpensesDailyBreakdownLazyQuery( options ); } +// @ts-ignore +export function useGetExpensesDailyBreakdownSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useGetExpensesDailyBreakdownSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useGetExpensesDailyBreakdownSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3872,6 +3975,15 @@ export function useGetOrganizationLimitHitsLazyQuery( options ); } +// @ts-ignore +export function useGetOrganizationLimitHitsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useGetOrganizationLimitHitsSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useGetOrganizationLimitHitsSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -3929,6 +4041,13 @@ export function useRelevantFlavorsLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(RelevantFlavorsDocument, options); } +// @ts-ignore +export function useRelevantFlavorsSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useRelevantFlavorsSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useRelevantFlavorsSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -3978,6 +4097,13 @@ export function useCleanExpensesLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(CleanExpensesDocument, options); } +// @ts-ignore +export function useCleanExpensesSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useCleanExpensesSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useCleanExpensesSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -4027,6 +4153,13 @@ export function useCloudPoliciesLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(CloudPoliciesDocument, options); } +// @ts-ignore +export function useCloudPoliciesSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useCloudPoliciesSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useCloudPoliciesSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -4076,6 +4209,13 @@ export function useAvailableFiltersLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(AvailableFiltersDocument, options); } +// @ts-ignore +export function useAvailableFiltersSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useAvailableFiltersSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useAvailableFiltersSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -4144,6 +4284,15 @@ export function useBillingSubscriptionPlansLazyQuery( options ); } +// @ts-ignore +export function useBillingSubscriptionPlansSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useBillingSubscriptionPlansSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useBillingSubscriptionPlansSuspenseQuery( baseOptions?: | Apollo.SkipToken @@ -4224,6 +4373,13 @@ export function useBillingSubscriptionLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(BillingSubscriptionDocument, options); } +// @ts-ignore +export function useBillingSubscriptionSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useBillingSubscriptionSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useBillingSubscriptionSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -4382,6 +4538,13 @@ export function useOrganizationSummaryLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(OrganizationSummaryDocument, options); } +// @ts-ignore +export function useOrganizationSummarySuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useOrganizationSummarySuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useOrganizationSummarySuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { @@ -4490,6 +4653,15 @@ export function useGeminiDataPreparationLazyQuery( options ); } +// @ts-ignore +export function useGeminiDataPreparationSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useGeminiDataPreparationSuspenseQuery( + baseOptions?: + | Apollo.SkipToken + | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useGeminiDataPreparationSuspenseQuery( baseOptions?: | Apollo.SkipToken diff --git a/ngui/ui/src/graphql/__generated__/hooks/slacker.ts b/ngui/ui/src/graphql/__generated__/hooks/slacker.ts index 04d1f9159..153ed57de 100644 --- a/ngui/ui/src/graphql/__generated__/hooks/slacker.ts +++ b/ngui/ui/src/graphql/__generated__/hooks/slacker.ts @@ -84,6 +84,13 @@ export function useGetInstallationPathLazyQuery( const options = { ...defaultOptions, ...baseOptions }; return Apollo.useLazyQuery(GetInstallationPathDocument, options); } +// @ts-ignore +export function useGetInstallationPathSuspenseQuery( + baseOptions?: Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; +export function useGetInstallationPathSuspenseQuery( + baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions +): Apollo.UseSuspenseQueryResult; export function useGetInstallationPathSuspenseQuery( baseOptions?: Apollo.SkipToken | Apollo.SuspenseQueryHookOptions ) { diff --git a/ngui/ui/src/utils/datetime.ts b/ngui/ui/src/utils/datetime.ts index 9d3197e52..9500a3806 100644 --- a/ngui/ui/src/utils/datetime.ts +++ b/ngui/ui/src/utils/datetime.ts @@ -52,7 +52,7 @@ import { subHours, differenceInMinutes, } from "date-fns"; -import { enUS } from "date-fns/locale"; +import enUS from "date-fns/locale/en-US"; import { objectMap } from "./objects"; import { capitalize } from "./strings"; import { IntlFormatValues } from "./types"; From f191e95913d3ce26b277f4e2147d5ae7735fd14f Mon Sep 17 00:00:00 2001 From: ek-hystax <33006768+ek-hystax@users.noreply.github.com> Date: Thu, 16 Apr 2026 12:41:57 +0400 Subject: [PATCH 04/30] OSN-1414. Bump terser-webpack-plugin to 5.4.0 --- ngui/pnpm-lock.yaml | 23 ++++------------------- ngui/pnpm-workspace.yaml | 8 +++++--- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index ce4cba9e9..d495e6d5f 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -5937,9 +5937,6 @@ packages: raf@3.4.1: resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} - randombytes@2.1.0: - resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -6372,9 +6369,6 @@ packages: sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - serialize-javascript@6.0.2: - resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} - serve-static@1.16.2: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} @@ -6687,8 +6681,8 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - terser-webpack-plugin@5.3.16: - resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} + terser-webpack-plugin@5.4.0: + resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -14102,10 +14096,6 @@ snapshots: dependencies: performance-now: 2.1.0 - randombytes@2.1.0: - dependencies: - safe-buffer: 5.2.1 - range-parser@1.2.1: {} raw-body@2.5.3: @@ -14706,10 +14696,6 @@ snapshots: tslib: 2.8.1 upper-case-first: 2.0.2 - serialize-javascript@6.0.2: - dependencies: - randombytes: 2.1.0 - serve-static@1.16.2: dependencies: encodeurl: 2.0.0 @@ -15060,12 +15046,11 @@ snapshots: tapable@2.3.0: {} - terser-webpack-plugin@5.3.16(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)): + terser-webpack-plugin@5.4.0(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - serialize-javascript: 6.0.2 terser: 5.46.0 webpack: 5.100.0(esbuild@0.25.6) optionalDependencies: @@ -15684,7 +15669,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.16(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)) + terser-webpack-plugin: 5.4.0(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)) watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: diff --git a/ngui/pnpm-workspace.yaml b/ngui/pnpm-workspace.yaml index 51e5419ae..946bc8d41 100644 --- a/ngui/pnpm-workspace.yaml +++ b/ngui/pnpm-workspace.yaml @@ -1,6 +1,8 @@ packages: - - "ui" - - "server" + - ui + - server + +injectWorkspacePackages: true + syncInjectedDepsAfterScripts: - build -injectWorkspacePackages: true From dafc6065878fea2ea97d187effdb2657790533c5 Mon Sep 17 00:00:00 2001 From: ek-hystax <33006768+ek-hystax@users.noreply.github.com> Date: Thu, 16 Apr 2026 14:37:26 +0400 Subject: [PATCH 05/30] OSN-1413. Bump packages * lodash to 4.18.1 * @graphql-codegen/cli to 6.3.0 * @graphql-codegen/typescript to 5.0.10 * @graphql-codegen/typescript-resolvers to 5.1.8 --- ngui/package.json | 6 +- ngui/pnpm-lock.yaml | 1720 +++++++++++------ .../graphql/__generated__/types/auth.ts | 38 +- .../graphql/__generated__/types/keeper.ts | 37 +- .../graphql/__generated__/types/restapi.ts | 82 +- .../graphql/__generated__/types/slacker.ts | 37 +- 6 files changed, 1252 insertions(+), 668 deletions(-) diff --git a/ngui/package.json b/ngui/package.json index 464ae6089..3c7227d87 100644 --- a/ngui/package.json +++ b/ngui/package.json @@ -16,10 +16,10 @@ "dev": "concurrently \"pnpm -r dev\" \"pnpm codegen:watch\"" }, "devDependencies": { - "@graphql-codegen/cli": "5.0.7", - "@graphql-codegen/typescript": "4.1.6", + "@graphql-codegen/cli": "6.3.0", + "@graphql-codegen/typescript": "5.0.10", "@graphql-codegen/typescript-react-apollo": "4.4.1", - "@graphql-codegen/typescript-resolvers": "4.5.2", + "@graphql-codegen/typescript-resolvers": "5.1.8", "@parcel/watcher": "2.5.1", "@types/file-saver": "2.0.7", "@types/jest": "29.5.12", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index d495e6d5f..a1fb4b80a 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -10,17 +10,17 @@ importers: .: devDependencies: '@graphql-codegen/cli': - specifier: 5.0.7 - version: 5.0.7(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) + specifier: 6.3.0 + version: 6.3.0(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) '@graphql-codegen/typescript': - specifier: 4.1.6 - version: 4.1.6(graphql@16.10.0) + specifier: 5.0.10 + version: 5.0.10(graphql@16.10.0) '@graphql-codegen/typescript-react-apollo': specifier: 4.4.1 version: 4.4.1(graphql@16.10.0) '@graphql-codegen/typescript-resolvers': - specifier: 4.5.2 - version: 4.5.2(graphql@16.10.0) + specifier: 5.1.8 + version: 5.1.8(graphql@16.10.0) '@parcel/watcher': specifier: 2.5.1 version: 2.5.1 @@ -114,7 +114,7 @@ importers: version: 9.39.2 '@graphql-eslint/eslint-plugin': specifier: 4.4.0 - version: 4.4.0(@types/node@22.10.5)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2) + version: 4.4.0(@types/node@25.2.3)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2) '@typescript-eslint/eslint-plugin': specifier: 8.54.0 version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) @@ -586,22 +586,42 @@ packages: resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==} engines: {node: '>=6.9.0'} + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + '@babel/compat-data@7.28.0': resolution: {integrity: sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.29.0': + resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} + engines: {node: '>=6.9.0'} + '@babel/core@7.28.0': resolution: {integrity: sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==} engines: {node: '>=6.9.0'} + '@babel/core@7.29.0': + resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} + engines: {node: '>=6.9.0'} + '@babel/generator@7.28.0': resolution: {integrity: sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==} engines: {node: '>=6.9.0'} + '@babel/generator@7.29.1': + resolution: {integrity: sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==} + engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.27.2': resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==} engines: {node: '>=6.9.0'} + '@babel/helper-compilation-targets@7.28.6': + resolution: {integrity: sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==} + engines: {node: '>=6.9.0'} + '@babel/helper-globals@7.28.0': resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==} engines: {node: '>=6.9.0'} @@ -610,12 +630,22 @@ packages: resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==} engines: {node: '>=6.9.0'} + '@babel/helper-module-imports@7.28.6': + resolution: {integrity: sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==} + engines: {node: '>=6.9.0'} + '@babel/helper-module-transforms@7.27.3': resolution: {integrity: sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 + '@babel/helper-module-transforms@7.28.6': + resolution: {integrity: sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + '@babel/helper-plugin-utils@7.27.1': resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==} engines: {node: '>=6.9.0'} @@ -628,6 +658,10 @@ packages: resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} engines: {node: '>=6.9.0'} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + '@babel/helper-validator-option@7.27.1': resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} @@ -636,11 +670,20 @@ packages: resolution: {integrity: sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==} engines: {node: '>=6.9.0'} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} + engines: {node: '>=6.9.0'} + '@babel/parser@7.28.0': resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==} engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-syntax-import-assertions@7.27.1': resolution: {integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==} engines: {node: '>=6.9.0'} @@ -663,14 +706,26 @@ packages: resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} + '@babel/template@7.28.6': + resolution: {integrity: sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==} + engines: {node: '>=6.9.0'} + '@babel/traverse@7.28.0': resolution: {integrity: sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.29.0': + resolution: {integrity: sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==} + engines: {node: '>=6.9.0'} + '@babel/types@7.28.0': resolution: {integrity: sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==} engines: {node: '>=6.9.0'} + '@babel/types@7.29.0': + resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==} + engines: {node: '>=6.9.0'} + '@choojs/findup@0.2.1': resolution: {integrity: sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==} hasBin: true @@ -760,6 +815,10 @@ packages: resolution: {integrity: sha512-xvUkOWXI8JsG2OOnqiI2tOkEc52wbmIqWORr7yGc8B8E53Oh1MMGGGck4mbR80s25LnHVzfNIiIlNkuDgZRuuA==} engines: {node: '>=18.0.0'} + '@envelop/core@5.5.1': + resolution: {integrity: sha512-3DQg8sFskDo386TkL5j12jyRAdip/8yzK3x7YGbZBgobZ4aKXrvDU0GppU0SnmrpQnNaiTUsxBs9LKkwQ/eyvw==} + engines: {node: '>=18.0.0'} + '@envelop/instrumentation@1.0.0': resolution: {integrity: sha512-cxgkB66RQB95H3X27jlnxCRNTmPuSTgmBAq6/4n2Dtv4hsk4yz8FadA1ggmd0uZzvKqWD6CR+WFgTjhDqg7eyw==} engines: {node: '>=18.0.0'} @@ -1022,13 +1081,14 @@ packages: '@googlemaps/js-api-loader@1.16.10': resolution: {integrity: sha512-c2erv2k7P2ilYzMmtYcMgAR21AULosQuUHJbStnrvRk2dG93k5cqptDrh9A8p+ZNlyhiqEOgHW7N9PAizdUM7Q==} - '@graphql-codegen/add@5.0.3': - resolution: {integrity: sha512-SxXPmramkth8XtBlAHu4H4jYcYXM/o3p01+psU+0NADQowA8jtYkK6MW5rV6T+CxkEaNZItfSmZRPgIuypcqnA==} + '@graphql-codegen/add@6.0.1': + resolution: {integrity: sha512-MSylSekjpVWbOBw2A/2ssk1fPY54sYb6Qk2C4AX5u7s2R+2pMQ9ws7DTXo8VU9qwTgWwVp6vGfdQ0AMpAn4Iug==} + engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/cli@5.0.7': - resolution: {integrity: sha512-h/sxYvSaWtxZxo8GtaA8SvcHTyViaaPd7dweF/hmRDpaQU1o3iU3EZxlcJ+oLTunU0tSMFsnrIXm/mhXxI11Cw==} + '@graphql-codegen/cli@6.3.0': + resolution: {integrity: sha512-tlzSaM2oSnG6x8+QVc+cJ7NMJe+CN4tnSm/B8Uny/IpgSkAqP+RG8xaDxnrzwQZ+lz1ZXrBkNM6vzAGZhOaOGw==} engines: {node: '>=16'} hasBin: true peerDependencies: @@ -1038,8 +1098,8 @@ packages: '@parcel/watcher': optional: true - '@graphql-codegen/client-preset@4.8.3': - resolution: {integrity: sha512-QpEsPSO9fnRxA6Z66AmBuGcwHjZ6dYSxYo5ycMlYgSPzAbyG8gn/kWljofjJfWqSY+T/lRn+r8IXTH14ml24vQ==} + '@graphql-codegen/client-preset@5.3.0': + resolution: {integrity: sha512-K9FON+j7qyxAUDuSGqI3ofb7lWTBs16oPTYpu14lhdL4DKZQSHLyc8EMYU9e3KcyQ/13gU/d6culOppzAuexLA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1048,19 +1108,14 @@ packages: graphql-sock: optional: true - '@graphql-codegen/core@4.0.2': - resolution: {integrity: sha512-IZbpkhwVqgizcjNiaVzNAzm/xbWT6YnGgeOLwVjm4KbJn3V2jchVtuzHH09G5/WkkLSk2wgbXNdwjM41JxO6Eg==} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - - '@graphql-codegen/gql-tag-operations@4.0.17': - resolution: {integrity: sha512-2pnvPdIG6W9OuxkrEZ6hvZd142+O3B13lvhrZ48yyEBh2ujtmKokw0eTwDHtlXUqjVS0I3q7+HB2y12G/m69CA==} + '@graphql-codegen/core@5.0.2': + resolution: {integrity: sha512-7RX0wwjoWPlLG/tUmpaTK91ZZqHcACNWpRL0nGnnJaJrORie9pgmX8JPrcwBgYiHSC+3ERo9xY91RFPem/VrpQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/plugin-helpers@5.1.1': - resolution: {integrity: sha512-28GHODK2HY1NhdyRcPP3sCz0Kqxyfiz7boIZ8qIxFYmpLYnlDgiYok5fhFLVSZihyOpCs4Fa37gVHf/Q4I2FEg==} + '@graphql-codegen/gql-tag-operations@5.2.0': + resolution: {integrity: sha512-B9gtJ4ziqpIv+7mHqwjtpYLFOuv0GmmRGpNDoWKM2VIx4OQqgI84d6OHKYCVeO7yu3mUr0QPvUgkSyuLVrdukA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1071,19 +1126,20 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/schema-ast@4.1.0': - resolution: {integrity: sha512-kZVn0z+th9SvqxfKYgztA6PM7mhnSZaj4fiuBWvMTqA+QqQ9BBed6Pz41KuD/jr0gJtnlr2A4++/0VlpVbCTmQ==} + '@graphql-codegen/schema-ast@5.0.2': + resolution: {integrity: sha512-jl1F/9IjRkJisEb9B0ayG4QGqYlPldLRy8ojDdmL9NE1NsdB5ROfxQnSqyC3g+wuvBhWX7kZgMRQYn3RU1I5bA==} + engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/typed-document-node@5.1.2': - resolution: {integrity: sha512-jaxfViDqFRbNQmfKwUY8hDyjnLTw2Z7DhGutxoOiiAI0gE/LfPe0LYaVFKVmVOOD7M3bWxoWfu4slrkbWbUbEw==} + '@graphql-codegen/typed-document-node@6.1.8': + resolution: {integrity: sha512-+qDdiJSQ7Ol+vpLMAH8ZJok50CvlYxA6seQ7cwEa3emXt8MmH5hh3zdc9unQlPc7bynoJHRCgoKk7E0B7hry0w==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/typescript-operations@4.6.1': - resolution: {integrity: sha512-k92laxhih7s0WZ8j5WMIbgKwhe64C0As6x+PdcvgZFMudDJ7rPJ/hFqJ9DCRxNjXoHmSjnr6VUuQZq4lT1RzCA==} + '@graphql-codegen/typescript-operations@5.1.0': + resolution: {integrity: sha512-JlmjbFl0EnsfMDIYvTE1Q0kAOrntVEZ+ZfBqWTP91g4e0F/TzuwJ/V4tiFmeDf5dx/rf9AK4VkPehIdxu7TYhw==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1098,8 +1154,8 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/typescript-resolvers@4.5.2': - resolution: {integrity: sha512-u7Zz30UmtJCOmfAIcCYefS/3lE8LK7bF0COPz4VOva5v/EuxmLNCFreCuj4dztEZzBmuwJOJRm278MAxiz0fzg==} + '@graphql-codegen/typescript-resolvers@5.1.8': + resolution: {integrity: sha512-aimBhh/XIoMD9SAif8F1NUQQeQNR4RaDZnso/tZHzX8OpNzp7kLr3lRQM12p4L7+zekOFkouaDbsoKbLoaIAQA==} engines: {node: '>=16'} peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 @@ -1108,18 +1164,12 @@ packages: graphql-sock: optional: true - '@graphql-codegen/typescript@4.1.6': - resolution: {integrity: sha512-vpw3sfwf9A7S+kIUjyFxuvrywGxd4lmwmyYnnDVjVE4kSQ6Td3DpqaPTy8aNQ6O96vFoi/bxbZS2BW49PwSUUA==} + '@graphql-codegen/typescript@5.0.10': + resolution: {integrity: sha512-Pa8OFmL9TdhEYnLYJLYA9EhP8eEeivP/YDYq4Nb8LQaL7GXm4TGX8zELYaCM9Fu8M3iZb7iQGMt7qc+1lXz8XQ==} engines: {node: '>=16'} peerDependencies: graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/visitor-plugin-common@5.8.0': - resolution: {integrity: sha512-lC1E1Kmuzi3WZUlYlqB4fP6+CvbKH9J+haU1iWmgsBx5/sO2ROeXJG4Dmt8gP03bI2BwjiwV5WxCEMlyeuzLnA==} - engines: {node: '>=16'} - peerDependencies: - graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 - '@graphql-codegen/visitor-plugin-common@6.3.0': resolution: {integrity: sha512-vGBoE+4huzZyNhyGSAhXAkdROHlwKxxuziZm4XtP1mxe7nuI+VgyOmXebafLijbmuDsptPXQN0C/htL54O8hrg==} engines: {node: '>=16'} @@ -1144,12 +1194,22 @@ packages: resolution: {integrity: sha512-RiwLMc89lTjvyLEivZ/qxAC5nBHoS2CtsWFSOsN35sxG9zoo5Z+JsFHM8MlvmO9yt+MJNIyC5MLE1rsbOphlag==} engines: {node: '>=18.0.0'} - '@graphql-tools/apollo-engine-loader@8.0.20': - resolution: {integrity: sha512-m5k9nXSyjq31yNsEqDXLyykEjjn3K3Mo73oOKI+Xjy8cpnsgbT4myeUJIYYQdLrp7fr9Y9p7ZgwT5YcnwmnAbA==} + '@graphql-hive/signal@2.0.0': + resolution: {integrity: sha512-Pz8wB3K0iU6ae9S1fWfsmJX24CcGeTo6hE7T44ucmV/ALKRj+bxClmqrYcDT7v3f0d12Rh4FAXBb6gon+WkDpQ==} + engines: {node: '>=20.0.0'} + + '@graphql-tools/apollo-engine-loader@8.0.29': + resolution: {integrity: sha512-437JW84ueB9lmEwiAAWww7pBC6uyHVmh64hXErWumXVh9FIjTtUdRNvDn5AayWEhYKri/zu19z6znUdtNuqyjQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/batch-execute@10.0.8': + resolution: {integrity: sha512-Kobt37qrVTFhX4HUK5/vPgMXFw/5f97AzmAlfmDBSRh/GnoAmLKCb48FrEI3gdeIwZB2fEhVHJyDqsojldnLQA==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/batch-execute@9.0.17': resolution: {integrity: sha512-i7BqBkUP2+ex8zrQrCQTEt6nYHQmIey9qg7CMRRa1hXCY2X8ZCVjxsvbsi7gOLwyI/R3NHxSRDxmzZevE2cPLg==} engines: {node: '>=18.0.0'} @@ -1162,12 +1222,24 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/code-file-loader@8.1.31': + resolution: {integrity: sha512-YHDcfcRp2mkL1HCfD2Udn199JcSJYARZyFfFlTqPq7ZVuJ72Zsa8bF/yE6D5plPMsXFa1hQF3iQvJhPsMcjf4A==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/delegate@10.2.21': resolution: {integrity: sha512-YLyyuhxrZniVufZV/6Oba5xIvWqVRyZrO8LsM+hI4Q6/aR1OdJafi9IBqCE2hUDPfIc8wkhqixA2/WT+oApY3g==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/delegate@12.0.14': + resolution: {integrity: sha512-/xCDM8zlCk1Lccww9asOIpxna9IFpIlol4yGsBD9Y2+3/Zu5k4/HzDC8LKJtw5MxdG+uJN1l9nRepr4GeBC4kA==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/documents@1.0.1': resolution: {integrity: sha512-aweoMH15wNJ8g7b2r4C4WRuJxZ0ca8HtNO54rkye/3duxTkW4fGBEutCx03jCIr5+a1l+4vFJNP859QnAVBVCA==} engines: {node: '>=16.0.0'} @@ -1180,66 +1252,120 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-common@1.0.6': + resolution: {integrity: sha512-23/K5C+LSlHDI0mj2SwCJ33RcELCcyDUgABm1Z8St7u/4Z5+95i925H/NAjUyggRjiaY8vYtNiMOPE49aPX1sg==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-graphql-ws@2.0.5': resolution: {integrity: sha512-gI/D9VUzI1Jt1G28GYpvm5ckupgJ5O8mi5Y657UyuUozX34ErfVdZ81g6oVcKFQZ60LhCzk7jJeykK48gaLhDw==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-graphql-ws@3.1.5': + resolution: {integrity: sha512-WXRsfwu9AkrORD9nShrd61OwwxeQ5+eXYcABRR3XPONFIS8pWQfDJGGqxql9/227o/s0DV5SIfkBURb5Knzv+A==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-http@1.3.3': resolution: {integrity: sha512-LIy+l08/Ivl8f8sMiHW2ebyck59JzyzO/yF9SFS4NH6MJZUezA1xThUXCDIKhHiD56h/gPojbkpcFvM2CbNE7A==} engines: {node: '>=18.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-http@3.2.1': + resolution: {integrity: sha512-53i0TYO0cznIlZDJcnq4gQ6SOZ8efGgCDV33MYh6oqEapcp36tCMEVnVGVxcX5qRRyNHkqTY6hkA+/AyK9kicQ==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-legacy-ws@1.1.17': resolution: {integrity: sha512-TvltY6eL4DY1Vt66Z8kt9jVmNcI+WkvVPQZrPbMCM3rv2Jw/sWvSwzUBezRuWX0sIckMifYVh23VPcGBUKX/wg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor-legacy-ws@1.1.27': + resolution: {integrity: sha512-tz0K8U9VKr9G/murdPpsARM2SxrXKtaKHaFoAZQoxHpWgbTdoGgJoyT5AoY6MZkgLRi5g24X0iZOLVtYlwy/nw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/executor@1.4.7': resolution: {integrity: sha512-U0nK9jzJRP9/9Izf1+0Gggd6K6RNRsheFo1gC/VWzfnsr0qjcOSS9qTjY0OTC5iTPt4tQ+W5Zpw/uc7mebI6aA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/git-loader@8.0.24': - resolution: {integrity: sha512-ypLC9N2bKNC0QNbrEBTbWKwbV607f7vK2rSGi9uFeGr8E29tWplo6or9V/+TM0ZfIkUsNp/4QX/zKTgo8SbwQg==} + '@graphql-tools/executor@1.5.2': + resolution: {integrity: sha512-V7QaW/59Dml7DK0MApMP/Z+qx2qkQ0inGJGi/n1JwBHRZehXTKDNKO7OFRA0h6V1w2afmcVso2GFwlDnPyusGA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/github-loader@8.0.20': - resolution: {integrity: sha512-Icch8bKZ1iP3zXCB9I0ded1hda9NPskSSalw7ZM21kXvLiOR5nZhdqPF65gCFkIKo+O4NR4Bp51MkKj+wl+vpg==} + '@graphql-tools/git-loader@8.0.35': + resolution: {integrity: sha512-KcZcy4h80f+PoULl7TFBUzO+9o71weTFnD0mNS2OpLh7JfKRnqZKBgeawn+G5iOu5EWTFBFwMgvauzVsHC6PcQ==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/github-loader@9.1.1': + resolution: {integrity: sha512-2xq2vCcGoCfuCqmZw48CRbb3AD6iDlAtk3ce1keimXru7h/81UhPS+8DB1m2fUlhhAAA31R8wFkawnxlFu7MFg==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/graphql-file-loader@8.0.20': resolution: {integrity: sha512-inds4My+JJxmg5mxKWYtMIJNRxa7MtX+XIYqqD/nu6G4LzQ5KGaBJg6wEl103KxXli7qNOWeVAUmEjZeYhwNEg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/graphql-file-loader@8.1.13': + resolution: {integrity: sha512-Su9RIYUrQ9yoKioObS5yNkGuOqwSIZVK79mre9ji+s3zr7UQepoKkuns6NrtmMcD1vUJyayzvr9YTaiLRbZGQA==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/graphql-tag-pluck@8.3.19': resolution: {integrity: sha512-LEw/6IYOUz48HjbWntZXDCzSXsOIM1AyWZrlLoJOrA8QAlhFd8h5Tny7opCypj8FO9VvpPFugWoNDh5InPOEQA==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/graphql-tag-pluck@8.3.30': + resolution: {integrity: sha512-pit39s4+sLC5i6GOFpPieo917Qjq02JyDxrr6CSi0cBpRGYf9T1/HGdi3D/SfoOkuZWcQgnNnnGrLoDDmBGVEg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/import@7.0.19': resolution: {integrity: sha512-Xtku8G4bxnrr6I3hVf8RrBFGYIbQ1OYVjl7jgcy092aBkNZvy1T6EDmXmYXn5F+oLd9Bks3K3WaMm8gma/nM/Q==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/import@7.1.13': + resolution: {integrity: sha512-7leXxlZqVylYL2nvmcF3jUQuH3piT0unBpbPQ3F7r5UM0rehkgEcXxTeR8hZ3aQDeMVyaTli9bJjFTFErldYRg==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/json-file-loader@8.0.18': resolution: {integrity: sha512-JjjIxxewgk8HeMR3npR3YbOkB7fxmdgmqB9kZLWdkRKBxrRXVzhryyq+mhmI0Evzt6pNoHIc3vqwmSctG2sddg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/json-file-loader@8.0.27': + resolution: {integrity: sha512-iOMleQVqNOLDslrE1eLXFJ/z7uSBHd7kM6M+vpS3CvON2nccBK0NIMkdy0385m1LCHyfBKds/rsjMnGmjdXIhw==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/load-files@7.0.0': resolution: {integrity: sha512-P98amERIwI7FD8Bsq6xUbz9Mj63W8qucfrE/WQjad5jFMZYdFFt46a99FFdfx8S/ZYgpAlj/AZbaTtWLitMgNQ==} engines: {node: '>=16.0.0'} @@ -1252,6 +1378,12 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/load@8.1.9': + resolution: {integrity: sha512-BXaghzA0KVRvDjAlhEb26OwtmLYsSqs29nVyubIRfRy28ysdzEH+9HkYgQHmorJN+QPBbh9Gdg8nsGKeTPBpLQ==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/merge@8.4.2': resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} peerDependencies: @@ -1269,16 +1401,15 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/optimize@2.0.0': - resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} + '@graphql-tools/merge@9.1.8': + resolution: {integrity: sha512-25V7WDrODo1cPrmuUCrqf5qlMA4a/Ow4aHaqJ1MnTUaluwsV3UiqzCHWux3HSLb0H63mkoZiuOrU5xJhxRcoCg==} engines: {node: '>=16.0.0'} peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/prisma-loader@8.0.17': - resolution: {integrity: sha512-fnuTLeQhqRbA156pAyzJYN0KxCjKYRU5bz1q/SKOwElSnAU4k7/G1kyVsWLh7fneY78LoMNH5n+KlFV8iQlnyg==} + '@graphql-tools/optimize@2.0.0': + resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} engines: {node: '>=16.0.0'} - deprecated: 'This package was intended to be used with an older versions of Prisma.\nThe newer versions of Prisma has a different approach to GraphQL integration.\nTherefore, this package is no longer needed and has been deprecated and removed.\nLearn more: https://www.prisma.io/graphql' peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 @@ -1294,6 +1425,12 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/schema@10.0.32': + resolution: {integrity: sha512-kJ1Qn20MPnlaEVH37639E6rzQ1tEtr6XTUhNdR4EKydl+FijtLhWX2WLZbGnvrYuG8XUcMxsZU9mRRYYNvK02w==} + engines: {node: '>=16.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/schema@9.0.19': resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} peerDependencies: @@ -1305,6 +1442,12 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/url-loader@9.1.1': + resolution: {integrity: sha512-mLrUnyjPbYrwbCs2GqVXB4CPGZye4aOzJlLOYNctKm3QvGaMSmEwsAVJjpuG8D+ky/1OwCklqgo2KBj3TgYoSA==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/utils@10.8.6': resolution: {integrity: sha512-Alc9Vyg0oOsGhRapfL3xvqh1zV8nKoFUdtLhXX7Ki4nClaIJXckrA86j+uxEuG3ic6j4jlM1nvcWXRn/71AVLQ==} engines: {node: '>=16.0.0'} @@ -1334,6 +1477,12 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-tools/wrap@11.1.14': + resolution: {integrity: sha512-ebSVT7apxr+88q3Wy0i4AyRmJ42I0SuMqjPIn1fqW14yCTQRZG8YLuIALG1gKR936+GkfMLOrADh6egJvdlN6Q==} + engines: {node: '>=20.0.0'} + peerDependencies: + graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-typed-document-node/core@3.2.0': resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: @@ -1364,6 +1513,140 @@ packages: peerDependencies: eslint: ^9.34.0 + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + '@isaacs/balanced-match@4.0.1': resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} engines: {node: 20 || >=22} @@ -1403,6 +1686,9 @@ packages: '@jridgewell/gen-mapping@0.3.13': resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + '@jridgewell/resolve-uri@3.1.2': resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} @@ -2377,9 +2663,6 @@ packages: '@types/jest@29.5.12': resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} - '@types/js-yaml@4.0.9': - resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} - '@types/json-schema@7.0.15': resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -2827,6 +3110,10 @@ packages: resolution: {integrity: sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw==} engines: {node: '>=18.0.0'} + '@whatwg-node/fetch@0.10.13': + resolution: {integrity: sha512-b4PhJ+zYj4357zwk4TTuF2nEe0vVtOrwdsrNo5hL+u1ojXNhh1FgJ6pg1jzDlwlT4oBdzfSwaBwMCtFCsIWg8Q==} + engines: {node: '>=18.0.0'} + '@whatwg-node/fetch@0.10.8': resolution: {integrity: sha512-Rw9z3ctmeEj8QIB9MavkNJqekiu9usBCSMZa+uuAvM0lF3v70oQVCXNppMIqaV6OTZbdaHF1M2HLow58DEw+wg==} engines: {node: '>=18.0.0'} @@ -2835,6 +3122,10 @@ packages: resolution: {integrity: sha512-QC16IdsEyIW7kZd77aodrMO7zAoDyyqRCTLg+qG4wqtP4JV9AA+p7/lgqMdD29XyiYdVvIdFrfI9yh7B1QvRvw==} engines: {node: '>=18.0.0'} + '@whatwg-node/node-fetch@0.8.5': + resolution: {integrity: sha512-4xzCl/zphPqlp9tASLVeUhB5+WJHbuWGYpfoC2q1qh5dw0AqZBW7L27V5roxYWijPxj4sspRAAoOH3d2ztaHUQ==} + engines: {node: '>=18.0.0'} + '@whatwg-node/promise-helpers@1.3.2': resolution: {integrity: sha512-Nst5JdK47VIl9UcGwtv2Rcgyn5lWtZ0/mhRQ4G8NN2isxpq2TO30iqHzmwoJycjWuyUfg3GFXqP/gFHXeV57IA==} engines: {node: '>=16.0.0'} @@ -2897,14 +3188,6 @@ packages: resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} engines: {node: '>= 6.0.0'} - agent-base@7.1.4: - resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} - engines: {node: '>= 14'} - - aggregate-error@3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} peerDependencies: @@ -2932,9 +3215,9 @@ packages: analytics@0.8.1: resolution: {integrity: sha512-mXOe8zTGDfiYqw9MZsgul8HrOBmHsIwk/0xbrkGZr75yvWqAcyKfZA0WjOalwI9tzIKv8WNfHV5yhnrtQcXJpw==} - ansi-escapes@4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -3030,10 +3313,6 @@ packages: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} engines: {node: '>=4'} - astral-regex@2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - async-function@1.0.0: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} @@ -3069,9 +3348,6 @@ packages: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true @@ -3096,9 +3372,6 @@ packages: bl@2.2.1: resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==} - bl@4.1.0: - resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} - body-parser@1.20.4: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} @@ -3129,9 +3402,6 @@ packages: buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} - buffer@5.7.1: - resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} - bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -3204,8 +3474,8 @@ packages: character-reference-invalid@2.0.1: resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - chardet@0.7.0: - resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} @@ -3230,34 +3500,22 @@ packages: clamp@1.0.1: resolution: {integrity: sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==} - clean-stack@2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - - cli-spinners@2.9.2: - resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} - engines: {node: '>=6'} + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} - cli-truncate@2.1.0: - resolution: {integrity: sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==} - engines: {node: '>=8'} + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} - cli-width@3.0.0: - resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} - engines: {node: '>= 10'} + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -3376,12 +3634,18 @@ packages: typescript: optional: true + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + country-regex@1.1.0: resolution: {integrity: sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA==} - cross-fetch@3.2.0: - resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==} - cross-inspect@1.0.1: resolution: {integrity: sha512-Pcw1JTvZLSJH83iiGWt6fRcT+BjZlCDRVwYLbUcHzv/CRpB7r0MlSrGbIyQvVSNyGnbt7G4AXuyCiDR3POvZ1A==} engines: {node: '>=16.0.0'} @@ -3575,8 +3839,9 @@ packages: resolution: {integrity: sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==} engines: {node: '>=0.11'} - debounce@1.2.1: - resolution: {integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==} + debounce@2.2.0: + resolution: {integrity: sha512-Xks6RUDLZFdz8LIdR6q0MTH44k7FikOmnh5xkSjMig6ch45afc8sjTjRQf3P6ax8dMgcQrYO/AR2RGWURrruqw==} + engines: {node: '>=18'} debug@2.6.9: resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} @@ -3629,9 +3894,6 @@ packages: deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} @@ -3658,10 +3920,6 @@ packages: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} - dependency-graph@0.11.0: - resolution: {integrity: sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==} - engines: {node: '>= 0.6.0'} - dependency-graph@1.0.0: resolution: {integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==} engines: {node: '>=4'} @@ -3779,6 +4037,9 @@ packages: elementary-circuits-directed-graph@1.3.1: resolution: {integrity: sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ==} + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -3804,6 +4065,14 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -3876,10 +4145,6 @@ packages: escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -4092,6 +4357,9 @@ packages: eventemitter3@4.0.7: resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + events@3.3.0: resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} engines: {node: '>=0.8.x'} @@ -4120,10 +4388,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - external-editor@3.1.0: - resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} - engines: {node: '>=4'} - falafel@2.2.5: resolution: {integrity: sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==} engines: {node: '>=0.4.0'} @@ -4177,10 +4441,6 @@ packages: fflate@0.8.2: resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - figures@3.2.0: - resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} - engines: {node: '>=8'} - file-entry-cache@8.0.0: resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} engines: {node: '>=16.0.0'} @@ -4298,6 +4558,10 @@ packages: get-canvas-context@1.0.2: resolution: {integrity: sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==} + get-east-asian-width@1.5.0: + resolution: {integrity: sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==} + engines: {node: '>=18'} + get-intrinsic@1.3.0: resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} engines: {node: '>= 0.4'} @@ -4454,17 +4718,22 @@ packages: cosmiconfig-toml-loader: optional: true + graphql-config@5.1.6: + resolution: {integrity: sha512-fCkYnm4Kdq3un0YIM4BCZHVR5xl0UeLP6syxxO7KAstdY7QVyVvTHP0kRPDYEP1v08uwtJVgis5sj3IOTLOniQ==} + engines: {node: '>= 16.0.0'} + peerDependencies: + cosmiconfig-toml-loader: ^1.0.0 + graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + peerDependenciesMeta: + cosmiconfig-toml-loader: + optional: true + graphql-depth-limit@1.1.0: resolution: {integrity: sha512-+3B2BaG8qQ8E18kzk9yiSdAa75i/hnnOwgSeAxVJctGQPvmeiLtqKOYF6HETCyRjiF7Xfsyal0HbLlxCQkgkrw==} engines: {node: '>=6.0.0'} peerDependencies: graphql: '*' - graphql-request@6.1.0: - resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} - peerDependencies: - graphql: 14 - 16 - graphql-scalars@1.24.0: resolution: {integrity: sha512-olbFN39m0XsHHESACUdd7jWU/lGxMMS1B7NZ8XqpqhKZrjBxzeGYAnQ4Ax//huYds771wb7gCznA+65QDuUa+g==} engines: {node: '>=10'} @@ -4502,7 +4771,23 @@ packages: ws: optional: true - graphql@16.10.0: + graphql-ws@6.0.8: + resolution: {integrity: sha512-m3EOaNsUBXwAnkBWbzPfe0Nq8pXUfxsWnolC54sru3FzHvhTZL0Ouf/BoQsaGAXqM+YPerXOJ47BUnmgmoupCw==} + engines: {node: '>=20'} + peerDependencies: + '@fastify/websocket': ^10 || ^11 + crossws: ~0.3 + graphql: ^15.10.1 || ^16 + ws: ^8 + peerDependenciesMeta: + '@fastify/websocket': + optional: true + crossws: + optional: true + ws: + optional: true + + graphql@16.10.0: resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} @@ -4615,10 +4900,6 @@ packages: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} - http-proxy-agent@7.0.2: - resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} - engines: {node: '>= 14'} - http-proxy-middleware@2.0.9: resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} engines: {node: '>=12.0.0'} @@ -4636,10 +4917,6 @@ packages: resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} engines: {node: '>= 6'} - https-proxy-agent@7.0.6: - resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} - engines: {node: '>= 14'} - iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4648,6 +4925,10 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + icss-utils@5.1.0: resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} @@ -4686,10 +4967,6 @@ packages: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} - indent-string@4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -4700,10 +4977,6 @@ packages: inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} - internal-slot@1.1.0: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} @@ -4826,6 +5099,10 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + is-generator-function@1.1.0: resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==} engines: {node: '>= 0.4'} @@ -4841,10 +5118,6 @@ packages: resolution: {integrity: sha512-YeLzceuwg3K6O0MLM3UyUUjKAlyULetwryFp1mHy1I5PfArK0AEqlfa+MR4gkJjcbuJXoDJCvXbyqZVf5CR2Sg==} engines: {node: '>=0.10.0'} - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} - is-lower-case@2.0.2: resolution: {integrity: sha512-bVcMJy4X5Og6VZfdOZstSexlEy20Sr0k/p/b2IlQJlfdKAQuMpiv5w2Ccxb8sKdRUNAG1PnHVHjFSdRDVS6NlQ==} @@ -4972,6 +5245,11 @@ packages: peerDependencies: ws: '*' + isows@1.0.7: + resolution: {integrity: sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==} + peerDependencies: + ws: '*' + iterator.prototype@1.1.5: resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} engines: {node: '>= 0.4'} @@ -5003,17 +5281,10 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@1.21.7: - resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} - hasBin: true - jiti@2.4.2: resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} hasBin: true - jose@5.10.0: - resolution: {integrity: sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==} - js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -5111,14 +5382,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listr2@4.0.5: - resolution: {integrity: sha512-juGHV1doQdpNT3GSTs9IUN43QJb7KHdF9uqg7Vufs/tG9VTzpFphqF4pm/ICdAABGQxsyNn9CiYA3StkI6jpwA==} - engines: {node: '>=12'} - peerDependencies: - enquirer: '>= 2.3.0 < 3' - peerDependenciesMeta: - enquirer: - optional: true + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} @@ -5156,16 +5422,16 @@ packages: lodash.sortby@4.7.0: resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} engines: {node: '>=10'} - log-update@4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} loglevel@1.9.2: resolution: {integrity: sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==} @@ -5321,6 +5587,15 @@ packages: '@types/node': optional: true + meros@1.3.2: + resolution: {integrity: sha512-Q3mobPbvEx7XbwhnC1J1r60+5H6EZyNccdzSz0eGexJRwouUtTZxPVRGdqKtxlpD84ScK4+tIGldkqDtCKdI0A==} + engines: {node: '>=13'} + peerDependencies: + '@types/node': '>=13' + peerDependenciesMeta: + '@types/node': + optional: true + methods@1.1.2: resolution: {integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==} engines: {node: '>= 0.6'} @@ -5426,9 +5701,9 @@ packages: engines: {node: '>=4'} hasBin: true - mimic-fn@2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} @@ -5483,8 +5758,9 @@ packages: murmurhash-js@1.0.0: resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} - mute-stream@0.0.8: - resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} @@ -5625,9 +5901,9 @@ packages: once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} - onetime@5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} @@ -5640,14 +5916,6 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} - - os-tmpdir@1.0.2: - resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} - engines: {node: '>=0.10.0'} - own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -5660,10 +5928,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@4.0.0: - resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} - engines: {node: '>=10'} - package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} @@ -6087,10 +6351,6 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} - readable-stream@3.6.2: - resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} - engines: {node: '>= 6'} - readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -6255,9 +6515,9 @@ packages: resolution: {integrity: sha512-15K4tT8X35W0zJ5bv3fAf4eEKqOwS7yzd+Bg6YEE9NLltVbPbuTcYo3J2AP6AMQGMJmJkFCG421+kP2/iCBfDA==} engines: {node: '>=0.8'} - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} retry@0.13.1: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} @@ -6288,10 +6548,6 @@ packages: rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} - run-async@2.4.1: - resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} - engines: {node: '>=0.12.0'} - run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -6342,9 +6598,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - scuid@1.1.0: - resolution: {integrity: sha512-MuCAyrGZcTLfQoH2XoBlQ8C6bzwN88XT/0slOGz0pn8+gIP85BOAfYa44ZXQUTOwRwPU0QvgU+V+OSajl/59Xg==} - seedrandom@3.0.5: resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} @@ -6427,9 +6680,6 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -6448,13 +6698,13 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slice-ansi@3.0.0: - resolution: {integrity: sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==} - engines: {node: '>=8'} + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} - slice-ansi@4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} snake-case@3.0.4: resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} @@ -6552,6 +6802,14 @@ packages: resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} engines: {node: '>=12'} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.0: + resolution: {integrity: sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==} + engines: {node: '>=20'} + string.prototype.matchall@4.0.12: resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} engines: {node: '>= 0.4'} @@ -6669,6 +6927,10 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + sync-fetch@0.6.0: + resolution: {integrity: sha512-IELLEvzHuCfc1uTsshPK58ViSdNqXxlml1U+fmwJIKLYKOr/rAtBrorE2RYm5IHaMpDNlmC0fr1LAvdXvyheEQ==} + engines: {node: '>=18'} + sync-fetch@0.6.0-2: resolution: {integrity: sha512-c7AfkZ9udatCuAy9RSfiGPpeOKKUAUK5e1cXadLOGUjasdxqYqAK0jTNkM/FSEyJ3a5Ra27j/tw/PS0qLmaF/A==} engines: {node: '>=18'} @@ -6714,9 +6976,6 @@ packages: through2@2.0.5: resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==} - through@2.3.8: - resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} - timeout-signal@2.0.0: resolution: {integrity: sha512-YBGpG4bWsHoPvofT6y/5iqulfXIiIErl5B0LdtHT1mGXDFTAhhRrbUpTvBgYbovr+3cKblya2WAOcpoy90XguA==} engines: {node: '>=16'} @@ -6762,10 +7021,6 @@ packages: title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} - tmp@0.0.33: - resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} - engines: {node: '>=0.6.0'} - to-buffer@1.2.1: resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==} engines: {node: '>= 0.4'} @@ -6856,9 +7111,6 @@ packages: resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==} engines: {node: '>=6'} - tslib@2.6.3: - resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} - tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} @@ -6884,10 +7136,6 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - type-is@1.6.18: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} @@ -7192,9 +7440,6 @@ packages: resolution: {integrity: sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==} engines: {node: '>=10.13.0'} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - weak-map@1.0.8: resolution: {integrity: sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==} @@ -7302,6 +7547,10 @@ packages: resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} engines: {node: '>=12'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -7317,6 +7566,18 @@ packages: utf-8-validate: optional: true + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + xml-name-validator@4.0.0: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} @@ -7339,9 +7600,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml-ast-parser@0.0.43: - resolution: {integrity: sha512-2PTINUwsRqSd+s8XxKaJWQlUuEMHJQyEuh2edBbW8KNJz0SJPwUSD2zRWqezFEdN7IzAgeuYHFUCF7o8zRdZ0A==} - yaml@1.10.2: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} @@ -7363,6 +7621,10 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + zen-observable-ts@1.2.5: resolution: {integrity: sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg==} @@ -7601,8 +7863,16 @@ snapshots: js-tokens: 4.0.0 picocolors: 1.1.1 + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + '@babel/compat-data@7.28.0': {} + '@babel/compat-data@7.29.0': {} + '@babel/core@7.28.0': dependencies: '@ampproject/remapping': 2.3.0 @@ -7623,6 +7893,26 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/core@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-compilation-targets': 7.28.6 + '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + '@babel/generator@7.28.0': dependencies: '@babel/parser': 7.28.0 @@ -7631,6 +7921,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jsesc: 3.1.0 + '@babel/generator@7.29.1': + dependencies: + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + '@babel/helper-compilation-targets@7.27.2': dependencies: '@babel/compat-data': 7.28.0 @@ -7639,6 +7937,14 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-compilation-targets@7.28.6': + dependencies: + '@babel/compat-data': 7.29.0 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.1 + lru-cache: 5.1.1 + semver: 6.3.1 + '@babel/helper-globals@7.28.0': {} '@babel/helper-module-imports@7.27.1': @@ -7648,6 +7954,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-imports@7.28.6': + dependencies: + '@babel/traverse': 7.29.0 + '@babel/types': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-module-transforms@7.27.3(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 @@ -7657,12 +7970,23 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-module-imports': 7.28.6 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.29.0 + transitivePeerDependencies: + - supports-color + '@babel/helper-plugin-utils@7.27.1': {} '@babel/helper-string-parser@7.27.1': {} '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} + '@babel/helper-validator-option@7.27.1': {} '@babel/helpers@7.27.6': @@ -7670,15 +7994,29 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.0 + '@babel/helpers@7.29.2': + dependencies: + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + '@babel/parser@7.28.0': dependencies: '@babel/types': 7.28.0 + '@babel/parser@7.29.2': + dependencies: + '@babel/types': 7.29.0 + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.0)': dependencies: '@babel/core': 7.28.0 '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.29.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/runtime@7.27.6': {} '@babel/runtime@7.28.6': {} @@ -7691,6 +8029,12 @@ snapshots: '@babel/parser': 7.28.0 '@babel/types': 7.28.0 + '@babel/template@7.28.6': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/types': 7.29.0 + '@babel/traverse@7.28.0': dependencies: '@babel/code-frame': 7.27.1 @@ -7703,11 +8047,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.29.0': + dependencies: + '@babel/code-frame': 7.29.0 + '@babel/generator': 7.29.1 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.29.2 + '@babel/template': 7.28.6 + '@babel/types': 7.29.0 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + '@babel/types@7.28.0': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.29.0': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@choojs/findup@0.2.1': dependencies: commander: 2.20.3 @@ -7855,6 +8216,13 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 + '@envelop/core@5.5.1': + dependencies: + '@envelop/instrumentation': 1.0.0 + '@envelop/types': 5.2.1 + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + '@envelop/instrumentation@1.0.0': dependencies: '@whatwg-node/promise-helpers': 1.3.2 @@ -8070,42 +8438,42 @@ snapshots: '@googlemaps/js-api-loader@1.16.10': {} - '@graphql-codegen/add@5.0.3(graphql@16.10.0)': + '@graphql-codegen/add@6.0.1(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 - '@graphql-codegen/cli@5.0.7(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-codegen/cli@6.3.0(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2)': dependencies: '@babel/generator': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.0 - '@graphql-codegen/client-preset': 4.8.3(graphql@16.10.0) - '@graphql-codegen/core': 4.0.2(graphql@16.10.0) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-tools/apollo-engine-loader': 8.0.20(graphql@16.10.0) - '@graphql-tools/code-file-loader': 8.1.20(graphql@16.10.0) - '@graphql-tools/git-loader': 8.0.24(graphql@16.10.0) - '@graphql-tools/github-loader': 8.0.20(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/graphql-file-loader': 8.0.20(graphql@16.10.0) - '@graphql-tools/json-file-loader': 8.0.18(graphql@16.10.0) - '@graphql-tools/load': 8.1.0(graphql@16.10.0) - '@graphql-tools/prisma-loader': 8.0.17(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/url-loader': 8.0.31(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-codegen/client-preset': 5.3.0(graphql@16.10.0) + '@graphql-codegen/core': 5.0.2(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-tools/apollo-engine-loader': 8.0.29(graphql@16.10.0) + '@graphql-tools/code-file-loader': 8.1.31(graphql@16.10.0) + '@graphql-tools/git-loader': 8.0.35(graphql@16.10.0) + '@graphql-tools/github-loader': 9.1.1(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/graphql-file-loader': 8.1.13(graphql@16.10.0) + '@graphql-tools/json-file-loader': 8.0.27(graphql@16.10.0) + '@graphql-tools/load': 8.1.9(graphql@16.10.0) + '@graphql-tools/merge': 9.0.17(graphql@16.10.0) + '@graphql-tools/url-loader': 9.1.1(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@inquirer/prompts': 7.10.1(@types/node@22.10.5) '@whatwg-node/fetch': 0.10.8 chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@5.7.2) - debounce: 1.2.1 + cosmiconfig: 9.0.1(typescript@5.7.2) + debounce: 2.2.0 detect-indent: 6.1.0 graphql: 16.10.0 - graphql-config: 5.1.5(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) - inquirer: 8.2.6 + graphql-config: 5.1.6(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) is-glob: 4.0.3 - jiti: 1.21.7 + jiti: 2.4.2 json-to-pretty-yaml: 1.2.2 - listr2: 4.0.5 + listr2: 9.0.5 log-symbols: 4.1.0 micromatch: 4.0.8 shell-quote: 1.8.3 @@ -8122,57 +8490,44 @@ snapshots: - bufferutil - cosmiconfig-toml-loader - crossws - - encoding - - enquirer - graphql-sock - supports-color - typescript - - uWebSockets.js - utf-8-validate - '@graphql-codegen/client-preset@4.8.3(graphql@16.10.0)': + '@graphql-codegen/client-preset@5.3.0(graphql@16.10.0)': dependencies: '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@graphql-codegen/add': 5.0.3(graphql@16.10.0) - '@graphql-codegen/gql-tag-operations': 4.0.17(graphql@16.10.0) - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/typed-document-node': 5.1.2(graphql@16.10.0) - '@graphql-codegen/typescript': 4.1.6(graphql@16.10.0) - '@graphql-codegen/typescript-operations': 4.6.1(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) + '@graphql-codegen/add': 6.0.1(graphql@16.10.0) + '@graphql-codegen/gql-tag-operations': 5.2.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/typed-document-node': 6.1.8(graphql@16.10.0) + '@graphql-codegen/typescript': 5.0.10(graphql@16.10.0) + '@graphql-codegen/typescript-operations': 5.1.0(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) '@graphql-tools/documents': 1.0.1(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 - '@graphql-codegen/core@4.0.2(graphql@16.10.0)': + '@graphql-codegen/core@5.0.2(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 - '@graphql-codegen/gql-tag-operations@4.0.17(graphql@16.10.0)': + '@graphql-codegen/gql-tag-operations@5.2.0(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) auto-bind: 4.0.0 graphql: 16.10.0 - tslib: 2.6.3 - - '@graphql-codegen/plugin-helpers@5.1.1(graphql@16.10.0)': - dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) - change-case-all: 1.0.15 - common-tags: 1.8.2 - graphql: 16.10.0 - import-from: 4.0.0 - lodash: 4.17.23 - tslib: 2.6.3 + tslib: 2.8.1 '@graphql-codegen/plugin-helpers@6.3.0(graphql@16.10.0)': dependencies: @@ -8183,30 +8538,30 @@ snapshots: import-from: 4.0.0 tslib: 2.8.1 - '@graphql-codegen/schema-ast@4.1.0(graphql@16.10.0)': + '@graphql-codegen/schema-ast@5.0.2(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 - '@graphql-codegen/typed-document-node@5.1.2(graphql@16.10.0)': + '@graphql-codegen/typed-document-node@6.1.8(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) auto-bind: 4.0.0 change-case-all: 1.0.15 graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 - '@graphql-codegen/typescript-operations@4.6.1(graphql@16.10.0)': + '@graphql-codegen/typescript-operations@5.1.0(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/typescript': 4.1.6(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/typescript': 5.0.10(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) auto-bind: 4.0.0 graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 '@graphql-codegen/typescript-react-apollo@4.4.1(graphql@16.10.0)': dependencies: @@ -8217,38 +8572,24 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 - '@graphql-codegen/typescript-resolvers@4.5.2(graphql@16.10.0)': - dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/typescript': 4.1.6(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - auto-bind: 4.0.0 - graphql: 16.10.0 - tslib: 2.6.3 - - '@graphql-codegen/typescript@4.1.6(graphql@16.10.0)': + '@graphql-codegen/typescript-resolvers@5.1.8(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-codegen/schema-ast': 4.1.0(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 5.8.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/typescript': 5.0.10(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) auto-bind: 4.0.0 graphql: 16.10.0 - tslib: 2.6.3 + tslib: 2.8.1 - '@graphql-codegen/visitor-plugin-common@5.8.0(graphql@16.10.0)': + '@graphql-codegen/typescript@5.0.10(graphql@16.10.0)': dependencies: - '@graphql-codegen/plugin-helpers': 5.1.1(graphql@16.10.0) - '@graphql-tools/optimize': 2.0.0(graphql@16.10.0) - '@graphql-tools/relay-operation-optimizer': 7.1.3(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) + '@graphql-codegen/schema-ast': 5.0.2(graphql@16.10.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) auto-bind: 4.0.0 - change-case-all: 1.0.15 - dependency-graph: 0.11.0 graphql: 16.10.0 - graphql-tag: 2.12.6(graphql@16.10.0) - parse-filepath: 1.0.2 - tslib: 2.6.3 + tslib: 2.8.1 '@graphql-codegen/visitor-plugin-common@6.3.0(graphql@16.10.0)': dependencies: @@ -8264,7 +8605,7 @@ snapshots: parse-filepath: 1.0.2 tslib: 2.8.1 - '@graphql-eslint/eslint-plugin@4.4.0(@types/node@22.10.5)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-eslint/eslint-plugin@4.4.0(@types/node@25.2.3)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': dependencies: '@graphql-tools/code-file-loader': 8.1.20(graphql@16.10.0) '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) @@ -8273,7 +8614,7 @@ snapshots: eslint: 9.34.0(jiti@2.4.2) fast-glob: 3.3.3 graphql: 16.10.0 - graphql-config: 5.1.5(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) + graphql-config: 5.1.5(@types/node@25.2.3)(graphql@16.10.0)(typescript@5.7.2) graphql-depth-limit: 1.1.0(graphql@16.10.0) lodash.lowercase: 4.3.0 transitivePeerDependencies: @@ -8289,12 +8630,22 @@ snapshots: '@graphql-hive/signal@1.0.0': {} - '@graphql-tools/apollo-engine-loader@8.0.20(graphql@16.10.0)': + '@graphql-hive/signal@2.0.0': {} + + '@graphql-tools/apollo-engine-loader@8.0.29(graphql@16.10.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - '@whatwg-node/fetch': 0.10.8 + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@whatwg-node/fetch': 0.10.13 + graphql: 16.10.0 + sync-fetch: 0.6.0 + tslib: 2.8.1 + + '@graphql-tools/batch-execute@10.0.8(graphql@16.10.0)': + dependencies: + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 graphql: 16.10.0 - sync-fetch: 0.6.0-2 tslib: 2.8.1 '@graphql-tools/batch-execute@9.0.17(graphql@16.10.0)': @@ -8316,6 +8667,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@graphql-tools/code-file-loader@8.1.31(graphql@16.10.0)': + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + globby: 11.1.0 + graphql: 16.10.0 + tslib: 2.8.1 + unixify: 1.0.0 + transitivePeerDependencies: + - supports-color + '@graphql-tools/delegate@10.2.21(graphql@16.10.0)': dependencies: '@graphql-tools/batch-execute': 9.0.17(graphql@16.10.0) @@ -8329,6 +8691,18 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 + '@graphql-tools/delegate@12.0.14(graphql@16.10.0)': + dependencies: + '@graphql-tools/batch-execute': 10.0.8(graphql@16.10.0) + '@graphql-tools/executor': 1.5.2(graphql@16.10.0) + '@graphql-tools/schema': 10.0.32(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + dataloader: 2.2.3 + graphql: 16.10.0 + tslib: 2.8.1 + '@graphql-tools/documents@1.0.1(graphql@16.10.0)': dependencies: graphql: 16.10.0 @@ -8341,6 +8715,12 @@ snapshots: '@graphql-tools/utils': 10.9.1(graphql@16.10.0) graphql: 16.10.0 + '@graphql-tools/executor-common@1.0.6(graphql@16.10.0)': + dependencies: + '@envelop/core': 5.5.1 + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + graphql: 16.10.0 + '@graphql-tools/executor-graphql-ws@2.0.5(graphql@16.10.0)': dependencies: '@graphql-tools/executor-common': 0.0.4(graphql@16.10.0) @@ -8358,7 +8738,23 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/executor-graphql-ws@3.1.5(graphql@16.10.0)': + dependencies: + '@graphql-tools/executor-common': 1.0.6(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@whatwg-node/disposablestack': 0.0.6 + graphql: 16.10.0 + graphql-ws: 6.0.8(graphql@16.10.0)(ws@8.20.0) + isows: 1.0.7(ws@8.20.0) + tslib: 2.8.1 + ws: 8.20.0 + transitivePeerDependencies: + - '@fastify/websocket' + - bufferutil + - crossws + - utf-8-validate + + '@graphql-tools/executor-http@1.3.3(@types/node@25.2.3)(graphql@16.10.0)': dependencies: '@graphql-hive/signal': 1.0.0 '@graphql-tools/executor-common': 0.0.4(graphql@16.10.0) @@ -8368,7 +8764,22 @@ snapshots: '@whatwg-node/fetch': 0.10.8 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.10.0 - meros: 1.3.1(@types/node@22.10.5) + meros: 1.3.1(@types/node@25.2.3) + tslib: 2.8.1 + transitivePeerDependencies: + - '@types/node' + + '@graphql-tools/executor-http@3.2.1(@types/node@22.10.5)(graphql@16.10.0)': + dependencies: + '@graphql-hive/signal': 2.0.0 + '@graphql-tools/executor-common': 1.0.6(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/fetch': 0.10.13 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.10.0 + meros: 1.3.2(@types/node@22.10.5) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' @@ -8385,6 +8796,18 @@ snapshots: - bufferutil - utf-8-validate + '@graphql-tools/executor-legacy-ws@1.1.27(graphql@16.10.0)': + dependencies: + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@types/ws': 8.18.1 + graphql: 16.10.0 + isomorphic-ws: 5.0.0(ws@8.20.0) + tslib: 2.8.1 + ws: 8.20.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + '@graphql-tools/executor@1.4.7(graphql@16.10.0)': dependencies: '@graphql-tools/utils': 10.9.1(graphql@16.10.0) @@ -8395,10 +8818,20 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 - '@graphql-tools/git-loader@8.0.24(graphql@16.10.0)': + '@graphql-tools/executor@1.5.2(graphql@16.10.0)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@repeaterjs/repeater': 3.0.6 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.10.0 + tslib: 2.8.1 + + '@graphql-tools/git-loader@8.0.35(graphql@16.10.0)': + dependencies: + '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) graphql: 16.10.0 is-glob: 4.0.3 micromatch: 4.0.8 @@ -8407,15 +8840,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@8.0.20(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/github-loader@9.1.1(@types/node@22.10.5)(graphql@16.10.0)': dependencies: - '@graphql-tools/executor-http': 1.3.3(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - '@whatwg-node/fetch': 0.10.8 + '@graphql-tools/executor-http': 3.2.1(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.10.0 - sync-fetch: 0.6.0-2 + sync-fetch: 0.6.0 tslib: 2.8.1 transitivePeerDependencies: - '@types/node' @@ -8430,6 +8863,15 @@ snapshots: tslib: 2.8.1 unixify: 1.0.0 + '@graphql-tools/graphql-file-loader@8.1.13(graphql@16.10.0)': + dependencies: + '@graphql-tools/import': 7.1.13(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + globby: 11.1.0 + graphql: 16.10.0 + tslib: 2.8.1 + unixify: 1.0.0 + '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.10.0)': dependencies: '@babel/core': 7.28.0 @@ -8443,6 +8885,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@graphql-tools/graphql-tag-pluck@8.3.30(graphql@16.10.0)': + dependencies: + '@babel/core': 7.29.0 + '@babel/parser': 7.29.2 + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.29.0) + '@babel/traverse': 7.28.0 + '@babel/types': 7.28.0 + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + graphql: 16.10.0 + tslib: 2.8.1 + transitivePeerDependencies: + - supports-color + '@graphql-tools/import@7.0.19(graphql@16.10.0)': dependencies: '@graphql-tools/utils': 10.9.1(graphql@16.10.0) @@ -8450,6 +8905,13 @@ snapshots: resolve-from: 5.0.0 tslib: 2.8.1 + '@graphql-tools/import@7.1.13(graphql@16.10.0)': + dependencies: + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + graphql: 16.10.0 + resolve-from: 5.0.0 + tslib: 2.8.1 + '@graphql-tools/json-file-loader@8.0.18(graphql@16.10.0)': dependencies: '@graphql-tools/utils': 10.9.1(graphql@16.10.0) @@ -8458,6 +8920,14 @@ snapshots: tslib: 2.8.1 unixify: 1.0.0 + '@graphql-tools/json-file-loader@8.0.27(graphql@16.10.0)': + dependencies: + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + globby: 11.1.0 + graphql: 16.10.0 + tslib: 2.8.1 + unixify: 1.0.0 + '@graphql-tools/load-files@7.0.0(graphql@16.10.0)': dependencies: globby: 11.1.0 @@ -8473,6 +8943,14 @@ snapshots: p-limit: 3.1.0 tslib: 2.8.1 + '@graphql-tools/load@8.1.9(graphql@16.10.0)': + dependencies: + '@graphql-tools/schema': 10.0.32(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + graphql: 16.10.0 + p-limit: 3.1.0 + tslib: 2.8.1 + '@graphql-tools/merge@8.4.2(graphql@16.10.0)': dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.10.0) @@ -8491,39 +8969,16 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 - '@graphql-tools/optimize@2.0.0(graphql@16.10.0)': - dependencies: - graphql: 16.10.0 - tslib: 2.8.1 - - '@graphql-tools/prisma-loader@8.0.17(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/merge@9.1.8(graphql@16.10.0)': dependencies: - '@graphql-tools/url-loader': 8.0.31(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - '@types/js-yaml': 4.0.9 - '@whatwg-node/fetch': 0.10.8 - chalk: 4.1.2 - debug: 4.4.3 - dotenv: 16.6.1 - graphql: 16.10.0 - graphql-request: 6.1.0(graphql@16.10.0) - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.6 - jose: 5.10.0 - js-yaml: 4.1.1 - lodash: 4.17.23 - scuid: 1.1.0 - tslib: 2.8.1 - yaml-ast-parser: 0.0.43 - transitivePeerDependencies: - - '@fastify/websocket' - - '@types/node' - - bufferutil - - crossws - - encoding - - supports-color - - uWebSockets.js - - utf-8-validate + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + graphql: 16.10.0 + tslib: 2.8.1 + + '@graphql-tools/optimize@2.0.0(graphql@16.10.0)': + dependencies: + graphql: 16.10.0 + tslib: 2.8.1 '@graphql-tools/relay-operation-optimizer@7.1.3(graphql@16.10.0)': dependencies: @@ -8539,6 +8994,13 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 + '@graphql-tools/schema@10.0.32(graphql@16.10.0)': + dependencies: + '@graphql-tools/merge': 9.1.8(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + graphql: 16.10.0 + tslib: 2.8.1 + '@graphql-tools/schema@9.0.19(graphql@16.10.0)': dependencies: '@graphql-tools/merge': 8.4.2(graphql@16.10.0) @@ -8547,10 +9009,10 @@ snapshots: tslib: 2.8.1 value-or-promise: 1.0.12 - '@graphql-tools/url-loader@8.0.31(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/url-loader@8.0.31(@types/node@25.2.3)(graphql@16.10.0)': dependencies: '@graphql-tools/executor-graphql-ws': 2.0.5(graphql@16.10.0) - '@graphql-tools/executor-http': 1.3.3(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/executor-http': 1.3.3(@types/node@25.2.3)(graphql@16.10.0) '@graphql-tools/executor-legacy-ws': 1.1.17(graphql@16.10.0) '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@graphql-tools/wrap': 10.1.2(graphql@16.10.0) @@ -8570,6 +9032,28 @@ snapshots: - uWebSockets.js - utf-8-validate + '@graphql-tools/url-loader@9.1.1(@types/node@22.10.5)(graphql@16.10.0)': + dependencies: + '@graphql-tools/executor-graphql-ws': 3.1.5(graphql@16.10.0) + '@graphql-tools/executor-http': 3.2.1(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/executor-legacy-ws': 1.1.27(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/wrap': 11.1.14(graphql@16.10.0) + '@types/ws': 8.18.1 + '@whatwg-node/fetch': 0.10.13 + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.10.0 + isomorphic-ws: 5.0.0(ws@8.20.0) + sync-fetch: 0.6.0 + tslib: 2.8.1 + ws: 8.20.0 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - utf-8-validate + '@graphql-tools/utils@10.8.6(graphql@16.10.0)': dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) @@ -8611,6 +9095,15 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 + '@graphql-tools/wrap@11.1.14(graphql@16.10.0)': + dependencies: + '@graphql-tools/delegate': 12.0.14(graphql@16.10.0) + '@graphql-tools/schema': 10.0.32(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@whatwg-node/promise-helpers': 1.3.2 + graphql: 16.10.0 + tslib: 2.8.1 + '@graphql-typed-document-node/core@3.2.0(graphql@16.10.0)': dependencies: graphql: 16.10.0 @@ -8650,6 +9143,131 @@ snapshots: - supports-color - typescript + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@22.10.5)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.10.5) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/confirm@5.1.21(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/core@10.3.2(@types/node@22.10.5)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.10.5) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/editor@4.2.23(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/external-editor': 1.0.3(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/expand@4.0.23(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/external-editor@1.0.3(@types/node@22.10.5)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/number@3.0.23(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/password@4.0.23(@types/node@22.10.5)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/prompts@7.10.1(@types/node@22.10.5)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@22.10.5) + '@inquirer/confirm': 5.1.21(@types/node@22.10.5) + '@inquirer/editor': 4.2.23(@types/node@22.10.5) + '@inquirer/expand': 4.0.23(@types/node@22.10.5) + '@inquirer/input': 4.3.1(@types/node@22.10.5) + '@inquirer/number': 3.0.23(@types/node@22.10.5) + '@inquirer/password': 4.0.23(@types/node@22.10.5) + '@inquirer/rawlist': 4.1.11(@types/node@22.10.5) + '@inquirer/search': 3.2.2(@types/node@22.10.5) + '@inquirer/select': 4.4.2(@types/node@22.10.5) + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/rawlist@4.1.11(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/type': 3.0.10(@types/node@22.10.5) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/search@3.2.2(@types/node@22.10.5)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.10.5) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/select@4.4.2(@types/node@22.10.5)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.10.5) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.10.5) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.10.5 + + '@inquirer/type@3.0.10(@types/node@22.10.5)': + optionalDependencies: + '@types/node': 22.10.5 + '@isaacs/balanced-match@4.0.1': {} '@isaacs/brace-expansion@5.0.1': @@ -8701,6 +9319,11 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@jridgewell/resolve-uri@3.1.2': {} '@jridgewell/source-map@0.3.11': @@ -8952,7 +9575,7 @@ snapshots: '@nivo/core': 0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@nivo/theming': 0.99.0(react@18.2.0) '@react-spring/web': 9.7.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) - lodash: 4.17.23 + lodash: 4.18.1 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -9003,7 +9626,7 @@ snapshots: '@types/d3-shape': 3.1.7 d3-scale: 4.0.2 d3-shape: 3.2.0 - lodash: 4.17.23 + lodash: 4.18.1 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -9020,7 +9643,7 @@ snapshots: d3-color: 3.1.0 d3-scale: 4.0.2 d3-scale-chromatic: 3.1.0 - lodash: 4.17.23 + lodash: 4.18.1 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -9038,7 +9661,7 @@ snapshots: d3-scale-chromatic: 3.1.0 d3-shape: 3.2.0 d3-time-format: 3.0.0 - lodash: 4.17.23 + lodash: 4.18.1 react: 18.2.0 react-virtualized-auto-sizer: 1.0.26(react-dom@18.2.0(react@18.2.0))(react@18.2.0) use-debounce: 10.0.6(react@18.2.0) @@ -9099,7 +9722,7 @@ snapshots: d3-scale: 4.0.2 d3-time: 1.1.0 d3-time-format: 3.0.0 - lodash: 4.17.23 + lodash: 4.18.1 '@nivo/text@0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -9112,7 +9735,7 @@ snapshots: '@nivo/theming@0.99.0(react@18.2.0)': dependencies: - lodash: 4.17.23 + lodash: 4.18.1 react: 18.2.0 '@nivo/tooltip@0.99.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -9823,8 +10446,6 @@ snapshots: expect: 29.7.0 pretty-format: 29.7.0 - '@types/js-yaml@4.0.9': {} - '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} @@ -10345,6 +10966,11 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 + '@whatwg-node/fetch@0.10.13': + dependencies: + '@whatwg-node/node-fetch': 0.8.5 + urlpattern-polyfill: 10.1.0 + '@whatwg-node/fetch@0.10.8': dependencies: '@whatwg-node/node-fetch': 0.7.21 @@ -10357,6 +10983,13 @@ snapshots: '@whatwg-node/promise-helpers': 1.3.2 tslib: 2.8.1 + '@whatwg-node/node-fetch@0.8.5': + dependencies: + '@fastify/busboy': 3.1.1 + '@whatwg-node/disposablestack': 0.0.6 + '@whatwg-node/promise-helpers': 1.3.2 + tslib: 2.8.1 + '@whatwg-node/promise-helpers@1.3.2': dependencies: tslib: 2.8.1 @@ -10408,13 +11041,6 @@ snapshots: transitivePeerDependencies: - supports-color - agent-base@7.1.4: {} - - aggregate-error@3.1.0: - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - ajv-formats@2.1.1(ajv@8.12.0): optionalDependencies: ajv: 8.12.0 @@ -10451,9 +11077,9 @@ snapshots: transitivePeerDependencies: - '@types/dlv' - ansi-escapes@4.3.2: + ansi-escapes@7.3.0: dependencies: - type-fest: 0.21.3 + environment: 1.1.0 ansi-regex@5.0.1: {} @@ -10565,8 +11191,6 @@ snapshots: dependencies: tslib: 2.8.1 - astral-regex@2.0.0: {} - async-function@1.0.0: {} async-retry@1.3.3: @@ -10601,8 +11225,6 @@ snapshots: base64-arraybuffer@1.0.2: {} - base64-js@1.5.1: {} - baseline-browser-mapping@2.9.19: {} better-opn@3.0.2: @@ -10622,12 +11244,6 @@ snapshots: readable-stream: 2.3.8 safe-buffer: 5.2.1 - bl@4.1.0: - dependencies: - buffer: 5.7.1 - inherits: 2.0.4 - readable-stream: 3.6.2 - body-parser@1.20.4: dependencies: bytes: 3.1.2 @@ -10677,11 +11293,6 @@ snapshots: buffer-from@1.1.2: {} - buffer@5.7.1: - dependencies: - base64-js: 1.5.1 - ieee754: 1.2.1 - bytes@3.1.2: {} cac@6.7.14: {} @@ -10787,7 +11398,7 @@ snapshots: character-reference-invalid@2.0.1: {} - chardet@0.7.0: {} + chardet@2.1.1: {} check-error@2.1.1: {} @@ -10813,20 +11424,16 @@ snapshots: clamp@1.0.1: {} - clean-stack@2.2.0: {} - - cli-cursor@3.1.0: + cli-cursor@5.0.0: dependencies: - restore-cursor: 3.1.0 + restore-cursor: 5.1.0 - cli-spinners@2.9.2: {} - - cli-truncate@2.1.0: + cli-truncate@5.2.0: dependencies: - slice-ansi: 3.0.0 - string-width: 4.2.3 + slice-ansi: 8.0.0 + string-width: 8.2.0 - cli-width@3.0.0: {} + cli-width@4.1.0: {} cliui@8.0.1: dependencies: @@ -10834,8 +11441,6 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone@1.0.4: {} - clsx@1.2.1: {} clsx@2.1.1: {} @@ -10960,13 +11565,16 @@ snapshots: optionalDependencies: typescript: 5.7.2 - country-regex@1.1.0: {} - - cross-fetch@3.2.0: + cosmiconfig@9.0.1(typescript@5.7.2): dependencies: - node-fetch: 2.7.0 - transitivePeerDependencies: - - encoding + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + + country-regex@1.1.0: {} cross-inspect@1.0.1: dependencies: @@ -11170,7 +11778,7 @@ snapshots: date-fns@2.29.3: {} - debounce@1.2.1: {} + debounce@2.2.0: {} debug@2.6.9: dependencies: @@ -11202,10 +11810,6 @@ snapshots: deep-is@0.1.4: {} - defaults@1.0.4: - dependencies: - clone: 1.0.4 - define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 @@ -11230,8 +11834,6 @@ snapshots: depd@2.0.0: {} - dependency-graph@0.11.0: {} - dependency-graph@1.0.0: {} dequal@2.0.3: {} @@ -11333,6 +11935,8 @@ snapshots: dependencies: strongly-connected-components: 1.0.1 + emoji-regex@10.6.0: {} + emoji-regex@8.0.0: {} emoji-regex@9.2.2: {} @@ -11352,6 +11956,10 @@ snapshots: entities@6.0.1: {} + env-paths@2.2.1: {} + + environment@1.1.0: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -11533,8 +12141,6 @@ snapshots: escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} escape-string-regexp@4.0.0: {} @@ -11789,6 +12395,8 @@ snapshots: eventemitter3@4.0.7: {} + eventemitter3@5.0.4: {} + events@3.3.0: {} expect-type@1.2.2: {} @@ -11848,12 +12456,6 @@ snapshots: extend@3.0.2: {} - external-editor@3.1.0: - dependencies: - chardet: 0.7.0 - iconv-lite: 0.4.24 - tmp: 0.0.33 - falafel@2.2.5: dependencies: acorn: 7.4.1 @@ -11904,10 +12506,6 @@ snapshots: fflate@0.8.2: {} - figures@3.2.0: - dependencies: - escape-string-regexp: 1.0.5 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -12028,6 +12626,8 @@ snapshots: get-canvas-context@1.0.2: {} + get-east-asian-width@1.5.0: {} + get-intrinsic@1.3.0: dependencies: call-bind-apply-helpers: 1.0.2 @@ -12246,13 +12846,13 @@ snapshots: graphemer@1.4.0: {} - graphql-config@5.1.5(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2): + graphql-config@5.1.5(@types/node@25.2.3)(graphql@16.10.0)(typescript@5.7.2): dependencies: '@graphql-tools/graphql-file-loader': 8.0.20(graphql@16.10.0) '@graphql-tools/json-file-loader': 8.0.18(graphql@16.10.0) '@graphql-tools/load': 8.1.0(graphql@16.10.0) '@graphql-tools/merge': 9.0.17(graphql@16.10.0) - '@graphql-tools/url-loader': 8.0.31(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/url-loader': 8.0.31(@types/node@25.2.3)(graphql@16.10.0) '@graphql-tools/utils': 10.9.1(graphql@16.10.0) cosmiconfig: 8.3.6(typescript@5.7.2) graphql: 16.10.0 @@ -12269,18 +12869,32 @@ snapshots: - uWebSockets.js - utf-8-validate - graphql-depth-limit@1.1.0(graphql@16.10.0): + graphql-config@5.1.6(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2): dependencies: - arrify: 1.0.1 + '@graphql-tools/graphql-file-loader': 8.1.13(graphql@16.10.0) + '@graphql-tools/json-file-loader': 8.0.27(graphql@16.10.0) + '@graphql-tools/load': 8.1.9(graphql@16.10.0) + '@graphql-tools/merge': 9.0.17(graphql@16.10.0) + '@graphql-tools/url-loader': 9.1.1(@types/node@22.10.5)(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + cosmiconfig: 8.3.6(typescript@5.7.2) graphql: 16.10.0 + jiti: 2.4.2 + minimatch: 10.1.2 + string-env-interpolation: 1.0.1 + tslib: 2.8.1 + transitivePeerDependencies: + - '@fastify/websocket' + - '@types/node' + - bufferutil + - crossws + - typescript + - utf-8-validate - graphql-request@6.1.0(graphql@16.10.0): + graphql-depth-limit@1.1.0(graphql@16.10.0): dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) - cross-fetch: 3.2.0 + arrify: 1.0.1 graphql: 16.10.0 - transitivePeerDependencies: - - encoding graphql-scalars@1.24.0(graphql@16.10.0): dependencies: @@ -12302,6 +12916,12 @@ snapshots: optionalDependencies: ws: 8.18.3 + graphql-ws@6.0.8(graphql@16.10.0)(ws@8.20.0): + dependencies: + graphql: 16.10.0 + optionalDependencies: + ws: 8.20.0 + graphql@16.10.0: {} grid-index@1.1.0: {} @@ -12478,13 +13098,6 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-agent@7.0.2: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.25): dependencies: '@types/http-proxy': 1.17.16 @@ -12512,13 +13125,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.6: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3 - transitivePeerDependencies: - - supports-color - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -12527,6 +13133,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + icss-utils@5.1.0(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -12552,32 +13162,12 @@ snapshots: imurmurhash@0.1.4: {} - indent-string@4.0.0: {} - inherits@2.0.4: {} ini@4.1.3: {} inline-style-parser@0.2.7: {} - inquirer@8.2.6: - dependencies: - ansi-escapes: 4.3.2 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-width: 3.0.0 - external-editor: 3.1.0 - figures: 3.2.0 - lodash: 4.17.23 - mute-stream: 0.0.8 - ora: 5.4.1 - run-async: 2.4.1 - rxjs: 7.8.2 - string-width: 4.2.3 - strip-ansi: 6.0.1 - through: 2.3.8 - wrap-ansi: 6.2.0 - internal-slot@1.1.0: dependencies: es-errors: 1.3.0 @@ -12694,6 +13284,10 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.5.0 + is-generator-function@1.1.0: dependencies: call-bound: 1.0.4 @@ -12709,8 +13303,6 @@ snapshots: is-iexplorer@1.0.0: {} - is-interactive@1.0.0: {} - is-lower-case@2.0.2: dependencies: tslib: 2.8.1 @@ -12815,6 +13407,14 @@ snapshots: dependencies: ws: 8.18.3 + isomorphic-ws@5.0.0(ws@8.20.0): + dependencies: + ws: 8.20.0 + + isows@1.0.7(ws@8.20.0): + dependencies: + ws: 8.20.0 + iterator.prototype@1.1.5: dependencies: define-data-property: 1.1.4 @@ -12873,12 +13473,8 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@1.21.7: {} - jiti@2.4.2: {} - jose@5.10.0: {} - js-tokens@4.0.0: {} js-tokens@9.0.1: {} @@ -12989,16 +13585,14 @@ snapshots: lines-and-columns@1.2.4: {} - listr2@4.0.5: + listr2@9.0.5: dependencies: - cli-truncate: 2.1.0 + cli-truncate: 5.2.0 colorette: 2.0.20 - log-update: 4.0.0 - p-map: 4.0.0 + eventemitter3: 5.0.4 + log-update: 6.1.0 rfdc: 1.4.1 - rxjs: 7.8.2 - through: 2.3.8 - wrap-ansi: 7.0.0 + wrap-ansi: 9.0.2 loader-runner@4.3.1: {} @@ -13026,19 +13620,20 @@ snapshots: lodash.sortby@4.7.0: {} - lodash@4.17.23: {} + lodash@4.18.1: {} log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-update@4.0.0: + log-update@6.1.0: dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 loglevel@1.9.2: {} @@ -13319,7 +13914,11 @@ snapshots: merge2@1.4.1: {} - meros@1.3.1(@types/node@22.10.5): + meros@1.3.1(@types/node@25.2.3): + optionalDependencies: + '@types/node': 25.2.3 + + meros@1.3.2(@types/node@22.10.5): optionalDependencies: '@types/node': 22.10.5 @@ -13529,7 +14128,7 @@ snapshots: mime@1.6.0: {} - mimic-fn@2.1.0: {} + mimic-function@5.0.1: {} min-indent@1.0.1: {} @@ -13580,7 +14179,7 @@ snapshots: murmurhash-js@1.0.0: {} - mute-stream@0.0.8: {} + mute-stream@2.0.0: {} nanoid@3.3.11: {} @@ -13721,9 +14320,9 @@ snapshots: dependencies: wrappy: 1.0.2 - onetime@5.1.2: + onetime@7.0.0: dependencies: - mimic-fn: 2.1.0 + mimic-function: 5.0.1 open@8.4.2: dependencies: @@ -13747,20 +14346,6 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: - dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 - cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 - - os-tmpdir@1.0.2: {} - own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -13775,10 +14360,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@4.0.0: - dependencies: - aggregate-error: 3.1.0 - package-json-from-dist@1.0.1: {} pako@2.1.0: {} @@ -14113,7 +14694,7 @@ snapshots: dom-helpers: 5.2.1 globalize: 0.1.1 invariant: 2.2.4 - lodash: 4.17.23 + lodash: 4.18.1 lodash-es: 4.17.23 luxon: 2.5.2 memoize-one: 6.0.0 @@ -14302,12 +14883,6 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: - dependencies: - inherits: 2.0.4 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -14549,10 +15124,10 @@ snapshots: response-iterator@0.2.25: {} - restore-cursor@3.1.0: + restore-cursor@5.1.0: dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 + onetime: 7.0.0 + signal-exit: 4.1.0 retry@0.13.1: {} @@ -14600,8 +15175,6 @@ snapshots: rrweb-cssom@0.6.0: {} - run-async@2.4.1: {} - run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -14662,8 +15235,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.12.0) ajv-keywords: 5.1.0(ajv@8.12.0) - scuid@1.1.0: {} - seedrandom@3.0.5: {} semver@6.3.1: {} @@ -14775,8 +15346,6 @@ snapshots: siginfo@2.0.0: {} - signal-exit@3.0.7: {} - signal-exit@4.1.0: {} signum@1.0.0: {} @@ -14789,17 +15358,15 @@ snapshots: slash@3.0.0: {} - slice-ansi@3.0.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 - slice-ansi@4.0.0: + slice-ansi@8.0.0: dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 snake-case@3.0.4: dependencies: @@ -14891,6 +15458,17 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.2 + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.5.0 + strip-ansi: 7.1.2 + + string-width@8.2.0: + dependencies: + get-east-asian-width: 1.5.0 + strip-ansi: 7.1.2 + string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 @@ -15034,6 +15612,12 @@ snapshots: symbol-tree@3.2.4: {} + sync-fetch@0.6.0: + dependencies: + node-fetch: 3.3.2 + timeout-signal: 2.0.0 + whatwg-mimetype: 4.0.0 + sync-fetch@0.6.0-2: dependencies: node-fetch: 3.3.2 @@ -15080,8 +15664,6 @@ snapshots: readable-stream: 2.3.8 xtend: 4.0.2 - through@2.3.8: {} - timeout-signal@2.0.0: {} tiny-invariant@1.3.3: {} @@ -15116,10 +15698,6 @@ snapshots: dependencies: tslib: 2.8.1 - tmp@0.0.33: - dependencies: - os-tmpdir: 1.0.2 - to-buffer@1.2.1: dependencies: isarray: 2.0.5 @@ -15198,8 +15776,6 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tslib@2.6.3: {} - tslib@2.8.1: {} tss-react@4.5.2(@emotion/react@11.14.0(@types/react@18.2.45)(react@18.2.0))(react@18.2.0): @@ -15223,8 +15799,6 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@0.21.3: {} - type-is@1.6.18: dependencies: media-typer: 0.3.0 @@ -15623,10 +16197,6 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - weak-map@1.0.8: {} web-namespaces@2.0.1: {} @@ -15773,10 +16343,18 @@ snapshots: string-width: 5.1.2 strip-ansi: 7.1.2 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 + wrappy@1.0.2: {} ws@8.18.3: {} + ws@8.20.0: {} + xml-name-validator@4.0.0: {} xmlchars@2.2.0: {} @@ -15789,8 +16367,6 @@ snapshots: yallist@3.1.1: {} - yaml-ast-parser@0.0.43: {} - yaml@1.10.2: {} yaml@2.8.0: {} @@ -15809,6 +16385,8 @@ snapshots: yocto-queue@0.1.0: {} + yoctocolors-cjs@2.1.3: {} + zen-observable-ts@1.2.5: dependencies: zen-observable: 0.8.15 diff --git a/ngui/server/graphql/__generated__/types/auth.ts b/ngui/server/graphql/__generated__/types/auth.ts index bdf8bdc1d..e5f7f3d97 100644 --- a/ngui/server/graphql/__generated__/types/auth.ts +++ b/ngui/server/graphql/__generated__/types/auth.ts @@ -90,9 +90,12 @@ export type ResolverTypeWrapper = Promise | T; export type ResolverWithResolve = { resolve: ResolverFn; }; -export type Resolver = - | ResolverFn - | ResolverWithResolve; +export type Resolver< + TResult, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ResolverFn | ResolverWithResolve; export type ResolverFn = ( parent: TParent, @@ -129,17 +132,23 @@ export type SubscriptionObject | SubscriptionResolverObject; -export type SubscriptionResolver = +export type SubscriptionResolver< + TResult, + TKey extends string, + TParent = Record, + TContext = Record, + TArgs = Record, +> = | ((...args: any[]) => SubscriptionObject) | SubscriptionObject; -export type TypeResolveFn = ( +export type TypeResolveFn, TContext = Record> = ( parent: TParent, context: TContext, info: GraphQLResolveInfo ) => Maybe | Promise>; -export type IsTypeOfResolverFn = ( +export type IsTypeOfResolverFn, TContext = Record> = ( obj: T, context: TContext, info: GraphQLResolveInfo @@ -147,7 +156,12 @@ export type IsTypeOfResolverFn = ( export type NextResolverFn = () => Promise; -export type DirectiveResolverFn = ( +export type DirectiveResolverFn< + TResult = Record, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ( next: NextResolverFn, parent: TParent, args: TArgs, @@ -159,9 +173,9 @@ export type DirectiveResolverFn; ID: ResolverTypeWrapper; - Mutation: ResolverTypeWrapper<{}>; + Mutation: ResolverTypeWrapper>; OrganizationAllowedActionsRequestParams: OrganizationAllowedActionsRequestParams; - Query: ResolverTypeWrapper<{}>; + Query: ResolverTypeWrapper>; String: ResolverTypeWrapper; StringArrayMap: ResolverTypeWrapper; Token: ResolverTypeWrapper; @@ -173,9 +187,9 @@ export type ResolversTypes = { export type ResolversParentTypes = { Boolean: Scalars["Boolean"]["output"]; ID: Scalars["ID"]["output"]; - Mutation: {}; + Mutation: Record; OrganizationAllowedActionsRequestParams: OrganizationAllowedActionsRequestParams; - Query: {}; + Query: Record; String: Scalars["String"]["output"]; StringArrayMap: Scalars["StringArrayMap"]["output"]; Token: Token; @@ -233,7 +247,6 @@ export type TokenResolvers< token?: Resolver, ParentType, ContextType>; user_email?: Resolver; user_id?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type UserResolvers< @@ -244,7 +257,6 @@ export type UserResolvers< user_email?: Resolver; user_id?: Resolver; verified?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type Resolvers = { diff --git a/ngui/server/graphql/__generated__/types/keeper.ts b/ngui/server/graphql/__generated__/types/keeper.ts index 07ff09155..d9e7d5b1e 100644 --- a/ngui/server/graphql/__generated__/types/keeper.ts +++ b/ngui/server/graphql/__generated__/types/keeper.ts @@ -68,9 +68,12 @@ export type ResolverTypeWrapper = Promise | T; export type ResolverWithResolve = { resolve: ResolverFn; }; -export type Resolver = - | ResolverFn - | ResolverWithResolve; +export type Resolver< + TResult, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ResolverFn | ResolverWithResolve; export type ResolverFn = ( parent: TParent, @@ -107,17 +110,23 @@ export type SubscriptionObject | SubscriptionResolverObject; -export type SubscriptionResolver = +export type SubscriptionResolver< + TResult, + TKey extends string, + TParent = Record, + TContext = Record, + TArgs = Record, +> = | ((...args: any[]) => SubscriptionObject) | SubscriptionObject; -export type TypeResolveFn = ( +export type TypeResolveFn, TContext = Record> = ( parent: TParent, context: TContext, info: GraphQLResolveInfo ) => Maybe | Promise>; -export type IsTypeOfResolverFn = ( +export type IsTypeOfResolverFn, TContext = Record> = ( obj: T, context: TContext, info: GraphQLResolveInfo @@ -125,7 +134,12 @@ export type IsTypeOfResolverFn = ( export type NextResolverFn = () => Promise; -export type DirectiveResolverFn = ( +export type DirectiveResolverFn< + TResult = Record, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ( next: NextResolverFn, parent: TParent, args: TArgs, @@ -141,8 +155,8 @@ export type ResolversTypes = { EventsRequestParams: EventsRequestParams; ID: ResolverTypeWrapper; Int: ResolverTypeWrapper; - Mutation: ResolverTypeWrapper<{}>; - Query: ResolverTypeWrapper<{}>; + Mutation: ResolverTypeWrapper>; + Query: ResolverTypeWrapper>; String: ResolverTypeWrapper; }; @@ -153,8 +167,8 @@ export type ResolversParentTypes = { EventsRequestParams: EventsRequestParams; ID: Scalars["ID"]["output"]; Int: Scalars["Int"]["output"]; - Mutation: {}; - Query: {}; + Mutation: Record; + Query: Record; String: Scalars["String"]["output"]; }; @@ -175,7 +189,6 @@ export type EventResolvers< organization_id?: Resolver, ParentType, ContextType>; read?: Resolver, ParentType, ContextType>; time?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type MutationResolvers< diff --git a/ngui/server/graphql/__generated__/types/restapi.ts b/ngui/server/graphql/__generated__/types/restapi.ts index 56bc2e1ee..c06ca29a2 100644 --- a/ngui/server/graphql/__generated__/types/restapi.ts +++ b/ngui/server/graphql/__generated__/types/restapi.ts @@ -1018,9 +1018,12 @@ export type ResolverTypeWrapper = Promise | T; export type ResolverWithResolve = { resolve: ResolverFn; }; -export type Resolver = - | ResolverFn - | ResolverWithResolve; +export type Resolver< + TResult, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ResolverFn | ResolverWithResolve; export type ResolverFn = ( parent: TParent, @@ -1057,17 +1060,23 @@ export type SubscriptionObject | SubscriptionResolverObject; -export type SubscriptionResolver = +export type SubscriptionResolver< + TResult, + TKey extends string, + TParent = Record, + TContext = Record, + TArgs = Record, +> = | ((...args: any[]) => SubscriptionObject) | SubscriptionObject; -export type TypeResolveFn = ( +export type TypeResolveFn, TContext = Record> = ( parent: TParent, context: TContext, info: GraphQLResolveInfo ) => Maybe | Promise>; -export type IsTypeOfResolverFn = ( +export type IsTypeOfResolverFn, TContext = Record> = ( obj: T, context: TContext, info: GraphQLResolveInfo @@ -1075,7 +1084,12 @@ export type IsTypeOfResolverFn = ( export type NextResolverFn = () => Promise; -export type DirectiveResolverFn = ( +export type DirectiveResolverFn< + TResult = Record, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ( next: NextResolverFn, parent: TParent, args: TArgs, @@ -1162,7 +1176,7 @@ export type ResolversTypes = { K8sConfigInput: K8sConfigInput; K8sDataSource: ResolverTypeWrapper; MetaBreakdown: ResolverTypeWrapper; - Mutation: ResolverTypeWrapper<{}>; + Mutation: ResolverTypeWrapper>; NebiusConfig: ResolverTypeWrapper; NebiusConfigInput: NebiusConfigInput; NebiusDataSource: ResolverTypeWrapper; @@ -1175,7 +1189,7 @@ export type ResolversTypes = { OrganizationSummaryEntity: OrganizationSummaryEntity; OrganizationSummaryParams: OrganizationSummaryParams; QuantityUnit: QuantityUnit; - Query: ResolverTypeWrapper<{}>; + Query: ResolverTypeWrapper>; ResourceCountBreakdown: ResolverTypeWrapper; ScheduleGeminiDataPreparation: ResolverTypeWrapper; String: ResolverTypeWrapper; @@ -1248,7 +1262,7 @@ export type ResolversParentTypes = { K8sConfigInput: K8sConfigInput; K8sDataSource: K8sDataSource; MetaBreakdown: MetaBreakdown; - Mutation: {}; + Mutation: Record; NebiusConfig: NebiusConfig; NebiusConfigInput: NebiusConfigInput; NebiusDataSource: NebiusDataSource; @@ -1258,7 +1272,7 @@ export type ResolversParentTypes = { OrganizationSummary: OrganizationSummary; OrganizationSummaryEntities: OrganizationSummaryEntities; OrganizationSummaryParams: OrganizationSummaryParams; - Query: {}; + Query: Record; ResourceCountBreakdown: ResourceCountBreakdown; ScheduleGeminiDataPreparation: ScheduleGeminiDataPreparation; String: Scalars["String"]["output"]; @@ -1274,7 +1288,6 @@ export type AlibabaConfigResolvers< ParentType extends ResolversParentTypes["AlibabaConfig"] = ResolversParentTypes["AlibabaConfig"], > = { access_key_id?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type AlibabaDataSourceResolvers< @@ -1313,7 +1326,6 @@ export type AwsConfigResolvers< region_name?: Resolver, ParentType, ContextType>; report_name?: Resolver, ParentType, ContextType>; use_edp_discount?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type AwsDataSourceResolvers< @@ -1348,7 +1360,6 @@ export type AzureSubscriptionConfigResolvers< export_name?: Resolver, ParentType, ContextType>; subscription_id?: Resolver, ParentType, ContextType>; tenant?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type AzureSubscriptionDataSourceResolvers< @@ -1378,7 +1389,6 @@ export type AzureTenantConfigResolvers< > = { client_id?: Resolver, ParentType, ContextType>; tenant?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type AzureTenantDataSourceResolvers< @@ -1415,7 +1425,6 @@ export type BillingSubscriptionResolvers< status?: Resolver; stripe_status?: Resolver, ParentType, ContextType>; trial_used?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type BillingSubscriptionPlanResolvers< @@ -1435,7 +1444,6 @@ export type BillingSubscriptionPlanResolvers< price_id?: Resolver, ParentType, ContextType>; qty_unit?: Resolver, ParentType, ContextType>; trial_days?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type DataSourceDetailsResolvers< @@ -1447,7 +1455,6 @@ export type DataSourceDetailsResolvers< forecast?: Resolver; last_month_cost?: Resolver, ParentType, ContextType>; resources?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type DataSourceDiscoveryInfosResolvers< @@ -1464,7 +1471,6 @@ export type DataSourceDiscoveryInfosResolvers< last_error_at?: Resolver; observe_time?: Resolver; resource_type?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type DataSourceInterfaceResolvers< @@ -1485,19 +1491,6 @@ export type DataSourceInterfaceResolvers< ParentType, ContextType >; - account_id?: Resolver, ParentType, ContextType>; - created_at?: Resolver, ParentType, ContextType>; - details?: Resolver, ParentType, ContextType>; - id?: Resolver, ParentType, ContextType>; - last_getting_metric_attempt_at?: Resolver, ParentType, ContextType>; - last_getting_metric_attempt_error?: Resolver, ParentType, ContextType>; - last_getting_metrics_at?: Resolver, ParentType, ContextType>; - last_import_at?: Resolver, ParentType, ContextType>; - last_import_attempt_at?: Resolver, ParentType, ContextType>; - last_import_attempt_error?: Resolver, ParentType, ContextType>; - name?: Resolver, ParentType, ContextType>; - parent_id?: Resolver, ParentType, ContextType>; - type?: Resolver, ParentType, ContextType>; }; export type DatabricksConfigResolvers< @@ -1506,7 +1499,6 @@ export type DatabricksConfigResolvers< > = { account_id?: Resolver, ParentType, ContextType>; client_id?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type DatabricksDataSourceResolvers< @@ -1537,7 +1529,6 @@ export type EmployeeResolvers< id?: Resolver; jira_connected?: Resolver; slack_connected?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type EmployeeEmailResolvers< @@ -1549,7 +1540,6 @@ export type EmployeeEmailResolvers< employee_id?: Resolver; enabled?: Resolver; id?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type EnvironmentDataSourceResolvers< @@ -1583,7 +1573,6 @@ export type ExpensesDailyBreakdownResolvers< previous_total?: Resolver; start_date?: Resolver; total?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type GcpBillingDataConfigResolvers< @@ -1593,7 +1582,6 @@ export type GcpBillingDataConfigResolvers< dataset_name?: Resolver; project_id?: Resolver, ParentType, ContextType>; table_name?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type GcpConfigResolvers< @@ -1602,7 +1590,6 @@ export type GcpConfigResolvers< > = { billing_data?: Resolver, ParentType, ContextType>; pricing_data?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type GcpDataSourceResolvers< @@ -1633,7 +1620,6 @@ export type GcpPricingDataConfigResolvers< dataset_name?: Resolver; project_id?: Resolver, ParentType, ContextType>; table_name?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type GcpTenantBillingDataConfigResolvers< @@ -1643,7 +1629,6 @@ export type GcpTenantBillingDataConfigResolvers< dataset_name?: Resolver; project_id?: Resolver, ParentType, ContextType>; table_name?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type GcpTenantConfigResolvers< @@ -1652,7 +1637,6 @@ export type GcpTenantConfigResolvers< > = { billing_data?: Resolver, ParentType, ContextType>; pricing_data?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type GcpTenantDataSourceResolvers< @@ -1683,7 +1667,6 @@ export type GcpTenantPricingDataConfigResolvers< dataset_name?: Resolver; project_id?: Resolver, ParentType, ContextType>; table_name?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type GeminiDataPreparationResolvers< @@ -1698,7 +1681,6 @@ export type GeminiDataPreparationResolvers< status?: Resolver; url?: Resolver, ParentType, ContextType>; valid_until?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type InvitationResolvers< @@ -1710,7 +1692,6 @@ export type InvitationResolvers< organization?: Resolver; owner_email?: Resolver; owner_name?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type InvitationAssignmentResolvers< @@ -1722,7 +1703,6 @@ export type InvitationAssignmentResolvers< scope_id?: Resolver; scope_name?: Resolver; scope_type?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export interface JsonObjectScalarConfig extends GraphQLScalarTypeConfig { @@ -1735,7 +1715,6 @@ export type K8CostModelConfigResolvers< > = { cpu_hourly_cost?: Resolver; memory_hourly_cost?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type K8sConfigResolvers< @@ -1745,7 +1724,6 @@ export type K8sConfigResolvers< cost_model?: Resolver, ParentType, ContextType>; custom_price?: Resolver, ParentType, ContextType>; user?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type K8sDataSourceResolvers< @@ -1777,7 +1755,6 @@ export type MetaBreakdownResolvers< end_date?: Resolver; start_date?: Resolver; totals?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type MutationResolvers< @@ -1881,7 +1858,6 @@ export type NebiusConfigResolvers< cloud_name?: Resolver, ParentType, ContextType>; key_id?: Resolver, ParentType, ContextType>; service_account_id?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type NebiusDataSourceResolvers< @@ -1915,7 +1891,6 @@ export type OrganizationResolvers< is_demo?: Resolver; name?: Resolver; pool_id?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type OrganizationConstraintResolvers< @@ -1932,7 +1907,6 @@ export type OrganizationConstraintResolvers< name?: Resolver; organization_id?: Resolver; type?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type OrganizationLimitHitResolvers< @@ -1947,7 +1921,6 @@ export type OrganizationLimitHitResolvers< organization_id?: Resolver; run_result?: Resolver; value?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type OrganizationSummaryResolvers< @@ -1963,7 +1936,6 @@ export type OrganizationSummaryResolvers< id?: Resolver; is_demo?: Resolver; name?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type OrganizationSummaryEntitiesResolvers< @@ -1973,7 +1945,6 @@ export type OrganizationSummaryEntitiesResolvers< cloud_accounts?: Resolver; employees?: Resolver; month_expenses?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type QueryResolvers< @@ -2117,7 +2088,6 @@ export type ResourceCountBreakdownResolvers< first_breakdown?: Resolver; last_breakdown?: Resolver; start_date?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type ScheduleGeminiDataPreparationResolvers< @@ -2126,7 +2096,6 @@ export type ScheduleGeminiDataPreparationResolvers< ResolversParentTypes["ScheduleGeminiDataPreparation"] = ResolversParentTypes["ScheduleGeminiDataPreparation"], > = { id?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type StripeSessionResolvers< @@ -2135,7 +2104,6 @@ export type StripeSessionResolvers< > = { result?: Resolver; url?: Resolver, ParentType, ContextType>; - __isTypeOf?: IsTypeOfResolverFn; }; export type Resolvers = { diff --git a/ngui/server/graphql/__generated__/types/slacker.ts b/ngui/server/graphql/__generated__/types/slacker.ts index c6a7b643e..ffaaf5075 100644 --- a/ngui/server/graphql/__generated__/types/slacker.ts +++ b/ngui/server/graphql/__generated__/types/slacker.ts @@ -43,9 +43,12 @@ export type ResolverTypeWrapper = Promise | T; export type ResolverWithResolve = { resolve: ResolverFn; }; -export type Resolver = - | ResolverFn - | ResolverWithResolve; +export type Resolver< + TResult, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ResolverFn | ResolverWithResolve; export type ResolverFn = ( parent: TParent, @@ -82,17 +85,23 @@ export type SubscriptionObject | SubscriptionResolverObject; -export type SubscriptionResolver = +export type SubscriptionResolver< + TResult, + TKey extends string, + TParent = Record, + TContext = Record, + TArgs = Record, +> = | ((...args: any[]) => SubscriptionObject) | SubscriptionObject; -export type TypeResolveFn = ( +export type TypeResolveFn, TContext = Record> = ( parent: TParent, context: TContext, info: GraphQLResolveInfo ) => Maybe | Promise>; -export type IsTypeOfResolverFn = ( +export type IsTypeOfResolverFn, TContext = Record> = ( obj: T, context: TContext, info: GraphQLResolveInfo @@ -100,7 +109,12 @@ export type IsTypeOfResolverFn = ( export type NextResolverFn = () => Promise; -export type DirectiveResolverFn = ( +export type DirectiveResolverFn< + TResult = Record, + TParent = Record, + TContext = Record, + TArgs = Record, +> = ( next: NextResolverFn, parent: TParent, args: TArgs, @@ -111,8 +125,8 @@ export type DirectiveResolverFn; - Mutation: ResolverTypeWrapper<{}>; - Query: ResolverTypeWrapper<{}>; + Mutation: ResolverTypeWrapper>; + Query: ResolverTypeWrapper>; SlackUser: ResolverTypeWrapper; String: ResolverTypeWrapper; }; @@ -120,8 +134,8 @@ export type ResolversTypes = { /** Mapping between all available schema types and the resolvers parents */ export type ResolversParentTypes = { Boolean: Scalars["Boolean"]["output"]; - Mutation: {}; - Query: {}; + Mutation: Record; + Query: Record; SlackUser: SlackUser; String: Scalars["String"]["output"]; }; @@ -147,7 +161,6 @@ export type SlackUserResolvers< ParentType extends ResolversParentTypes["SlackUser"] = ResolversParentTypes["SlackUser"], > = { slack_user_id?: Resolver; - __isTypeOf?: IsTypeOfResolverFn; }; export type Resolvers = { From d6c63f9b08e44798ad8bc9b0a12b5e4358bccf03 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Fri, 17 Apr 2026 10:59:45 +0400 Subject: [PATCH 06/30] OSN-1417. [Dependabot] Picomatch has a ReDoS vulnerability via extglob quantifiers ## Description - _typescript-eslint_ updated to v8.58.2 - _picomatch_ updated to v2.3.2 || v4.0.4 --- jira_ui/server/package-lock.json | 16 +- jira_ui/ui/package-lock.json | 70 +++---- ngui/package.json | 2 +- ngui/pnpm-lock.yaml | 325 ++++++++++++++++--------------- 4 files changed, 206 insertions(+), 207 deletions(-) diff --git a/jira_ui/server/package-lock.json b/jira_ui/server/package-lock.json index c8d1f36f3..13f4b0ae0 100644 --- a/jira_ui/server/package-lock.json +++ b/jira_ui/server/package-lock.json @@ -889,10 +889,11 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1564,8 +1565,7 @@ "express-rate-limit": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-6.10.0.tgz", - "integrity": "sha512-CtGn2IyklQnIWpA4pcRaovXkNR8psDQ9Fa0y5u7Yhz5TL74dNsm7oXpfm1HPKUYiNe5w0TPEyNbIrvNVU/xUIg==", - "requires": {} + "integrity": "sha512-CtGn2IyklQnIWpA4pcRaovXkNR8psDQ9Fa0y5u7Yhz5TL74dNsm7oXpfm1HPKUYiNe5w0TPEyNbIrvNVU/xUIg==" }, "fill-range": { "version": "7.1.1", @@ -1884,9 +1884,9 @@ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true }, "proxy-addr": { diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 279fc02fc..477f6f61f 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -6019,6 +6019,18 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -6357,11 +6369,12 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -7407,17 +7420,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7958,17 +7960,6 @@ } } }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -12085,6 +12076,13 @@ "requires": { "braces": "^3.0.3", "picomatch": "^2.3.1" + }, + "dependencies": { + "picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==" + } } }, "mime": { @@ -12317,9 +12315,9 @@ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==" }, "possible-typed-array-names": { "version": "1.0.0", @@ -13042,13 +13040,6 @@ "requires": { "fdir": "^6.4.4", "picomatch": "^4.0.2" - }, - "dependencies": { - "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==" - } } }, "to-regex-range": { @@ -13351,13 +13342,6 @@ "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" - }, - "dependencies": { - "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==" - } } }, "vite-tsconfig-paths": { diff --git a/ngui/package.json b/ngui/package.json index 3c7227d87..fc08dc889 100644 --- a/ngui/package.json +++ b/ngui/package.json @@ -33,6 +33,6 @@ "globals": "15.13.0", "prettier": "3.3.3", "typescript": "5.7.2", - "typescript-eslint": "8.41.0" + "typescript-eslint": "8.58.2" } } diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index a1fb4b80a..86f5dce60 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -61,8 +61,8 @@ importers: specifier: 5.7.2 version: 5.7.2 typescript-eslint: - specifier: 8.41.0 - version: 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + specifier: 8.58.2 + version: 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) server: dependencies: @@ -2804,14 +2804,6 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/eslint-plugin@8.41.0': - resolution: {integrity: sha512-8fz6oa6wEKZrhXWro/S3n2eRJqlRcIa6SlDh59FXJ5Wp5XRZ8B9ixpJDcjadHq47hMx0u+HW6SNa6LjJQ6NLtw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.41.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.54.0': resolution: {integrity: sha512-hAAP5io/7csFStuOmR782YmTthKBJ9ND3WVL60hcOjvtGFb+HJxH4O5huAcmcZ9v9G8P+JETiZ/G1B8MALnWZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -2820,12 +2812,13 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.41.0': - resolution: {integrity: sha512-gTtSdWX9xiMPA/7MV9STjJOOYtWwIJIYxkQxnSV1U3xcE+mnJSH3f6zI0RYP+ew66WSlZ5ed+h0VCxsvdC1jJg==} + '@typescript-eslint/eslint-plugin@8.58.2': + resolution: {integrity: sha512-aC2qc5thQahutKjP+cl8cgN9DWe3ZUqVko30CMSZHnFEHyhOYoZSzkGtAI2mcwZ38xeImDucI4dnqsHiOYuuCw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser': ^8.58.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/parser@8.54.0': resolution: {integrity: sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==} @@ -2834,11 +2827,12 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.41.0': - resolution: {integrity: sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ==} + '@typescript-eslint/parser@8.58.2': + resolution: {integrity: sha512-/Zb/xaIDfxeJnvishjGdcR4jmr7S+bda8PKNhRGdljDM+elXhlvN0FyPSsMnLmJUrVG9aPO6dof80wjMawsASg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/project-service@8.54.0': resolution: {integrity: sha512-YPf+rvJ1s7MyiWM4uTRhE4DvBXrEV+d8oC3P9Y2eT7S+HBS0clybdMIPnhiATi9vZOYDc7OQ1L/i6ga6NFYK/g==} @@ -2846,19 +2840,19 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.41.0': - resolution: {integrity: sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ==} + '@typescript-eslint/project-service@8.58.2': + resolution: {integrity: sha512-Cq6UfpZZk15+r87BkIh5rDpi38W4b+Sjnb8wQCPPDDweS/LRCFjCyViEbzHk5Ck3f2QDfgmlxqSa7S7clDtlfg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@8.54.0': resolution: {integrity: sha512-27rYVQku26j/PbHYcVfRPonmOlVI6gihHtXFbTdB5sb6qA0wdAQAbyXFVarQ5t4HRojIz64IV90YtsjQSSGlQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.41.0': - resolution: {integrity: sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw==} + '@typescript-eslint/scope-manager@8.58.2': + resolution: {integrity: sha512-SgmyvDPexWETQek+qzZnrG6844IaO02UVyOLhI4wpo82dpZJY9+6YZCKAMFzXb7qhx37mFK1QcPQ18tud+vo6Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/tsconfig-utils@8.54.0': resolution: {integrity: sha512-dRgOyT2hPk/JwxNMZDsIXDgyl9axdJI3ogZ2XWhBPsnZUv+hPesa5iuhdYt2gzwA9t8RE5ytOJ6xB0moV0Ujvw==} @@ -2866,12 +2860,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.41.0': - resolution: {integrity: sha512-63qt1h91vg3KsjVVonFJWjgSK7pZHSQFKH6uwqxAH9bBrsyRhO6ONoKyXxyVBzG1lJnFAJcKAcxLS54N1ee1OQ==} + '@typescript-eslint/tsconfig-utils@8.58.2': + resolution: {integrity: sha512-3SR+RukipDvkkKp/d0jP0dyzuls3DbGmwDpVEc5wqk5f38KFThakqAAO0XMirWAE+kT00oTauTbzMFGPoAzB0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/type-utils@8.54.0': resolution: {integrity: sha512-hiLguxJWHjjwL6xMBwD903ciAwd7DmK30Y9Axs/etOkftC3ZNN9K44IuRD/EB08amu+Zw6W37x9RecLkOo3pMA==} @@ -2880,19 +2873,20 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/types@8.41.0': - resolution: {integrity: sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag==} + '@typescript-eslint/type-utils@8.58.2': + resolution: {integrity: sha512-Z7EloNR/B389FvabdGeTo2XMs4W9TjtPiO9DAsmT0yom0bwlPyRjkJ1uCdW1DvrrrYP50AJZ9Xc3sByZA9+dcg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/types@8.54.0': resolution: {integrity: sha512-PDUI9R1BVjqu7AUDsRBbKMtwmjWcn4J3le+5LpcFgWULN3LvHC5rkc9gCVxbrsrGmO1jfPybN5s6h4Jy+OnkAA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.41.0': - resolution: {integrity: sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ==} + '@typescript-eslint/types@8.58.2': + resolution: {integrity: sha512-9TukXyATBQf/Jq9AMQXfvurk+G5R2MwfqQGDR2GzGz28HvY/lXNKGhkY+6IOubwcquikWk5cjlgPvD2uAA7htQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/typescript-estree@8.54.0': resolution: {integrity: sha512-BUwcskRaPvTk6fzVWgDPdUndLjB87KYDrN5EYGetnktoeAvPtO4ONHlAZDnj5VFnUANg0Sjm7j4usBlnoVMHwA==} @@ -2900,12 +2894,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.41.0': - resolution: {integrity: sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A==} + '@typescript-eslint/typescript-estree@8.58.2': + resolution: {integrity: sha512-ELGuoofuhhoCvNbQjFFiobFcGgcDCEm0ThWdmO4Z0UzLqPXS3KFvnEZ+SHewwOYHjM09tkzOWXNTv9u6Gqtyuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@8.54.0': resolution: {integrity: sha512-9Cnda8GS57AQakvRyG0PTejJNlA2xhvyNtEVIMlDWOOeEyBkYWhGPnfrIAnqxLMTSTo6q8g12XVjjev5l1NvMA==} @@ -2914,14 +2907,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.41.0': - resolution: {integrity: sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg==} + '@typescript-eslint/utils@8.58.2': + resolution: {integrity: sha512-QZfjHNEzPY8+l0+fIXMvuQ2sJlplB4zgDZvA+NmvZsZv3EQwOcc1DuIU1VJUTWZ/RKouBMhDyNaBMx4sWvrzRA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/visitor-keys@8.54.0': resolution: {integrity: sha512-VFlhGSl4opC0bprJiItPQ1RfUhGDIBokcPwaFH4yiBCaNPeld/9VeXbiPO1cLyorQi1G1vL+ecBk1x8o1axORA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.58.2': + resolution: {integrity: sha512-f1WO2Lx8a9t8DARmcWAUPJbu0G20bJlj8L4z72K00TMeJAoyLr/tHhI/pzYBLrR4dXWkcxO1cWYZEOX8DKHTqA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@uiw/react-textarea-code-editor@2.1.1': resolution: {integrity: sha512-vFUb58Dj8SCAcAL264ik6rFMzHmOAI4TG8BInu9avCdJ1ugRhrwD+RA7FKQN2xAoBokF9JJacyTqx+EUXIOg2g==} peerDependencies: @@ -3344,6 +3344,10 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + base64-arraybuffer@1.0.2: resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} engines: {node: '>= 0.6.0'} @@ -3382,6 +3386,10 @@ packages: brace-expansion@2.0.2: resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} + braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} @@ -4295,6 +4303,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.34.0: resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -4705,9 +4717,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - graphemer@1.4.0: - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - graphql-config@5.1.5: resolution: {integrity: sha512-mG2LL1HccpU8qg5ajLROgdsBzx/o2M6kgI3uAmoaXiSH9PCUbtIyLomLqUtCFaAeG2YCFsl0M5cfQ9rKmDoMVA==} engines: {node: '>= 16.0.0'} @@ -5713,6 +5722,10 @@ packages: resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} engines: {node: 20 || >=22} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -6037,16 +6050,12 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.2: - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} - engines: {node: '>=12'} - - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} plotly.js-gl2d-dist-min@2.35.2: @@ -7071,14 +7080,14 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.4.0: + resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -7165,12 +7174,12 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.41.0: - resolution: {integrity: sha512-n66rzs5OBXW3SFSnZHr2T685q1i4ODm2nulFJhMZBotaTavsS8TrI3d7bDlRSs9yWo7HmyWrN9qDu14Qv7Y0Dw==} + typescript-eslint@8.58.2: + resolution: {integrity: sha512-V8iSng9mRbdZjl54VJ9NKr6ZB+dW0J3TzRXRGcSbLIej9jV86ZRtlYeTKDR/QLxXykocJ5icNzbsl2+5TzIvcQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' typescript@5.7.2: resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} @@ -7886,7 +7895,7 @@ snapshots: '@babel/traverse': 7.28.0 '@babel/types': 7.28.0 convert-source-map: 2.0.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -8043,7 +8052,7 @@ snapshots: '@babel/parser': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.0 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -9979,7 +9988,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.2 + picomatch: 4.0.4 optionalDependencies: rollup: 4.59.0 @@ -10582,23 +10591,6 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': - dependencies: - '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/type-utils': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.41.0 - eslint: 9.34.0(jiti@2.4.2) - graphemer: 1.4.0 - ignore: 7.0.5 - natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.7.2) - typescript: 5.7.2 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.2 @@ -10615,14 +10607,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.7.2) - '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1(supports-color@5.5.0) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/type-utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.58.2 eslint: 9.34.0(jiti@2.4.2) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10639,11 +10635,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.41.0(typescript@5.7.2)': + '@typescript-eslint/parser@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.7.2) - '@typescript-eslint/types': 8.41.0 - debug: 4.4.1(supports-color@5.5.0) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3 + eslint: 9.34.0(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10657,35 +10656,32 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.41.0': + '@typescript-eslint/project-service@8.58.2(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/visitor-keys': 8.41.0 + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.7.2) + '@typescript-eslint/types': 8.58.2 + debug: 4.4.3 + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color '@typescript-eslint/scope-manager@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/visitor-keys': 8.54.0 - '@typescript-eslint/tsconfig-utils@8.41.0(typescript@5.7.2)': + '@typescript-eslint/scope-manager@8.58.2': dependencies: - typescript: 5.7.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 '@typescript-eslint/tsconfig-utils@8.54.0(typescript@5.7.2)': dependencies: typescript: 5.7.2 - '@typescript-eslint/type-utils@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/tsconfig-utils@8.58.2(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - debug: 4.4.1(supports-color@5.5.0) - eslint: 9.34.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.7.2) typescript: 5.7.2 - transitivePeerDependencies: - - supports-color '@typescript-eslint/type-utils@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: @@ -10699,26 +10695,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.41.0': {} - - '@typescript-eslint/types@8.54.0': {} - - '@typescript-eslint/typescript-estree@8.41.0(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@typescript-eslint/project-service': 8.41.0(typescript@5.7.2) - '@typescript-eslint/tsconfig-utils': 8.41.0(typescript@5.7.2) - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/visitor-keys': 8.41.0 - debug: 4.4.1(supports-color@5.5.0) - fast-glob: 3.3.3 - is-glob: 4.0.3 - minimatch: 9.0.5 - semver: 7.7.4 - ts-api-utils: 2.1.0(typescript@5.7.2) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + debug: 4.4.3 + eslint: 9.34.0(jiti@2.4.2) + ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color + '@typescript-eslint/types@8.54.0': {} + + '@typescript-eslint/types@8.58.2': {} + '@typescript-eslint/typescript-estree@8.54.0(typescript@5.7.2)': dependencies: '@typescript-eslint/project-service': 8.54.0(typescript@5.7.2) @@ -10734,13 +10726,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/typescript-estree@8.58.2(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.41.0 - '@typescript-eslint/types': 8.41.0 - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.7.2) - eslint: 9.34.0(jiti@2.4.2) + '@typescript-eslint/project-service': 8.58.2(typescript@5.7.2) + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.7.2) + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/visitor-keys': 8.58.2 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10756,16 +10752,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.41.0': + '@typescript-eslint/utils@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.41.0 - eslint-visitor-keys: 4.2.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.58.2 + '@typescript-eslint/types': 8.58.2 + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) + eslint: 9.34.0(jiti@2.4.2) + typescript: 5.7.2 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.54.0': dependencies: '@typescript-eslint/types': 8.54.0 eslint-visitor-keys: 4.2.1 + '@typescript-eslint/visitor-keys@8.58.2': + dependencies: + '@typescript-eslint/types': 8.58.2 + eslint-visitor-keys: 5.0.1 + '@uiw/react-textarea-code-editor@2.1.1(@babel/runtime@7.29.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.29.2 @@ -11037,7 +11044,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -11096,7 +11103,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 argparse@2.0.1: {} @@ -11223,6 +11230,8 @@ snapshots: balanced-match@1.0.2: {} + balanced-match@4.0.4: {} + base64-arraybuffer@1.0.2: {} baseline-browser-mapping@2.9.19: {} @@ -11270,6 +11279,10 @@ snapshots: dependencies: balanced-match: 1.0.2 + brace-expansion@5.0.5: + dependencies: + balanced-match: 4.0.4 + braces@3.0.3: dependencies: fill-range: 7.1.1 @@ -12307,6 +12320,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} + eslint@9.34.0(jiti@2.4.2): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.4.2)) @@ -12491,13 +12506,13 @@ snapshots: dependencies: reusify: 1.1.0 - fdir@6.4.6(picomatch@4.0.2): + fdir@6.4.6(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.2 + picomatch: 4.0.4 - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fetch-blob@3.2.0: dependencies: @@ -12844,8 +12859,6 @@ snapshots: graceful-fs@4.2.11: {} - graphemer@1.4.0: {} - graphql-config@5.1.5(@types/node@25.2.3)(graphql@16.10.0)(typescript@5.7.2): dependencies: '@graphql-tools/graphql-file-loader': 8.0.20(graphql@16.10.0) @@ -13465,7 +13478,7 @@ snapshots: chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 - picomatch: 2.3.1 + picomatch: 2.3.2 jest-worker@27.5.1: dependencies: @@ -14118,7 +14131,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.52.0: {} @@ -14136,6 +14149,10 @@ snapshots: dependencies: '@isaacs/brace-expansion': 5.0.1 + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.5 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.12 @@ -14467,11 +14484,9 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} + picomatch@2.3.2: {} - picomatch@4.0.2: {} - - picomatch@4.0.3: {} + picomatch@4.0.4: {} plotly.js-gl2d-dist-min@2.35.2: {} @@ -14885,7 +14900,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 readdirp@4.1.2: {} @@ -15676,13 +15691,13 @@ snapshots: tinyglobby@0.2.14: dependencies: - fdir: 6.4.6(picomatch@4.0.2) - picomatch: 4.0.2 + fdir: 6.4.6(picomatch@4.0.4) + picomatch: 4.0.4 tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@1.1.1: {} @@ -15743,11 +15758,11 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.7.2): + ts-api-utils@2.4.0(typescript@5.7.2): dependencies: typescript: 5.7.2 - ts-api-utils@2.4.0(typescript@5.7.2): + ts-api-utils@2.5.0(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -15846,12 +15861,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2): + typescript-eslint@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.41.0(@typescript-eslint/parser@8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/parser': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/typescript-estree': 8.41.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.41.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) eslint: 9.34.0(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: @@ -16121,8 +16136,8 @@ snapshots: vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: esbuild: 0.25.6 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.6 rollup: 4.59.0 tinyglobby: 0.2.15 @@ -16150,7 +16165,7 @@ snapshots: expect-type: 1.2.2 magic-string: 0.30.17 pathe: 2.0.3 - picomatch: 4.0.2 + picomatch: 4.0.4 std-env: 3.9.0 tinybench: 2.9.0 tinyexec: 0.3.2 From 6af3731b5b38e1a98272d6439bea0adc6886c627 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Fri, 17 Apr 2026 11:05:07 +0400 Subject: [PATCH 07/30] OSN-1419. [Depenabot] path-to-regexp vulnerable to Regular Expression Denial of Service via multiple route parameters ## Description _path-to-regexp_ updated to v0.1.13 --- jira_ui/server/package-lock.json | 13 +++++++------ jira_ui/ui/package-lock.json | 13 +++++++------ ngui/pnpm-lock.yaml | 8 ++++---- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/jira_ui/server/package-lock.json b/jira_ui/server/package-lock.json index 13f4b0ae0..c9b248927 100644 --- a/jira_ui/server/package-lock.json +++ b/jira_ui/server/package-lock.json @@ -884,9 +884,10 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "license": "MIT" }, "node_modules/picomatch": { "version": "2.3.2", @@ -1879,9 +1880,9 @@ "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==" }, "picomatch": { "version": "2.3.2", diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 477f6f61f..55a3ada22 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -6351,9 +6351,10 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==", + "license": "MIT" }, "node_modules/path-type": { "version": "4.0.0", @@ -12300,9 +12301,9 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-to-regexp": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", - "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==" }, "path-type": { "version": "4.0.0", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 86f5dce60..f288eb142 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -6023,8 +6023,8 @@ packages: resolution: {integrity: sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==} engines: {node: 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -12450,7 +12450,7 @@ snapshots: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.12 + path-to-regexp: 0.1.13 proxy-addr: 2.0.7 qs: 6.14.1 range-parser: 1.2.1 @@ -14465,7 +14465,7 @@ snapshots: lru-cache: 11.2.5 minipass: 7.1.2 - path-to-regexp@0.1.12: {} + path-to-regexp@0.1.13: {} path-type@4.0.0: {} From 0b7e232351a5d94ece959a6bdb616eace6b05b1a Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Fri, 17 Apr 2026 11:10:36 +0400 Subject: [PATCH 08/30] OSN-1422. [Dependabot] xpress-rate-limit: IPv4-mapped IPv6 addresses bypass per-client rate limiting on servers with dual-stack network ## Description _express-rate-limit_ updated to v8.1.1 --- ngui/pnpm-lock.yaml | 18 +++++++++--------- ngui/server/package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index f288eb142..00516a13e 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -94,8 +94,8 @@ importers: specifier: 4.22.1 version: 4.22.1 express-rate-limit: - specifier: 8.1.0 - version: 8.1.0(express@4.22.1) + specifier: 8.1.1 + version: 8.1.1(express@4.22.1) graphql: specifier: 16.10.0 version: 16.10.0 @@ -4384,8 +4384,8 @@ packages: resolution: {integrity: sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - express-rate-limit@8.1.0: - resolution: {integrity: sha512-4nLnATuKupnmwqiJc27b4dCFmB/T60ExgmtDD7waf4LdrbJ8CPZzZRHYErDYNhoz+ql8fUdYwM/opf90PoPAQA==} + express-rate-limit@8.1.1: + resolution: {integrity: sha512-rvFqXBfcsC4rBEKqGfSKXY6CQZTTJ9yoAnIIXGeW3SYZ4QIfg6MLEXoj6gcax7DGYfEnCSZ4vc9xiwMy8myRWw==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -5009,8 +5009,8 @@ packages: iobuffer@5.4.0: resolution: {integrity: sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==} - ip-address@10.0.1: - resolution: {integrity: sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA==} + ip-address@10.1.0: + resolution: {integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==} engines: {node: '>= 12'} ipaddr.js@1.9.1: @@ -12424,10 +12424,10 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - express-rate-limit@8.1.0(express@4.22.1): + express-rate-limit@8.1.1(express@4.22.1): dependencies: express: 4.22.1 - ip-address: 10.0.1 + ip-address: 10.1.0 express@4.22.1: dependencies: @@ -13206,7 +13206,7 @@ snapshots: iobuffer@5.4.0: {} - ip-address@10.0.1: {} + ip-address@10.1.0: {} ipaddr.js@1.9.1: {} diff --git a/ngui/server/package.json b/ngui/server/package.json index 51ddc9b7b..936b6ff38 100644 --- a/ngui/server/package.json +++ b/ngui/server/package.json @@ -40,7 +40,7 @@ "body-parser": "1.20.4", "cors": "2.8.5", "express": "4.22.1", - "express-rate-limit": "8.1.0", + "express-rate-limit": "8.1.1", "graphql": "16.10.0", "graphql-scalars": "1.24.0", "graphql-tag": "2.12.6", From 296d4eb18961157d89a3f2654c1a460d40d90a03 Mon Sep 17 00:00:00 2001 From: ek-hystax <33006768+ek-hystax@users.noreply.github.com> Date: Fri, 17 Apr 2026 11:23:58 +0400 Subject: [PATCH 09/30] OSN-1413. bump lodash-es to 4.18.1 --- ngui/pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 00516a13e..22f1fee73 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -5410,8 +5410,8 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.1: + resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} @@ -13619,7 +13619,7 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.23: {} + lodash-es@4.18.1: {} lodash.camelcase@4.3.0: {} @@ -14710,7 +14710,7 @@ snapshots: globalize: 0.1.1 invariant: 2.2.4 lodash: 4.18.1 - lodash-es: 4.17.23 + lodash-es: 4.18.1 luxon: 2.5.2 memoize-one: 6.0.0 moment: 2.30.1 From abf1345594f9d47fd81610e75a4632f40d34acfe Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Fri, 17 Apr 2026 14:42:58 +0400 Subject: [PATCH 10/30] OSN-1412. [Dependabot] minimatch has a ReDoS via repeated wildcards with non-matching literal in pattern ## Description _minimatch_ updated --- jira_ui/server/package-lock.json | 13 +++-- jira_ui/ui/package-lock.json | 13 +++-- ngui/pnpm-lock.yaml | 98 +++++++++++--------------------- 3 files changed, 47 insertions(+), 77 deletions(-) diff --git a/jira_ui/server/package-lock.json b/jira_ui/server/package-lock.json index c9b248927..55623f129 100644 --- a/jira_ui/server/package-lock.json +++ b/jira_ui/server/package-lock.json @@ -753,10 +753,11 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -1793,9 +1794,9 @@ } }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 55a3ada22..1b902164e 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -6062,10 +6062,11 @@ } }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -12105,9 +12106,9 @@ } }, "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 22f1fee73..6cad84a78 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -1647,14 +1647,6 @@ packages: '@types/node': optional: true - '@isaacs/balanced-match@4.0.1': - resolution: {integrity: sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==} - engines: {node: 20 || >=22} - - '@isaacs/brace-expansion@5.0.1': - resolution: {integrity: sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==} - engines: {node: 20 || >=22} - '@isaacs/cliui@8.0.2': resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -3380,11 +3372,11 @@ packages: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} - brace-expansion@1.1.12: - resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} + brace-expansion@1.1.14: + resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} @@ -5718,19 +5710,15 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.1.2: - resolution: {integrity: sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==} - engines: {node: 20 || >=22} - minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} - minimatch@3.1.2: - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@9.0.5: - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} minimist@1.2.8: @@ -7080,12 +7068,6 @@ packages: trough@2.2.0: resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - ts-api-utils@2.5.0: resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} @@ -8337,8 +8319,8 @@ snapshots: '@eslint/config-array@0.21.0': dependencies: '@eslint/object-schema': 2.1.6 - debug: 4.4.1(supports-color@5.5.0) - minimatch: 3.1.2 + debug: 4.4.3 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color @@ -8351,13 +8333,13 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.1 js-yaml: 4.1.1 - minimatch: 3.1.2 + minimatch: 3.1.5 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color @@ -9277,12 +9259,6 @@ snapshots: optionalDependencies: '@types/node': 22.10.5 - '@isaacs/balanced-match@4.0.1': {} - - '@isaacs/brace-expansion@5.0.1': - dependencies: - '@isaacs/balanced-match': 4.0.1 - '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 @@ -10602,7 +10578,7 @@ snapshots: eslint: 9.34.0(jiti@2.4.2) ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@5.7.2) + ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10649,8 +10625,8 @@ snapshots: '@typescript-eslint/project-service@8.54.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.54.0(typescript@5.7.2) - '@typescript-eslint/types': 8.54.0 + '@typescript-eslint/tsconfig-utils': 8.58.2(typescript@5.7.2) + '@typescript-eslint/types': 8.58.2 debug: 4.4.3 typescript: 5.7.2 transitivePeerDependencies: @@ -10690,7 +10666,7 @@ snapshots: '@typescript-eslint/utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) debug: 4.4.3 eslint: 9.34.0(jiti@2.4.2) - ts-api-utils: 2.4.0(typescript@5.7.2) + ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10718,10 +10694,10 @@ snapshots: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 - minimatch: 9.0.5 + minimatch: 9.0.9 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@5.7.2) + ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -11270,12 +11246,12 @@ snapshots: transitivePeerDependencies: - supports-color - brace-expansion@1.1.12: + brace-expansion@1.1.14: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.2: + brace-expansion@2.1.0: dependencies: balanced-match: 1.0.2 @@ -12234,7 +12210,7 @@ snapshots: hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 - minimatch: 3.1.2 + minimatch: 3.1.5 object.fromentries: 2.0.8 object.groupby: 1.0.3 object.values: 1.2.1 @@ -12254,7 +12230,7 @@ snapshots: eslint-plugin-es: 3.0.1(eslint@9.34.0(jiti@2.4.2)) eslint-utils: 2.1.0 ignore: 5.3.2 - minimatch: 3.1.2 + minimatch: 3.1.5 resolve: 1.22.11 semver: 6.3.1 @@ -12284,7 +12260,7 @@ snapshots: estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 + minimatch: 3.1.5 object.entries: 1.1.9 object.fromentries: 2.0.8 object.values: 1.2.1 @@ -12356,7 +12332,7 @@ snapshots: is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 lodash.merge: 4.6.2 - minimatch: 3.1.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -12725,14 +12701,14 @@ snapshots: dependencies: foreground-child: 3.3.1 jackspeak: 3.4.3 - minimatch: 9.0.5 + minimatch: 9.0.9 minipass: 7.1.2 package-json-from-dist: 1.0.1 path-scurry: 1.11.1 glob@13.0.1: dependencies: - minimatch: 10.1.2 + minimatch: 10.2.5 minipass: 7.1.2 path-scurry: 2.0.1 @@ -12870,7 +12846,7 @@ snapshots: cosmiconfig: 8.3.6(typescript@5.7.2) graphql: 16.10.0 jiti: 2.4.2 - minimatch: 9.0.5 + minimatch: 9.0.9 string-env-interpolation: 1.0.1 tslib: 2.8.1 transitivePeerDependencies: @@ -12893,7 +12869,7 @@ snapshots: cosmiconfig: 8.3.6(typescript@5.7.2) graphql: 16.10.0 jiti: 2.4.2 - minimatch: 10.1.2 + minimatch: 10.2.5 string-env-interpolation: 1.0.1 tslib: 2.8.1 transitivePeerDependencies: @@ -14145,21 +14121,17 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.1.2: - dependencies: - '@isaacs/brace-expansion': 5.0.1 - minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 - minimatch@3.1.2: + minimatch@3.1.5: dependencies: - brace-expansion: 1.1.12 + brace-expansion: 1.1.14 - minimatch@9.0.5: + minimatch@9.0.9: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 2.1.0 minimist@1.2.8: {} @@ -14257,7 +14229,7 @@ snapshots: chokidar: 3.6.0 debug: 4.4.1(supports-color@5.5.0) ignore-by-default: 1.0.1 - minimatch: 3.1.2 + minimatch: 3.1.5 pstree.remy: 1.1.8 semver: 7.7.2 simple-update-notifier: 2.0.0 @@ -15758,10 +15730,6 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.4.0(typescript@5.7.2): - dependencies: - typescript: 5.7.2 - ts-api-utils@2.5.0(typescript@5.7.2): dependencies: typescript: 5.7.2 From eefe1c0f35985cd537c15d530b289433281cf04b Mon Sep 17 00:00:00 2001 From: ek-hystax <33006768+ek-hystax@users.noreply.github.com> Date: Mon, 20 Apr 2026 13:04:30 +0400 Subject: [PATCH 11/30] OSN-1423: Update label workflows to use pull_request_target - Use pull_request_target event - Update the manage-ui-label workflow by replacing the paths-filter action with a custom script that detects changes in ngui paths via the Pulls API - Replaced custom add/remove labels with inline scripts usin github api --- .../actions/add_pull_request_label/action.yml | 20 -------- .../remove_pull_request_label/action.yml | 24 --------- .github/workflows/manage-bug-label.yml | 15 +++--- .github/workflows/manage-ui-label.yml | 51 ++++++++++++++----- 4 files changed, 47 insertions(+), 63 deletions(-) delete mode 100644 .github/actions/add_pull_request_label/action.yml delete mode 100644 .github/actions/remove_pull_request_label/action.yml diff --git a/.github/actions/add_pull_request_label/action.yml b/.github/actions/add_pull_request_label/action.yml deleted file mode 100644 index 064b395a6..000000000 --- a/.github/actions/add_pull_request_label/action.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Add pull request label -description: Add a label to the pull request that triggered the workflow -inputs: - label: - description: Name of the label to add - type: string - required: true -runs: - using: composite - steps: - - name: Add label - uses: actions/github-script@v8 - with: - script: | - await github.rest.issues.addLabels({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - labels: ['${{ inputs.label }}'], - }); diff --git a/.github/actions/remove_pull_request_label/action.yml b/.github/actions/remove_pull_request_label/action.yml deleted file mode 100644 index ebe0dcfc6..000000000 --- a/.github/actions/remove_pull_request_label/action.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Remove pull request label -description: Remove a label the pull request that triggered the workflow (ignores 404 if the label is not present) -inputs: - label: - description: Name of the label to remove - type: string - required: true -runs: - using: composite - steps: - - name: Remove label - uses: actions/github-script@v8 - with: - script: | - try { - await github.rest.issues.removeLabel({ - owner: context.repo.owner, - repo: context.repo.repo, - issue_number: context.issue.number, - name: '${{ inputs.label }}', - }); - } catch (e) { - if (e.status !== 404) throw e; - } diff --git a/.github/workflows/manage-bug-label.yml b/.github/workflows/manage-bug-label.yml index f7e669dfd..7596bb2bc 100644 --- a/.github/workflows/manage-bug-label.yml +++ b/.github/workflows/manage-bug-label.yml @@ -1,7 +1,7 @@ name: Manage PR "bug" label on: - pull_request: + pull_request_target: types: [opened] permissions: @@ -13,9 +13,6 @@ jobs: manage-bug-label: runs-on: ubuntu-latest steps: - - name: Check out repo - uses: actions/checkout@v6 - - name: Check if branch contains "bug" id: check-branch uses: actions/github-script@v8 @@ -27,6 +24,12 @@ jobs: - name: Add "bug" label if branch contains "bug" if: steps.check-branch.outputs.contains_bug == 'true' - uses: ./.github/actions/add_pull_request_label + uses: actions/github-script@v8 with: - label: bug + script: | + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + labels: ['bug'], + }); diff --git a/.github/workflows/manage-ui-label.yml b/.github/workflows/manage-ui-label.yml index 9fb6de872..10a9d8775 100644 --- a/.github/workflows/manage-ui-label.yml +++ b/.github/workflows/manage-ui-label.yml @@ -1,7 +1,7 @@ name: Manage PR "ui" label on: - pull_request: + pull_request_target: types: [opened, synchronize] permissions: @@ -13,25 +13,50 @@ jobs: manage-ui-label: runs-on: ubuntu-latest steps: - - name: Check out repo - uses: actions/checkout@v6 - - - name: Filter changes - uses: dorny/paths-filter@v3 + - name: Detect ngui paths via Pulls API id: filter + uses: actions/github-script@v8 with: - filters: | - ngui: - - 'ngui/**' + script: | + const files = await github.paginate(github.rest.pulls.listFiles, { + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: context.payload.pull_request.number, + per_page: 100, + }); + + const inNgui = (name) => typeof name === 'string' && name.startsWith('ngui/'); + + const ngui = files.some( + (file) => inNgui(file.filename) || inNgui(file.previous_filename), + ); + + core.setOutput('ngui', ngui ? 'true' : 'false'); - name: Add "ui" label if ngui files changed if: steps.filter.outputs.ngui == 'true' - uses: ./.github/actions/add_pull_request_label + uses: actions/github-script@v8 with: - label: ui + script: | + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + labels: ['ui'], + }); - name: Remove "ui" label if no ngui files changed if: steps.filter.outputs.ngui != 'true' - uses: ./.github/actions/remove_pull_request_label + uses: actions/github-script@v8 with: - label: ui + script: | + try { + await github.rest.issues.removeLabel({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: context.issue.number, + name: 'ui', + }); + } catch (e) { + if (e.status !== 404) throw e; + } From b644759a8124da3856af0d998f8183cd8c0e8327 Mon Sep 17 00:00:00 2001 From: ek-hystax <33006768+ek-hystax@users.noreply.github.com> Date: Mon, 20 Apr 2026 13:14:55 +0400 Subject: [PATCH 12/30] OSN-1415. Update pnpm * Update pnpm to 10.33.0 * Update workspace security settings to include minimumReleaseAge, trustPolicy, and blockExoticSubdeps --- ngui/Dockerfile | 2 +- ngui/README.md | 2 +- ngui/package.json | 2 +- ngui/pnpm-workspace.yaml | 10 ++++++++++ ngui/server/package.json | 2 +- ngui/ui/package.json | 2 +- 6 files changed, 15 insertions(+), 5 deletions(-) diff --git a/ngui/Dockerfile b/ngui/Dockerfile index 41c2ff3aa..a608b9abe 100644 --- a/ngui/Dockerfile +++ b/ngui/Dockerfile @@ -3,7 +3,7 @@ ARG IMAGE=node:22.16.0-alpine3.21 FROM $IMAGE AS base -RUN npm install -g pnpm@10.12.1 +RUN npm install -g pnpm@10.33.0 ENV NODE_ENV production diff --git a/ngui/README.md b/ngui/README.md index b0ebaf33e..1d9585548 100644 --- a/ngui/README.md +++ b/ngui/README.md @@ -122,7 +122,7 @@ pnpm start Required versions (defined in root package.json): - Node.js: 22.16.0 -- pnpm: 10.12.1 +- pnpm: 10.33.0 ### Environment Variables diff --git a/ngui/package.json b/ngui/package.json index fc08dc889..541951933 100644 --- a/ngui/package.json +++ b/ngui/package.json @@ -4,7 +4,7 @@ "private": true, "engines": { "node": "=22.16.0", - "pnpm": "=10.12.1" + "pnpm": "=10.33.0" }, "scripts": { "check": "pnpm -r check", diff --git a/ngui/pnpm-workspace.yaml b/ngui/pnpm-workspace.yaml index 946bc8d41..661208ead 100644 --- a/ngui/pnpm-workspace.yaml +++ b/ngui/pnpm-workspace.yaml @@ -6,3 +6,13 @@ injectWorkspacePackages: true syncInjectedDepsAfterScripts: - build + +# 3 days in minutes +# https://pnpm.io/settings#minimumreleaseage +minimumReleaseAge: 4320 + +# https://pnpm.io/settings#trustpolicy +trustPolicy: no-downgrade + +# https://pnpm.io/settings#blockexoticsubdeps +blockExoticSubdeps: true diff --git a/ngui/server/package.json b/ngui/server/package.json index 936b6ff38..0ab0d089a 100644 --- a/ngui/server/package.json +++ b/ngui/server/package.json @@ -6,7 +6,7 @@ "type": "module", "engines": { "node": "=22.16.0", - "pnpm": "=10.12.1" + "pnpm": "=10.33.0" }, "scripts": { "lint": "eslint . --ext .ts --max-warnings=0", diff --git a/ngui/ui/package.json b/ngui/ui/package.json index c02baf14c..f5f751124 100644 --- a/ngui/ui/package.json +++ b/ngui/ui/package.json @@ -4,7 +4,7 @@ "private": true, "engines": { "node": "=22.16.0", - "pnpm": "=10.12.1" + "pnpm": "=10.33.0" }, "dependencies": { "@analytics/google-analytics": "1.0.5", From 9aed4e0667f826bd69a976a2f8e0dffa46d9a86e Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Mon, 20 Apr 2026 16:20:13 +0400 Subject: [PATCH 13/30] OSN-1424. [Dependabot] mdast-util-to-hast has unsanitized class attribute ## Description _mdast-util-to-hast_ updated to v13.2.1 --- jira_ui/ui/package-lock.json | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 1b902164e..94bf5e35b 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -5394,9 +5394,10 @@ } }, "node_modules/mdast-util-to-hast": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", - "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", + "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -5405,7 +5406,8 @@ "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", @@ -11717,9 +11719,9 @@ } }, "mdast-util-to-hast": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", - "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz", + "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==", "requires": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", @@ -11728,7 +11730,8 @@ "micromark-util-sanitize-uri": "^2.0.0", "trim-lines": "^3.0.0", "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" } }, "mdast-util-to-markdown": { From 1327376423cd3fd98ead222af70bc8af8da8d479 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Mon, 20 Apr 2026 16:25:39 +0400 Subject: [PATCH 14/30] OSN-1425. [Dependabot] follow-redirects leaks Custom Authentication Headers to Cross-Domain Redirect Targets ## Description _follow-redirects_ updated to v1.16.0 --- jira_ui/ui/package-lock.json | 13 +++++++------ ngui/pnpm-lock.yaml | 10 +++++----- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 94bf5e35b..bf4a0369c 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -4214,15 +4214,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -10927,9 +10928,9 @@ } }, "follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" }, "for-each": { "version": "0.3.3", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 6cad84a78..a3447382b 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -4481,8 +4481,8 @@ packages: flatten-vertex-data@1.0.2: resolution: {integrity: sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -11190,7 +11190,7 @@ snapshots: axios@1.15.0: dependencies: - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 form-data: 4.0.5 proxy-from-env: 2.1.0 transitivePeerDependencies: @@ -12539,7 +12539,7 @@ snapshots: dependencies: dtype: 2.0.0 - follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} font-atlas@2.1.0: dependencies: @@ -13102,7 +13102,7 @@ snapshots: http-proxy@1.18.1: dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 requires-port: 1.0.0 transitivePeerDependencies: - debug From 3c35a30ca51cc8eee67ade24b81f0d2905b6ba53 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Mon, 20 Apr 2026 16:31:03 +0400 Subject: [PATCH 15/30] OSN-1426. [Dependabot] DOMPurify is vulnerable to mutation-XSS via Re-Contextualization ## Description _dompurify_ updated to v3.4.0 --- ngui/pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index a3447382b..65e71f2d2 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -3974,8 +3974,8 @@ packages: engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead - dompurify@3.3.1: - resolution: {integrity: sha512-qkdCKzLNtrgPFP1Vo+98FRzJnBRGe4ffyCea9IwHB1fyxPOeNTHpLKYGd4Uk9xvNoH0ZoOjwZxNptyMwqrId1Q==} + dompurify@3.4.0: + resolution: {integrity: sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==} dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -11864,7 +11864,7 @@ snapshots: dependencies: webidl-conversions: 7.0.0 - dompurify@3.3.1: + dompurify@3.4.0: optionalDependencies: '@types/trusted-types': 2.0.7 optional: true @@ -13543,7 +13543,7 @@ snapshots: optionalDependencies: canvg: 3.0.11 core-js: 3.27.2 - dompurify: 3.3.1 + dompurify: 3.4.0 html2canvas: 1.4.1 jsx-ast-utils@3.3.5: From a82b059831dfabde445ef513feb40e2059df35d0 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Mon, 20 Apr 2026 16:33:00 +0400 Subject: [PATCH 16/30] OSN-1427. [Dependabot] brace-expansion: Zero-step sequence causes process hang and memory exhaustion ## Description _brace-expansion_ update to v1.1.13 --- jira_ui/server/package-lock.json | 12 ++++++------ jira_ui/ui/package-lock.json | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/jira_ui/server/package-lock.json b/jira_ui/server/package-lock.json index 55623f129..d3c7b39d6 100644 --- a/jira_ui/server/package-lock.json +++ b/jira_ui/server/package-lock.json @@ -123,9 +123,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -1362,9 +1362,9 @@ } }, "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "requires": { "balanced-match": "^1.0.0", diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index bf4a0369c..c5c6c07e6 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -2814,9 +2814,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "license": "MIT", "dependencies": { @@ -9916,9 +9916,9 @@ } }, "brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", + "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", "dev": true, "requires": { "balanced-match": "^1.0.0", From 3f9f28defbb9fd1fa7ba14d1a619299bb4b359d3 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Mon, 20 Apr 2026 16:38:47 +0400 Subject: [PATCH 17/30] OSN-1428. [Dependabot] Mafintosh's protocol-buffers-schema is vulnerable to prototype pollution ## Description _protocol-buffers-schema_ updated to v3.6.1 --- ngui/pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 65e71f2d2..fdb29dbd5 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -6154,8 +6154,8 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - protocol-buffers-schema@3.6.0: - resolution: {integrity: sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==} + protocol-buffers-schema@3.6.1: + resolution: {integrity: sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==} proxy-addr@2.0.7: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} @@ -14625,7 +14625,7 @@ snapshots: property-information@7.1.0: {} - protocol-buffers-schema@3.6.0: {} + protocol-buffers-schema@3.6.1: {} proxy-addr@2.0.7: dependencies: @@ -15087,7 +15087,7 @@ snapshots: resolve-protobuf-schema@2.1.0: dependencies: - protocol-buffers-schema: 3.6.0 + protocol-buffers-schema: 3.6.1 resolve@0.6.3: {} From e8a317c8f2947726d537c4e48d1ffde3a9d59186 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Mon, 20 Apr 2026 16:44:08 +0400 Subject: [PATCH 18/30] OSN-1430. [Dependabot] ajv has ReDoS when using `$data` option ## Description _ajv_ updated --- jira_ui/ui/package-lock.json | 12 +- ngui/package.json | 2 +- ngui/pnpm-lock.yaml | 313 +++++++++++++++++------------------ ngui/ui/package.json | 2 +- 4 files changed, 159 insertions(+), 170 deletions(-) diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index c5c6c07e6..0b6e15541 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -2521,9 +2521,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -9703,9 +9703,9 @@ "dev": true }, "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "requires": { "fast-deep-equal": "^3.1.1", diff --git a/ngui/package.json b/ngui/package.json index 541951933..ebaba5dc6 100644 --- a/ngui/package.json +++ b/ngui/package.json @@ -29,7 +29,7 @@ "@types/react-dom": "18.2.18", "@types/react-syntax-highlighter": "15.5.13", "concurrently": "9.2.1", - "eslint": "9.34.0", + "eslint": "9.39.4", "globals": "15.13.0", "prettier": "3.3.3", "typescript": "5.7.2", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index fdb29dbd5..8454dfeda 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -49,8 +49,8 @@ importers: specifier: 9.2.1 version: 9.2.1 eslint: - specifier: 9.34.0 - version: 9.34.0(jiti@2.4.2) + specifier: 9.39.4 + version: 9.39.4(jiti@2.4.2) globals: specifier: 15.13.0 version: 15.13.0 @@ -62,7 +62,7 @@ importers: version: 5.7.2 typescript-eslint: specifier: 8.58.2 - version: 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + version: 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) server: dependencies: @@ -114,13 +114,13 @@ importers: version: 9.39.2 '@graphql-eslint/eslint-plugin': specifier: 4.4.0 - version: 4.4.0(@types/node@25.2.3)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2) + version: 4.4.0(@types/node@25.2.3)(eslint@9.39.4(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2) '@typescript-eslint/eslint-plugin': specifier: 8.54.0 - version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/parser': specifier: 8.54.0 - version: 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + version: 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) dotenv: specifier: 17.2.0 version: 17.2.0 @@ -129,13 +129,13 @@ importers: version: 12.0.2 eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) + version: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.4.2)) eslint-plugin-node: specifier: 11.1.0 - version: 11.1.0(eslint@9.34.0(jiti@2.4.2)) + version: 11.1.0(eslint@9.39.4(jiti@2.4.2)) eslint-plugin-prettier: specifier: 5.5.5 - version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3) + version: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.39.4(jiti@2.4.2)))(eslint@9.39.4(jiti@2.4.2))(prettier@3.3.3) nodemon: specifier: 3.1.10 version: 3.1.10 @@ -224,8 +224,8 @@ importers: specifier: 3.10.2 version: 3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) ajv: - specifier: 8.12.0 - version: 8.12.0 + specifier: 8.18.0 + version: 8.18.0 analytics: specifier: 0.8.1 version: 0.8.1(@types/dlv@1.1.5) @@ -361,7 +361,7 @@ importers: devDependencies: '@hystax/eslint-config-ui': specifier: 2.1.0 - version: 2.1.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + version: 2.1.0(@types/eslint@9.6.1)(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@storybook/addon-actions': specifier: 8.6.15 version: 8.6.15(storybook@8.6.17(prettier@3.3.3)) @@ -388,7 +388,7 @@ importers: version: 8.6.14(storybook@8.6.17(prettier@3.3.3)) eslint-plugin-react: specifier: 7.37.5 - version: 7.37.5(eslint@9.34.0(jiti@2.4.2)) + version: 7.37.5(eslint@9.39.4(jiti@2.4.2)) glob: specifier: 13.0.1 version: 13.0.1 @@ -983,56 +983,46 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.7.0': - resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.9.1': resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/regexpp@4.12.1': - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint-community/regexpp@4.12.2': resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.21.0': - resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.3.1': - resolution: {integrity: sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.15.2': - resolution: {integrity: sha512-78Md3/Rrxh83gCxoUc0EiciuOHsIITzLy53m3d9UyiW8y9Dj2D29FeETqyKA+BRK76tnTp6RXWb3pCay8Oyomg==} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.34.0': - resolution: {integrity: sha512-EoyvqQnBNsV1CWaEJ559rxXL4c8V92gxirbawSmVUOWXlsRxxQXl6LmCpdUblgxgSkDIqKnhzba2SjRTI/A5Rw==} + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@9.39.2': resolution: {integrity: sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/object-schema@2.1.6': - resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.3.5': - resolution: {integrity: sha512-Z5kJ+wU3oA7MMIqVR9tyZRtjYPr4OC004Q4Rw7pgOKUOKkJfZ3O24nz3WYfGRpMDNmcOi3TwQOmgm7B7Tpii0w==} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@fastify/busboy@3.1.1': @@ -3193,11 +3183,11 @@ packages: peerDependencies: ajv: ^8.8.2 - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} - ajv@8.12.0: - resolution: {integrity: sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==} + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} analytics-utils@1.0.14: resolution: {integrity: sha512-9v0kPd8v0GuBvfQcg5BO48AElaEAr9IXMAfJWXYMAhrD3QprgozEIUgMp/de0vS136PUOBB+10XQH9eBgBmfMw==} @@ -4299,8 +4289,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@9.34.0: - resolution: {integrity: sha512-RNCHRX5EwdrESy3Jc9o8ie8Bog+PeYvvSR8sDGoZxNFTvZ4dlxUB3WzQ3bQMztFrSRODGrLLj8g6OFuGY/aiQg==} + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -4418,6 +4408,9 @@ packages: fast-png@6.4.0: resolution: {integrity: sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==} + fast-uri@3.1.0: + resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fastq@1.19.1: resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} @@ -8302,37 +8295,32 @@ snapshots: '@esbuild/win32-x64@0.25.6': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.34.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.4.2))': dependencies: - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) eslint-visitor-keys: 3.4.3 - '@eslint-community/eslint-utils@4.9.1(eslint@9.34.0(jiti@2.4.2))': - dependencies: - eslint: 9.34.0(jiti@2.4.2) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.1': {} - '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.21.0': + '@eslint/config-array@0.21.2': dependencies: - '@eslint/object-schema': 2.1.6 + '@eslint/object-schema': 2.1.7 debug: 4.4.3 minimatch: 3.1.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.3.1': {} + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 - '@eslint/core@0.15.2': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.5': dependencies: - ajv: 6.12.6 + ajv: 6.14.0 debug: 4.4.3 espree: 10.4.0 globals: 14.0.0 @@ -8344,15 +8332,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.34.0': {} - '@eslint/js@9.39.2': {} - '@eslint/object-schema@2.1.6': {} + '@eslint/js@9.39.4': {} - '@eslint/plugin-kit@0.3.5': + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': dependencies: - '@eslint/core': 0.15.2 + '@eslint/core': 0.17.0 levn: 0.4.1 '@fastify/busboy@3.1.1': {} @@ -8596,13 +8584,13 @@ snapshots: parse-filepath: 1.0.2 tslib: 2.8.1 - '@graphql-eslint/eslint-plugin@4.4.0(@types/node@25.2.3)(eslint@9.34.0(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-eslint/eslint-plugin@4.4.0(@types/node@25.2.3)(eslint@9.39.4(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': dependencies: '@graphql-tools/code-file-loader': 8.1.20(graphql@16.10.0) '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) '@graphql-tools/utils': 10.9.1(graphql@16.10.0) debug: 4.4.1(supports-color@5.5.0) - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) fast-glob: 3.3.3 graphql: 16.10.0 graphql-config: 5.1.5(@types/node@25.2.3)(graphql@16.10.0)(typescript@5.7.2) @@ -9112,19 +9100,19 @@ snapshots: '@humanwhocodes/retry@0.4.3': {} - '@hystax/eslint-config-ui@2.1.0(@types/eslint@9.6.1)(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@hystax/eslint-config-ui@2.1.0(@types/eslint@9.6.1)(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint/js': 9.39.2 - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.34.0(jiti@2.4.2) - eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-prettier: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3) - eslint-plugin-react: 7.37.5(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-react-hooks: 5.1.0(eslint@9.34.0(jiti@2.4.2)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.39.4(jiti@2.4.2) + eslint-config-prettier: 9.1.0(eslint@9.39.4(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.4.2)) + eslint-plugin-prettier: 5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.39.4(jiti@2.4.2)))(eslint@9.39.4(jiti@2.4.2))(prettier@3.3.3) + eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.4.2)) + eslint-plugin-react-hooks: 5.1.0(eslint@9.39.4(jiti@2.4.2)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2)) globals: 15.13.0 prettier: 3.3.3 transitivePeerDependencies: @@ -10567,15 +10555,15 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.54.0 - '@typescript-eslint/type-utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.54.0 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.7.2) @@ -10583,15 +10571,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.58.2 - '@typescript-eslint/type-utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.58.2 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.7.2) @@ -10599,26 +10587,26 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.54.0 '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.54.0 debug: 4.4.3 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/parser@8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.58.2 debug: 4.4.3 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -10659,25 +10647,25 @@ snapshots: dependencies: typescript: 5.7.2 - '@typescript-eslint/type-utils@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) debug: 4.4.3 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) - '@typescript-eslint/utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) debug: 4.4.3 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) ts-api-utils: 2.5.0(typescript@5.7.2) typescript: 5.7.2 transitivePeerDependencies: @@ -10717,24 +10705,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/utils@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.54.0 '@typescript-eslint/types': 8.54.0 '@typescript-eslint/typescript-estree': 8.54.0(typescript@5.7.2) - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2)': + '@typescript-eslint/utils@8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.34.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.58.2 '@typescript-eslint/types': 8.58.2 '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -11024,28 +11012,28 @@ snapshots: transitivePeerDependencies: - supports-color - ajv-formats@2.1.1(ajv@8.12.0): + ajv-formats@2.1.1(ajv@8.18.0): optionalDependencies: - ajv: 8.12.0 + ajv: 8.18.0 - ajv-keywords@5.1.0(ajv@8.12.0): + ajv-keywords@5.1.0(ajv@8.18.0): dependencies: - ajv: 8.12.0 + ajv: 8.18.0 fast-deep-equal: 3.1.3 - ajv@6.12.6: + ajv@6.14.0: dependencies: fast-deep-equal: 3.1.3 fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.12.0: + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - uri-js: 4.4.1 analytics-utils@1.0.14(@types/dlv@1.1.5): dependencies: @@ -12144,9 +12132,9 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)): + eslint-config-prettier@9.1.0(eslint@9.39.4(jiti@2.4.2)): dependencies: - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) eslint-import-context@0.1.9(unrs-resolver@1.11.1): dependencies: @@ -12163,10 +12151,10 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.4.2)): + eslint-import-resolver-typescript@4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.4.2)): dependencies: debug: 4.4.3 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) eslint-import-context: 0.1.9(unrs-resolver@1.11.1) get-tsconfig: 4.10.1 is-bun-module: 2.0.0 @@ -12174,28 +12162,28 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.34.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.39.4(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.34.0(jiti@2.4.2)) + eslint-import-resolver-typescript: 4.4.4(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-es@3.0.1(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-es@3.0.1(eslint@9.39.4(jiti@2.4.2)): dependencies: - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -12204,9 +12192,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.34.0(jiti@2.4.2)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@4.4.4)(eslint@9.39.4(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -12218,37 +12206,37 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-node@11.1.0(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-node@11.1.0(eslint@9.39.4(jiti@2.4.2)): dependencies: - eslint: 9.34.0(jiti@2.4.2) - eslint-plugin-es: 3.0.1(eslint@9.34.0(jiti@2.4.2)) + eslint: 9.39.4(jiti@2.4.2) + eslint-plugin-es: 3.0.1(eslint@9.39.4(jiti@2.4.2)) eslint-utils: 2.1.0 ignore: 5.3.2 minimatch: 3.1.5 resolve: 1.22.11 semver: 6.3.1 - eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.34.0(jiti@2.4.2)))(eslint@9.34.0(jiti@2.4.2))(prettier@3.3.3): + eslint-plugin-prettier@5.5.5(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.39.4(jiti@2.4.2)))(eslint@9.39.4(jiti@2.4.2))(prettier@3.3.3): dependencies: - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) prettier: 3.3.3 prettier-linter-helpers: 1.0.1 synckit: 0.11.12 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 9.1.0(eslint@9.34.0(jiti@2.4.2)) + eslint-config-prettier: 9.1.0(eslint@9.39.4(jiti@2.4.2)) - eslint-plugin-react-hooks@5.1.0(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-react-hooks@5.1.0(eslint@9.39.4(jiti@2.4.2)): dependencies: - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) - eslint-plugin-react@7.37.5(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-react@7.37.5(eslint@9.39.4(jiti@2.4.2)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -12256,7 +12244,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -12270,11 +12258,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2)): dependencies: - eslint: 9.34.0(jiti@2.4.2) + eslint: 9.39.4(jiti@2.4.2) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) eslint-scope@5.1.1: dependencies: @@ -12298,25 +12286,24 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@9.34.0(jiti@2.4.2): + eslint@9.39.4(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.34.0(jiti@2.4.2)) - '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.21.0 - '@eslint/config-helpers': 0.3.1 - '@eslint/core': 0.15.2 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.34.0 - '@eslint/plugin-kit': 0.3.5 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.4.2)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 - '@types/json-schema': 7.0.15 - ajv: 6.12.6 + ajv: 6.14.0 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -12478,6 +12465,8 @@ snapshots: iobuffer: 5.4.0 pako: 2.1.0 + fast-uri@3.1.0: {} + fastq@1.19.1: dependencies: reusify: 1.1.0 @@ -13083,7 +13072,7 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13110,7 +13099,7 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -15218,9 +15207,9 @@ snapshots: schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.12.0 - ajv-formats: 2.1.1(ajv@8.12.0) - ajv-keywords: 5.1.0(ajv@8.12.0) + ajv: 8.18.0 + ajv-formats: 2.1.1(ajv@8.18.0) + ajv-keywords: 5.1.0(ajv@8.18.0) seedrandom@3.0.5: {} @@ -15829,13 +15818,13 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2): + typescript-eslint@8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - '@typescript-eslint/parser': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/eslint-plugin': 8.58.2(@typescript-eslint/parser@8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/typescript-estree': 8.58.2(typescript@5.7.2) - '@typescript-eslint/utils': 8.58.2(eslint@9.34.0(jiti@2.4.2))(typescript@5.7.2) - eslint: 9.34.0(jiti@2.4.2) + '@typescript-eslint/utils': 8.58.2(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.39.4(jiti@2.4.2) typescript: 5.7.2 transitivePeerDependencies: - supports-color @@ -16072,7 +16061,7 @@ snapshots: vite-node@3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): dependencies: cac: 6.7.14 - debug: 4.4.1(supports-color@5.5.0) + debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) diff --git a/ngui/ui/package.json b/ngui/ui/package.json index f5f751124..63a288040 100644 --- a/ngui/ui/package.json +++ b/ngui/ui/package.json @@ -33,7 +33,7 @@ "@tanstack/react-table": "8.7.6", "@uiw/react-textarea-code-editor": "2.1.1", "@vitejs/plugin-react-swc": "3.10.2", - "ajv": "8.12.0", + "ajv": "8.18.0", "analytics": "0.8.1", "axios": "1.15.0", "core-js": "3.27.2", From 5a119276eb935eaf733a189188e15503eab87914 Mon Sep 17 00:00:00 2001 From: nk-hystax <128669932+nk-hystax@users.noreply.github.com> Date: Wed, 22 Apr 2026 09:51:39 +0300 Subject: [PATCH 19/30] OS-7702. Initial support of Azure China --- insider/insider_worker/http_client/client.py | 4 +- insider/insider_worker/processors/azure.py | 56 +++++--- tools/cloud_adapter/clouds/azure.py | 132 +++++++++++++++---- tools/cloud_adapter/clouds/azure_tenant.py | 1 + 4 files changed, 147 insertions(+), 46 deletions(-) diff --git a/insider/insider_worker/http_client/client.py b/insider/insider_worker/http_client/client.py index 469ebf504..a6d64842b 100644 --- a/insider/insider_worker/http_client/client.py +++ b/insider/insider_worker/http_client/client.py @@ -7,7 +7,7 @@ def retry_if_connection_error(exception): if isinstance(exception, requests.ConnectionError): return True if isinstance(exception, requests.HTTPError): - if exception.response.status_code in (503,): + if exception.response.status_code in (503, 504): return True # retry too many requests elif exception.response.status_code in (429,): @@ -40,6 +40,8 @@ def request(self, url, method): response.content.decode('utf-8')) if 'text/plain' in response.headers['Content-Type']: response_body = response.content.decode() + if 'application/octet-stream' in response.headers['Content-Type']: + response_body = response.content return response.status_code, response_body def get(self, url): diff --git a/insider/insider_worker/processors/azure.py b/insider/insider_worker/processors/azure.py index f57bc27ee..5b02dc75f 100644 --- a/insider/insider_worker/processors/azure.py +++ b/insider/insider_worker/processors/azure.py @@ -1,17 +1,21 @@ +import csv +from io import StringIO from datetime import datetime, timezone - -from insider.insider_worker.http_client.client import Client -from insider.insider_worker.processors.base import BasePriceProcessor +from kombu.log import get_logger from kombu import Connection as QConnection from kombu import Exchange from kombu.log import get_logger from kombu.pools import producers -from optscale_client.rest_api_client.client_v2 import Client as RestClient from requests.exceptions import SSLError +from optscale_client.rest_api_client.client_v2 import Client as RestClient +from insider.insider_worker.processors.base import BasePriceProcessor +from insider.insider_worker.http_client.client import Client + ACTIVITIES_EXCHANGE_NAME = 'activities-tasks' ACTIVITIES_EXCHANGE = Exchange(ACTIVITIES_EXCHANGE_NAME, type='topic') LOG = get_logger(__name__) +PRICES_PER_REQUEST = 100 PRICES_COUNT_TO_LOG = 1000 @@ -78,18 +82,10 @@ def _get_currencies_list(self): currencies = set(map(lambda x: x['currency'], orgs['organizations'])) return list(currencies) - def process_prices(self): - last_discovery = self.get_last_discovery() - - http_client = Client() + def _process_global_prices(self, http_client, old_prices_map): + LOG.info('Start processing Azure Global prices') for currency in self._get_currencies_list(): LOG.info('Processing Azure prices for currency: %s', currency) - - old_prices = self.prices.find( - {'last_seen': {'$gte': last_discovery.get('started_at', 0)}, 'currencyCode': currency}, - {k: 1 for k in self.UNIQUE_FIELDS + self.CHANGE_FIELDS + ['last_seen']} - ) - old_prices_map = {self.unique_values(p): p for p in old_prices} processed_keys = {} prices_counter = 0 @@ -102,9 +98,9 @@ def process_prices(self): try: code, response = http_client.get(next_page) except SSLError: - LOG.error('Getting Azure prices failed with SSL verification ' - 'error. Will try to get prices without SSL ' - 'verification') + LOG.error('Getting Azure prices failed with SSL ' + 'verification error. Will try to get prices' + 'without SSL verification') self.send_sslerror_service_email() http_client = Client(verify=False) code, response = http_client.get(next_page) @@ -120,6 +116,32 @@ def process_prices(self): next_page = new_url prices_counter += response.get('Count', 0) + def _process_china_prices(self, http_client, old_prices_map): + LOG.info('Start processing Azure China prices') + url = 'https://prices.azure.cn/api/retail/pricesheet/download?' \ + 'api-version=2023-06-01-preview' + _, response = http_client.get(url) + download_url = response['DownloadUrl'] + _, response = http_client.get(download_url) + stream = StringIO(response.decode('utf-8')) + csv_reader = csv.DictReader(stream) + new_prices_map = {self.unique_values(p): p for p in csv_reader} + self.update_price_records(new_prices_map, old_prices_map, {}) + LOG.info('Total number of prices got from cloud: %s', + len(new_prices_map)) + + def process_prices(self): + last_discovery = self.get_last_discovery() + old_prices = self.prices.find( + {'last_seen': {'$gte': last_discovery.get('started_at', 0)}}, + {k: 1 for k in self.UNIQUE_FIELDS + self.CHANGE_FIELDS + ['last_seen']} + ) + old_prices_map = {self.unique_values(p): p for p in old_prices} + + http_client = Client() + self._process_global_prices(http_client, old_prices_map) + self._process_china_prices(http_client, old_prices_map) + def update_price_records(self, new_prices_map, old_prices_map, processed_keys): if not new_prices_map: diff --git a/tools/cloud_adapter/clouds/azure.py b/tools/cloud_adapter/clouds/azure.py index 408069eca..bc6791817 100644 --- a/tools/cloud_adapter/clouds/azure.py +++ b/tools/cloud_adapter/clouds/azure.py @@ -73,8 +73,6 @@ CLOUD_VALIDATION_TIMEOUT = 90 CLOUD_LINK_PATTERN = '%s%s/overview' DAYS_IN_MONTH = 30 -# we use base_url without tenant_name, azure can resolve links and also add tenant_name by itself while using link -DEFAULT_BASE_URL = 'https://portal.azure.com/#resource' DESERIALIZER = Deserializer(classes={ 'ModernUsageDetail': ModernUsageDetail, 'LegacyUsageDetail': LegacyUsageDetail, @@ -83,7 +81,7 @@ }) ARM_SCOPE = "https://management.azure.com/.default" - +AZURE_CN_CREDS_SCOPE = "https://management.core.chinacloudapi.cn//.default" # defining it to use outside CAd AzureConsumptionException = HttpResponseError AzureErrorResponseException = HttpOperationError @@ -108,6 +106,23 @@ } +class BaseUrl: + AZURE_GLOBAL = 'https://management.azure.com' + AZURE_CN = 'https://management.chinacloudapi.cn' + + +class AuthorityUrl: + AZURE_GLOBAL = 'https://login.microsoftonline.com' + AZURE_CN = 'https://login.chinacloudapi.cn' + + +# we use base_url without tenant_name, azure can resolve links and also add +# tenant_name by itself while using link +class PortalUrl: + AZURE_GLOBAL = 'https://portal.azure.com/#resource' + AZURE_CN = 'https://portal.azure.cn/#resource' + + class MsalCredential(BasicTokenAuthentication, TokenCredential): """ Uses MSAL ConfidentialClientApplication @@ -115,12 +130,15 @@ class MsalCredential(BasicTokenAuthentication, TokenCredential): works for azure-core clients via TokenCredential.get_token(). """ - def __init__(self, tenant_id: str, client_id: str, client_secret: str): + def __init__(self, tenant_id: str, client_id: str, client_secret: str, + base_url=None): super().__init__(token=None) self._tenant_id = tenant_id self._client_id = client_id self._client_secret = client_secret - self._authority = f"https://login.microsoftonline.com/{tenant_id}" + self._authority = f"{AuthorityUrl.AZURE_GLOBAL}/{tenant_id}" + if base_url == BaseUrl.AZURE_CN: + self._authority = f"{AuthorityUrl.AZURE_CN}/{tenant_id}" self._scopes = [ARM_SCOPE] LOG.info( @@ -437,6 +455,7 @@ class Azure(CloudBase): CloudParameter(name='client_id', type=str, required=True), CloudParameter(name='tenant', type=str, required=True), CloudParameter(name='expense_import_scheme', type=str, required=False), + CloudParameter(name='base_url', type=str, required=False), # Additional credentials for CSP partners CloudParameter(name='partner_tenant', type=str, required=False), @@ -489,6 +508,7 @@ def _get_msal_credential(self) -> MsalCredential: tenant_id=self.config['tenant'], client_id=self.config['client_id'], client_secret=self.config['secret'], + base_url=self.base_url ) cred.get_token(ARM_SCOPE) except Exception as ex: @@ -515,7 +535,8 @@ def get_currency_iso(currency): 'SEK': 'SE', 'CHF': 'CH', 'TWD': 'TW', - 'GBP': 'GB' + 'GBP': 'GB', + 'CNY': 'CN' }.get(currency) or 'US' def discovery_calls_map(self): @@ -553,6 +574,10 @@ def expense_import_scheme(self): return self.config.get( 'expense_import_scheme', self.DEFAULT_IMPORT_SCHEME) + @property + def base_url(self): + return self.config.get('base_url') or BaseUrl.AZURE_GLOBAL + @property def service_principal_credentials(self): """ @@ -581,7 +606,8 @@ def compute(self): self._compute = _client_with_retry( ComputeManagementClient, self.service_principal_credentials, - self._subscription_id + self._subscription_id, + base_url=self.base_url ) return self._compute @@ -591,7 +617,8 @@ def resource(self): self._resource = _client_with_retry( ResourceManagementClient, self.service_principal_credentials, - self._subscription_id + self._subscription_id, + base_url=self.base_url ) return self._resource @@ -601,7 +628,8 @@ def network(self): self._network = _client_with_retry( NetworkManagementClient, self.client_secret_credentials, - self._subscription_id + self._subscription_id, + base_url=self.base_url ) return self._network @@ -611,7 +639,8 @@ def storage(self): self._storage = _client_with_retry( StorageManagementClient, self.service_principal_credentials, - self._subscription_id + self._subscription_id, + base_url=self.base_url ) return self._storage @@ -640,8 +669,12 @@ def download_report_file(self, blob_path, file_obj): def consumption(self): if self._consumption: return self._consumption + kwargs = {'base_url': self.base_url} + if self.base_url == BaseUrl.AZURE_CN: + kwargs['credential_scopes'] = [AZURE_CN_CREDS_SCOPE] self._consumption = ConsumptionManagementClient( - self.client_secret_credentials, self._subscription_id) + self.client_secret_credentials, self._subscription_id, **kwargs + ) return self._consumption @property @@ -649,7 +682,7 @@ def subscription(self): if self._subscription: return self._subscription self._subscription = SubscriptionClient( - self.service_principal_credentials) + self.service_principal_credentials, base_url=self.base_url) return self._subscription @property @@ -657,7 +690,9 @@ def monitor(self): if self._monitor: return self._monitor self._monitor = MonitorManagementClient( - self.service_principal_credentials, self._subscription_id) + self.service_principal_credentials, self._subscription_id, + base_url=self.base_url + ) return self._monitor @property @@ -677,7 +712,9 @@ def partner(self): def usage(self): if not self._usage: self._usage = UsageManagementClient( - self.service_principal_credentials, self._subscription_id) + self.service_principal_credentials, self._subscription_id, + base_url=self.base_url + ) return self._usage @property @@ -685,7 +722,8 @@ def reservations(self): if not self._reservations: self._reservations = _client_with_retry( AzureReservationAPI, - self.client_secret_credentials + self.client_secret_credentials, + base_url=self.base_url ) return self._reservations @@ -698,6 +736,13 @@ def _get_service_principal_credentials(self): Returns a unified MSAL-based credential that is compatible with msrest-based clients """ + kwargs = { + 'client_id': self.config['client_id'], + 'secret': self.config['secret'], + 'tenant': self.config['tenant'] + } + if self.base_url == BaseUrl.AZURE_CN: + kwargs['china'] = True try: cred = self._get_msal_credential() LOG.info( @@ -852,8 +897,8 @@ def _get_billing_info(self): is_timeout_error = isinstance(exc, (ClientRequestError, TypeError)) is_empty = isinstance(exc, StopIteration) is_unsupported = (isinstance(exc, AzureConsumptionException) and - int(exc.response.status_code) in [400, 404, 422]) - + hasattr(exc.response, 'status_code') and int( + exc.response.status_code) in [400, 404, 422]) # Sponsored subscriptions are known to be unsupported by # Consumption API, but it returns an empty result for them # instead of an error, so there is a check for that as well @@ -1001,9 +1046,12 @@ def configure_report(self): def configure_last_import_modified_at(self): pass - @staticmethod - def _generate_cloud_link(resource_id): - return CLOUD_LINK_PATTERN % (DEFAULT_BASE_URL, resource_id) + def _generate_cloud_link(self, resource_id): + if self.base_url == BaseUrl.AZURE_CN: + portal_url = PortalUrl.AZURE_CN + else: + portal_url = PortalUrl.AZURE_GLOBAL + return CLOUD_LINK_PATTERN % (portal_url, resource_id) def _discover_vnets(self): vnets = self._retry(self.network.virtual_networks.list_all) @@ -1305,7 +1353,9 @@ def get_usage(self, start_date, range_end=None, limit=None): range_end = datetime.now(tz=timezone.utc).replace(tzinfo=None) start_str = start_date.strftime(date_format) end_str = range_end.strftime(date_format) - # test request to check subscription type + if self.base_url == BaseUrl.AZURE_CN: + start_str = start_date.strftime('%Y-%m-%d') + end_str = range_end.strftime('%Y-%m-%d') result = self.consumption.usage_details.list( scope='/subscriptions/{}/'.format(self._subscription_id), filter=filter_fmt.format(start_str, end_str), @@ -1344,14 +1394,11 @@ def get_values(_req): start_str = start_date.strftime(date_format) end_str = range_end.strftime(date_format) scope = 'subscriptions/{}'.format(self._subscription_id) - base_url = 'https://management.azure.com' usage_url = self.consumption.usage_details.list.metadata[ 'url'].format(scope=scope) - url = (f"{base_url}{usage_url}?$extend=properties/meterDetails," - f"properties/additionalProperties" - f"&$filter=properties/usageStart ge '{start_str}' and " - f"properties/usageEnd le '{end_str}'" - f"&api-version=2021-10-01") + url = f'{self.base_url}{usage_url}?$extend=properties/meterDetails,' \ + f'properties/additionalProperties&startDate={start_str}' \ + f'&endDate={end_str}&api-version=2021-10-01' if limit: url += f'&$top={limit}' @@ -1483,7 +1530,8 @@ def get_partner_prices(self, currency=None, region=None): for p in prices['meters'] } - def _get_coordinates_map(self): + @staticmethod + def _get_global_coordinates_map(): return { 'usgovarizona': { 'name': 'US Gov Arizona', 'alias': 'US Gov AZ', @@ -1680,6 +1728,34 @@ def alias_location_map(self): return {v['alias']: k for k, v in coord_map.items() if 'alias' in v} + @staticmethod + def _get_cn_coordinates_map(): + return { + 'chinaeast': { + 'name': 'China East', 'alias': 'CN East', + 'longitude': 121.5891, 'latitude': 31.3209}, + 'chinaeast2': { + 'name': 'China East 2', 'alias': 'CN East 2', + 'longitude': 121.391, 'latitude': 31.302}, + 'chinaeast3': { + 'name': 'China East 3', 'alias': 'CN East 3', + 'longitude': 121.389, 'latitude': 31.219}, + 'chinanorth': { + 'name': 'China North', 'alias': 'CN North', + 'longitude': 116.4959, 'latitude': 39.9788}, + 'chinanorth2': { + 'name': 'China North 2', 'alias': 'CN North 2', + 'longitude': 116.500, 'latitude': 39.977}, + 'chinanorth3': { + 'name': 'China North 3', 'alias': 'CN North 3', + 'longitude': 114.8863, 'latitude': 40.7675}, + } + + def _get_coordinates_map(self): + coordinates_map = self._get_global_coordinates_map() + coordinates_map.update(self._get_cn_coordinates_map()) + return coordinates_map + def get_regions_coordinates(self): def to_coord(coordinate): if isinstance(coordinate, str): diff --git a/tools/cloud_adapter/clouds/azure_tenant.py b/tools/cloud_adapter/clouds/azure_tenant.py index b42c7c541..9e4c4d339 100644 --- a/tools/cloud_adapter/clouds/azure_tenant.py +++ b/tools/cloud_adapter/clouds/azure_tenant.py @@ -8,6 +8,7 @@ class AzureTenant(Azure): CloudParameter(name='secret', type=str, required=True, protected=True), CloudParameter(name='client_id', type=str, required=True), CloudParameter(name='tenant', type=str, required=True), + CloudParameter(name='base_url', type=str, required=False), # Additional credentials for CSP partners CloudParameter(name='partner_tenant', type=str, required=False), From 10d336e9cb108300db84f90b25f66910c9e2d273 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 22 Apr 2026 11:09:02 +0400 Subject: [PATCH 20/30] OSN-1431. [Dependabot] yaml is vulnerable to Stack Overflow via deeply nested YAML collections ## Description _yaml_ update --- jira_ui/ui/package-lock.json | 13 ++--- ngui/pnpm-lock.yaml | 101 +++++++++++++++++++++++------------ 2 files changed, 73 insertions(+), 41 deletions(-) diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 0b6e15541..4bd355e33 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -8078,9 +8078,10 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "license": "ISC", "engines": { "node": ">= 6" } @@ -13443,9 +13444,9 @@ "dev": true }, "yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==" }, "yocto-queue": { "version": "0.1.0", diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 8454dfeda..da5cad097 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -222,7 +222,7 @@ importers: version: 2.1.1(@babel/runtime@7.29.2)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@vitejs/plugin-react-swc': specifier: 3.10.2 - version: 3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) ajv: specifier: 8.18.0 version: 8.18.0 @@ -354,10 +354,10 @@ importers: version: 9.0.0 vite: specifier: 6.4.2 - version: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + version: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) vite-tsconfig-paths: specifier: 5.1.4 - version: 5.1.4(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 5.1.4(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) devDependencies: '@hystax/eslint-config-ui': specifier: 2.1.0 @@ -382,7 +382,7 @@ importers: version: 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.17(prettier@3.3.3))(typescript@5.7.2) '@storybook/react-vite': specifier: 8.6.15 - version: 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.59.0)(storybook@8.6.17(prettier@3.3.3))(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + version: 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.59.0)(storybook@8.6.17(prettier@3.3.3))(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@storybook/theming': specifier: ^8.6.14 version: 8.6.14(storybook@8.6.17(prettier@3.3.3)) @@ -403,7 +403,7 @@ importers: version: 8.6.17(prettier@3.3.3) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) packages: @@ -1988,36 +1988,42 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] + libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] + libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] + libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -2195,66 +2201,79 @@ packages: resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} cpu: [arm] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.59.0': resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} cpu: [arm] os: [linux] + libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.59.0': resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} cpu: [arm64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.59.0': resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} cpu: [arm64] os: [linux] + libc: [musl] '@rollup/rollup-linux-loong64-gnu@4.59.0': resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} cpu: [loong64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-loong64-musl@4.59.0': resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} cpu: [loong64] os: [linux] + libc: [musl] '@rollup/rollup-linux-ppc64-gnu@4.59.0': resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-ppc64-musl@4.59.0': resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} cpu: [ppc64] os: [linux] + libc: [musl] '@rollup/rollup-linux-riscv64-gnu@4.59.0': resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} cpu: [riscv64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.59.0': resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} cpu: [riscv64] os: [linux] + libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.59.0': resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} cpu: [s390x] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.59.0': resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} cpu: [x64] os: [linux] + libc: [glibc] '@rollup/rollup-linux-x64-musl@4.59.0': resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} cpu: [x64] os: [linux] + libc: [musl] '@rollup/rollup-openbsd-x64@4.59.0': resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} @@ -2431,24 +2450,28 @@ packages: engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [glibc] '@swc/core-linux-arm64-musl@1.12.11': resolution: {integrity: sha512-LlBxPh/32pyQsu2emMEOFRm7poEFLsw12Y1mPY7FWZiZeptomKSOSHRzKDz9EolMiV4qhK1caP1lvW4vminYgQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] + libc: [musl] '@swc/core-linux-x64-gnu@1.12.11': resolution: {integrity: sha512-bOjiZB8O/1AzHkzjge1jqX62HGRIpOHqFUrGPfAln/NC6NR+Z2A78u3ixV7k5KesWZFhCV0YVGJL+qToL27myA==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [glibc] '@swc/core-linux-x64-musl@1.12.11': resolution: {integrity: sha512-4dzAtbT/m3/UjF045+33gLiHd8aSXJDoqof7gTtu4q0ZyAf7XJ3HHspz+/AvOJLVo4FHHdFcdXhmo/zi1nFn8A==} engines: {node: '>=10'} cpu: [x64] os: [linux] + libc: [musl] '@swc/core-win32-arm64-msvc@1.12.11': resolution: {integrity: sha512-h8HiwBZErKvCAmjW92JvQp0iOqm6bncU4ac5jxBGkRApabpUenNJcj3h2g5O6GL5K6T9/WhnXE5gyq/s1fhPQg==} @@ -2953,41 +2976,49 @@ packages: resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==} cpu: [arm64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-arm64-musl@1.11.1': resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==} cpu: [arm64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-ppc64-gnu@1.11.1': resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==} cpu: [ppc64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-gnu@1.11.1': resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==} cpu: [riscv64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-riscv64-musl@1.11.1': resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==} cpu: [riscv64] os: [linux] + libc: [musl] '@unrs/resolver-binding-linux-s390x-gnu@1.11.1': resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==} cpu: [s390x] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-gnu@1.11.1': resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==} cpu: [x64] os: [linux] + libc: [glibc] '@unrs/resolver-binding-linux-x64-musl@1.11.1': resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==} cpu: [x64] os: [linux] + libc: [musl] '@unrs/resolver-binding-wasm32-wasi@1.11.1': resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==} @@ -7584,12 +7615,12 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} - yaml@2.8.0: - resolution: {integrity: sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==} + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true @@ -8459,7 +8490,7 @@ snapshots: string-env-interpolation: 1.0.1 ts-log: 2.2.7 tslib: 2.8.1 - yaml: 2.8.0 + yaml: 2.8.3 yargs: 17.7.2 optionalDependencies: '@parcel/watcher': 2.5.1 @@ -9273,12 +9304,12 @@ snapshots: '@types/yargs': 17.0.33 chalk: 4.1.2 - '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.5.0(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: glob: 10.5.0 magic-string: 0.27.0 react-docgen-typescript: 2.4.0(typescript@5.7.2) - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) optionalDependencies: typescript: 5.7.2 @@ -10066,13 +10097,13 @@ snapshots: optionalDependencies: react: 18.2.0 - '@storybook/builder-vite@8.6.15(storybook@8.6.17(prettier@3.3.3))(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': + '@storybook/builder-vite@8.6.15(storybook@8.6.17(prettier@3.3.3))(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@storybook/csf-plugin': 8.6.15(storybook@8.6.17(prettier@3.3.3)) browser-assert: 1.2.1 storybook: 8.6.17(prettier@3.3.3) ts-dedent: 2.2.0 - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) '@storybook/components@8.6.15(storybook@8.6.17(prettier@3.3.3))': dependencies: @@ -10124,11 +10155,11 @@ snapshots: react-dom: 18.2.0(react@18.2.0) storybook: 8.6.17(prettier@3.3.3) - '@storybook/react-vite@8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.59.0)(storybook@8.6.17(prettier@3.3.3))(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': + '@storybook/react-vite@8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(rollup@4.59.0)(storybook@8.6.17(prettier@3.3.3))(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.5.0(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@rollup/pluginutils': 5.2.0(rollup@4.59.0) - '@storybook/builder-vite': 8.6.15(storybook@8.6.17(prettier@3.3.3))(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + '@storybook/builder-vite': 8.6.15(storybook@8.6.17(prettier@3.3.3))(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@storybook/react': 8.6.15(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(storybook@8.6.17(prettier@3.3.3))(typescript@5.7.2) find-up: 5.0.0 magic-string: 0.30.17 @@ -10138,7 +10169,7 @@ snapshots: resolve: 1.22.11 storybook: 8.6.17(prettier@3.3.3) tsconfig-paths: 4.2.0 - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - rollup - supports-color @@ -10806,11 +10837,11 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vitejs/plugin-react-swc@3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitejs/plugin-react-swc@3.10.2(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-beta.11 '@swc/core': 1.12.11 - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - '@swc/helpers' @@ -10822,13 +10853,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0))': + '@vitest/mocker@3.2.4(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) '@vitest/pretty-format@3.2.4': dependencies: @@ -11531,7 +11562,7 @@ snapshots: import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + yaml: 1.10.3 cosmiconfig@8.3.6(typescript@5.7.2): dependencies: @@ -16058,13 +16089,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): + vite-node@3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -16079,18 +16110,18 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)): + vite-tsconfig-paths@5.1.4(typescript@5.7.2)(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)): dependencies: debug: 4.4.1(supports-color@5.5.0) globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.7.2) optionalDependencies: - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) transitivePeerDependencies: - supports-color - typescript - vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): + vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: esbuild: 0.25.6 fdir: 6.5.0(picomatch@4.0.4) @@ -16105,13 +16136,13 @@ snapshots: sass: 1.97.3 terser: 5.46.0 tsx: 4.20.3 - yaml: 2.8.0 + yaml: 2.8.3 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0)) + '@vitest/mocker': 3.2.4(vite@6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -16129,8 +16160,8 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) - vite-node: 3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.0) + vite: 6.4.2(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + vite-node: 3.2.4(@types/node@25.2.3)(jiti@2.4.2)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 @@ -16339,9 +16370,9 @@ snapshots: yallist@3.1.1: {} - yaml@1.10.2: {} + yaml@1.10.3: {} - yaml@2.8.0: {} + yaml@2.8.3: {} yargs-parser@21.1.1: {} From f400895c373a4f57bc6134f69b4c224759984ef8 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 22 Apr 2026 11:28:18 +0400 Subject: [PATCH 21/30] OSN-1432. [Dependabot] qs's arrayLimit bypass in comma parsing allows denial of service ## Description _qs_ update --- jira_ui/server/package-lock.json | 12 ++++++------ jira_ui/ui/package-lock.json | 12 ++++++------ ngui/pnpm-lock.yaml | 10 +++++----- 3 files changed, 17 insertions(+), 17 deletions(-) diff --git a/jira_ui/server/package-lock.json b/jira_ui/server/package-lock.json index d3c7b39d6..10b828903 100644 --- a/jira_ui/server/package-lock.json +++ b/jira_ui/server/package-lock.json @@ -922,9 +922,9 @@ "dev": true }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -1907,9 +1907,9 @@ "dev": true }, "qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "requires": { "side-channel": "^1.1.0" } diff --git a/jira_ui/ui/package-lock.json b/jira_ui/ui/package-lock.json index 4bd355e33..c40929d6e 100644 --- a/jira_ui/ui/package-lock.json +++ b/jira_ui/ui/package-lock.json @@ -6499,9 +6499,9 @@ } }, "node_modules/qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -12394,9 +12394,9 @@ "dev": true }, "qs": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", - "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "version": "6.14.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.2.tgz", + "integrity": "sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==", "requires": { "side-channel": "^1.1.0" } diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index da5cad097..37345e26a 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -6199,8 +6199,8 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - qs@6.14.1: - resolution: {integrity: sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==} + qs@6.14.2: + resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} query-string@9.1.1: @@ -11258,7 +11258,7 @@ snapshots: http-errors: 2.0.1 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.14.1 + qs: 6.14.2 raw-body: 2.5.3 type-is: 1.6.18 unpipe: 1.0.0 @@ -12446,7 +12446,7 @@ snapshots: parseurl: 1.3.3 path-to-regexp: 0.1.13 proxy-addr: 2.0.7 - qs: 6.14.1 + qs: 6.14.2 range-parser: 1.2.1 safe-buffer: 5.2.1 send: 0.19.0 @@ -14662,7 +14662,7 @@ snapshots: punycode@2.3.1: {} - qs@6.14.1: + qs@6.14.2: dependencies: side-channel: 1.1.0 From 9357dc0f49047056729d2abe8b9d60cbe0851a01 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 22 Apr 2026 11:39:03 +0400 Subject: [PATCH 22/30] =?UTF-8?q?OSN-1433.=20[Dependabot]=20webpack=20buil?= =?UTF-8?q?dHttp=20HttpUriPlugin=20allowedUris=20bypass=20via=20HTTP=20red?= =?UTF-8?q?irects=20=E2=86=92=20SSRF=20+=20cache=20persistence?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Description _webpack_ update --- ngui/pnpm-lock.yaml | 39 ++++++++++++++++++++++----------------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index 37345e26a..e6e1e4b40 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -312,7 +312,7 @@ importers: version: 10.1.0(@types/react@18.2.45)(react@18.2.0) react-plotly.js: specifier: 2.6.0 - version: 2.6.0(plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.100.0(esbuild@0.25.6)))(react@18.2.0) + version: 2.6.0(plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.104.1(esbuild@0.25.6)))(react@18.2.0) react-redux: specifier: 8.0.5 version: 8.0.5(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(redux@4.2.0) @@ -4116,6 +4116,9 @@ packages: es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + es-module-lexer@2.0.0: + resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -7482,8 +7485,8 @@ packages: webpack-virtual-modules@0.6.2: resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} - webpack@5.100.0: - resolution: {integrity: sha512-H8yBSBTk+BqxrINJnnRzaxU94SVP2bjd7WmA+PfCphoIdDpeQMJ77pq9/4I7xjLq38cB1bNKfzYPZu8pB3zKtg==} + webpack@5.104.1: + resolution: {integrity: sha512-Qphch25abbMNtekmEGJmeRUhLDbe+QfiWTiqpKYkpCOWY64v9eyl+KRRLmqOFA2AvKPpc9DC6+u2n76tQLBoaA==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -11621,7 +11624,7 @@ snapshots: utrie: 1.0.2 optional: true - css-loader@7.1.3(webpack@5.100.0(esbuild@0.25.6)): + css-loader@7.1.3(webpack@5.104.1(esbuild@0.25.6)): dependencies: icss-utils: 5.1.0(postcss@8.5.6) postcss: 8.5.6 @@ -11632,7 +11635,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.4 optionalDependencies: - webpack: 5.100.0(esbuild@0.25.6) + webpack: 5.104.1(esbuild@0.25.6) css-system-font-keywords@1.0.0: {} @@ -12054,6 +12057,8 @@ snapshots: es-module-lexer@1.7.0: {} + es-module-lexer@2.0.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -14482,7 +14487,7 @@ snapshots: plotly.js-gl2d-dist-min@2.35.2: {} - plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.100.0(esbuild@0.25.6)): + plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.104.1(esbuild@0.25.6)): dependencies: '@plotly/d3': 3.8.2 '@plotly/d3-sankey': 0.7.2 @@ -14498,7 +14503,7 @@ snapshots: color-parse: 2.0.0 color-rgba: 3.0.0 country-regex: 1.1.0 - css-loader: 7.1.3(webpack@5.100.0(esbuild@0.25.6)) + css-loader: 7.1.3(webpack@5.104.1(esbuild@0.25.6)) d3-force: 1.2.1 d3-format: 1.4.5 d3-geo: 1.12.1 @@ -14529,7 +14534,7 @@ snapshots: regl-scatter2d: 3.3.1 regl-splom: 1.0.14 strongly-connected-components: 1.0.1 - style-loader: 4.0.0(webpack@5.100.0(esbuild@0.25.6)) + style-loader: 4.0.0(webpack@5.104.1(esbuild@0.25.6)) superscript-text: 1.0.0 svg-path-sdf: 1.1.3 tinycolor2: 1.6.0 @@ -14809,9 +14814,9 @@ snapshots: uncontrollable: 7.2.1(react@18.2.0) warning: 4.0.3 - react-plotly.js@2.6.0(plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.100.0(esbuild@0.25.6)))(react@18.2.0): + react-plotly.js@2.6.0(plotly.js@3.0.1(mapbox-gl@1.13.3)(webpack@5.104.1(esbuild@0.25.6)))(react@18.2.0): dependencies: - plotly.js: 3.0.1(mapbox-gl@1.13.3)(webpack@5.100.0(esbuild@0.25.6)) + plotly.js: 3.0.1(mapbox-gl@1.13.3)(webpack@5.104.1(esbuild@0.25.6)) prop-types: 15.8.1 react: 18.2.0 @@ -15553,9 +15558,9 @@ snapshots: strongly-connected-components@1.0.1: {} - style-loader@4.0.0(webpack@5.100.0(esbuild@0.25.6)): + style-loader@4.0.0(webpack@5.104.1(esbuild@0.25.6)): dependencies: - webpack: 5.100.0(esbuild@0.25.6) + webpack: 5.104.1(esbuild@0.25.6) style-to-js@1.1.21: dependencies: @@ -15637,13 +15642,13 @@ snapshots: tapable@2.3.0: {} - terser-webpack-plugin@5.4.0(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)): + terser-webpack-plugin@5.4.0(esbuild@0.25.6)(webpack@5.104.1(esbuild@0.25.6)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.0 - webpack: 5.100.0(esbuild@0.25.6) + webpack: 5.104.1(esbuild@0.25.6) optionalDependencies: esbuild: 0.25.6 @@ -16218,7 +16223,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.100.0(esbuild@0.25.6): + webpack@5.104.1(esbuild@0.25.6): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -16231,7 +16236,7 @@ snapshots: browserslist: 4.28.1 chrome-trace-event: 1.0.4 enhanced-resolve: 5.19.0 - es-module-lexer: 1.7.0 + es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -16242,7 +16247,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.4.0(esbuild@0.25.6)(webpack@5.100.0(esbuild@0.25.6)) + terser-webpack-plugin: 5.4.0(esbuild@0.25.6)(webpack@5.104.1(esbuild@0.25.6)) watchpack: 2.5.1 webpack-sources: 3.3.3 transitivePeerDependencies: From 8ebf88c02fe3f917beab90896098b94392dc53d8 Mon Sep 17 00:00:00 2001 From: Anton Sukhov Date: Wed, 22 Apr 2026 12:50:55 +0400 Subject: [PATCH 23/30] OSN-1435. [Dependabot] @tootallnate/once vulnerable to Incorrect Control Flow Scoping ## Description jsdom **Major** update to v26.1.0 --- ngui/pnpm-lock.yaml | 348 +++++++++++++++++++++---------------------- ngui/ui/package.json | 2 +- 2 files changed, 167 insertions(+), 183 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index e6e1e4b40..bcd7e4ef6 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -393,8 +393,8 @@ importers: specifier: 13.0.1 version: 13.0.1 jsdom: - specifier: 22.1.0 - version: 22.1.0 + specifier: 26.1.0 + version: 26.1.0 redux-immutable-state-invariant: specifier: 2.1.0 version: 2.1.0 @@ -403,7 +403,7 @@ importers: version: 8.6.17(prettier@3.3.3) vitest: specifier: 3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) + version: 3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@26.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3) packages: @@ -565,6 +565,9 @@ packages: peerDependencies: graphql: '*' + '@asamuzakjp/css-color@3.2.0': + resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@azure/msal-browser@2.32.1': resolution: {integrity: sha512-2G3B12ZEIpiimi6/Yqq7KLk4ud1zZWoHvVd2kJ2VthN1HjMsZjdMUxeHkwMWaQ6RzO6mv9rZiuKmRX64xkXW9g==} engines: {node: '>=0.8.0'} @@ -730,6 +733,34 @@ packages: resolution: {integrity: sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==} hasBin: true + '@csstools/color-helpers@5.1.0': + resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-color-parser@3.1.0': + resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.4 + + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} + engines: {node: '>=18'} + '@deck.gl/core@8.8.22': resolution: {integrity: sha512-fvtzg7uCYdqwdwv1avTxOoVL7LZOhpHyWtwVSTXcmYARXCzhM4z7R4d6ytUEmg8dWErGIzDFCuKP+EsQHs+/6Q==} @@ -2517,10 +2548,6 @@ packages: resolution: {integrity: sha512-sqiNTMzB6cpyL8DFH6/VqW48SwiflLqxQqYpo2wNock7rdVGvlm0BLNI8vZUJbr1+fmmWmHwBvi5OMgZw8n1DA==} engines: {node: '>=12'} - '@tootallnate/once@2.0.0': - resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} - engines: {node: '>= 10'} - '@turf/area@7.3.3': resolution: {integrity: sha512-FT66TCxUec+3RsCCyO1kWP57/tiEWEqYfpIs5n44dup401Cne/E+xunahEWxMfP/HSUxfcRQqrjH5vEulLrNoA==} @@ -3165,10 +3192,6 @@ packages: '@xtuc/long@4.2.2': resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==} - abab@2.0.6: - resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} - deprecated: Use your platform's native atob() and btoa() methods instead - abs-svg-path@0.1.1: resolution: {integrity: sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==} @@ -3197,9 +3220,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - agent-base@6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} ajv-formats@2.1.1: resolution: {integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==} @@ -3719,9 +3742,9 @@ packages: engines: {node: '>=4'} hasBin: true - cssstyle@3.0.0: - resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} - engines: {node: '>=14'} + cssstyle@4.6.0: + resolution: {integrity: sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==} + engines: {node: '>=18'} csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -3834,9 +3857,9 @@ packages: resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} engines: {node: '>= 12'} - data-urls@4.0.0: - resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} - engines: {node: '>=14'} + data-urls@5.0.0: + resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} + engines: {node: '>=18'} data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} @@ -3990,11 +4013,6 @@ packages: dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} - domexception@4.0.0: - resolution: {integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==} - engines: {node: '>=12'} - deprecated: Use your platform's native DOMException instead - dompurify@3.4.0: resolution: {integrity: sha512-nolgK9JcaUXMSmW+j1yaSvaEaoXYHwWyGJlkoCTghc97KgGDDSnpoU/PlEnw63Ah+TGKFOyY+X5LnxaWbCSfXg==} @@ -4531,10 +4549,6 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} - engines: {node: '>= 6'} - form-data@4.0.5: resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} @@ -4899,9 +4913,9 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - html-encoding-sniffer@3.0.0: - resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} - engines: {node: '>=12'} + html-encoding-sniffer@4.0.0: + resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} + engines: {node: '>=18'} html-url-attributes@3.0.1: resolution: {integrity: sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ==} @@ -4924,9 +4938,9 @@ packages: resolution: {integrity: sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==} engines: {node: '>= 0.8'} - http-proxy-agent@5.0.0: - resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} - engines: {node: '>= 6'} + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} http-proxy-middleware@2.0.9: resolution: {integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==} @@ -4941,9 +4955,9 @@ packages: resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} engines: {node: '>=8.0.0'} - https-proxy-agent@5.0.1: - resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} - engines: {node: '>= 6'} + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} @@ -5327,11 +5341,11 @@ packages: resolution: {integrity: sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==} engines: {node: '>=12.0.0'} - jsdom@22.1.0: - resolution: {integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==} - engines: {node: '>=16'} + jsdom@26.1.0: + resolution: {integrity: sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==} + engines: {node: '>=18'} peerDependencies: - canvas: ^2.5.0 + canvas: ^3.0.0 peerDependenciesMeta: canvas: optional: true @@ -6192,9 +6206,6 @@ packages: resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} engines: {node: '>=10'} - psl@1.15.0: - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} - pstree.remy@1.1.8: resolution: {integrity: sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==} @@ -6210,9 +6221,6 @@ packages: resolution: {integrity: sha512-MWkCOVIcJP9QSKU52Ngow6bsAWAPlPK2MludXvcrS2bGZSl+T1qX9MZvRIkqUIkGLJquMJHWfsT6eRqUpp4aWg==} engines: {node: '>=18'} - querystringify@2.2.0: - resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} - queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -6569,8 +6577,8 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - rrweb-cssom@0.6.0: - resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + rrweb-cssom@0.8.0: + resolution: {integrity: sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==} run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -7045,6 +7053,13 @@ packages: title-case@3.0.3: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + to-buffer@1.2.1: resolution: {integrity: sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ==} engines: {node: '>= 0.4'} @@ -7074,16 +7089,16 @@ packages: resolution: {integrity: sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==} hasBin: true - tough-cookie@4.1.4: - resolution: {integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==} - engines: {node: '>=6'} + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} - tr46@4.1.1: - resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} - engines: {node: '>=14'} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} @@ -7256,10 +7271,6 @@ packages: unist-util-visit@5.0.0: resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==} - universalify@0.2.0: - resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} - engines: {node: '>= 4.0.0'} - unixify@1.0.0: resolution: {integrity: sha512-6bc58dPYhCMHHuwxldQxO3RRNZ4eCogZ/st++0+fcC1nr0jiGUtAdBJ2qzmLQWSxbtz42pWt4QQMiZ9HvZf5cg==} engines: {node: '>=0.10.0'} @@ -7302,9 +7313,6 @@ packages: uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - url-parse@1.5.10: - resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} - urlpattern-polyfill@10.1.0: resolution: {integrity: sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==} @@ -7447,9 +7455,9 @@ packages: vt-pbf@3.1.3: resolution: {integrity: sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==} - w3c-xmlserializer@4.0.0: - resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} - engines: {node: '>=14'} + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} warning@4.0.3: resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} @@ -7495,9 +7503,9 @@ packages: webpack-cli: optional: true - whatwg-encoding@2.0.0: - resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} - engines: {node: '>=12'} + whatwg-encoding@3.1.1: + resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} + engines: {node: '>=18'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-mimetype@3.0.0: @@ -7508,9 +7516,9 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} - whatwg-url@12.0.1: - resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} - engines: {node: '>=14'} + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -7572,18 +7580,6 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - ws@8.18.3: - resolution: {integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==} - engines: {node: '>=10.0.0'} - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true - ws@8.20.0: resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} @@ -7596,9 +7592,9 @@ packages: utf-8-validate: optional: true - xml-name-validator@4.0.0: - resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} - engines: {node: '>=12'} + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} @@ -7864,6 +7860,14 @@ snapshots: immutable: 5.1.5 invariant: 2.2.4 + '@asamuzakjp/css-color@3.2.0': + dependencies: + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + lru-cache: 10.4.3 + '@azure/msal-browser@2.32.1': dependencies: '@azure/msal-common': 9.1.1 @@ -8091,6 +8095,26 @@ snapshots: dependencies: commander: 2.20.3 + '@csstools/color-helpers@5.1.0': {} + + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/color-helpers': 5.1.0 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': + dependencies: + '@csstools/css-tokenizer': 3.0.4 + + '@csstools/css-tokenizer@3.0.4': {} + '@deck.gl/core@8.8.22': dependencies: '@loaders.gl/core': 3.4.15 @@ -8740,10 +8764,10 @@ snapshots: '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@whatwg-node/disposablestack': 0.0.6 graphql: 16.10.0 - graphql-ws: 6.0.5(graphql@16.10.0)(ws@8.18.3) - isomorphic-ws: 5.0.0(ws@8.18.3) + graphql-ws: 6.0.5(graphql@16.10.0)(ws@8.20.0) + isomorphic-ws: 5.0.0(ws@8.20.0) tslib: 2.8.1 - ws: 8.18.3 + ws: 8.20.0 transitivePeerDependencies: - '@fastify/websocket' - bufferutil @@ -8802,9 +8826,9 @@ snapshots: '@graphql-tools/utils': 10.9.1(graphql@16.10.0) '@types/ws': 8.18.1 graphql: 16.10.0 - isomorphic-ws: 5.0.0(ws@8.18.3) + isomorphic-ws: 5.0.0(ws@8.20.0) tslib: 2.8.1 - ws: 8.18.3 + ws: 8.20.0 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -9033,10 +9057,10 @@ snapshots: '@whatwg-node/fetch': 0.10.8 '@whatwg-node/promise-helpers': 1.3.2 graphql: 16.10.0 - isomorphic-ws: 5.0.0(ws@8.18.3) + isomorphic-ws: 5.0.0(ws@8.20.0) sync-fetch: 0.6.0-2 tslib: 2.8.1 - ws: 8.18.3 + ws: 8.20.0 transitivePeerDependencies: - '@fastify/websocket' - '@types/node' @@ -10124,7 +10148,7 @@ snapshots: recast: 0.23.11 semver: 7.7.4 util: 0.12.5 - ws: 8.18.3 + ws: 8.20.0 optionalDependencies: prettier: 3.3.3 transitivePeerDependencies: @@ -10264,8 +10288,6 @@ snapshots: '@tanstack/table-core@8.7.6': {} - '@tootallnate/once@2.0.0': {} - '@turf/area@7.3.3': dependencies: '@turf/helpers': 7.3.3 @@ -11019,8 +11041,6 @@ snapshots: '@xtuc/long@4.2.2': {} - abab@2.0.6: {} - abs-svg-path@0.1.1: {} accepts@1.3.8: @@ -11040,11 +11060,7 @@ snapshots: acorn@8.15.0: {} - agent-base@6.0.2: - dependencies: - debug: 4.4.3 - transitivePeerDependencies: - - supports-color + agent-base@7.1.4: {} ajv-formats@2.1.1(ajv@8.18.0): optionalDependencies: @@ -11643,9 +11659,10 @@ snapshots: cssesc@3.0.0: {} - cssstyle@3.0.0: + cssstyle@4.6.0: dependencies: - rrweb-cssom: 0.6.0 + '@asamuzakjp/css-color': 3.2.0 + rrweb-cssom: 0.8.0 csstype@3.1.3: {} @@ -11759,11 +11776,10 @@ snapshots: data-uri-to-buffer@4.0.1: {} - data-urls@4.0.0: + data-urls@5.0.0: dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 data-view-buffer@1.0.2: dependencies: @@ -11882,10 +11898,6 @@ snapshots: '@babel/runtime': 7.27.6 csstype: 3.1.3 - domexception@4.0.0: - dependencies: - webidl-conversions: 7.0.0 - dompurify@3.4.0: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -12583,14 +12595,6 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.4: - dependencies: - asynckit: 0.4.0 - combined-stream: 1.0.8 - es-set-tostringtag: 2.1.0 - hasown: 2.0.2 - mime-types: 2.1.35 - form-data@4.0.5: dependencies: asynckit: 0.4.0 @@ -12924,11 +12928,11 @@ snapshots: dependencies: graphql: 16.10.0 - graphql-ws@6.0.5(graphql@16.10.0)(ws@8.18.3): + graphql-ws@6.0.5(graphql@16.10.0)(ws@8.20.0): dependencies: graphql: 16.10.0 optionalDependencies: - ws: 8.18.3 + ws: 8.20.0 graphql-ws@6.0.8(graphql@16.10.0)(ws@8.20.0): dependencies: @@ -13072,9 +13076,9 @@ snapshots: dependencies: react-is: 16.13.1 - html-encoding-sniffer@3.0.0: + html-encoding-sniffer@4.0.0: dependencies: - whatwg-encoding: 2.0.0 + whatwg-encoding: 3.1.1 html-url-attributes@3.0.1: {} @@ -13104,10 +13108,9 @@ snapshots: statuses: 2.0.2 toidentifier: 1.0.1 - http-proxy-agent@5.0.0: + http-proxy-agent@7.0.2: dependencies: - '@tootallnate/once': 2.0.0 - agent-base: 6.0.2 + agent-base: 7.1.4 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13132,9 +13135,9 @@ snapshots: transitivePeerDependencies: - debug - https-proxy-agent@5.0.1: + https-proxy-agent@7.0.6: dependencies: - agent-base: 6.0.2 + agent-base: 7.1.4 debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -13417,10 +13420,6 @@ snapshots: isexe@3.1.2: {} - isomorphic-ws@5.0.0(ws@8.18.3): - dependencies: - ws: 8.18.3 - isomorphic-ws@5.0.0(ws@8.20.0): dependencies: ws: 8.20.0 @@ -13499,31 +13498,28 @@ snapshots: jsdoc-type-pratt-parser@4.1.0: {} - jsdom@22.1.0: + jsdom@26.1.0: dependencies: - abab: 2.0.6 - cssstyle: 3.0.0 - data-urls: 4.0.0 + cssstyle: 4.6.0 + data-urls: 5.0.0 decimal.js: 10.6.0 - domexception: 4.0.0 - form-data: 4.0.4 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.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.20 parse5: 7.3.0 - rrweb-cssom: 0.6.0 + rrweb-cssom: 0.8.0 saxes: 6.0.0 symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 4.0.0 + tough-cookie: 5.1.2 + w3c-xmlserializer: 5.0.0 webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 12.0.1 - ws: 8.18.3 - xml-name-validator: 4.0.0 + whatwg-encoding: 3.1.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 14.2.0 + ws: 8.20.0 + xml-name-validator: 5.0.0 transitivePeerDependencies: - bufferutil - supports-color @@ -14659,10 +14655,6 @@ snapshots: proxy-from-env@2.1.0: {} - psl@1.15.0: - dependencies: - punycode: 2.3.1 - pstree.remy@1.1.8: {} punycode@2.3.1: {} @@ -14677,8 +14669,6 @@ snapshots: filter-obj: 5.1.0 split-on-first: 3.0.0 - querystringify@2.2.0: {} - queue-microtask@1.2.3: {} quickselect@2.0.0: {} @@ -15185,7 +15175,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.59.0 fsevents: 2.3.3 - rrweb-cssom@0.6.0: {} + rrweb-cssom@0.8.0: {} run-parallel@1.2.0: dependencies: @@ -15710,6 +15700,12 @@ snapshots: dependencies: tslib: 2.8.1 + tldts-core@6.1.86: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + to-buffer@1.2.1: dependencies: isarray: 2.0.5 @@ -15736,16 +15732,13 @@ snapshots: touch@3.1.1: {} - tough-cookie@4.1.4: + tough-cookie@5.1.2: dependencies: - psl: 1.15.0 - punycode: 2.3.1 - universalify: 0.2.0 - url-parse: 1.5.10 + tldts: 6.1.86 tr46@0.0.3: {} - tr46@4.1.1: + tr46@5.1.1: dependencies: punycode: 2.3.1 @@ -15962,8 +15955,6 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - universalify@0.2.0: {} - unixify@1.0.0: dependencies: normalize-path: 2.1.1 @@ -16027,11 +16018,6 @@ snapshots: dependencies: punycode: 2.3.1 - url-parse@1.5.10: - dependencies: - querystringify: 2.2.0 - requires-port: 1.0.0 - urlpattern-polyfill@10.1.0: {} use-debounce@10.0.6(react@18.2.0): @@ -16143,7 +16129,7 @@ snapshots: tsx: 4.20.3 yaml: 2.8.3 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@22.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@25.2.3)(jiti@2.4.2)(jsdom@26.1.0)(sass@1.97.3)(terser@5.46.0)(tsx@4.20.3)(yaml@2.8.3): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 @@ -16171,7 +16157,7 @@ snapshots: optionalDependencies: '@types/debug': 4.1.12 '@types/node': 25.2.3 - jsdom: 22.1.0 + jsdom: 26.1.0 transitivePeerDependencies: - jiti - less @@ -16192,9 +16178,9 @@ snapshots: '@mapbox/vector-tile': 1.3.1 pbf: 3.3.0 - w3c-xmlserializer@4.0.0: + w3c-xmlserializer@5.0.0: dependencies: - xml-name-validator: 4.0.0 + xml-name-validator: 5.0.0 warning@4.0.3: dependencies: @@ -16255,7 +16241,7 @@ snapshots: - esbuild - uglify-js - whatwg-encoding@2.0.0: + whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 @@ -16263,9 +16249,9 @@ snapshots: whatwg-mimetype@4.0.0: {} - whatwg-url@12.0.1: + whatwg-url@14.2.0: dependencies: - tr46: 4.1.1 + tr46: 5.1.1 webidl-conversions: 7.0.0 whatwg-url@5.0.0: @@ -16359,11 +16345,9 @@ snapshots: wrappy@1.0.2: {} - ws@8.18.3: {} - ws@8.20.0: {} - xml-name-validator@4.0.0: {} + xml-name-validator@5.0.0: {} xmlchars@2.2.0: {} diff --git a/ngui/ui/package.json b/ngui/ui/package.json index 63a288040..0f7538def 100644 --- a/ngui/ui/package.json +++ b/ngui/ui/package.json @@ -124,7 +124,7 @@ "@storybook/theming": "^8.6.14", "eslint-plugin-react": "7.37.5", "glob": "13.0.1", - "jsdom": "22.1.0", + "jsdom": "26.1.0", "redux-immutable-state-invariant": "2.1.0", "storybook": "8.6.17", "vitest": "3.2.4" From 108874dc8dc675e949a3e22845341282790f7125 Mon Sep 17 00:00:00 2001 From: ek-hystax <33006768+ek-hystax@users.noreply.github.com> Date: Wed, 22 Apr 2026 16:28:21 +0400 Subject: [PATCH 24/30] OSN-1437: Add data-test-ids to icons --- ngui/ui/src/components/Greeter/Greeter.tsx | 2 +- .../src/components/forms/common/fields/PasswordInput.tsx | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/ngui/ui/src/components/Greeter/Greeter.tsx b/ngui/ui/src/components/Greeter/Greeter.tsx index 0110406b3..ff8a06733 100644 --- a/ngui/ui/src/components/Greeter/Greeter.tsx +++ b/ngui/ui/src/components/Greeter/Greeter.tsx @@ -41,7 +41,7 @@ const OptScaleLink = () => { return ( } + icon={} label={ : } + icon={ + shouldShowPassword ? ( + + ) : ( + + ) + } color="primary" onClick={() => { inputRef.current.focus(); From 5578f703df0af9fb54d3f7e3a4da564d7e24713b Mon Sep 17 00:00:00 2001 From: nk-hystax <128669932+nk-hystax@users.noreply.github.com> Date: Mon, 27 Apr 2026 07:08:02 +0300 Subject: [PATCH 25/30] OSN-XXXX. Skip discovery in region on InternalError --- tools/cloud_adapter/clouds/aws.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/cloud_adapter/clouds/aws.py b/tools/cloud_adapter/clouds/aws.py index b1abd4743..78f34b5ab 100644 --- a/tools/cloud_adapter/clouds/aws.py +++ b/tools/cloud_adapter/clouds/aws.py @@ -337,7 +337,7 @@ def _is_region_usable(self, region): return False except ClientError as e: code = e.response["Error"]["Code"] - if code in ("AuthFailure", "UnauthorizedOperation"): + if code in ("AuthFailure", "UnauthorizedOperation", "InternalError"): return False raise From 0596f6f997b1466e5298eb2844db7b27d7a9132a Mon Sep 17 00:00:00 2001 From: Francesco Faraone Date: Mon, 27 Apr 2026 09:37:31 +0200 Subject: [PATCH 26/30] OTEL: shared OTEL setup; extend to auth & diworker - Move the OpenTelemetry setup logic from the rest_api service to a shared library within tools. - Extend telemetry to auth and diworker services. - New ClickHouse and Kombu instrumentors. - Better etcd configuration structure. - Per-service instrumentors enable flags. - Makes ngui Apollo server forward the `X-Trace-Id` header to the client. --- .dockerignore | 1 + auth/Dockerfile | 3 + auth/auth_server/handlers/v1/base.py | 5 + auth/auth_server/handlers/v2/tokens.py | 4 +- auth/auth_server/server.py | 11 + .../tests/unittests/test_api_base.py | 4 + auth/pyproject.toml | 4 + auth/run_test.sh | 2 +- auth/uv.lock | 715 ++++++++++++++-- diworker/diworker/main.py | 8 + diworker/pyproject.toml | 2 + diworker/uv.lock | 721 +++++++++++----- docker_images/configurator/configurator.py | 6 +- ngui/server/api/baseClient.ts | 45 +- ngui/server/config.ts | 19 + ngui/server/plugins/responseHeadersPlugin.ts | 36 + ngui/server/server.ts | 33 +- optscale-deploy/optscale/templates/auth.yaml | 4 + .../optscale/templates/diworker.yaml | 4 + .../optscale/templates/restapi.yaml | 6 - .../optscale/templates/tpl/_config.tpl | 43 +- optscale-deploy/optscale/values.yaml | 13 +- rest_api/pyproject.toml | 17 +- rest_api/rest_api_server/handlers/v1/base.py | 6 +- rest_api/rest_api_server/otel_config.py | 206 ----- rest_api/rest_api_server/server.py | 21 +- .../tests/unittests/test_api_base.py | 4 + rest_api/rest_api_server/utils.py | 8 - rest_api/uv.lock | 403 ++++----- tools/optscale_telemetry/Dockerfile_tests | 13 + tools/optscale_telemetry/__init__.py | 8 + tools/optscale_telemetry/pyproject.toml | 100 +++ .../tests/test_clickhouse_instrumentor.py | 153 ++++ .../tests/test_kombu_instrumentor.py | 151 ++++ .../tests/test_otel_config.py | 300 +++++++ tools/optscale_telemetry/tools/__init__.py | 0 .../tools/optscale_telemetry/__init__.py | 8 + .../clickhouse_instrumentor.py | 154 ++++ .../optscale_telemetry/kombu_instrumentor.py | 295 +++++++ .../tools/optscale_telemetry/otel_config.py | 231 +++++ .../tools/optscale_telemetry/utils.py | 9 + tools/optscale_telemetry/uv.lock | 790 ++++++++++++++++++ tools/run_test.sh | 20 + 43 files changed, 3840 insertions(+), 746 deletions(-) create mode 100644 ngui/server/config.ts create mode 100644 ngui/server/plugins/responseHeadersPlugin.ts delete mode 100644 rest_api/rest_api_server/otel_config.py create mode 100644 tools/optscale_telemetry/Dockerfile_tests create mode 100644 tools/optscale_telemetry/__init__.py create mode 100644 tools/optscale_telemetry/pyproject.toml create mode 100644 tools/optscale_telemetry/tests/test_clickhouse_instrumentor.py create mode 100644 tools/optscale_telemetry/tests/test_kombu_instrumentor.py create mode 100644 tools/optscale_telemetry/tests/test_otel_config.py create mode 100644 tools/optscale_telemetry/tools/__init__.py create mode 100644 tools/optscale_telemetry/tools/optscale_telemetry/__init__.py create mode 100644 tools/optscale_telemetry/tools/optscale_telemetry/clickhouse_instrumentor.py create mode 100644 tools/optscale_telemetry/tools/optscale_telemetry/kombu_instrumentor.py create mode 100644 tools/optscale_telemetry/tools/optscale_telemetry/otel_config.py create mode 100644 tools/optscale_telemetry/tools/optscale_telemetry/utils.py create mode 100644 tools/optscale_telemetry/uv.lock create mode 100755 tools/run_test.sh diff --git a/.dockerignore b/.dockerignore index c768d4396..b5ade8ea2 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,7 @@ .git .idea .vscode +.venv **/.env.sample **/.storybook diff --git a/auth/Dockerfile b/auth/Dockerfile index 1aceb1406..be045d337 100644 --- a/auth/Dockerfile +++ b/auth/Dockerfile @@ -26,6 +26,9 @@ COPY auth/auth_server/*.py ./auth/auth_server/ COPY auth/auth_server/alembic.template auth/auth_server/alembic.template COPY auth/auth_server/swagger auth/auth_server/swagger +COPY auth/pyproject.toml auth/pyproject.toml +COPY auth/uv.lock auth/uv.lock + RUN uv --project auth sync --locked --no-dev RUN uv --project auth run python -u auth/auth_server/write_spec.py diff --git a/auth/auth_server/handlers/v1/base.py b/auth/auth_server/handlers/v1/base.py index 2e52938c7..7d5f499c8 100644 --- a/auth/auth_server/handlers/v1/base.py +++ b/auth/auth_server/handlers/v1/base.py @@ -10,6 +10,7 @@ from tools.optscale_exceptions.common_exc import (WrongArgumentsException, UnauthorizedException) from tools.optscale_exceptions.http_exc import OptHTTPError +from tools.optscale_telemetry import get_trace_headers LOG = logging.getLogger(__name__) @@ -60,6 +61,10 @@ def put(self, *args, **kwargs): def options(self, *args, **kwargs): self.raise405() + def prepare(self): + for name, value in get_trace_headers().items(): + self.set_header(name, value) + def _get_request(self): return self.request diff --git a/auth/auth_server/handlers/v2/tokens.py b/auth/auth_server/handlers/v2/tokens.py index 528e4ffea..36421bd84 100644 --- a/auth/auth_server/handlers/v2/tokens.py +++ b/auth/auth_server/handlers/v2/tokens.py @@ -2,6 +2,7 @@ from tools.optscale_exceptions.common_exc import WrongArgumentsException from tools.optscale_exceptions.http_exc import OptHTTPError +from tools.optscale_telemetry import get_trace_headers from auth.auth_server.controllers.user import UserAsyncController from auth.auth_server.handlers.v1 import tokens as tokens_v1 @@ -12,7 +13,8 @@ class TokenAsyncCollectionHandler(tokens_v1.TokenAsyncCollectionHandler, BaseSecretHandler): def prepare(self): - pass + for name, value in get_trace_headers().items(): + self.set_header(name, value) async def post(self, **url_params): """ diff --git a/auth/auth_server/server.py b/auth/auth_server/server.py index 083f27583..988119edc 100644 --- a/auth/auth_server/server.py +++ b/auth/auth_server/server.py @@ -13,6 +13,7 @@ from auth.auth_server.handlers.v1.base import DefaultHandler from auth.auth_server.handlers.v1.swagger import SwaggerStaticFileHandler from auth.auth_server.models.db_factory import DBType, DBFactory +from tools.optscale_telemetry import OpenTelemetryConfig import optscale_client.config_client.client @@ -109,6 +110,16 @@ def make_app(db_type, etcd_host, etcd_port, wait=False): config_cl.wait_configured() db = DBFactory(db_type, config_cl).db db.create_schema() + + config = OpenTelemetryConfig( + service_name=os.getenv("OTEL_SERVICE_NAME", "auth"), + service_version=os.getenv("OTEL_SERVICE_VERSION", "local"), + otel_config=config_cl.read_branch("/opentelemetry"), + service_config=config_cl.read_branch("auth/opentelemetry"), + sqlalchemy_engine=db.engine, + ) + config.setup_open_telemetry() + handler_kwargs = { "engine": db.engine, "config": config_cl, diff --git a/auth/auth_server/tests/unittests/test_api_base.py b/auth/auth_server/tests/unittests/test_api_base.py index 329c657af..71adc1459 100644 --- a/auth/auth_server/tests/unittests/test_api_base.py +++ b/auth/auth_server/tests/unittests/test_api_base.py @@ -38,6 +38,10 @@ def get_auth_client(version="v1"): }.get(version) def setUp(self, version='v1'): + patch( + 'optscale_client.config_client.client.Client.read_branch', + return_value=None, + ).start() super().setUp() secret = gen_id() patch('optscale_client.config_client.client.Client.cluster_secret', diff --git a/auth/pyproject.toml b/auth/pyproject.toml index 04904cf46..105f7f541 100644 --- a/auth/pyproject.toml +++ b/auth/pyproject.toml @@ -12,6 +12,7 @@ dependencies = [ "optscale-exceptions", "optscale-password", "optscale-time", + "optscale-telemetry", "ordered-set==4.1.0", "pyjwt>=2.4.0", "pymacaroons==0.9.2", @@ -39,6 +40,7 @@ config-client = { path = "../optscale_client/config_client" } restapi-client = { path = "../optscale_client/rest_api_client" } auth-client = { path = "../optscale_client/auth_client" } check-alembic-down-revisions = { path = "../tools/check_alembic_down_revisions" } +optscale-telemetry = { path = "../tools/optscale_telemetry" } [dependency-groups] dev = [ @@ -48,4 +50,6 @@ dev = [ "freezegun==0.3.8", "pycodestyle==2.11.1", "pylint==3.0.3", + "pytest==8.4.2", + "pytest-xdist==3.6.1", ] diff --git a/auth/run_test.sh b/auth/run_test.sh index e80eb92e5..14f8a3959 100755 --- a/auth/run_test.sh +++ b/auth/run_test.sh @@ -23,7 +23,7 @@ echo "<>>" docker run -i --rm ${TEST_IMAGE} \ - bash -c "uv --project auth run python -m unittest discover ./auth/auth_server/tests" + bash -c "uv --project auth run pytest -n auto auth --disable-warnings" echo "<>; + private dataSourceName?: string; constructor(options: DataSourceConfig, token: string, endpoint: string) { super(options); @@ -10,9 +20,42 @@ class BaseClient extends RESTDataSource { this.endpoint = endpoint; } + setResponseHeadersStore(store: Map>, dataSourceName: string) { + this.responseHeadersStore = store; + this.dataSourceName = dataSourceName; + } + override willSendRequest(_path: string, request: AugmentedRequest) { request.headers["authorization"] = `Bearer ${this.token}`; } + + override async fetch( + path: string, + incomingRequest?: DataSourceRequest + ): Promise> { + // Call the parent fetch method + const result = await super.fetch(path, incomingRequest); + + // Store only specific headers for forwarding to GraphQL response + // Namespaced by data source to prevent race conditions + if (this.responseHeadersStore && this.dataSourceName) { + let dataSourceHeaders = this.responseHeadersStore.get(this.dataSourceName); + if (!dataSourceHeaders) { + dataSourceHeaders = new Map(); + this.responseHeadersStore.set(this.dataSourceName, dataSourceHeaders); + } + + // Store headers for this specific data source + for (const headerName of FORWARD_RESPONSE_HEADERS) { + const headerValue = result.response.headers.get(headerName); + if (headerValue) { + dataSourceHeaders.set(headerName, headerValue); + } + } + } + + return result; + } } export default BaseClient; diff --git a/ngui/server/config.ts b/ngui/server/config.ts new file mode 100644 index 000000000..4d5017add --- /dev/null +++ b/ngui/server/config.ts @@ -0,0 +1,19 @@ +/** + * Server configuration constants + */ + +/** + * HTTP headers to forward from REST API responses to GraphQL client responses + * Add any headers here that should be passed through from backend services + */ +const FORWARD_RESPONSE_HEADERS_ARRAY = ["x-trace-id", "etag"] as const; + +/** + * Set for O(1) lookup performance when checking headers + */ +export const FORWARD_RESPONSE_HEADERS = new Set(FORWARD_RESPONSE_HEADERS_ARRAY); + +/** + * Type helper for the forwarded headers + */ +export type ForwardedHeader = (typeof FORWARD_RESPONSE_HEADERS_ARRAY)[number]; diff --git a/ngui/server/plugins/responseHeadersPlugin.ts b/ngui/server/plugins/responseHeadersPlugin.ts new file mode 100644 index 000000000..c44354276 --- /dev/null +++ b/ngui/server/plugins/responseHeadersPlugin.ts @@ -0,0 +1,36 @@ +import type { ApolloServerPlugin } from "@apollo/server"; +import type { ContextValue } from "../server.js"; + +/** + * Plugin to forward response headers from REST API data sources to GraphQL client + * Headers are only prefixed with x-{dataSourceName}- if they would conflict with existing response headers + * Example: If GraphQL response already has 'etag', forwarded etag becomes 'x-restapi-etag' + */ +export const responseHeadersPlugin: ApolloServerPlugin = { + async requestDidStart() { + return { + async willSendResponse({ response, contextValue }) { + // Forward headers captured from REST API responses + if (contextValue.responseHeaders && response.http) { + // Collect all original response headers that already exist + const existingHeaders = new Set(); + response.http.headers.forEach((_, key) => { + existingHeaders.add(key.toLowerCase()); + }); + + contextValue.responseHeaders.forEach((dataSourceHeaders, dataSourceName) => { + dataSourceHeaders.forEach((value, headerName) => { + // Only add x-{dataSourceName}- prefix if header would conflict with existing response header + const needsPrefix = existingHeaders.has(headerName.toLowerCase()); + const prefixedHeaderName = needsPrefix ? `x-${dataSourceName}-${headerName}` : headerName; + + if (response.http) { + response.http.headers.set(prefixedHeaderName, value); + } + }); + }); + } + }, + }; + }, +}; diff --git a/ngui/server/server.ts b/ngui/server/server.ts index bf210dbcd..97d12c7bd 100644 --- a/ngui/server/server.ts +++ b/ngui/server/server.ts @@ -14,6 +14,7 @@ import SlackerClient from "./api/slacker/client.js"; import RestApiClient from "./api/restapi/client.js"; import AuthClient from "./api/auth/client.js"; import { schema } from "./graphql/schema.js"; +import { responseHeadersPlugin } from "./plugins/responseHeadersPlugin.js"; if (process.env.NODE_ENV === "development") { const dotenv = await import("dotenv"); @@ -31,6 +32,12 @@ app.set("trust proxy", 1); const httpServer = http.createServer(app); +/** + * Apollo Server context type + * @property dataSources - REST API client instances for backend services + * @property responseHeaders - Namespaced map storing response headers from REST API calls + * Structure: Map> + */ export interface ContextValue { dataSources: { keeper: KeeperClient; @@ -38,11 +45,12 @@ export interface ContextValue { restapi: RestApiClient; auth: AuthClient; }; + responseHeaders: Map>; } const server = new ApolloServer({ schema, - plugins: [ApolloServerPluginDrainHttpServer({ httpServer })], + plugins: [ApolloServerPluginDrainHttpServer({ httpServer }), responseHeadersPlugin], }); // Ensure we wait for our server to start @@ -61,16 +69,23 @@ app.use( const { cache } = server; const token = req.headers["x-optscale-token"] as string; + const responseHeaders = new Map>(); + + const keeper = new KeeperClient({ cache }, token, "http://keeper"); + const slacker = new SlackerClient({ cache }, token, "http://slacker"); + const restapi = new RestApiClient({ cache }, token, "http://restapi"); + const auth = new AuthClient({ cache }, token, "http://auth"); + + // Each client will store its captured headers under its own namespace + keeper.setResponseHeadersStore(responseHeaders, "keeper"); + slacker.setResponseHeadersStore(responseHeaders, "slacker"); + restapi.setResponseHeadersStore(responseHeaders, "restapi"); + auth.setResponseHeadersStore(responseHeaders, "auth"); return { - // We create new instances of our data sources with each request, - // passing in our server's cache. - dataSources: { - keeper: new KeeperClient({ cache }, token, "http://keeper"), - slacker: new SlackerClient({ cache }, token, "http://slacker"), - restapi: new RestApiClient({ cache }, token, "http://restapi"), - auth: new AuthClient({ cache }, token, "http://auth"), - }, + // Create new data source instances for this request with cache and context + dataSources: { keeper, slacker, restapi, auth }, + responseHeaders, }; }, }) diff --git a/optscale-deploy/optscale/templates/auth.yaml b/optscale-deploy/optscale/templates/auth.yaml index e01724964..aa3bd4bf7 100644 --- a/optscale-deploy/optscale/templates/auth.yaml +++ b/optscale-deploy/optscale/templates/auth.yaml @@ -64,4 +64,8 @@ spec: value: {{ $config.google_oauth_client_secret | quote }} - name: MICROSOFT_OAUTH_CLIENT_ID value: {{ $config.microsoft_oauth_client_id | quote }} + - name: OTEL_SERVICE_NAME + value: {{ $config.name }} + - name: OTEL_SERVICE_VERSION + value: {{ $config.image.tag }} {{ include "ready_probe" $config | indent 8 }} diff --git a/optscale-deploy/optscale/templates/diworker.yaml b/optscale-deploy/optscale/templates/diworker.yaml index 9f6158ffa..dfce89e4c 100644 --- a/optscale-deploy/optscale/templates/diworker.yaml +++ b/optscale-deploy/optscale/templates/diworker.yaml @@ -45,3 +45,7 @@ spec: value: {{ .Values.etcd.service.externalPort | quote }} - name: FAKE_CAD_ENABLED value: {{ .Values.fake_cad_enabled | quote }} + - name: OTEL_SERVICE_NAME + value: {{ $config.name }} + - name: OTEL_SERVICE_VERSION + value: {{ $config.image.tag }} diff --git a/optscale-deploy/optscale/templates/restapi.yaml b/optscale-deploy/optscale/templates/restapi.yaml index 60b1db931..66d34c2bc 100644 --- a/optscale-deploy/optscale/templates/restapi.yaml +++ b/optscale-deploy/optscale/templates/restapi.yaml @@ -69,14 +69,8 @@ spec: value: /etc/ssl/certs/ca-certificates.crt - name: FAKE_CAD_ENABLED value: {{ .Values.fake_cad_enabled | quote }} - - name: OTEL_ENABLED - value: {{ .Values.opentelemetry.enabled | quote }} - - name: OTEL_EXPORTER - value: {{ .Values.opentelemetry.exporter | quote}} - name: OTEL_SERVICE_NAME value: {{ $config.name }} - name: OTEL_SERVICE_VERSION value: {{ $config.image.tag }} - - name: OTEL_PYTHON_LOG_CORRELATION - value: "true" {{ include "ready_probe" $config | indent 8 }} diff --git a/optscale-deploy/optscale/templates/tpl/_config.tpl b/optscale-deploy/optscale/templates/tpl/_config.tpl index f1daf481c..91ff00076 100644 --- a/optscale-deploy/optscale/templates/tpl/_config.tpl +++ b/optscale-deploy/optscale/templates/tpl/_config.tpl @@ -92,9 +92,26 @@ etcd: report_imports: not_processed_threshold_secs: {{ .Values.import_reports.not_processed_threshold_secs }} message_expiration_secs: {{ .Values.import_reports.message_expiration_secs }} + opentelemetry: + enable_asyncio: true + enable_threading: true + enable_tornado: true + enable_urllib3: true + enable_requests: true + enable_sqlalchemy: true + enable_mongo: true + enable_kombu: true + enable_clickhouse: true auth: host: {{ .Values.auth.service.name }} port: {{ .Values.auth.service.externalPort }} + opentelemetry: + enable_asyncio: true + enable_threading: true + enable_tornado: true + enable_urllib3: true + enable_requests: true + enable_sqlalchemy: true katara: host: {{ .Values.katara_service.service.name }} port: {{ .Values.katara_service.service.externalPort }} @@ -271,6 +288,12 @@ etcd: demo_org_lifetime_hrs: {{ .Values.demo_org_cleanup.demo_org_lifetime_hrs }} diworker: max_report_imports_workers: {{ .Values.import_reports.max_workers }} + opentelemetry: + enable_threading: true + enable_urllib3: true + enable_requests: true + enable_kombu: true + enable_clickhouse: true exchange_rates: {{- range $currency, $rate := .Values.exchange_rates }} {{ $currency }}: {{ $rate }} @@ -279,17 +302,13 @@ etcd: api_key: {{ .Values.stripe.api_key }} webhook_secret: {{ .Values.stripe.webhook_secret }} enabled: {{ .Values.stripe.enabled }} -{{- if .Values.opentelemetry.enabled }} opentelemetry: -{{- if (and (eq .Values.opentelemetry.exporter "otlp") (.Values.tempo.enabled)) }} - tempo_host: {{ .Values.opentelemetry.exporters.tempo.host }} - tempo_port: {{ .Values.opentelemetry.exporters.tempo.port }} -{{- end }} -{{- if (eq .Values.opentelemetry.exporter "azure_monitor") }} - connection_string: {{ .Values.opentelemetry.exporters.azure_monitor.connection_string }} -{{- end }} - enable_sqlalchemy: {{ .Values.opentelemetry.enable_sqlalchemy | quote }} - enable_future_traces: {{ .Values.opentelemetry.enable_future_traces | quote }} - enable_mongo_statements: {{ .Values.opentelemetry.enable_mongo_statements | quote }} -{{- end }} + enabled: {{ .Values.opentelemetry.enabled }} + {{- if .Values.opentelemetry.enabled }} + exporter: + type: {{ .Values.opentelemetry.exporter.type }} + {{- if or (eq .Values.opentelemetry.exporter.type "otlp") (eq .Values.opentelemetry.exporter.type "azure_monitor") }} + connection_string: {{ .Values.opentelemetry.exporter.connection_string }} + {{- end }} + {{- end }} {{- end }} diff --git a/optscale-deploy/optscale/values.yaml b/optscale-deploy/optscale/values.yaml index 77c5a18e7..d56b3fa9c 100644 --- a/optscale-deploy/optscale/values.yaml +++ b/optscale-deploy/optscale/values.yaml @@ -1132,13 +1132,6 @@ stripe: #open telemetry settings opentelemetry: enabled: true - exporter: otlp - exporters: - azure_monitor: - connection_string: connectionString - tempo: - port: 4317 - host: tempo.default.svc.cluster.local - enable_sqlalchemy: true - enable_future_traces: true - enable_mongo_statements: true + exporter: + type: otlp + connection_string: http://tempo.default.svc.cluster.local:4317 diff --git a/rest_api/pyproject.toml b/rest_api/pyproject.toml index d325d6997..9263674a1 100644 --- a/rest_api/pyproject.toml +++ b/rest_api/pyproject.toml @@ -7,7 +7,6 @@ dependencies = [ "alembic==1.13.1", "apispec==6.3.1", "auth-client", - "azure-monitor-opentelemetry-exporter==1.0.0b35", "boto3==1.34.7", "clickhouse-connect==0.8.15", "cloud-adapter", @@ -25,23 +24,12 @@ dependencies = [ "metroculus-client", "mysql-connector-python==9.1.0", "netaddr==0.7.19", - "opentelemetry-api==1.33.*", - "opentelemetry-sdk==1.33.*", - "opentelemetry-exporter-otlp-proto-http==1.33.*", - "opentelemetry-exporter-otlp-proto-grpc==1.33.*", - "opentelemetry-instrumentation-asyncio==0.54b0", - "opentelemetry-instrumentation-logging==0.54b0", - "opentelemetry-instrumentation-pymongo==0.54b0", - "opentelemetry-instrumentation-requests==0.54b0", - "opentelemetry-instrumentation-sqlalchemy==0.54b0", - "opentelemetry-instrumentation-threading==0.54b0", - "opentelemetry-instrumentation-tornado==0.54b0", - "opentelemetry-instrumentation-urllib3==0.54b0", "optscale-data", "optscale-exceptions", "optscale-password", "optscale-time", "optscale-types", + "optscale-telemetry", "protobuf>=5.29.1,<6", "pydevd-pycharm==201.5616.27", "pymongo==4.6.3", @@ -60,7 +48,7 @@ dev = [ "mongomock==4.1.2", "pycodestyle==2.11.1", "pylint==3.0.2", - "pytest==8.1.0", + "pytest==8.4.2", "pytest-xdist==3.5.0", "restapi-client", "setuptools==80.9.0", @@ -90,3 +78,4 @@ cloud-adapter = { path = "../tools/cloud_adapter", editable = true } check-alembic-down-revisions = { path = "../tools/check_alembic_down_revisions", editable = true } restapi-client = { path = "../optscale_client/rest_api_client", editable = true } subspector-client = { path = "../optscale_client/subspector_client", editable = true } +optscale-telemetry = { path = "../tools/optscale_telemetry", editable = true } diff --git a/rest_api/rest_api_server/handlers/v1/base.py b/rest_api/rest_api_server/handlers/v1/base.py index d326d386c..0b48044f1 100644 --- a/rest_api/rest_api_server/handlers/v1/base.py +++ b/rest_api/rest_api_server/handlers/v1/base.py @@ -34,12 +34,12 @@ Config, ModelEncoder, get_http_error_info, - get_trace_headers, run_task, tp_executor, ) from tools.optscale_exceptions.common_exc import WrongArgumentsException from tools.optscale_exceptions.http_exc import OptHTTPError +from tools.optscale_telemetry import get_trace_headers LOG = logging.getLogger(__name__) @@ -107,8 +107,8 @@ def session(self): return self._session() def prepare(self): - for k, v in get_trace_headers().items(): - self.set_header(k, v) + for name, value in get_trace_headers().items(): + self.set_header(name, value) self.set_content_type() if self.request.method == 'POST': diff --git a/rest_api/rest_api_server/otel_config.py b/rest_api/rest_api_server/otel_config.py deleted file mode 100644 index 85bc15f4b..000000000 --- a/rest_api/rest_api_server/otel_config.py +++ /dev/null @@ -1,206 +0,0 @@ -import atexit -import enum -import logging -import os -from typing import Any - -import optscale_client.config_client.client - -from opentelemetry import trace -from opentelemetry.instrumentation.urllib3 import RequestInfo -from opentelemetry.sdk._logs.export import BatchLogRecordProcessor -from opentelemetry.sdk.resources import SERVICE_NAME, SERVICE_VERSION, Resource -from opentelemetry.sdk.trace import Span, TracerProvider -from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter -from urllib3.connectionpool import HTTPConnectionPool - - -LOG = logging.getLogger(__name__) - - -class OTELException(Exception): - pass - - -class OpenTelemetryExporter(str, enum.Enum): - CONSOLE = "console" - OTLP = "otlp" - AZURE_MONITOR = "azure_monitor" - - @classmethod - def from_env(cls) -> 'OpenTelemetryExporter': - exporter_str = os.environ.get('OTEL_EXPORTER', 'console').lower() - - try: - return cls(exporter_str) - except ValueError: - LOG.warning("Invalid OTEL_EXPORTER value: %s, defaulting to CONSOLE", exporter_str) - return cls.CONSOLE - - -class OpenTelemetryConfig: - service_name: str - service_version: str - otel_exporter: OpenTelemetryExporter - params: dict[str, Any] - - def __init__( - self, - *, - service_name: str | None = None, - service_version: str | None = None, - otel_exporter: OpenTelemetryExporter | None = None, - ): - self.service_name = service_name or os.environ.get('OTEL_SERVICE_NAME') - self.service_version = service_version or os.environ.get('OTEL_SERVICE_VERSION') - self.otel_exporter = otel_exporter or OpenTelemetryExporter.from_env() - - @classmethod - def is_enabled(cls) -> bool: - return os.environ.get('OTEL_ENABLED', '0').lower() in ('true', '1', 'yes') - - def setup_open_telemetry(self, etcd_host, etcd_port, wait=True): - resource = Resource(attributes={ - SERVICE_NAME: self.service_name, - SERVICE_VERSION: self.service_version, - }) - - config_cl = optscale_client.config_client.client.Client( - host=etcd_host, - port=etcd_port, - ) - if wait: - config_cl.wait_configured() - self.params = config_cl.read_branch('/opentelemetry') - - self.setup_tracing(resource) - - def setup_tracing(self, resource: Resource): - tracer_provider = TracerProvider(resource=resource) - - if self.otel_exporter == OpenTelemetryExporter.OTLP: - from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter - - tempo_host = self.params.get('tempo_host') - tempo_port = self.params.get('tempo_port') - if not (tempo_host and tempo_port): - raise OTELException("OTLP tempo exporter is misconfigured") - - span_exporter = OTLPSpanExporter(endpoint=f"http://{tempo_host}:{tempo_port}") - LOG.info("Configured gRPC OTLP Span Exporter") - - elif self.otel_exporter == OpenTelemetryExporter.AZURE_MONITOR: - from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter - - connection_string = self.params.get('connection_string') - if not connection_string: - raise OTELException("Azure Monitor exporter is misconfigured") - - span_exporter = AzureMonitorTraceExporter(connection_string=connection_string) - LOG.info("Configured Azure Monitor Exporter with endpoint") - - else: - span_exporter = ConsoleSpanExporter() - LOG.info("Configured ConsoleSpanExporter") - - span_processor = BatchSpanProcessor(span_exporter) - tracer_provider.add_span_processor(span_processor) - - trace.set_tracer_provider(tracer_provider) - - def shutdown(self): - if not self.is_enabled(): - return - - tracer_provider = trace.get_tracer_provider() - if hasattr(tracer_provider, 'shutdown'): - tracer_provider.shutdown() - LOG.info("OpenTelemetry tracer provider shutdown complete") - - def instrument_asyncio(self): - if self.params.get('enable_future_traces') not in ('true', '1'): - return - - from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor - - AsyncioInstrumentor().instrument() - - def instrument_mongo(self): - from opentelemetry.instrumentation.pymongo import PymongoInstrumentor - - capture_statement = self.params.get('enable_mongo_statements') in ('true', '1') - PymongoInstrumentor().instrument(capture_statement=capture_statement) - - def instrument_requests(self): - from opentelemetry.instrumentation.requests import RequestsInstrumentor - - RequestsInstrumentor().instrument() - - def instrument_sqlalchemy(self, engine): - if self.params.get('enable_sqlalchemy') not in ('true', '1'): - return - - from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor - - SQLAlchemyInstrumentor().instrument(engine=engine, enable_commenter=True) - - def instrument_threading(self): - from opentelemetry.instrumentation.threading import ThreadingInstrumentor - - ThreadingInstrumentor().instrument() - - def instrument_tornado(self): - from opentelemetry.instrumentation.tornado import TornadoInstrumentor - - TornadoInstrumentor().instrument() - - def instrument_urllib3(self): - from opentelemetry.instrumentation.urllib3 import URLLib3Instrumentor - - def urllib3_request_hook( - span: Span, - pool: HTTPConnectionPool, - request_info: RequestInfo, - ) -> Any: - if not span or not span.is_recording(): - return - - url = request_info.url.lower() - - if "clickhouse" in url: - span.set_attribute("peer.service", "clickhouse") - span.set_attribute("db.system", "clickhouse") - span.update_name("HTTP clickhouse") - return - - if "etcd" in url: - span.set_attribute("peer.service", "etcd") - span.set_attribute("component", "etcd") - span.update_name("HTTP etcd") - return - - URLLib3Instrumentor().instrument( - request_hook=urllib3_request_hook, - ) - - -def setup_otel_config(etcd_host, etcd_port, wait=True) -> OpenTelemetryConfig | None: - otel_config = OpenTelemetryConfig() - - if otel_config.is_enabled(): - try: - otel_config.setup_open_telemetry(etcd_host, etcd_port, wait) - except OTELException as exc: - LOG.error(exc) - return None - - otel_config.instrument_threading() - otel_config.instrument_asyncio() - otel_config.instrument_tornado() - otel_config.instrument_requests() - otel_config.instrument_urllib3() - otel_config.instrument_mongo() - - atexit.register(otel_config.shutdown) - - return otel_config diff --git a/rest_api/rest_api_server/server.py b/rest_api/rest_api_server/server.py index 84d11a45d..e4d2aca16 100644 --- a/rest_api/rest_api_server/server.py +++ b/rest_api/rest_api_server/server.py @@ -3,19 +3,19 @@ import os import tarfile -import optscale_client.config_client.client import pydevd_pycharm import tornado.ioloop from etcd import Lock as EtcdLock from tornado.web import RedirectHandler +import optscale_client.config_client.client import rest_api.rest_api_server.handlers.v1 as h_v1 import rest_api.rest_api_server.handlers.v2 as h_v2 from rest_api.rest_api_server.constants import urls_v2 from rest_api.rest_api_server.handlers.v1.base import DefaultHandler from rest_api.rest_api_server.handlers.v1.swagger import SwaggerStaticFileHandler from rest_api.rest_api_server.models.db_factory import DBFactory, DBType -from rest_api.rest_api_server.otel_config import setup_otel_config +from tools.optscale_telemetry import OpenTelemetryConfig DEFAULT_PORT = 8999 DEFAULT_ETCD_HOST = 'etcd' @@ -495,8 +495,14 @@ def make_app(db_type, etcd_host, etcd_port, wait=False, otel_config=None): else: db.create_schema() - if otel_config and otel_config.is_enabled(): - otel_config.instrument_sqlalchemy(db.engine) + config = OpenTelemetryConfig( + service_name=os.getenv("OTEL_SERVICE_NAME", "restapi"), + service_version=os.getenv("OTEL_SERVICE_VERSION", "local"), + otel_config=config_cl.read_branch("/opentelemetry"), + service_config=config_cl.read_branch("restapi/opentelemetry"), + sqlalchemy_engine=db.engine, + ) + config.setup_open_telemetry() handler_kwargs = { "engine": db.engine, @@ -529,18 +535,11 @@ def main(): parser.add_argument('--etcdport', type=int, default=etcd_port) args = parser.parse_args() - otel_config = setup_otel_config( - etcd_host=args.etcdhost, - etcd_port=args.etcdport, - wait=True, - ) - app = make_app( db_type=DBType.MySQL, etcd_host=args.etcdhost, etcd_port=args.etcdport, wait=True, - otel_config=otel_config, ) try: with tarfile.open(PRESET_TAR_XZ, 'r:xz') as f: diff --git a/rest_api/rest_api_server/tests/unittests/test_api_base.py b/rest_api/rest_api_server/tests/unittests/test_api_base.py index def9b458a..027bf91f9 100644 --- a/rest_api/rest_api_server/tests/unittests/test_api_base.py +++ b/rest_api/rest_api_server/tests/unittests/test_api_base.py @@ -35,6 +35,10 @@ def get_app(self): return make_app(DBType.Test, '127.0.0.1', 80) def setUp(self, version='v2'): + patch( + 'optscale_client.config_client.client.Client.read_branch', + return_value=None, + ).start() super().setUp() os.environ['ASYNC_TEST_TIMEOUT'] = '30' patch( diff --git a/rest_api/rest_api_server/utils.py b/rest_api/rest_api_server/utils.py index 10ed58d1f..4c9de9507 100644 --- a/rest_api/rest_api_server/utils.py +++ b/rest_api/rest_api_server/utils.py @@ -607,11 +607,3 @@ def inner(*args, **kwargs): def timestamp_to_day_start(timestamp) -> datetime: return utcfromtimestamp(timestamp).replace( hour=0, minute=0, second=0, microsecond=0) - - -def get_trace_headers(): - ctx = trace.get_current_span().get_span_context() - if not ctx.is_valid: - return {} - tid = format(ctx.trace_id, "032x") - return {"x-trace-id": tid} diff --git a/rest_api/uv.lock b/rest_api/uv.lock index 0177bf498..0d75ad936 100644 --- a/rest_api/uv.lock +++ b/rest_api/uv.lock @@ -211,15 +211,15 @@ wheels = [ [[package]] name = "azure-core" -version = "1.36.0" +version = "1.38.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c4/d4ff3bc3ddf155156460bff340bbe9533f99fac54ddea165f35a8619f162/azure_core-1.36.0.tar.gz", hash = "sha256:22e5605e6d0bf1d229726af56d9e92bc37b6e726b141a18be0b4d424131741b7", size = 351139, upload-time = "2025-10-15T00:33:49.083Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c8/29/9641b73248745774a52c7ce7f965ed1febbdea787ec21caad3ae6891d18a/azure_core-1.38.3.tar.gz", hash = "sha256:a7931fd445cb4af8802c6f39c6a326bbd1e34b115846550a8245fa656ead6f8e", size = 367267, upload-time = "2026-03-12T20:28:21.122Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/3c/b90d5afc2e47c4a45f4bba00f9c3193b0417fad5ad3bb07869f9d12832aa/azure_core-1.36.0-py3-none-any.whl", hash = "sha256:fee9923a3a753e94a259563429f3644aaf05c486d45b1215d098115102d91d3b", size = 213302, upload-time = "2025-10-15T00:33:51.058Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3d/ac86083efa45a439d0bbfb7947615227813d368b9e1e93d23fd30de6fec0/azure_core-1.38.3-py3-none-any.whl", hash = "sha256:bf59d29765bf4748ab9edf25f98a30b7ea9797f43e367c06d846a30b29c1f845", size = 218231, upload-time = "2026-03-12T20:28:22.462Z" }, ] [[package]] @@ -436,22 +436,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bc/47/e35f788047c91110f48703a6254e5c84e33111b3291f7b57a653ca00accf/botocore-1.34.162-py3-none-any.whl", hash = "sha256:2d918b02db88d27a75b48275e6fb2506e9adaaddbec1ffa6a8a0898b34e769be", size = 12468049, upload-time = "2024-08-15T19:25:18.301Z" }, ] -[[package]] -name = "cachetools" -version = "6.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/7e/b975b5814bd36faf009faebe22c1072a1fa1168db34d285ef0ba071ad78c/cachetools-6.2.1.tar.gz", hash = "sha256:3f391e4bd8f8bf0931169baf7456cc822705f4e2a31f840d218f445b9a854201", size = 31325, upload-time = "2025-10-12T14:55:30.139Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/c5/1e741d26306c42e2bf6ab740b2202872727e0f606033c9dd713f8b93f5a8/cachetools-6.2.1-py3-none-any.whl", hash = "sha256:09868944b6dde876dfd44e1d47e18484541eaf12f26f29b7af91b26cc892d701", size = 11280, upload-time = "2025-10-12T14:55:28.382Z" }, -] - [[package]] name = "certifi" -version = "2025.10.5" +version = "2026.2.25" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/5b/b6ce21586237c77ce67d01dc5507039d444b630dd76611bbca2d8e5dcd91/certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43", size = 164519, upload-time = "2025-10-05T04:12:15.808Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/37/af0d2ef3967ac0d6113837b44a4f0bfe1328c2b9763bd5b1744520e5cfed/certifi-2025.10.5-py3-none-any.whl", hash = "sha256:0f212c2744a9bb6de0c56639a6f68afe01ecd92d91f14ae897c4fe7bbeeef0de", size = 163286, upload-time = "2025-10-05T04:12:14.03Z" }, + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, ] [[package]] @@ -479,27 +470,27 @@ wheels = [ [[package]] name = "charset-normalizer" -version = "3.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/85/1637cd4af66fa687396e757dec650f28025f2a2f5a5531a3208dc0ec43f2/charset_normalizer-3.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0a98e6759f854bd25a58a73fa88833fba3b7c491169f86ce1180c948ab3fd394", size = 208425, upload-time = "2025-10-14T04:40:53.353Z" }, - { url = "https://files.pythonhosted.org/packages/9d/6a/04130023fef2a0d9c62d0bae2649b69f7b7d8d24ea5536feef50551029df/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b5b290ccc2a263e8d185130284f8501e3e36c5e02750fc6b6bdeb2e9e96f1e25", size = 148162, upload-time = "2025-10-14T04:40:54.558Z" }, - { url = "https://files.pythonhosted.org/packages/78/29/62328d79aa60da22c9e0b9a66539feae06ca0f5a4171ac4f7dc285b83688/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74bb723680f9f7a6234dcf67aea57e708ec1fbdf5699fb91dfd6f511b0a320ef", size = 144558, upload-time = "2025-10-14T04:40:55.677Z" }, - { url = "https://files.pythonhosted.org/packages/86/bb/b32194a4bf15b88403537c2e120b817c61cd4ecffa9b6876e941c3ee38fe/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1e34719c6ed0b92f418c7c780480b26b5d9c50349e9a9af7d76bf757530350d", size = 161497, upload-time = "2025-10-14T04:40:57.217Z" }, - { url = "https://files.pythonhosted.org/packages/19/89/a54c82b253d5b9b111dc74aca196ba5ccfcca8242d0fb64146d4d3183ff1/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:2437418e20515acec67d86e12bf70056a33abdacb5cb1655042f6538d6b085a8", size = 159240, upload-time = "2025-10-14T04:40:58.358Z" }, - { url = "https://files.pythonhosted.org/packages/c0/10/d20b513afe03acc89ec33948320a5544d31f21b05368436d580dec4e234d/charset_normalizer-3.4.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:11d694519d7f29d6cd09f6ac70028dba10f92f6cdd059096db198c283794ac86", size = 153471, upload-time = "2025-10-14T04:40:59.468Z" }, - { url = "https://files.pythonhosted.org/packages/61/fa/fbf177b55bdd727010f9c0a3c49eefa1d10f960e5f09d1d887bf93c2e698/charset_normalizer-3.4.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:ac1c4a689edcc530fc9d9aa11f5774b9e2f33f9a0c6a57864e90908f5208d30a", size = 150864, upload-time = "2025-10-14T04:41:00.623Z" }, - { url = "https://files.pythonhosted.org/packages/05/12/9fbc6a4d39c0198adeebbde20b619790e9236557ca59fc40e0e3cebe6f40/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:21d142cc6c0ec30d2efee5068ca36c128a30b0f2c53c1c07bd78cb6bc1d3be5f", size = 150647, upload-time = "2025-10-14T04:41:01.754Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1f/6a9a593d52e3e8c5d2b167daf8c6b968808efb57ef4c210acb907c365bc4/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:5dbe56a36425d26d6cfb40ce79c314a2e4dd6211d51d6d2191c00bed34f354cc", size = 145110, upload-time = "2025-10-14T04:41:03.231Z" }, - { url = "https://files.pythonhosted.org/packages/30/42/9a52c609e72471b0fc54386dc63c3781a387bb4fe61c20231a4ebcd58bdd/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:5bfbb1b9acf3334612667b61bd3002196fe2a1eb4dd74d247e0f2a4d50ec9bbf", size = 162839, upload-time = "2025-10-14T04:41:04.715Z" }, - { url = "https://files.pythonhosted.org/packages/c4/5b/c0682bbf9f11597073052628ddd38344a3d673fda35a36773f7d19344b23/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:d055ec1e26e441f6187acf818b73564e6e6282709e9bcb5b63f5b23068356a15", size = 150667, upload-time = "2025-10-14T04:41:05.827Z" }, - { url = "https://files.pythonhosted.org/packages/e4/24/a41afeab6f990cf2daf6cb8c67419b63b48cf518e4f56022230840c9bfb2/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:af2d8c67d8e573d6de5bc30cdb27e9b95e49115cd9baad5ddbd1a6207aaa82a9", size = 160535, upload-time = "2025-10-14T04:41:06.938Z" }, - { url = "https://files.pythonhosted.org/packages/2a/e5/6a4ce77ed243c4a50a1fecca6aaaab419628c818a49434be428fe24c9957/charset_normalizer-3.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:780236ac706e66881f3b7f2f32dfe90507a09e67d1d454c762cf642e6e1586e0", size = 154816, upload-time = "2025-10-14T04:41:08.101Z" }, - { url = "https://files.pythonhosted.org/packages/a8/ef/89297262b8092b312d29cdb2517cb1237e51db8ecef2e9af5edbe7b683b1/charset_normalizer-3.4.4-cp312-cp312-win32.whl", hash = "sha256:5833d2c39d8896e4e19b689ffc198f08ea58116bee26dea51e362ecc7cd3ed26", size = 99694, upload-time = "2025-10-14T04:41:09.23Z" }, - { url = "https://files.pythonhosted.org/packages/3d/2d/1e5ed9dd3b3803994c155cd9aacb60c82c331bad84daf75bcb9c91b3295e/charset_normalizer-3.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:a79cfe37875f822425b89a82333404539ae63dbdddf97f84dcbc3d339aae9525", size = 107131, upload-time = "2025-10-14T04:41:10.467Z" }, - { url = "https://files.pythonhosted.org/packages/d0/d9/0ed4c7098a861482a7b6a95603edce4c0d9db2311af23da1fb2b75ec26fc/charset_normalizer-3.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:376bec83a63b8021bb5c8ea75e21c4ccb86e7e45ca4eb81146091b56599b80c3", size = 100390, upload-time = "2025-10-14T04:41:11.915Z" }, - { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" }, +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d8/a54f7c0b96f1df3563e9190f04daf981e365a9b397eedfdfb5dbef7e5c6c/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0294916d6ccf2d069727d65973c3a1ca477d68708db25fd758dd28b0827cff54", size = 189356, upload-time = "2026-03-06T06:01:16.511Z" }, + { url = "https://files.pythonhosted.org/packages/42/69/2bf7f76ce1446759a5787cb87d38f6a61eb47dbbdf035cfebf6347292a65/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc57a0baa3eeedd99fafaef7511b5a6ef4581494e8168ee086031744e2679467", size = 206369, upload-time = "2026-03-06T06:01:17.853Z" }, + { url = "https://files.pythonhosted.org/packages/10/9c/949d1a46dab56b959d9a87272482195f1840b515a3380e39986989a893ae/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ed1a9a204f317ef879b32f9af507d47e49cd5e7f8e8d5d96358c98373314fc60", size = 203285, upload-time = "2026-03-06T06:01:19.473Z" }, + { url = "https://files.pythonhosted.org/packages/67/5c/ae30362a88b4da237d71ea214a8c7eb915db3eec941adda511729ac25fa2/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad83b8f9379176c841f8865884f3514d905bcd2a9a3b210eaa446e7d2223e4d", size = 196274, upload-time = "2026-03-06T06:01:20.728Z" }, + { url = "https://files.pythonhosted.org/packages/b2/07/c9f2cb0e46cb6d64fdcc4f95953747b843bb2181bda678dc4e699b8f0f9a/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:a118e2e0b5ae6b0120d5efa5f866e58f2bb826067a646431da4d6a2bdae7950e", size = 184715, upload-time = "2026-03-06T06:01:22.194Z" }, + { url = "https://files.pythonhosted.org/packages/36/64/6b0ca95c44fddf692cd06d642b28f63009d0ce325fad6e9b2b4d0ef86a52/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:754f96058e61a5e22e91483f823e07df16416ce76afa4ebf306f8e1d1296d43f", size = 193426, upload-time = "2026-03-06T06:01:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/50/bc/a730690d726403743795ca3f5bb2baf67838c5fea78236098f324b965e40/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c300cefd9b0970381a46394902cd18eaf2aa00163f999590ace991989dcd0fc", size = 191780, upload-time = "2026-03-06T06:01:25.053Z" }, + { url = "https://files.pythonhosted.org/packages/97/4f/6c0bc9af68222b22951552d73df4532b5be6447cee32d58e7e8c74ecbb7b/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c108f8619e504140569ee7de3f97d234f0fbae338a7f9f360455071ef9855a95", size = 185805, upload-time = "2026-03-06T06:01:26.294Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b9/a523fb9b0ee90814b503452b2600e4cbc118cd68714d57041564886e7325/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d1028de43596a315e2720a9849ee79007ab742c06ad8b45a50db8cdb7ed4a82a", size = 208342, upload-time = "2026-03-06T06:01:27.55Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/c59e761dee4464050713e50e27b58266cc8e209e518c0b378c1580c959ba/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:19092dde50335accf365cce21998a1c6dd8eafd42c7b226eb54b2747cdce2fac", size = 193661, upload-time = "2026-03-06T06:01:29.051Z" }, + { url = "https://files.pythonhosted.org/packages/1c/43/729fa30aad69783f755c5ad8649da17ee095311ca42024742701e202dc59/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4354e401eb6dab9aed3c7b4030514328a6c748d05e1c3e19175008ca7de84fb1", size = 204819, upload-time = "2026-03-06T06:01:30.298Z" }, + { url = "https://files.pythonhosted.org/packages/87/33/d9b442ce5a91b96fc0840455a9e49a611bbadae6122778d0a6a79683dd31/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a68766a3c58fde7f9aaa22b3786276f62ab2f594efb02d0a1421b6282e852e98", size = 198080, upload-time = "2026-03-06T06:01:31.478Z" }, + { url = "https://files.pythonhosted.org/packages/56/5a/b8b5a23134978ee9885cee2d6995f4c27cc41f9baded0a9685eabc5338f0/charset_normalizer-3.4.5-cp312-cp312-win32.whl", hash = "sha256:1827734a5b308b65ac54e86a618de66f935a4f63a8a462ff1e19a6788d6c2262", size = 132630, upload-time = "2026-03-06T06:01:33.056Z" }, + { url = "https://files.pythonhosted.org/packages/70/53/e44a4c07e8904500aec95865dc3f6464dc3586a039ef0df606eb3ac38e35/charset_normalizer-3.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:728c6a963dfab66ef865f49286e45239384249672cd598576765acc2a640a636", size = 142856, upload-time = "2026-03-06T06:01:34.489Z" }, + { url = "https://files.pythonhosted.org/packages/ea/aa/c5628f7cad591b1cf45790b7a61483c3e36cf41349c98af7813c483fd6e8/charset_normalizer-3.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:75dfd1afe0b1647449e852f4fb428195a7ed0588947218f7ba929f6538487f02", size = 132982, upload-time = "2026-03-06T06:01:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, ] [[package]] @@ -719,23 +710,23 @@ wheels = [ [[package]] name = "deprecated" -version = "1.2.18" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744, upload-time = "2025-01-27T10:46:25.7Z" } +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998, upload-time = "2025-01-27T10:46:09.186Z" }, + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, ] [[package]] name = "dill" -version = "0.4.0" +version = "0.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/80/630b4b88364e9a8c8c5797f4602d0f76ef820909ee32f0bacb9f90654042/dill-0.4.0.tar.gz", hash = "sha256:0633f1d2df477324f53a895b02c901fb961bdbf65a17122586ea7019292cbcf0", size = 186976, upload-time = "2025-04-16T00:41:48.867Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/e1/56027a71e31b02ddc53c7d65b01e68edf64dea2932122fe7746a516f75d5/dill-0.4.1.tar.gz", hash = "sha256:423092df4182177d4d8ba8290c8a5b640c66ab35ec7da59ccfa00f6fa3eea5fa", size = 187315, upload-time = "2026-01-19T02:36:56.85Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/3d/9373ad9c56321fdab5b41197068e1d8c25883b3fea29dd361f9b55116869/dill-0.4.0-py3-none-any.whl", hash = "sha256:44f54bf6412c2c8464c14e8243eb163690a9800dbe2c367330883b19c7561049", size = 119668, upload-time = "2025-04-16T00:41:47.671Z" }, + { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" }, ] [[package]] @@ -749,11 +740,11 @@ wheels = [ [[package]] name = "execnet" -version = "2.1.1" +version = "2.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524, upload-time = "2024-04-08T09:04:19.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/89/780e11f9588d9e7128a3f87788354c7946a9cbb1401ad38a48c4db9a4f07/execnet-2.1.2.tar.gz", hash = "sha256:63d83bfdd9a23e35b9c6a3261412324f964c2ec8dcd8d3c6916ee9373e0befcd", size = 166622, upload-time = "2025-11-12T09:56:37.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612, upload-time = "2024-04-08T09:04:17.414Z" }, + { url = "https://files.pythonhosted.org/packages/ab/84/02fc1827e8cdded4aa65baef11296a9bbe595c474f0d6d758af082d849fd/execnet-2.1.2-py3-none-any.whl", hash = "sha256:67fba928dd5a544b783f6056f449e5e3931a5c378b128bc18501f7ea79e296ec", size = 40708, upload-time = "2025-11-12T09:56:36.333Z" }, ] [[package]] @@ -780,7 +771,7 @@ wheels = [ [[package]] name = "google-api-core" -version = "2.26.0" +version = "2.30.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, @@ -789,9 +780,9 @@ dependencies = [ { name = "protobuf" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/32/ea/e7b6ac3c7b557b728c2d0181010548cbbdd338e9002513420c5a354fa8df/google_api_core-2.26.0.tar.gz", hash = "sha256:e6e6d78bd6cf757f4aee41dcc85b07f485fbb069d5daa3afb126defba1e91a62", size = 166369, upload-time = "2025-10-08T21:37:38.39Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/98/586ec94553b569080caef635f98a3723db36a38eac0e3d7eb3ea9d2e4b9a/google_api_core-2.30.0.tar.gz", hash = "sha256:02edfa9fab31e17fc0befb5f161b3bf93c9096d99aed584625f38065c511ad9b", size = 176959, upload-time = "2026-02-18T20:28:11.926Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/ad/f73cf9fe9bd95918502b270e3ddb8764e4c900b3bbd7782b90c56fac14bb/google_api_core-2.26.0-py3-none-any.whl", hash = "sha256:2b204bd0da2c81f918e3582c48458e24c11771f987f6258e6e227212af78f3ed", size = 162505, upload-time = "2025-10-08T21:37:36.651Z" }, + { url = "https://files.pythonhosted.org/packages/45/27/09c33d67f7e0dcf06d7ac17d196594e66989299374bfb0d4331d1038e76b/google_api_core-2.30.0-py3-none-any.whl", hash = "sha256:80be49ee937ff9aba0fd79a6eddfde35fe658b9953ab9b79c57dd7061afa8df5", size = 173288, upload-time = "2026-02-18T20:28:10.367Z" }, ] [package.optional-dependencies] @@ -815,29 +806,28 @@ sdist = { url = "https://files.pythonhosted.org/packages/5e/19/9fd511734c0dee8fa [[package]] name = "google-auth" -version = "2.41.1" +version = "2.49.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cachetools" }, + { name = "cryptography" }, { name = "pyasn1-modules" }, - { name = "rsa" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/af/5129ce5b2f9688d2fa49b463e544972a7c82b0fdb50980dafee92e121d9f/google_auth-2.41.1.tar.gz", hash = "sha256:b76b7b1f9e61f0cb7e88870d14f6a94aeef248959ef6992670efee37709cbfd2", size = 292284, upload-time = "2025-09-30T22:51:26.363Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/80/6a696a07d3d3b0a92488933532f03dbefa4a24ab80fb231395b9a2a1be77/google_auth-2.49.1.tar.gz", hash = "sha256:16d40da1c3c5a0533f57d268fe72e0ebb0ae1cc3b567024122651c045d879b64", size = 333825, upload-time = "2026-03-12T19:30:58.135Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/a4/7319a2a8add4cc352be9e3efeff5e2aacee917c85ca2fa1647e29089983c/google_auth-2.41.1-py2.py3-none-any.whl", hash = "sha256:754843be95575b9a19c604a848a41be03f7f2afd8c019f716dc1f51ee41c639d", size = 221302, upload-time = "2025-09-30T22:51:24.212Z" }, + { url = "https://files.pythonhosted.org/packages/e9/eb/c6c2478d8a8d633460be40e2a8a6f8f429171997a35a96f81d3b680dec83/google_auth-2.49.1-py3-none-any.whl", hash = "sha256:195ebe3dca18eddd1b3db5edc5189b76c13e96f29e73043b923ebcf3f1a860f7", size = 240737, upload-time = "2026-03-12T19:30:53.159Z" }, ] [[package]] name = "google-auth-httplib2" -version = "0.2.0" +version = "0.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-auth" }, { name = "httplib2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/be/217a598a818567b28e859ff087f347475c807a5649296fb5a817c58dacef/google-auth-httplib2-0.2.0.tar.gz", hash = "sha256:38aa7badf48f974f1eb9861794e9c0cb2a0511a4ec0679b1f886d108f5640e05", size = 10842, upload-time = "2023-12-12T17:40:30.722Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/ad/c1f2b1175096a8d04cf202ad5ea6065f108d26be6fc7215876bde4a7981d/google_auth_httplib2-0.3.0.tar.gz", hash = "sha256:177898a0175252480d5ed916aeea183c2df87c1f9c26705d74ae6b951c268b0b", size = 11134, upload-time = "2025-12-15T22:13:51.825Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/8a/fe34d2f3f9470a27b01c9e76226965863f153d5fbe276f83608562e49c04/google_auth_httplib2-0.2.0-py2.py3-none-any.whl", hash = "sha256:b65a0a2123300dd71281a7bf6e64d65a0759287df52729bdd1ae2e47dc311a3d", size = 9253, upload-time = "2023-12-12T17:40:13.055Z" }, + { url = "https://files.pythonhosted.org/packages/99/d5/3c97526c8796d3caf5f4b3bed2b05e8a7102326f00a334e7a438237f3b22/google_auth_httplib2-0.3.0-py3-none-any.whl", hash = "sha256:426167e5df066e3f5a0fc7ea18768c08e7296046594ce4c8c409c2457dd1f776", size = 9529, upload-time = "2025-12-15T22:13:51.048Z" }, ] [[package]] @@ -855,7 +845,7 @@ wheels = [ [[package]] name = "google-cloud-bigquery" -version = "3.38.0" +version = "3.40.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core", extra = ["grpc"] }, @@ -866,14 +856,14 @@ dependencies = [ { name = "python-dateutil" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/07/b2/a17e40afcf9487e3d17db5e36728ffe75c8d5671c46f419d7b6528a5728a/google_cloud_bigquery-3.38.0.tar.gz", hash = "sha256:8afcb7116f5eac849097a344eb8bfda78b7cfaae128e60e019193dd483873520", size = 503666, upload-time = "2025-09-17T20:33:33.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/0c/153ee546c288949fcc6794d58811ab5420f3ecad5fa7f9e73f78d9512a6e/google_cloud_bigquery-3.40.1.tar.gz", hash = "sha256:75afcfb6e007238fe1deefb2182105249321145ff921784fe7b1de2b4ba24506", size = 511761, upload-time = "2026-02-12T18:44:18.958Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/3c/c8cada9ec282b29232ed9aed5a0b5cca6cf5367cb2ffa8ad0d2583d743f1/google_cloud_bigquery-3.38.0-py3-none-any.whl", hash = "sha256:e06e93ff7b245b239945ef59cb59616057598d369edac457ebf292bd61984da6", size = 259257, upload-time = "2025-09-17T20:33:31.404Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f5/081cf5b90adfe524ae0d671781b0d497a75a0f2601d075af518828e22d8f/google_cloud_bigquery-3.40.1-py3-none-any.whl", hash = "sha256:9082a6b8193aba87bed6a2c79cf1152b524c99bb7e7ac33a785e333c09eac868", size = 262018, upload-time = "2026-02-12T18:44:16.913Z" }, ] [[package]] name = "google-cloud-compute" -version = "1.40.0" +version = "1.46.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core", extra = ["grpc"] }, @@ -882,27 +872,27 @@ dependencies = [ { name = "proto-plus" }, { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/92/c0/21fe9a8cadc0f8455b98e8e5ca8a3866b5ad745960023705b4f23d7a2aad/google_cloud_compute-1.40.0.tar.gz", hash = "sha256:6a5ca519ac82caafc0a8600b1aa724d22fc00255501e1f99ff7a5907db73e011", size = 4550048, upload-time = "2025-10-17T02:34:10.995Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/3d/3511c167269ca7871de1b5438088749a46d5d60f65d22bef0dd4403e2301/google_cloud_compute-1.46.0.tar.gz", hash = "sha256:8b0f8d5a1115e8beae5fafdc7050f1ad15e922a5cdf6c634e5a745e47cb49281", size = 5051282, upload-time = "2026-03-12T19:31:03.81Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/f1/202eec05ce8e5c6a6a3e77f45b8e5625095ca7840b9a7f4927a776c35c9b/google_cloud_compute-1.40.0-py3-none-any.whl", hash = "sha256:e0181c2a9a44a4797d6888f550f088e5257e7700d93cb98a31eb1ed2c5086ee6", size = 3505474, upload-time = "2025-10-17T02:31:32.725Z" }, + { url = "https://files.pythonhosted.org/packages/3c/36/2af8cc8bc03b3125b16fde0965d71b5724d6f6961ad5919bd98a121b6e77/google_cloud_compute-1.46.0-py3-none-any.whl", hash = "sha256:f92d9a7c32454b8a719ff937bfd46e794ee35d65e141ec5d20797aad6988dfb0", size = 3816861, upload-time = "2026-03-12T19:30:44.276Z" }, ] [[package]] name = "google-cloud-core" -version = "2.4.3" +version = "2.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core" }, { name = "google-auth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/b8/2b53838d2acd6ec6168fd284a990c76695e84c65deee79c9f3a4276f6b4f/google_cloud_core-2.4.3.tar.gz", hash = "sha256:1fab62d7102844b278fe6dead3af32408b1df3eb06f5c7e8634cbd40edc4da53", size = 35861, upload-time = "2025-03-10T21:05:38.948Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/03/ef0bc99d0e0faf4fdbe67ac445e18cdaa74824fd93cd069e7bb6548cb52d/google_cloud_core-2.5.0.tar.gz", hash = "sha256:7c1b7ef5c92311717bd05301aa1a91ffbc565673d3b0b4163a52d8413a186963", size = 36027, upload-time = "2025-10-29T23:17:39.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/86/bda7241a8da2d28a754aad2ba0f6776e35b67e37c36ae0c45d49370f1014/google_cloud_core-2.4.3-py2.py3-none-any.whl", hash = "sha256:5130f9f4c14b4fafdff75c79448f9495cfade0d8775facf1b09c3bf67e027f6e", size = 29348, upload-time = "2025-03-10T21:05:37.785Z" }, + { url = "https://files.pythonhosted.org/packages/89/20/bfa472e327c8edee00f04beecc80baeddd2ab33ee0e86fd7654da49d45e9/google_cloud_core-2.5.0-py3-none-any.whl", hash = "sha256:67d977b41ae6c7211ee830c7912e41003ea8194bff15ae7d72fd6f51e57acabc", size = 29469, upload-time = "2025-10-29T23:17:38.548Z" }, ] [[package]] name = "google-cloud-iam" -version = "2.20.0" +version = "2.21.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core", extra = ["grpc"] }, @@ -912,14 +902,14 @@ dependencies = [ { name = "proto-plus" }, { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/53/e73091b5f012e669d1ec501b70c99e8e8e86f6fa09cf56f47ae3fb0395a5/google_cloud_iam-2.20.0.tar.gz", hash = "sha256:06568ed8313f59fac46d21a5aae4c54eb1dda9f6bcecf2736c58ab1065dc9173", size = 480552, upload-time = "2025-10-14T15:42:54.9Z" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/0b/037b1e1eb601646d6f49bc06d62094c1d0996b373dcbf70c426c6c51572e/google_cloud_iam-2.21.0.tar.gz", hash = "sha256:fc560527e22b97c6cbfba0797d867cf956c727ba687b586b9aa44d78e92281a3", size = 499038, upload-time = "2026-01-15T13:15:08.243Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/78/664349481896f85d7e79a1fdd5d322e9052126da8065f67c75ad2c17c97a/google_cloud_iam-2.20.0-py3-none-any.whl", hash = "sha256:643fcf6db3100772f222c7173bc1af15541a05ec1c43785191e835146ed150b8", size = 448329, upload-time = "2025-10-14T15:42:40.287Z" }, + { url = "https://files.pythonhosted.org/packages/c8/44/02ac4e147ea034a3d641c11b54c9d8d0b80fc1ea6a8b7d6c1588d208d42a/google_cloud_iam-2.21.0-py3-none-any.whl", hash = "sha256:1b4a21302b186a31f3a516ccff303779638308b7c801fb61a2406b6a0c6293c4", size = 458958, upload-time = "2026-01-15T13:13:40.671Z" }, ] [[package]] name = "google-cloud-monitoring" -version = "2.28.0" +version = "2.29.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-api-core", extra = ["grpc"] }, @@ -928,9 +918,9 @@ dependencies = [ { name = "proto-plus" }, { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/b8/7f68a7738cbfef610af532b2fc758e39d852fc93ed3a31bd0e76fd45d2fd/google_cloud_monitoring-2.28.0.tar.gz", hash = "sha256:25175590907e038add644b5b744941d221776342924637095a879973a7c0ac37", size = 393321, upload-time = "2025-10-14T15:42:55.786Z" } +sdist = { url = "https://files.pythonhosted.org/packages/97/06/9fc0a34bed4221a68eef3e0373ae054de367dc42c0b689d5d917587ef61b/google_cloud_monitoring-2.29.1.tar.gz", hash = "sha256:86cac55cdd2608561819d19544fb3c129bbb7dcecc445d8de426e34cd6fa8e49", size = 404383, upload-time = "2026-02-05T18:59:13.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ad/d3/02dcf5376cb4b47b9c06eba36d80700d5b0a1510f3fcd47d3abbe4b0f0a3/google_cloud_monitoring-2.28.0-py3-none-any.whl", hash = "sha256:64f4c57cc465dd51cceffe559f0ec6fa9f96aa6d82790cd8d3af6d5cc3795160", size = 384670, upload-time = "2025-10-14T15:42:41.911Z" }, + { url = "https://files.pythonhosted.org/packages/ac/97/7c27aa95eccf8b62b066295a7c4ad04284364b696d3e7d9d47152b255a24/google_cloud_monitoring-2.29.1-py3-none-any.whl", hash = "sha256:944a57031f20da38617d184d5658c1f938e019e8061f27fd944584831a1b9d5a", size = 387922, upload-time = "2026-02-05T18:58:54.964Z" }, ] [[package]] @@ -952,39 +942,39 @@ wheels = [ [[package]] name = "google-crc32c" -version = "1.7.1" +version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/19/ae/87802e6d9f9d69adfaedfcfd599266bf386a54d0be058b532d04c794f76d/google_crc32c-1.7.1.tar.gz", hash = "sha256:2bff2305f98846f3e825dbeec9ee406f89da7962accdb29356e4eadc251bd472", size = 14495, upload-time = "2025-03-26T14:29:13.32Z" } +sdist = { url = "https://files.pythonhosted.org/packages/03/41/4b9c02f99e4c5fb477122cd5437403b552873f014616ac1d19ac8221a58d/google_crc32c-1.8.0.tar.gz", hash = "sha256:a428e25fb7691024de47fecfbff7ff957214da51eddded0da0ae0e0f03a2cf79", size = 14192, upload-time = "2025-12-16T00:35:25.142Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/dd/b7/787e2453cf8639c94b3d06c9d61f512234a82e1d12d13d18584bd3049904/google_crc32c-1.7.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d73a68a653c57281401871dd4aeebbb6af3191dcac751a76ce430df4d403194", size = 30470, upload-time = "2025-03-26T14:34:31.655Z" }, - { url = "https://files.pythonhosted.org/packages/ed/b4/6042c2b0cbac3ec3a69bb4c49b28d2f517b7a0f4a0232603c42c58e22b44/google_crc32c-1.7.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:22beacf83baaf59f9d3ab2bbb4db0fb018da8e5aebdce07ef9f09fce8220285e", size = 30315, upload-time = "2025-03-26T15:01:54.634Z" }, - { url = "https://files.pythonhosted.org/packages/29/ad/01e7a61a5d059bc57b702d9ff6a18b2585ad97f720bd0a0dbe215df1ab0e/google_crc32c-1.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:19eafa0e4af11b0a4eb3974483d55d2d77ad1911e6cf6f832e1574f6781fd337", size = 33180, upload-time = "2025-03-26T14:41:32.168Z" }, - { url = "https://files.pythonhosted.org/packages/3b/a5/7279055cf004561894ed3a7bfdf5bf90a53f28fadd01af7cd166e88ddf16/google_crc32c-1.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6d86616faaea68101195c6bdc40c494e4d76f41e07a37ffdef270879c15fb65", size = 32794, upload-time = "2025-03-26T14:41:33.264Z" }, - { url = "https://files.pythonhosted.org/packages/0f/d6/77060dbd140c624e42ae3ece3df53b9d811000729a5c821b9fd671ceaac6/google_crc32c-1.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:b7491bdc0c7564fcf48c0179d2048ab2f7c7ba36b84ccd3a3e1c3f7a72d3bba6", size = 33477, upload-time = "2025-03-26T14:29:10.94Z" }, + { url = "https://files.pythonhosted.org/packages/e9/5f/7307325b1198b59324c0fa9807cafb551afb65e831699f2ce211ad5c8240/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:4b8286b659c1335172e39563ab0a768b8015e88e08329fa5321f774275fc3113", size = 31300, upload-time = "2025-12-16T00:21:56.723Z" }, + { url = "https://files.pythonhosted.org/packages/21/8e/58c0d5d86e2220e6a37befe7e6a94dd2f6006044b1a33edf1ff6d9f7e319/google_crc32c-1.8.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:2a3dc3318507de089c5384cc74d54318401410f82aa65b2d9cdde9d297aca7cb", size = 30867, upload-time = "2025-12-16T00:38:31.302Z" }, + { url = "https://files.pythonhosted.org/packages/ce/a9/a780cc66f86335a6019f557a8aaca8fbb970728f0efd2430d15ff1beae0e/google_crc32c-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:14f87e04d613dfa218d6135e81b78272c3b904e2a7053b841481b38a7d901411", size = 33364, upload-time = "2025-12-16T00:40:22.96Z" }, + { url = "https://files.pythonhosted.org/packages/21/3f/3457ea803db0198c9aaca2dd373750972ce28a26f00544b6b85088811939/google_crc32c-1.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:cb5c869c2923d56cb0c8e6bcdd73c009c36ae39b652dbe46a05eb4ef0ad01454", size = 33740, upload-time = "2025-12-16T00:40:23.96Z" }, + { url = "https://files.pythonhosted.org/packages/df/c0/87c2073e0c72515bb8733d4eef7b21548e8d189f094b5dad20b0ecaf64f6/google_crc32c-1.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:3cc0c8912038065eafa603b238abf252e204accab2a704c63b9e14837a854962", size = 34437, upload-time = "2025-12-16T00:35:21.395Z" }, ] [[package]] name = "google-resumable-media" -version = "2.7.2" +version = "2.8.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "google-crc32c" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/58/5a/0efdc02665dca14e0837b62c8a1a93132c264bd02054a15abb2218afe0ae/google_resumable_media-2.7.2.tar.gz", hash = "sha256:5280aed4629f2b60b847b0d42f9857fd4935c11af266744df33d8074cae92fe0", size = 2163099, upload-time = "2024-08-07T22:20:38.555Z" } +sdist = { url = "https://files.pythonhosted.org/packages/64/d7/520b62a35b23038ff005e334dba3ffc75fcf583bee26723f1fd8fd4b6919/google_resumable_media-2.8.0.tar.gz", hash = "sha256:f1157ed8b46994d60a1bc432544db62352043113684d4e030ee02e77ebe9a1ae", size = 2163265, upload-time = "2025-11-17T15:38:06.659Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/82/35/b8d3baf8c46695858cb9d8835a53baa1eeb9906ddaf2f728a5f5b640fd1e/google_resumable_media-2.7.2-py2.py3-none-any.whl", hash = "sha256:3ce7551e9fe6d99e9a126101d2536612bb73486721951e9562fee0f90c6ababa", size = 81251, upload-time = "2024-08-07T22:20:36.409Z" }, + { url = "https://files.pythonhosted.org/packages/1f/0b/93afde9cfe012260e9fe1522f35c9b72d6ee222f316586b1f23ecf44d518/google_resumable_media-2.8.0-py3-none-any.whl", hash = "sha256:dd14a116af303845a8d932ddae161a26e86cc229645bc98b39f026f9b1717582", size = 81340, upload-time = "2025-11-17T15:38:05.594Z" }, ] [[package]] name = "googleapis-common-protos" -version = "1.71.0" +version = "1.73.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/30/43/b25abe02db2911397819003029bef768f68a974f2ece483e6084d1a5f754/googleapis_common_protos-1.71.0.tar.gz", hash = "sha256:1aec01e574e29da63c80ba9f7bbf1ccfaacf1da877f23609fe236ca7c72a2e2e", size = 146454, upload-time = "2025-10-20T14:58:08.732Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/96/a0205167fa0154f4a542fd6925bdc63d039d88dab3588b875078107e6f06/googleapis_common_protos-1.73.0.tar.gz", hash = "sha256:778d07cd4fbeff84c6f7c72102f0daf98fa2bfd3fa8bea426edc545588da0b5a", size = 147323, upload-time = "2026-03-06T21:53:09.727Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/e8/eba9fece11d57a71e3e22ea672742c8f3cf23b35730c9e96db768b295216/googleapis_common_protos-1.71.0-py3-none-any.whl", hash = "sha256:59034a1d849dc4d18971997a72ac56246570afdd17f9369a0ff68218d50ab78c", size = 294576, upload-time = "2025-10-20T14:56:21.295Z" }, + { url = "https://files.pythonhosted.org/packages/69/28/23eea8acd65972bbfe295ce3666b28ac510dfcb115fac089d3edb0feb00a/googleapis_common_protos-1.73.0-py3-none-any.whl", hash = "sha256:dfdaaa2e860f242046be561e6d6cb5c5f1541ae02cfbcb034371aadb2942b4e8", size = 297578, upload-time = "2026-03-06T21:52:33.933Z" }, ] [package.optional-dependencies] @@ -1008,23 +998,23 @@ wheels = [ [[package]] name = "grpcio" -version = "1.75.1" +version = "1.78.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/f7/8963848164c7604efb3a3e6ee457fdb3a469653e19002bd24742473254f8/grpcio-1.75.1.tar.gz", hash = "sha256:3e81d89ece99b9ace23a6916880baca613c03a799925afb2857887efa8b1b3d2", size = 12731327, upload-time = "2025-09-26T09:03:36.887Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/8a/3d098f35c143a89520e568e6539cc098fcd294495910e359889ce8741c84/grpcio-1.78.0.tar.gz", hash = "sha256:7382b95189546f375c174f53a5fa873cef91c4b8005faa05cc5b3beea9c4f1c5", size = 12852416, upload-time = "2026-02-06T09:57:18.093Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/81/42be79e73a50aaa20af66731c2defeb0e8c9008d9935a64dd8ea8e8c44eb/grpcio-1.75.1-cp312-cp312-linux_armv7l.whl", hash = "sha256:7b888b33cd14085d86176b1628ad2fcbff94cfbbe7809465097aa0132e58b018", size = 5668314, upload-time = "2025-09-26T09:01:55.424Z" }, - { url = "https://files.pythonhosted.org/packages/c5/a7/3686ed15822fedc58c22f82b3a7403d9faf38d7c33de46d4de6f06e49426/grpcio-1.75.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:8775036efe4ad2085975531d221535329f5dac99b6c2a854a995456098f99546", size = 11476125, upload-time = "2025-09-26T09:01:57.927Z" }, - { url = "https://files.pythonhosted.org/packages/14/85/21c71d674f03345ab183c634ecd889d3330177e27baea8d5d247a89b6442/grpcio-1.75.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:bb658f703468d7fbb5dcc4037c65391b7dc34f808ac46ed9136c24fc5eeb041d", size = 6246335, upload-time = "2025-09-26T09:02:00.76Z" }, - { url = "https://files.pythonhosted.org/packages/fd/db/3beb661bc56a385ae4fa6b0e70f6b91ac99d47afb726fe76aaff87ebb116/grpcio-1.75.1-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:4b7177a1cdb3c51b02b0c0a256b0a72fdab719600a693e0e9037949efffb200b", size = 6916309, upload-time = "2025-09-26T09:02:02.894Z" }, - { url = "https://files.pythonhosted.org/packages/1e/9c/eda9fe57f2b84343d44c1b66cf3831c973ba29b078b16a27d4587a1fdd47/grpcio-1.75.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7d4fa6ccc3ec2e68a04f7b883d354d7fea22a34c44ce535a2f0c0049cf626ddf", size = 6435419, upload-time = "2025-09-26T09:02:05.055Z" }, - { url = "https://files.pythonhosted.org/packages/c3/b8/090c98983e0a9d602e3f919a6e2d4e470a8b489452905f9a0fa472cac059/grpcio-1.75.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3d86880ecaeb5b2f0a8afa63824de93adb8ebe4e49d0e51442532f4e08add7d6", size = 7064893, upload-time = "2025-09-26T09:02:07.275Z" }, - { url = "https://files.pythonhosted.org/packages/ec/c0/6d53d4dbbd00f8bd81571f5478d8a95528b716e0eddb4217cc7cb45aae5f/grpcio-1.75.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a8041d2f9e8a742aeae96f4b047ee44e73619f4f9d24565e84d5446c623673b6", size = 8011922, upload-time = "2025-09-26T09:02:09.527Z" }, - { url = "https://files.pythonhosted.org/packages/f2/7c/48455b2d0c5949678d6982c3e31ea4d89df4e16131b03f7d5c590811cbe9/grpcio-1.75.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3652516048bf4c314ce12be37423c79829f46efffb390ad64149a10c6071e8de", size = 7466181, upload-time = "2025-09-26T09:02:12.279Z" }, - { url = "https://files.pythonhosted.org/packages/fd/12/04a0e79081e3170b6124f8cba9b6275871276be06c156ef981033f691880/grpcio-1.75.1-cp312-cp312-win32.whl", hash = "sha256:44b62345d8403975513af88da2f3d5cc76f73ca538ba46596f92a127c2aea945", size = 3938543, upload-time = "2025-09-26T09:02:14.77Z" }, - { url = "https://files.pythonhosted.org/packages/5f/d7/11350d9d7fb5adc73d2b0ebf6ac1cc70135577701e607407fe6739a90021/grpcio-1.75.1-cp312-cp312-win_amd64.whl", hash = "sha256:b1e191c5c465fa777d4cafbaacf0c01e0d5278022082c0abbd2ee1d6454ed94d", size = 4641938, upload-time = "2025-09-26T09:02:16.927Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f4/7384ed0178203d6074446b3c4f46c90a22ddf7ae0b3aee521627f54cfc2a/grpcio-1.78.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f9ab915a267fc47c7e88c387a3a28325b58c898e23d4995f765728f4e3dedb97", size = 5913985, upload-time = "2026-02-06T09:55:26.832Z" }, + { url = "https://files.pythonhosted.org/packages/81/ed/be1caa25f06594463f685b3790b320f18aea49b33166f4141bfdc2bfb236/grpcio-1.78.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3f8904a8165ab21e07e58bf3e30a73f4dffc7a1e0dbc32d51c61b5360d26f43e", size = 11811853, upload-time = "2026-02-06T09:55:29.224Z" }, + { url = "https://files.pythonhosted.org/packages/24/a7/f06d151afc4e64b7e3cc3e872d331d011c279aaab02831e40a81c691fb65/grpcio-1.78.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:859b13906ce098c0b493af92142ad051bf64c7870fa58a123911c88606714996", size = 6475766, upload-time = "2026-02-06T09:55:31.825Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a8/4482922da832ec0082d0f2cc3a10976d84a7424707f25780b82814aafc0a/grpcio-1.78.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b2342d87af32790f934a79c3112641e7b27d63c261b8b4395350dad43eff1dc7", size = 7170027, upload-time = "2026-02-06T09:55:34.7Z" }, + { url = "https://files.pythonhosted.org/packages/54/bf/f4a3b9693e35d25b24b0b39fa46d7d8a3c439e0a3036c3451764678fec20/grpcio-1.78.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12a771591ae40bc65ba67048fa52ef4f0e6db8279e595fd349f9dfddeef571f9", size = 6690766, upload-time = "2026-02-06T09:55:36.902Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b9/521875265cc99fe5ad4c5a17010018085cae2810a928bf15ebe7d8bcd9cc/grpcio-1.78.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:185dea0d5260cbb2d224c507bf2a5444d5abbb1fa3594c1ed7e4c709d5eb8383", size = 7266161, upload-time = "2026-02-06T09:55:39.824Z" }, + { url = "https://files.pythonhosted.org/packages/05/86/296a82844fd40a4ad4a95f100b55044b4f817dece732bf686aea1a284147/grpcio-1.78.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51b13f9aed9d59ee389ad666b8c2214cc87b5de258fa712f9ab05f922e3896c6", size = 8253303, upload-time = "2026-02-06T09:55:42.353Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e4/ea3c0caf5468537f27ad5aab92b681ed7cc0ef5f8c9196d3fd42c8c2286b/grpcio-1.78.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd5f135b1bd58ab088930b3c613455796dfa0393626a6972663ccdda5b4ac6ce", size = 7698222, upload-time = "2026-02-06T09:55:44.629Z" }, + { url = "https://files.pythonhosted.org/packages/d7/47/7f05f81e4bb6b831e93271fb12fd52ba7b319b5402cbc101d588f435df00/grpcio-1.78.0-cp312-cp312-win32.whl", hash = "sha256:94309f498bcc07e5a7d16089ab984d42ad96af1d94b5a4eb966a266d9fcabf68", size = 4066123, upload-time = "2026-02-06T09:55:47.644Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e7/d6914822c88aa2974dbbd10903d801a28a19ce9cd8bad7e694cbbcf61528/grpcio-1.78.0-cp312-cp312-win_amd64.whl", hash = "sha256:9566fe4ababbb2610c39190791e5b829869351d14369603702e890ef3ad2d06e", size = 4797657, upload-time = "2026-02-06T09:55:49.86Z" }, ] [[package]] @@ -1081,14 +1071,14 @@ requires-dist = [ [[package]] name = "httplib2" -version = "0.31.0" +version = "0.31.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/77/6653db69c1f7ecfe5e3f9726fdadc981794656fcd7d98c4209fecfea9993/httplib2-0.31.0.tar.gz", hash = "sha256:ac7ab497c50975147d4f7b1ade44becc7df2f8954d42b38b3d69c515f531135c", size = 250759, upload-time = "2025-09-11T12:16:03.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/1f/e86365613582c027dda5ddb64e1010e57a3d53e99ab8a72093fa13d565ec/httplib2-0.31.2.tar.gz", hash = "sha256:385e0869d7397484f4eab426197a4c020b606edd43372492337c0b4010ae5d24", size = 250800, upload-time = "2026-01-23T11:04:44.165Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/a2/0d269db0f6163be503775dc8b6a6fa15820cc9fdc866f6ba608d86b721f2/httplib2-0.31.0-py3-none-any.whl", hash = "sha256:b9cd78abea9b4e43a7714c6e0f8b6b8561a6fc1e95d5dbd367f5bf0ef35f5d24", size = 91148, upload-time = "2025-09-11T12:16:01.803Z" }, + { url = "https://files.pythonhosted.org/packages/2f/90/fd509079dfcab01102c0fdd87f3a9506894bc70afcf9e9785ef6b2b3aff6/httplib2-0.31.2-py3-none-any.whl", hash = "sha256:dbf0c2fa3862acf3c55c078ea9c0bc4481d7dc5117cae71be9514912cf9f8349", size = 91099, upload-time = "2026-01-23T11:04:42.78Z" }, ] [[package]] @@ -1102,14 +1092,14 @@ wheels = [ [[package]] name = "importlib-metadata" -version = "8.5.0" +version = "8.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/12/33e59336dca5be0c398a7482335911a33aa0e20776128f038019f1a95f1b/importlib_metadata-8.5.0.tar.gz", hash = "sha256:71522656f0abace1d072b9e5481a48f07c138e00f079c38c8f883823f9c26bd7", size = 55304, upload-time = "2024-09-11T14:56:08.937Z" } +sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767, upload-time = "2025-01-20T22:21:30.429Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d9/a1e041c5e7caa9a05c925f4bdbdfb7f006d1f74996af53467bc394c97be7/importlib_metadata-8.5.0-py3-none-any.whl", hash = "sha256:45e54197d28b7a7f1559e60b95e7c567032b602131fbd588f1497f47880aa68b", size = 26514, upload-time = "2024-09-11T14:56:07.019Z" }, + { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971, upload-time = "2025-01-20T22:21:29.177Z" }, ] [[package]] @@ -1209,18 +1199,18 @@ wheels = [ [[package]] name = "lz4" -version = "4.4.4" +version = "4.4.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c6/5a/945f5086326d569f14c84ac6f7fcc3229f0b9b1e8cc536b951fd53dfb9e1/lz4-4.4.4.tar.gz", hash = "sha256:070fd0627ec4393011251a094e08ed9fdcc78cb4e7ab28f507638eee4e39abda", size = 171884, upload-time = "2025-04-01T22:55:58.62Z" } +sdist = { url = "https://files.pythonhosted.org/packages/57/51/f1b86d93029f418033dddf9b9f79c8d2641e7454080478ee2aab5123173e/lz4-4.4.5.tar.gz", hash = "sha256:5f0b9e53c1e82e88c10d7c180069363980136b9d7a8306c4dca4f760d60c39f0", size = 172886, upload-time = "2025-11-03T13:02:36.061Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/2d/5523b4fabe11cd98f040f715728d1932eb7e696bfe94391872a823332b94/lz4-4.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:23ae267494fdd80f0d2a131beff890cf857f1b812ee72dbb96c3204aab725553", size = 220669, upload-time = "2025-04-01T22:55:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/91/06/1a5bbcacbfb48d8ee5b6eb3fca6aa84143a81d92946bdb5cd6b005f1863e/lz4-4.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fff9f3a1ed63d45cb6514bfb8293005dc4141341ce3500abdfeb76124c0b9b2e", size = 189661, upload-time = "2025-04-01T22:55:33.413Z" }, - { url = "https://files.pythonhosted.org/packages/fa/08/39eb7ac907f73e11a69a11576a75a9e36406b3241c0ba41453a7eb842abb/lz4-4.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1ea7f07329f85a8eda4d8cf937b87f27f0ac392c6400f18bea2c667c8b7f8ecc", size = 1238775, upload-time = "2025-04-01T22:55:34.835Z" }, - { url = "https://files.pythonhosted.org/packages/e9/26/05840fbd4233e8d23e88411a066ab19f1e9de332edddb8df2b6a95c7fddc/lz4-4.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8ccab8f7f7b82f9fa9fc3b0ba584d353bd5aa818d5821d77d5b9447faad2aaad", size = 1265143, upload-time = "2025-04-01T22:55:35.933Z" }, - { url = "https://files.pythonhosted.org/packages/b7/5d/5f2db18c298a419932f3ab2023deb689863cf8fd7ed875b1c43492479af2/lz4-4.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e43e9d48b2daf80e486213128b0763deed35bbb7a59b66d1681e205e1702d735", size = 1185032, upload-time = "2025-04-01T22:55:37.454Z" }, - { url = "https://files.pythonhosted.org/packages/c4/e6/736ab5f128694b0f6aac58343bcf37163437ac95997276cd0be3ea4c3342/lz4-4.4.4-cp312-cp312-win32.whl", hash = "sha256:33e01e18e4561b0381b2c33d58e77ceee850a5067f0ece945064cbaac2176962", size = 88284, upload-time = "2025-04-01T22:55:38.536Z" }, - { url = "https://files.pythonhosted.org/packages/40/b8/243430cb62319175070e06e3a94c4c7bd186a812e474e22148ae1290d47d/lz4-4.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:d21d1a2892a2dcc193163dd13eaadabb2c1b803807a5117d8f8588b22eaf9f12", size = 99918, upload-time = "2025-04-01T22:55:39.628Z" }, - { url = "https://files.pythonhosted.org/packages/6c/e1/0686c91738f3e6c2e1a243e0fdd4371667c4d2e5009b0a3605806c2aa020/lz4-4.4.4-cp312-cp312-win_arm64.whl", hash = "sha256:2f4f2965c98ab254feddf6b5072854a6935adab7bc81412ec4fe238f07b85f62", size = 89736, upload-time = "2025-04-01T22:55:40.5Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ac/016e4f6de37d806f7cc8f13add0a46c9a7cfc41a5ddc2bc831d7954cf1ce/lz4-4.4.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:df5aa4cead2044bab83e0ebae56e0944cc7fcc1505c7787e9e1057d6d549897e", size = 207163, upload-time = "2025-11-03T13:01:45.895Z" }, + { url = "https://files.pythonhosted.org/packages/8d/df/0fadac6e5bd31b6f34a1a8dbd4db6a7606e70715387c27368586455b7fc9/lz4-4.4.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d0bf51e7745484d2092b3a51ae6eb58c3bd3ce0300cf2b2c14f76c536d5697a", size = 207150, upload-time = "2025-11-03T13:01:47.205Z" }, + { url = "https://files.pythonhosted.org/packages/b7/17/34e36cc49bb16ca73fb57fbd4c5eaa61760c6b64bce91fcb4e0f4a97f852/lz4-4.4.5-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:7b62f94b523c251cf32aa4ab555f14d39bd1a9df385b72443fd76d7c7fb051f5", size = 1292045, upload-time = "2025-11-03T13:01:48.667Z" }, + { url = "https://files.pythonhosted.org/packages/90/1c/b1d8e3741e9fc89ed3b5f7ef5f22586c07ed6bb04e8343c2e98f0fa7ff04/lz4-4.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2c3ea562c3af274264444819ae9b14dbbf1ab070aff214a05e97db6896c7597e", size = 1279546, upload-time = "2025-11-03T13:01:50.159Z" }, + { url = "https://files.pythonhosted.org/packages/55/d9/e3867222474f6c1b76e89f3bd914595af69f55bf2c1866e984c548afdc15/lz4-4.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:24092635f47538b392c4eaeff14c7270d2c8e806bf4be2a6446a378591c5e69e", size = 1368249, upload-time = "2025-11-03T13:01:51.273Z" }, + { url = "https://files.pythonhosted.org/packages/b2/e7/d667d337367686311c38b580d1ca3d5a23a6617e129f26becd4f5dc458df/lz4-4.4.5-cp312-cp312-win32.whl", hash = "sha256:214e37cfe270948ea7eb777229e211c601a3e0875541c1035ab408fbceaddf50", size = 88189, upload-time = "2025-11-03T13:01:52.605Z" }, + { url = "https://files.pythonhosted.org/packages/a5/0b/a54cd7406995ab097fceb907c7eb13a6ddd49e0b231e448f1a81a50af65c/lz4-4.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:713a777de88a73425cf08eb11f742cd2c98628e79a8673d6a52e3c5f0c116f33", size = 99497, upload-time = "2025-11-03T13:01:53.477Z" }, + { url = "https://files.pythonhosted.org/packages/6a/7e/dc28a952e4bfa32ca16fa2eb026e7a6ce5d1411fcd5986cd08c74ec187b9/lz4-4.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:a88cbb729cc333334ccfb52f070463c21560fca63afcf636a9f160a55fac3301", size = 91279, upload-time = "2025-11-03T13:01:54.419Z" }, ] [[package]] @@ -1638,6 +1628,55 @@ name = "optscale-password" version = "0.0.0" source = { editable = "../tools/optscale_password" } +[[package]] +name = "optscale-telemetry" +version = "0.0.0" +source = { editable = "../tools/optscale_telemetry" } +dependencies = [ + { name = "azure-monitor-opentelemetry-exporter" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-grpc" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-instrumentation-asyncio" }, + { name = "opentelemetry-instrumentation-logging" }, + { name = "opentelemetry-instrumentation-pymongo" }, + { name = "opentelemetry-instrumentation-requests" }, + { name = "opentelemetry-instrumentation-sqlalchemy" }, + { name = "opentelemetry-instrumentation-threading" }, + { name = "opentelemetry-instrumentation-tornado" }, + { name = "opentelemetry-instrumentation-urllib3" }, + { name = "opentelemetry-sdk" }, +] + +[package.metadata] +requires-dist = [ + { name = "azure-monitor-opentelemetry-exporter", specifier = "==1.0.0b35" }, + { name = "opentelemetry-api", specifier = "==1.33.*" }, + { name = "opentelemetry-exporter-otlp-proto-grpc", specifier = "==1.33.*" }, + { name = "opentelemetry-exporter-otlp-proto-http", specifier = "==1.33.*" }, + { name = "opentelemetry-instrumentation-asyncio", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-logging", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-pymongo", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-requests", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-sqlalchemy", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-threading", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-tornado", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-urllib3", specifier = "==0.54b0" }, + { name = "opentelemetry-sdk", specifier = "==1.33.*" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "pymongo", specifier = "==4.6.3" }, + { name = "pytest", specifier = ">=8.4.2,<9.0.0" }, + { name = "pytest-asyncio", specifier = ">=1.2.0,<2.0.0" }, + { name = "pytest-cov", specifier = ">=7.0.0,<8.0.0" }, + { name = "pytest-mock", specifier = ">=3.15.1,<4.0.0" }, + { name = "pytest-randomly", specifier = ">=4.0.1,<5.0.0" }, + { name = "ruff", specifier = ">=0.15.6" }, + { name = "tornado", specifier = "==6.5" }, +] + [[package]] name = "optscale-time" version = "0.0.0" @@ -1664,20 +1703,20 @@ requires-dist = [ [[package]] name = "packaging" -version = "25.0" +version = "26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, ] [[package]] name = "platformdirs" -version = "4.5.0" +version = "4.9.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/56/8d4c30c8a1d07013911a8fdbd8f89440ef9f08d07a1b50ab8ca8be5a20f9/platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934", size = 28737, upload-time = "2026-03-05T18:34:13.271Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" }, + { url = "https://files.pythonhosted.org/packages/63/d7/97f7e3a6abb67d8080dd406fd4df842c2be0efaf712d1c899c32a075027c/platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868", size = 21216, upload-time = "2026-03-05T18:34:12.172Z" }, ] [[package]] @@ -1691,28 +1730,28 @@ wheels = [ [[package]] name = "proto-plus" -version = "1.26.1" +version = "1.27.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "protobuf" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/ac/87285f15f7cce6d4a008f33f1757fb5a13611ea8914eb58c3d0d26243468/proto_plus-1.26.1.tar.gz", hash = "sha256:21a515a4c4c0088a773899e23c7bbade3d18f9c66c73edd4c7ee3816bc96a012", size = 56142, upload-time = "2025-03-10T15:54:38.843Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/02/8832cde80e7380c600fbf55090b6ab7b62bd6825dbedde6d6657c15a1f8e/proto_plus-1.27.1.tar.gz", hash = "sha256:912a7460446625b792f6448bade9e55cd4e41e6ac10e27009ef71a7f317fa147", size = 56929, upload-time = "2026-02-02T17:34:49.035Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/6d/280c4c2ce28b1593a19ad5239c8b826871fc6ec275c21afc8e1820108039/proto_plus-1.26.1-py3-none-any.whl", hash = "sha256:13285478c2dcf2abb829db158e1047e2f1e8d63a077d94263c2b88b043c75a66", size = 50163, upload-time = "2025-03-10T15:54:37.335Z" }, + { url = "https://files.pythonhosted.org/packages/5d/79/ac273cbbf744691821a9cca88957257f41afe271637794975ca090b9588b/proto_plus-1.27.1-py3-none-any.whl", hash = "sha256:e4643061f3a4d0de092d62aa4ad09fa4756b2cbb89d4627f3985018216f9fefc", size = 50480, upload-time = "2026-02-02T17:34:47.339Z" }, ] [[package]] name = "protobuf" -version = "5.29.5" +version = "5.29.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/29/d09e70352e4e88c9c7a198d5645d7277811448d76c23b00345670f7c8a38/protobuf-5.29.5.tar.gz", hash = "sha256:bc1463bafd4b0929216c35f437a8e28731a2b7fe3d98bb77a600efced5a15c84", size = 425226, upload-time = "2025-05-28T23:51:59.82Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/57/394a763c103e0edf87f0938dafcd918d53b4c011dfc5c8ae80f3b0452dbb/protobuf-5.29.6.tar.gz", hash = "sha256:da9ee6a5424b6b30fd5e45c5ea663aef540ca95f9ad99d1e887e819cdf9b8723", size = 425623, upload-time = "2026-02-04T22:54:40.584Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5f/11/6e40e9fc5bba02988a214c07cf324595789ca7820160bfd1f8be96e48539/protobuf-5.29.5-cp310-abi3-win32.whl", hash = "sha256:3f1c6468a2cfd102ff4703976138844f78ebd1fb45f49011afc5139e9e283079", size = 422963, upload-time = "2025-05-28T23:51:41.204Z" }, - { url = "https://files.pythonhosted.org/packages/81/7f/73cefb093e1a2a7c3ffd839e6f9fcafb7a427d300c7f8aef9c64405d8ac6/protobuf-5.29.5-cp310-abi3-win_amd64.whl", hash = "sha256:3f76e3a3675b4a4d867b52e4a5f5b78a2ef9565549d4037e06cf7b0942b1d3fc", size = 434818, upload-time = "2025-05-28T23:51:44.297Z" }, - { url = "https://files.pythonhosted.org/packages/dd/73/10e1661c21f139f2c6ad9b23040ff36fee624310dc28fba20d33fdae124c/protobuf-5.29.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e38c5add5a311f2a6eb0340716ef9b039c1dfa428b28f25a7838ac329204a671", size = 418091, upload-time = "2025-05-28T23:51:45.907Z" }, - { url = "https://files.pythonhosted.org/packages/6c/04/98f6f8cf5b07ab1294c13f34b4e69b3722bb609c5b701d6c169828f9f8aa/protobuf-5.29.5-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:fa18533a299d7ab6c55a238bf8629311439995f2e7eca5caaff08663606e9015", size = 319824, upload-time = "2025-05-28T23:51:47.545Z" }, - { url = "https://files.pythonhosted.org/packages/85/e4/07c80521879c2d15f321465ac24c70efe2381378c00bf5e56a0f4fbac8cd/protobuf-5.29.5-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:63848923da3325e1bf7e9003d680ce6e14b07e55d0473253a690c3a8b8fd6e61", size = 319942, upload-time = "2025-05-28T23:51:49.11Z" }, - { url = "https://files.pythonhosted.org/packages/7e/cc/7e77861000a0691aeea8f4566e5d3aa716f2b1dece4a24439437e41d3d25/protobuf-5.29.5-py3-none-any.whl", hash = "sha256:6cf42630262c59b2d8de33954443d94b746c952b01434fc58a417fdbd2e84bd5", size = 172823, upload-time = "2025-05-28T23:51:58.157Z" }, + { url = "https://files.pythonhosted.org/packages/d4/88/9ee58ff7863c479d6f8346686d4636dd4c415b0cbeed7a6a7d0617639c2a/protobuf-5.29.6-cp310-abi3-win32.whl", hash = "sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1", size = 423357, upload-time = "2026-02-04T22:54:25.805Z" }, + { url = "https://files.pythonhosted.org/packages/1c/66/2dc736a4d576847134fb6d80bd995c569b13cdc7b815d669050bf0ce2d2c/protobuf-5.29.6-cp310-abi3-win_amd64.whl", hash = "sha256:7e6ad413275be172f67fdee0f43484b6de5a904cc1c3ea9804cb6fe2ff366eda", size = 435175, upload-time = "2026-02-04T22:54:28.592Z" }, + { url = "https://files.pythonhosted.org/packages/06/db/49b05966fd208ae3f44dcd33837b6243b4915c57561d730a43f881f24dea/protobuf-5.29.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5a169e664b4057183a34bdc424540e86eea47560f3c123a0d64de4e137f9269", size = 418619, upload-time = "2026-02-04T22:54:30.266Z" }, + { url = "https://files.pythonhosted.org/packages/b7/d7/48cbf6b0c3c39761e47a99cb483405f0fde2be22cf00d71ef316ce52b458/protobuf-5.29.6-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:a8866b2cff111f0f863c1b3b9e7572dc7eaea23a7fae27f6fc613304046483e6", size = 320284, upload-time = "2026-02-04T22:54:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dd/cadd6ec43069247d91f6345fa7a0d2858bef6af366dbd7ba8f05d2c77d3b/protobuf-5.29.6-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:e3387f44798ac1106af0233c04fb8abf543772ff241169946f698b3a9a3d3ab9", size = 320478, upload-time = "2026-02-04T22:54:32.909Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cb/e3065b447186cb70aa65acc70c86baf482d82bf75625bf5a2c4f6919c6a3/protobuf-5.29.6-py3-none-any.whl", hash = "sha256:6b9edb641441b2da9fa8f428760fc136a49cf97a52076010cf22a2ff73438a86", size = 173126, upload-time = "2026-02-04T22:54:39.462Z" }, ] [[package]] @@ -1732,11 +1771,11 @@ wheels = [ [[package]] name = "pyasn1" -version = "0.6.1" +version = "0.6.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ba/e9/01f1a64245b89f039897cb0130016d79f77d52669aae6ee7b159a6c4c018/pyasn1-0.6.1.tar.gz", hash = "sha256:6f580d2bdd84365380830acf45550f2511469f673cb4a5ae3857a3170128b034", size = 145322, upload-time = "2024-09-10T22:41:42.55Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/b6/6e630dff89739fcd427e3f72b3d905ce0acb85a45d4ec3e2678718a3487f/pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b", size = 146586, upload-time = "2026-01-16T18:04:18.534Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c8/f1/d6a797abb14f6283c0ddff96bbdd46937f64122b8c925cab503dd37f8214/pyasn1-0.6.1-py3-none-any.whl", hash = "sha256:0d632f46f2ba09143da3a8afe9e33fb6f92fa2320ab7e886e2d0f7672af84629", size = 83135, upload-time = "2024-09-11T16:00:36.122Z" }, + { url = "https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf", size = 83371, upload-time = "2026-01-16T18:04:17.174Z" }, ] [[package]] @@ -1762,11 +1801,11 @@ wheels = [ [[package]] name = "pycparser" -version = "2.23" +version = "3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" }, + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] [[package]] @@ -1794,13 +1833,22 @@ version = "201.5616.27" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/18/49/7e13121f9b2373fe1cb38f9626acd9e539534b4848c236eb1f00986196ae/pydevd-pycharm-201.5616.27.tar.gz", hash = "sha256:e7296bc2fb6a501e0100c06160adb1de63f285191c3ae2abb25f209e2b649af3", size = 4182387, upload-time = "2020-02-20T12:47:33.574Z" } +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + [[package]] name = "pyjwt" -version = "2.10.1" +version = "2.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/10/e8192be5f38f3e8e7e046716de4cae33d56fd5ae08927a823bb916be36c1/pyjwt-2.12.0.tar.gz", hash = "sha256:2f62390b667cd8257de560b850bb5a883102a388829274147f1d724453f8fb02", size = 102511, upload-time = "2026-03-12T17:15:30.831Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" }, + { url = "https://files.pythonhosted.org/packages/15/70/70f895f404d363d291dcf62c12c85fdd47619ad9674ac0f53364d035925a/pyjwt-2.12.0-py3-none-any.whl", hash = "sha256:9bb459d1bdd0387967d287f5656bf7ec2b9a26645d1961628cda1764e087fd6e", size = 29700, upload-time = "2026-03-12T17:15:29.257Z" }, ] [package.optional-dependencies] @@ -1847,26 +1895,27 @@ wheels = [ [[package]] name = "pyparsing" -version = "3.2.5" +version = "3.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/a5/181488fc2b9d093e3972d2a472855aae8a03f000592dbfce716a512b3359/pyparsing-3.2.5.tar.gz", hash = "sha256:2df8d5b7b2802ef88e8d016a2eb9c7aeaa923529cd251ed0fe4608275d4105b6", size = 1099274, upload-time = "2025-09-21T04:11:06.277Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/91/9c6ee907786a473bf81c5f53cf703ba0957b23ab84c264080fb5a450416f/pyparsing-3.3.2.tar.gz", hash = "sha256:c777f4d763f140633dcb6d8a3eda953bf7a214dc4eff598413c070bcdc117cbc", size = 6851574, upload-time = "2026-01-21T03:57:59.36Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/10/5e/1aa9a93198c6b64513c9d7752de7422c06402de6600a8767da1524f9570b/pyparsing-3.2.5-py3-none-any.whl", hash = "sha256:e38a4f02064cf41fe6593d328d0512495ad1f3d8a91c4f73fc401b3079a59a5e", size = 113890, upload-time = "2025-09-21T04:11:04.117Z" }, + { url = "https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl", hash = "sha256:850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d", size = 122781, upload-time = "2026-01-21T03:57:55.912Z" }, ] [[package]] name = "pytest" -version = "8.1.0" +version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3e/71/ad447fd2f816a01e6e1c60771232fcab50e8a3069f115d885c8ba87152da/pytest-8.1.0.tar.gz", hash = "sha256:f8fa04ab8f98d185113ae60ea6d79c22f8143b14bc1caeced44a0ab844928323", size = 1407129, upload-time = "2024-03-03T21:23:43.502Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/4a/3f626e3974bea1e6d471bd86f7965c67cd06d5770d1fec9aae445c44da7b/pytest-8.1.0-py3-none-any.whl", hash = "sha256:ee32db7af8de4629a455806befa90559f307424c07b8413ccfc30bf5b221dd7e", size = 335525, upload-time = "2024-03-03T21:23:38.04Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, ] [[package]] @@ -1906,11 +1955,11 @@ sdist = { url = "https://files.pythonhosted.org/packages/a1/da/616a4d073642da5dd [[package]] name = "pytz" -version = "2025.2" +version = "2026.1.post1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/db/b8721d71d945e6a8ac63c0fc900b2067181dbb50805958d4d4661cf7d277/pytz-2026.1.post1.tar.gz", hash = "sha256:3378dde6a0c3d26719182142c56e60c7f9af7e968076f31aae569d72a0358ee1", size = 321088, upload-time = "2026-03-03T07:47:50.683Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/10/99/781fe0c827be2742bcc775efefccb3b048a3a9c6ce9aec0cbf4a101677e5/pytz-2026.1.post1-py2.py3-none-any.whl", hash = "sha256:f2fd16142fda348286a75e1a524be810bb05d444e5a081f37f7affc635035f7a", size = 510489, upload-time = "2026-03-03T07:47:49.167Z" }, ] [[package]] @@ -1964,7 +2013,6 @@ dependencies = [ { name = "alembic" }, { name = "apispec" }, { name = "auth-client" }, - { name = "azure-monitor-opentelemetry-exporter" }, { name = "boto3" }, { name = "clickhouse-connect" }, { name = "cloud-adapter" }, @@ -1982,21 +2030,10 @@ dependencies = [ { name = "metroculus-client" }, { name = "mysql-connector-python" }, { name = "netaddr" }, - { name = "opentelemetry-api" }, - { name = "opentelemetry-exporter-otlp-proto-grpc" }, - { name = "opentelemetry-exporter-otlp-proto-http" }, - { name = "opentelemetry-instrumentation-asyncio" }, - { name = "opentelemetry-instrumentation-logging" }, - { name = "opentelemetry-instrumentation-pymongo" }, - { name = "opentelemetry-instrumentation-requests" }, - { name = "opentelemetry-instrumentation-sqlalchemy" }, - { name = "opentelemetry-instrumentation-threading" }, - { name = "opentelemetry-instrumentation-tornado" }, - { name = "opentelemetry-instrumentation-urllib3" }, - { name = "opentelemetry-sdk" }, { name = "optscale-data" }, { name = "optscale-exceptions" }, { name = "optscale-password" }, + { name = "optscale-telemetry" }, { name = "optscale-time" }, { name = "optscale-types" }, { name = "protobuf" }, @@ -2028,7 +2065,6 @@ requires-dist = [ { name = "alembic", specifier = "==1.13.1" }, { name = "apispec", specifier = "==6.3.1" }, { name = "auth-client", editable = "../optscale_client/auth_client" }, - { name = "azure-monitor-opentelemetry-exporter", specifier = "==1.0.0b35" }, { name = "boto3", specifier = "==1.34.7" }, { name = "clickhouse-connect", specifier = "==0.8.15" }, { name = "cloud-adapter", editable = "../tools/cloud_adapter" }, @@ -2046,21 +2082,10 @@ requires-dist = [ { name = "metroculus-client", editable = "../optscale_client/metroculus_client" }, { name = "mysql-connector-python", specifier = "==9.1.0" }, { name = "netaddr", specifier = "==0.7.19" }, - { name = "opentelemetry-api", specifier = "==1.33.*" }, - { name = "opentelemetry-exporter-otlp-proto-grpc", specifier = "==1.33.*" }, - { name = "opentelemetry-exporter-otlp-proto-http", specifier = "==1.33.*" }, - { name = "opentelemetry-instrumentation-asyncio", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-logging", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-pymongo", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-requests", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-sqlalchemy", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-threading", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-tornado", specifier = "==0.54b0" }, - { name = "opentelemetry-instrumentation-urllib3", specifier = "==0.54b0" }, - { name = "opentelemetry-sdk", specifier = "==1.33.*" }, { name = "optscale-data", editable = "../tools/optscale_data" }, { name = "optscale-exceptions", editable = "../tools/optscale_exceptions" }, { name = "optscale-password", editable = "../tools/optscale_password" }, + { name = "optscale-telemetry", editable = "../tools/optscale_telemetry" }, { name = "optscale-time", editable = "../tools/optscale_time" }, { name = "optscale-types", editable = "../tools/optscale_types" }, { name = "protobuf", specifier = ">=5.29.1,<6" }, @@ -2081,7 +2106,7 @@ dev = [ { name = "mongomock", specifier = "==4.1.2" }, { name = "pycodestyle", specifier = "==2.11.1" }, { name = "pylint", specifier = "==3.0.2" }, - { name = "pytest", specifier = "==8.1.0" }, + { name = "pytest", specifier = "==8.4.2" }, { name = "pytest-xdist", specifier = "==3.5.0" }, { name = "restapi-client", editable = "../optscale_client/rest_api_client" }, { name = "setuptools", specifier = "==80.9.0" }, @@ -2111,18 +2136,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7f/25/f3b628e123699139b959551ed922f35af97fa1505e195ae3e6537a14fbc3/retrying-1.4.1-py3-none-any.whl", hash = "sha256:d736050c1adfc0a71fa022d9198ee130b0e66be318678a3fdd8b1b8872dc0997", size = 12184, upload-time = "2025-07-19T09:39:00.574Z" }, ] -[[package]] -name = "rsa" -version = "4.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyasn1" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/8a/22b7beea3ee0d44b1916c0c1cb0ee3af23b700b6da9f04991899d0c555d4/rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75", size = 29034, upload-time = "2025-04-16T09:51:18.218Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/64/8d/0133e4eb4beed9e425d9a98ed6e081a55d195481b7632472be1af08d2f6b/rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762", size = 34696, upload-time = "2025-04-16T09:51:17.142Z" }, -] - [[package]] name = "s3transfer" version = "0.10.4" @@ -2185,11 +2198,11 @@ requires-dist = [ [[package]] name = "tomlkit" -version = "0.13.3" +version = "0.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload-time = "2025-06-05T07:13:44.947Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/af/14b24e41977adb296d6bd1fb59402cf7d60ce364f90c890bd2ec65c43b5a/tomlkit-0.14.0.tar.gz", hash = "sha256:cf00efca415dbd57575befb1f6634c4f42d2d87dbba376128adb42c121b87064", size = 187167, upload-time = "2026-01-13T01:14:53.304Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload-time = "2025-06-05T07:13:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/b5/11/87d6d29fb5d237229d67973a6c9e06e048f01cf4994dee194ab0ea841814/tomlkit-0.14.0-py3-none-any.whl", hash = "sha256:592064ed85b40fa213469f81ac584f67a4f2992509a7c3ea2d632208623a3680", size = 39310, upload-time = "2026-01-13T01:14:51.965Z" }, ] [[package]] @@ -2220,11 +2233,11 @@ wheels = [ [[package]] name = "tzdata" -version = "2025.2" +version = "2025.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/a7/c202b344c5ca7daf398f3b8a477eeb205cf3b6f32e7ec3a6bac0629ca975/tzdata-2025.3.tar.gz", hash = "sha256:de39c2ca5dc7b0344f2eba86f49d614019d29f060fc4ebc8a417896a620b56a7", size = 196772, upload-time = "2025-12-13T17:45:35.667Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b0/003792df09decd6849a5e39c28b513c06e84436a54440380862b5aeff25d/tzdata-2025.3-py2.py3-none-any.whl", hash = "sha256:06a47e5700f3081aab02b2e513160914ff0694bce9947d6b76ebd6bf57cfc5d1", size = 348521, upload-time = "2025-12-13T17:45:33.889Z" }, ] [[package]] @@ -2284,7 +2297,7 @@ wheels = [ [[package]] name = "yandexcloud" -version = "0.364.0" +version = "0.381.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cryptography" }, @@ -2297,9 +2310,9 @@ dependencies = [ { name = "requests" }, { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2c/af/898159a5ea9028f91e1d1c7af624ae3ab678156e971a2e4468550b670984/yandexcloud-0.364.0.tar.gz", hash = "sha256:804eda70c9abd6df5998de794ab13b9080e69c0d6714545d868b96b83d5d308a", size = 3523741, upload-time = "2025-10-20T15:07:56.744Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b4/32/4194afb29cce57cd2995b550f8f87aacd360fba98d317c13e2c8d10a7008/yandexcloud-0.381.0.tar.gz", hash = "sha256:1f9c5814ae798f7ac2cfc8b6f6f6728b56c84d81ed9c269ff294de43daddc651", size = 3738778, upload-time = "2026-03-09T15:25:34.422Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/eb/5f15b13d47c8e9cf84712825306c074521a6e3005b856ad4f5a7aea3e8a5/yandexcloud-0.364.0-py3-none-any.whl", hash = "sha256:69632023c370d6dc0f344fa616e0ffdc2d8d63ae7856d27079cb42b45189806f", size = 5468648, upload-time = "2025-10-20T15:07:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/78/4f/b1023d66d05614b835bde6c27b669ab1e034c138bf3769ec57a421bae148/yandexcloud-0.381.0-py3-none-any.whl", hash = "sha256:cefcbe2bfb5eb2b4493722a4400ae2517d7246dd9ca8f7f3e7d3f43414c54c36", size = 5766758, upload-time = "2026-03-09T15:25:32.068Z" }, ] [[package]] diff --git a/tools/optscale_telemetry/Dockerfile_tests b/tools/optscale_telemetry/Dockerfile_tests new file mode 100644 index 000000000..5cfbce1a7 --- /dev/null +++ b/tools/optscale_telemetry/Dockerfile_tests @@ -0,0 +1,13 @@ +FROM python:3.12 + +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ +LABEL org.opencontainers.image.authors="Hystax" + +WORKDIR /usr/src/app/ + +COPY tools/optscale_telemetry/tools/. tools/ +COPY tools/optscale_telemetry/tests/. tests/ +COPY tools/optscale_telemetry/pyproject.toml pyproject.toml +COPY tools/optscale_telemetry/uv.lock uv.lock + +RUN uv --project tools/optscale_telemetry sync --locked diff --git a/tools/optscale_telemetry/__init__.py b/tools/optscale_telemetry/__init__.py new file mode 100644 index 000000000..f0e663386 --- /dev/null +++ b/tools/optscale_telemetry/__init__.py @@ -0,0 +1,8 @@ +from .tools.optscale_telemetry.otel_config import ( + OpenTelemetryConfig, + OpenTelemetryExporter, + OTELException, +) +from .tools.optscale_telemetry.utils import get_trace_headers + +__all__ = ["get_trace_headers", "OpenTelemetryConfig", "OpenTelemetryExporter", "OTELException"] diff --git a/tools/optscale_telemetry/pyproject.toml b/tools/optscale_telemetry/pyproject.toml new file mode 100644 index 000000000..39597fde9 --- /dev/null +++ b/tools/optscale_telemetry/pyproject.toml @@ -0,0 +1,100 @@ +[project] +name = "optscale-telemetry" +version = "0.0.0" +description = "OptScale OpenTelemetry" +requires-python = ">=3.12.11,<3.13" +dependencies = [ + "azure-monitor-opentelemetry-exporter==1.0.0b35", + "opentelemetry-api==1.33.*", + "opentelemetry-exporter-otlp-proto-grpc==1.33.*", + "opentelemetry-exporter-otlp-proto-http==1.33.*", + "opentelemetry-instrumentation-asyncio==0.54b0", + "opentelemetry-instrumentation-logging==0.54b0", + "opentelemetry-instrumentation-pymongo==0.54b0", + "opentelemetry-instrumentation-requests==0.54b0", + "opentelemetry-instrumentation-sqlalchemy==0.54b0", + "opentelemetry-instrumentation-threading==0.54b0", + "opentelemetry-instrumentation-tornado==0.54b0", + "opentelemetry-instrumentation-urllib3==0.54b0", + "opentelemetry-sdk==1.33.*", +] + +[build-system] +requires = ["setuptools>=69.0.0", "wheel"] +build-backend = "setuptools.build_meta" + +[tool.setuptools.packages.find] +where = ["."] +include = ["tools.optscale_telemetry*"] +namespaces = true + +[dependency-groups] +dev = [ + "pytest>=8.4.2,<9.0.0", + "pytest-asyncio>=1.2.0,<2.0.0", + "pytest-cov>=7.0.0,<8.0.0", + "pytest-mock>=3.15.1,<4.0.0", + "pytest-randomly>=4.0.1,<5.0.0", + "ruff>=0.15.6", + "tornado==6.5", + "pymongo==4.6.3", +] + +[tool.ruff] +line-length = 100 +target-version = "py312" +output-format = "full" +cache-dir = ".cache/ruff" + +[tool.ruff.lint] +preview = true +explicit-preview-rules = true +select = [ + "E", + "W", + "F", + "I", + "B", + "C4", + "UP", + "PT", + "T10", + "RUF029", +] +ignore = [ + "PT001", + "PT011", + "PT023", + "B008", + "B904", +] + +[tool.ruff.format] +quote-style = "double" +docstring-code-format = true + +[tool.pytest.ini_options] +testpaths = "tests/" +pythonpath = "." +asyncio_mode = "auto" +asyncio_default_fixture_loop_scope = "session" +addopts = "--cov=tools.optscale_telemetry --cov-report=term-missing --cov-report=html --cov-report=xml" +cache_dir = ".cache/pytest" + +[tool.coverage.run] +branch = true +source = [ + "tools.optscale_telemetry", +] +relative_files = true +omit = [ + "__main__.py", +] + +[tool.coverage.report] +show_missing = true +exclude_lines = [ + "pragma: no cover", + "pragma: no branch", + "NotImplementedError", +] diff --git a/tools/optscale_telemetry/tests/test_clickhouse_instrumentor.py b/tools/optscale_telemetry/tests/test_clickhouse_instrumentor.py new file mode 100644 index 000000000..accbbde13 --- /dev/null +++ b/tools/optscale_telemetry/tests/test_clickhouse_instrumentor.py @@ -0,0 +1,153 @@ +import contextlib +import sys +import types +from types import SimpleNamespace + +from pytest_mock import MockerFixture + +import tools.optscale_telemetry.clickhouse_instrumentor as clickhouse_instrumentor_module +from tools.optscale_telemetry.clickhouse_instrumentor import ClickHouseInstrumentor + + +def test_wrap_query_creates_span_with_statement(mocker: MockerFixture) -> None: + instrumentor = ClickHouseInstrumentor() + tracer = mocker.Mock() + tracer.start_as_current_span.return_value = contextlib.nullcontext() + instrumentor._tracer = tracer + + call_wrapped = mocker.Mock(return_value="ok") + client = SimpleNamespace(host="localhost", port=8123) + + wrapper = instrumentor._make_wrapper("query") + result = wrapper( + call_wrapped=call_wrapped, + instance=client, + args=("SELECT 1",), + kwargs={}, + ) + + assert result == "ok" + span_kwargs = tracer.start_as_current_span.call_args.kwargs + assert span_kwargs["attributes"]["db.system"] == "clickhouse" + assert span_kwargs["attributes"]["db.operation.name"] == "query" + assert span_kwargs["attributes"]["db.statement"] == "SELECT 1" + assert span_kwargs["attributes"]["server.address"] == "localhost:8123" + + +def test_wrap_insert_creates_span_with_table(mocker: MockerFixture) -> None: + instrumentor = ClickHouseInstrumentor() + tracer = mocker.Mock() + tracer.start_as_current_span.return_value = contextlib.nullcontext() + instrumentor._tracer = tracer + + call_wrapped = mocker.Mock(return_value="ok") + client = SimpleNamespace(host="localhost", port=8443) + + wrapper = instrumentor._make_wrapper("insert") + result = wrapper( + call_wrapped=call_wrapped, + instance=client, + args=("expenses", [("a",)]), + kwargs={}, + ) + + assert result == "ok" + span_kwargs = tracer.start_as_current_span.call_args.kwargs + assert span_kwargs["attributes"]["db.collection.name"] == "expenses" + assert "db.statement" not in span_kwargs["attributes"] + + +def test_instrument_sets_tracer_and_wraps_methods(mocker: MockerFixture) -> None: + class HttpClient: + def query(self): + return None + + def command(self): + return None + + def insert(self): + return None + + def query_rows_stream(self): + return None + + fake_httpclient_module = types.ModuleType("clickhouse_connect.driver.httpclient") + fake_httpclient_module.HttpClient = HttpClient + + fake_driver_module = types.ModuleType("clickhouse_connect.driver") + fake_driver_module.httpclient = fake_httpclient_module + + fake_clickhouse_connect_module = types.ModuleType("clickhouse_connect") + fake_clickhouse_connect_module.driver = fake_driver_module + + mocker.patch.dict( + sys.modules, + { + "clickhouse_connect": fake_clickhouse_connect_module, + "clickhouse_connect.driver": fake_driver_module, + "clickhouse_connect.driver.httpclient": fake_httpclient_module, + }, + ) + + tracer_provider = object() + tracer = object() + + get_tracer_mock = mocker.patch( + "tools.optscale_telemetry.clickhouse_instrumentor.trace.get_tracer", + return_value=tracer, + ) + wrap_mock = mocker.patch( + "tools.optscale_telemetry.clickhouse_instrumentor.wrap_function_wrapper", + ) + + instrumentor = ClickHouseInstrumentor() + instrumentor._instrument(tracer_provider=tracer_provider) + + assert instrumentor._tracer is tracer + get_tracer_mock.assert_called_once_with( + clickhouse_instrumentor_module.__name__, + tracer_provider=tracer_provider, + ) + assert wrap_mock.call_count == 4 + + +def test_uninstrument_unwraps_methods(mocker: MockerFixture) -> None: + class HttpClient: + def query(self): + return None + + def command(self): + return None + + def insert(self): + return None + + def query_rows_stream(self): + return None + + fake_httpclient_module = types.ModuleType("clickhouse_connect.driver.httpclient") + fake_httpclient_module.HttpClient = HttpClient + + fake_driver_module = types.ModuleType("clickhouse_connect.driver") + fake_driver_module.httpclient = fake_httpclient_module + + fake_clickhouse_connect_module = types.ModuleType("clickhouse_connect") + fake_clickhouse_connect_module.driver = fake_driver_module + + mocker.patch.dict( + sys.modules, + { + "clickhouse_connect": fake_clickhouse_connect_module, + "clickhouse_connect.driver": fake_driver_module, + "clickhouse_connect.driver.httpclient": fake_httpclient_module, + }, + ) + + unwrap_mock = mocker.patch( + "tools.optscale_telemetry.clickhouse_instrumentor.unwrap", + ) + + instrumentor = ClickHouseInstrumentor() + instrumentor._uninstrument() + + assert unwrap_mock.call_count == 4 diff --git a/tools/optscale_telemetry/tests/test_kombu_instrumentor.py b/tools/optscale_telemetry/tests/test_kombu_instrumentor.py new file mode 100644 index 000000000..e182d2f51 --- /dev/null +++ b/tools/optscale_telemetry/tests/test_kombu_instrumentor.py @@ -0,0 +1,151 @@ +import contextlib +import sys +import types +from collections.abc import MutableMapping +from types import SimpleNamespace +from typing import Any + +from pytest_mock import MockerFixture + +import tools.optscale_telemetry.kombu_instrumentor as kombu_instrumentor_module +from tools.optscale_telemetry.kombu_instrumentor import KombuInstrumentor + + +def test_wrap_publish_injects_trace_headers(mocker: MockerFixture) -> None: + instrumentor = KombuInstrumentor() + tracer = mocker.Mock() + tracer.start_as_current_span.return_value = contextlib.nullcontext() + instrumentor._tracer = tracer + + def inject_headers(headers: MutableMapping[str, Any]) -> None: + headers["traceparent"] = "injected-traceparent" + + inject_mock = mocker.patch( + "tools.optscale_telemetry.kombu_instrumentor.propagate.inject", + side_effect=inject_headers, + ) + + call_wrapped = mocker.Mock(return_value="published") + producer = SimpleNamespace(exchange="events", routing_key="jobs") + headers: dict[str, Any] = {} + + result = instrumentor._wrap_publish( + call_wrapped=call_wrapped, + instance=producer, + args=(b"payload",), + kwargs={"headers": headers}, + ) + + assert result == "published" + inject_mock.assert_called_once_with(headers) + assert "traceparent" in headers + + +def test_wrap_receive_extracts_trace_headers(mocker: MockerFixture) -> None: + instrumentor = KombuInstrumentor() + tracer = mocker.Mock() + tracer.start_as_current_span.return_value = contextlib.nullcontext() + instrumentor._tracer = tracer + + parent_context = object() + extract_mock = mocker.patch( + "tools.optscale_telemetry.kombu_instrumentor.propagate.extract", + return_value=parent_context, + ) + + message_headers = {"traceparent": "00-abc-def-01"} + message = SimpleNamespace( + headers=message_headers, + delivery_info={"routing_key": "jobs"}, + properties={}, + body=b"payload", + delivery_tag="tag-1", + ) + consumer = SimpleNamespace(queues=[]) + call_wrapped = mocker.Mock(return_value="consumed") + + result = instrumentor._wrap_receive( + call_wrapped=call_wrapped, + instance=consumer, + args=(None, message), + kwargs={}, + ) + + assert result == "consumed" + extract_mock.assert_called_once_with(message_headers) + assert tracer.start_as_current_span.call_args.kwargs["context"] is parent_context + + + +def test_instrument_sets_tracer_and_wraps_publish_receive( + mocker: MockerFixture, +) -> None: + producer_class = type("Producer", (), {}) + consumer_class = type("Consumer", (), {}) + + fake_messaging_module = types.ModuleType("kombu.messaging") + fake_messaging_module.Producer = producer_class + fake_messaging_module.Consumer = consumer_class + + fake_kombu_module = types.ModuleType("kombu") + fake_kombu_module.messaging = fake_messaging_module + + mocker.patch.dict( + sys.modules, + {"kombu": fake_kombu_module, "kombu.messaging": fake_messaging_module}, + ) + + tracer_provider = object() + tracer = object() + + get_tracer_mock = mocker.patch( + "tools.optscale_telemetry.kombu_instrumentor.trace.get_tracer", + return_value=tracer, + ) + wrap_mock = mocker.patch( + "tools.optscale_telemetry.kombu_instrumentor.wrap_function_wrapper", + ) + + instrumentor = KombuInstrumentor() + instrumentor._instrument(tracer_provider=tracer_provider) + + assert instrumentor._tracer is tracer + get_tracer_mock.assert_called_once_with( + kombu_instrumentor_module.__name__, + tracer_provider=tracer_provider, + ) + assert wrap_mock.call_args_list == [ + mocker.call(producer_class, "publish", instrumentor._wrap_publish), + mocker.call(consumer_class, "receive", instrumentor._wrap_receive), + ] + + +def test_uninstrument_unwraps_publish_and_receive( + mocker: MockerFixture, +) -> None: + producer_class = type("Producer", (), {}) + consumer_class = type("Consumer", (), {}) + + fake_messaging_module = types.ModuleType("kombu.messaging") + fake_messaging_module.Producer = producer_class + fake_messaging_module.Consumer = consumer_class + + fake_kombu_module = types.ModuleType("kombu") + fake_kombu_module.messaging = fake_messaging_module + + mocker.patch.dict( + sys.modules, + {"kombu": fake_kombu_module, "kombu.messaging": fake_messaging_module}, + ) + + unwrap_mock = mocker.patch( + "tools.optscale_telemetry.kombu_instrumentor.unwrap", + ) + + instrumentor = KombuInstrumentor() + instrumentor._uninstrument() + + assert unwrap_mock.call_args_list == [ + mocker.call(producer_class, "publish"), + mocker.call(consumer_class, "receive"), + ] diff --git a/tools/optscale_telemetry/tests/test_otel_config.py b/tools/optscale_telemetry/tests/test_otel_config.py new file mode 100644 index 000000000..c9b13ed25 --- /dev/null +++ b/tools/optscale_telemetry/tests/test_otel_config.py @@ -0,0 +1,300 @@ +import logging + +import pytest +from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter +from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk.trace.export import BatchSpanProcessor +from pytest_mock import MockerFixture + +from tools.optscale_telemetry import OpenTelemetryConfig, OTELException + + +@pytest.mark.parametrize( + "otel_config", [{}, None] +) +def test_no_config(caplog: pytest.LogCaptureFixture, otel_config: dict | None): + with caplog.at_level(logging.INFO): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config=otel_config, + service_config=None, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + + assert "OTEL: no telemetry global configuration available." in caplog.text + + +@pytest.mark.parametrize( + "otel_config", + [ + {"exporter": "whatever"}, + {"enabled": "false"}, + {"enabled": "1"}, + {"enabled": "yes"}, + ], +) +def test_not_enabled(caplog: pytest.LogCaptureFixture, otel_config: dict): + with caplog.at_level(logging.INFO): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config=otel_config, + service_config=None, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + + assert "OTEL: telemetry is not enabled." in caplog.text + + + +@pytest.mark.parametrize( + "otel_config", [{"enabled": "true"}, {"enabled": "TRUE"}, {"enabled": "trUe"}] +) +@pytest.mark.parametrize( + "service_config", [{}, None] +) +def test_no_service_config( + caplog: pytest.LogCaptureFixture, otel_config: dict, service_config: dict | None, +): + with caplog.at_level(logging.INFO): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config=otel_config, + service_config=service_config, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + + assert "OTEL: no telemetry service configuration available." in caplog.text + + +def test_no_exporter(): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={"enabled": "true"}, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + + with pytest.raises(OTELException) as cv: + config.setup_open_telemetry() + + assert str(cv.value) == "OTEL: Invalid telemetry configuration. KeyError - 'exporter'." + +def test_no_exporter_type(): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={"enabled": "true", "exporter": {}}, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + + with pytest.raises(OTELException) as cv: + config.setup_open_telemetry() + + assert str(cv.value) == "OTEL: Invalid telemetry configuration. KeyError - 'type'." + + +def test_invalid_exporter(): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={"enabled": "true", "exporter": {"type": "wathever"}}, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + + with pytest.raises(OTELException) as cv: + config.setup_open_telemetry() + + assert str(cv.value) == ( + "OTEL: Invalid telemetry configuration. ValueError - 'wathever'" + " is not a valid OpenTelemetryExporter." + ) + + +@pytest.mark.parametrize("exporter_type", ["otlp", "azure_monitor"]) +def test_no_connection_string(exporter_type: str): + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={"enabled": "true", "exporter": {"type": exporter_type}}, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + + with pytest.raises(OTELException) as cv: + config.setup_open_telemetry() + + assert str(cv.value) == ( + f"OTEL: Invalid configuration. The exporter `{exporter_type}` requires a connection string." + ) + + +def test_otlp_exporter(mocker: MockerFixture): + m_span_processor = mocker.patch( + "tools.optscale_telemetry.otel_config.BatchSpanProcessor", + wraps=BatchSpanProcessor, + ) + + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={"enabled": "true", "exporter": {"type": "otlp", "connection_string": "http://localhost"}}, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + assert isinstance(m_span_processor.mock_calls[0].args[0], OTLPSpanExporter) + config.shutdown() + + +def test_azure_exporter(mocker: MockerFixture): + m_span_processor = mocker.patch( + "tools.optscale_telemetry.otel_config.BatchSpanProcessor", + wraps=BatchSpanProcessor, + ) + + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={ + "enabled": "true", + "exporter": { + "type": "azure_monitor", + "connection_string": ( + "InstrumentationKey=00000000-0000-0000-0000-000000000000;" + "IngestionEndpoint=https://westeurope-5.in.applicationinsights.azure.com/;" + "LiveEndpoint=https://westeurope.livediagnostics.monitor.azure.com/;ApplicationId=my-app-id" + ), + }, + }, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + assert isinstance(m_span_processor.mock_calls[0].args[0], AzureMonitorTraceExporter) + config.shutdown() + + +def test_console_exporter(mocker: MockerFixture): + m_span_processor = mocker.patch( + "tools.optscale_telemetry.otel_config.BatchSpanProcessor", + wraps=BatchSpanProcessor, + ) + + config = OpenTelemetryConfig( + service_name="my service", + service_version="1.0", + otel_config={ + "enabled": "true", + "exporter": { + "type": "azure_monitor", + "connection_string": ( + "InstrumentationKey=00000000-0000-0000-0000-000000000000;" + "IngestionEndpoint=https://westeurope-5.in.applicationinsights.azure.com/;" + "LiveEndpoint=https://westeurope.livediagnostics.monitor.azure.com/;ApplicationId=my-app-id" + ), + }, + }, + service_config={"enable_requests": "true"}, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + assert isinstance(m_span_processor.mock_calls[0].args[0], AzureMonitorTraceExporter) + config.shutdown() + + +@pytest.mark.parametrize( + ("enable_flag_name", "instrumentor_class"), + [ + ("enable_asyncio", "opentelemetry.instrumentation.asyncio.AsyncioInstrumentor"), + ("enable_threading", "opentelemetry.instrumentation.threading.ThreadingInstrumentor"), + ("enable_tornado", "opentelemetry.instrumentation.tornado.TornadoInstrumentor"), + ("enable_requests", "opentelemetry.instrumentation.requests.RequestsInstrumentor"), + ("enable_urllib3", "opentelemetry.instrumentation.urllib3.URLLib3Instrumentor"), + ("enable_mongo", "opentelemetry.instrumentation.pymongo.PymongoInstrumentor"), + ( + "enable_clickhouse", + "tools.optscale_telemetry.clickhouse_instrumentor.ClickHouseInstrumentor", + ), + ("enable_kombu", "tools.optscale_telemetry.kombu_instrumentor.KombuInstrumentor"), + ], +) +@pytest.mark.parametrize( + "enable_flag_value", + ["true", "TRUE", "TruE"], +) +def test_instrument( + mocker: MockerFixture, + instrumentor_class: str, + enable_flag_name: str, + enable_flag_value: str, +): + m_instrumentor = mocker.patch(instrumentor_class) + + config = OpenTelemetryConfig( + service_name="svc", + service_version="1.0", + otel_config={"enabled": "true", "exporter": {"type": "console"}}, + service_config={enable_flag_name: enable_flag_value}, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + + m_instrumentor.assert_called_once() + m_instrumentor.return_value.instrument.assert_called_once() + config.shutdown() + + +@pytest.mark.parametrize( + ("enable_flag_name", "instrumentor_class"), + [ + ("enable_asyncio", "opentelemetry.instrumentation.asyncio.AsyncioInstrumentor"), + ("enable_threading", "opentelemetry.instrumentation.threading.ThreadingInstrumentor"), + ("enable_tornado", "opentelemetry.instrumentation.tornado.TornadoInstrumentor"), + ("enable_requests", "opentelemetry.instrumentation.requests.RequestsInstrumentor"), + ("enable_urllib3", "opentelemetry.instrumentation.urllib3.URLLib3Instrumentor"), + ("enable_mongo", "opentelemetry.instrumentation.pymongo.PymongoInstrumentor"), + ( + "enable_clickhouse", + "tools.optscale_telemetry.clickhouse_instrumentor.ClickHouseInstrumentor", + ), + ("enable_kombu", "tools.optscale_telemetry.kombu_instrumentor.KombuInstrumentor"), + ], +) +@pytest.mark.parametrize( + "enable_flag_value", + [ + "yes", + "1", + "false", + "", + ], +) +def test_instrument_disable( + mocker: MockerFixture, + instrumentor_class: str, + enable_flag_name: str, + enable_flag_value: str, +): + m_instrumentor = mocker.patch(instrumentor_class) + + config = OpenTelemetryConfig( + service_name="svc", + service_version="1.0", + otel_config={"enabled": "true", "exporter": {"type": "console"}}, + service_config={enable_flag_name: enable_flag_value}, + sqlalchemy_engine=None, + ) + config.setup_open_telemetry() + + m_instrumentor.assert_not_called() + m_instrumentor.return_value.instrument.assert_not_called() + config.shutdown() diff --git a/tools/optscale_telemetry/tools/__init__.py b/tools/optscale_telemetry/tools/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/tools/optscale_telemetry/tools/optscale_telemetry/__init__.py b/tools/optscale_telemetry/tools/optscale_telemetry/__init__.py new file mode 100644 index 000000000..e10bb1fb3 --- /dev/null +++ b/tools/optscale_telemetry/tools/optscale_telemetry/__init__.py @@ -0,0 +1,8 @@ +from .otel_config import ( + OpenTelemetryConfig, + OpenTelemetryExporter, + OTELException, +) +from .utils import get_trace_headers + +__all__ = ["get_trace_headers", "OpenTelemetryConfig", "OpenTelemetryExporter", "OTELException"] diff --git a/tools/optscale_telemetry/tools/optscale_telemetry/clickhouse_instrumentor.py b/tools/optscale_telemetry/tools/optscale_telemetry/clickhouse_instrumentor.py new file mode 100644 index 000000000..7f8fe41d5 --- /dev/null +++ b/tools/optscale_telemetry/tools/optscale_telemetry/clickhouse_instrumentor.py @@ -0,0 +1,154 @@ +from __future__ import annotations + +from collections.abc import Callable, Collection +from importlib import import_module +from typing import Any + +from opentelemetry import trace +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor +from opentelemetry.instrumentation.utils import unwrap +from opentelemetry.trace import SpanKind +from wrapt import wrap_function_wrapper + +_CLICKHOUSE_DEPENDENCIES = ("clickhouse-connect >= 0.8.0, < 1.0.0",) +_WRAPPED_METHODS = ("query", "command", "insert", "query_rows_stream") + + +class ClickHouseInstrumentor(BaseInstrumentor): + """Instrument clickhouse-connect HttpClient calls.""" + + def instrumentation_dependencies(self) -> Collection[str]: + """Return supported clickhouse-connect version ranges. + + Returns: + Collection[str]: Supported clickhouse-connect versions. + """ + return _CLICKHOUSE_DEPENDENCIES + + def _instrument(self, **kwargs: Any) -> None: + """Patch clickhouse-connect client methods to create spans. + + Args: + **kwargs: Optional instrumentation arguments from OpenTelemetry. + """ + tracer_provider = kwargs.get("tracer_provider") + self._tracer = trace.get_tracer( + __name__, + tracer_provider=tracer_provider, + ) + HttpClient = _get_http_client_class() + + for method_name in _WRAPPED_METHODS: + if hasattr(HttpClient, method_name): + wrap_function_wrapper(HttpClient, method_name, self._make_wrapper(method_name)) + + def _uninstrument(self, **kwargs: Any) -> None: + """Remove clickhouse-connect method patches. + + Args: + **kwargs: Optional uninstrument arguments from OpenTelemetry. + """ + HttpClient = _get_http_client_class() + + for method_name in _WRAPPED_METHODS: + if hasattr(HttpClient, method_name): + unwrap(HttpClient, method_name) + + def _make_wrapper(self, operation: str) -> Callable[..., Any]: + def _wrapper( + call_wrapped: Callable[..., Any], + instance: Any, + args: tuple[Any, ...], + kwargs: dict[str, Any], + ) -> Any: + attributes = _build_attributes(instance, operation, args, kwargs) + with self._tracer.start_as_current_span( + f"clickhouse.{operation}", + kind=SpanKind.CLIENT, + attributes=attributes, + ): + return call_wrapped(*args, **kwargs) + + return _wrapper + + +def _build_attributes( + instance: Any, + operation: str, + args: tuple[Any, ...], + kwargs: dict[str, Any], +) -> dict[str, Any]: + attributes: dict[str, Any] = { + "db.system": "clickhouse", + "db.operation.name": operation, + "peer.service": "clickhouse", + } + + endpoint = _get_endpoint(instance) + if endpoint is not None: + attributes["server.address"] = endpoint + + statement = _get_statement(operation, args, kwargs) + if statement is not None: + attributes["db.statement"] = statement + + table_name = _get_table_name(operation, args, kwargs) + if table_name is not None: + attributes["db.collection.name"] = table_name + + return attributes + + +def _get_http_client_class() -> type[Any]: + module = import_module("clickhouse_connect.driver.httpclient") + return module.HttpClient + + +def _get_endpoint(instance: Any) -> str | None: + host = getattr(instance, "host", None) + port = getattr(instance, "port", None) + if host in (None, ""): + return None + if port in (None, ""): + return str(host) + return f"{host}:{port}" + + +def _get_statement( + operation: str, + args: tuple[Any, ...], + kwargs: dict[str, Any], +) -> str | None: + if operation in ("query", "query_rows_stream"): + query = kwargs.get("query") + if query is None and args: + query = args[0] + if isinstance(query, str) and query: + return query + return None + + if operation == "command": + command = kwargs.get("cmd") + if command is None and args: + command = args[0] + if isinstance(command, str) and command: + return command + return None + + return None + + +def _get_table_name( + operation: str, + args: tuple[Any, ...], + kwargs: dict[str, Any], +) -> str | None: + if operation != "insert": + return None + + table = kwargs.get("table") + if table is None and args: + table = args[0] + if table in (None, ""): + return None + return str(table) diff --git a/tools/optscale_telemetry/tools/optscale_telemetry/kombu_instrumentor.py b/tools/optscale_telemetry/tools/optscale_telemetry/kombu_instrumentor.py new file mode 100644 index 000000000..655636cc2 --- /dev/null +++ b/tools/optscale_telemetry/tools/optscale_telemetry/kombu_instrumentor.py @@ -0,0 +1,295 @@ +from __future__ import annotations + +from collections.abc import Callable, Collection, MutableMapping, Sequence +from typing import Any + +from opentelemetry import propagate, trace +from opentelemetry.instrumentation.instrumentor import BaseInstrumentor +from opentelemetry.instrumentation.utils import unwrap +from opentelemetry.semconv.trace import SpanAttributes +from opentelemetry.trace import SpanKind +from wrapt import wrap_function_wrapper + +_KOMBU_DEPENDENCIES = ("kombu >= 5.3.0, < 6.0.0",) +_MESSAGING_OPERATION = "messaging.operation" +_MESSAGING_DESTINATION_SUBSCRIPTION_NAME = ( + "messaging.destination.subscription.name" +) +_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY = ( + "messaging.rabbitmq.destination.routing_key" +) + + +class KombuInstrumentor(BaseInstrumentor): + """Instrument kombu producers and consumers. + + The instrumentor creates producer spans around message publishing, + injects trace context into kombu headers, and creates consumer spans + around callback processing using context extracted from inbound headers. + """ + + def instrumentation_dependencies(self) -> Collection[str]: + """Return the supported kombu dependency range. + + Returns: + Collection[str]: Supported kombu versions for this instrumentor. + """ + return _KOMBU_DEPENDENCIES + + def _instrument(self, **kwargs: Any) -> None: + tracer_provider = kwargs.get("tracer_provider") + self._tracer = trace.get_tracer( + __name__, + tracer_provider=tracer_provider, + ) + + from kombu.messaging import Consumer, Producer + + wrap_function_wrapper(Producer, "publish", self._wrap_publish) + wrap_function_wrapper(Consumer, "receive", self._wrap_receive) + + def _uninstrument(self, **kwargs: Any) -> None: + from kombu.messaging import Consumer, Producer + + unwrap(Producer, "publish") + unwrap(Consumer, "receive") + + def _wrap_publish( + self, + call_wrapped: Callable[..., Any], + instance: Any, + args: tuple[Any, ...], + kwargs: dict[str, Any], + ) -> Any: + headers, updated_args, updated_kwargs = _get_publish_headers(args, kwargs) + exchange = _get_publish_exchange(instance, updated_args, updated_kwargs) + routing_key = _get_publish_routing_key(instance, updated_args, updated_kwargs) + destination_name = _get_publish_destination_name(exchange, routing_key) + attributes = _build_common_attributes( + destination_name, + routing_key, + operation="publish", + ) + message_id = updated_kwargs.get("message_id") + if message_id is not None: + attributes[SpanAttributes.MESSAGING_MESSAGE_ID] = str(message_id) + + payload_size = _get_payload_size(updated_args[0] if updated_args else None) + if payload_size is not None: + attributes[SpanAttributes.MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES] = payload_size + + span_name = _get_span_name("publish", destination_name) + + with self._tracer.start_as_current_span( + span_name, + kind=SpanKind.PRODUCER, + attributes=attributes, + ): + propagate.inject(headers) + return call_wrapped(*updated_args, **updated_kwargs) + + def _wrap_receive( + self, + call_wrapped: Callable[..., Any], + instance: Any, + args: tuple[Any, ...], + kwargs: dict[str, Any], + ) -> Any: + message = _get_receive_message(args, kwargs) + headers = getattr(message, "headers", {}) or {} + parent_context = propagate.extract(headers) + destination_name = _get_consumer_destination_name(instance, message) + routing_key = _get_message_routing_key(message) + attributes = _build_common_attributes( + destination_name, + routing_key, + operation="process", + ) + subscription_name = _get_subscription_name(instance) + if subscription_name is not None: + attributes[_MESSAGING_DESTINATION_SUBSCRIPTION_NAME] = subscription_name + + message_id = _get_message_id(message) + if message_id is not None: + attributes[SpanAttributes.MESSAGING_MESSAGE_ID] = message_id + + payload_size = _get_payload_size(getattr(message, "body", None)) + if payload_size is not None: + attributes[SpanAttributes.MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES] = payload_size + + span_name = _get_span_name("process", destination_name) + + with self._tracer.start_as_current_span( + span_name, + context=parent_context, + kind=SpanKind.CONSUMER, + attributes=attributes, + ): + return call_wrapped(*args, **kwargs) + + +def _get_publish_headers( + args: tuple[Any, ...], + kwargs: dict[str, Any], +) -> tuple[MutableMapping[str, Any], tuple[Any, ...], dict[str, Any]]: + headers = kwargs.get("headers") + if headers is None and len(args) > 9: + headers = args[9] + + if headers is None: + headers = {} + elif not isinstance(headers, MutableMapping): + headers = dict(headers) + + updated_kwargs = dict(kwargs) + if len(args) > 9: + updated_args = list(args) + updated_args[9] = headers + return headers, tuple(updated_args), updated_kwargs + + updated_kwargs["headers"] = headers + return headers, args, updated_kwargs + + +def _get_publish_routing_key( + producer: Any, + args: tuple[Any, ...], + kwargs: dict[str, Any], +) -> str | None: + routing_key = kwargs.get("routing_key") + if routing_key is None and len(args) > 1: + routing_key = args[1] + if routing_key is None: + routing_key = getattr(producer, "routing_key", None) + if routing_key is None: + return None + return str(routing_key) + + +def _get_publish_exchange( + producer: Any, + args: tuple[Any, ...], + kwargs: dict[str, Any], +) -> Any: + exchange = kwargs.get("exchange") + if exchange is None and len(args) > 11: + exchange = args[11] + if exchange is None: + exchange = getattr(producer, "exchange", None) + return exchange + + +def _get_publish_destination_name(exchange: Any, routing_key: str | None) -> str: + exchange_name = _get_entity_name(exchange) + if exchange_name: + return exchange_name + if routing_key: + return routing_key + return "default" + + +def _get_consumer_destination_name(instance: Any, message: Any) -> str: + subscription_name = _get_subscription_name(instance) + if subscription_name: + return subscription_name + + exchange_name = _get_message_exchange(message) + if exchange_name: + return exchange_name + + routing_key = _get_message_routing_key(message) + if routing_key: + return routing_key + + return "default" + + +def _get_subscription_name(instance: Any) -> str | None: + queues = getattr(instance, "queues", None) + if not isinstance(queues, Sequence): + return None + + queue_names = [name for name in (_get_entity_name(queue) for queue in queues) if name] + if len(queue_names) == 1: + return queue_names[0] + return None + + +def _get_receive_message(args: tuple[Any, ...], kwargs: dict[str, Any]) -> Any: + if "message" in kwargs: + return kwargs["message"] + if len(args) > 1: + return args[1] + return None + + +def _get_message_exchange(message: Any) -> str | None: + delivery_info = getattr(message, "delivery_info", None) or {} + exchange = delivery_info.get("exchange") + if exchange in (None, ""): + return None + return str(exchange) + + +def _get_message_routing_key(message: Any) -> str | None: + delivery_info = getattr(message, "delivery_info", None) or {} + routing_key = delivery_info.get("routing_key") + if routing_key in (None, ""): + return None + return str(routing_key) + + +def _get_message_id(message: Any) -> str | None: + properties = getattr(message, "properties", None) or {} + message_id = properties.get("message_id") + if message_id is None: + message_id = getattr(message, "delivery_tag", None) + if message_id is None: + return None + return str(message_id) + + +def _build_common_attributes( + destination_name: str, + routing_key: str | None, + operation: str, +) -> dict[str, Any]: + attributes: dict[str, Any] = { + SpanAttributes.MESSAGING_SYSTEM: "rabbitmq", + SpanAttributes.MESSAGING_DESTINATION_NAME: destination_name, + _MESSAGING_OPERATION: operation, + } + if routing_key is not None: + attributes[_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY] = routing_key + return attributes + + +def _get_span_name(operation: str, destination_name: str) -> str: + return f"{operation} {destination_name}" + + +def _get_entity_name(entity: Any) -> str | None: + if entity is None: + return None + + name = getattr(entity, "name", None) + if name not in (None, ""): + return str(name) + + if isinstance(entity, str) and entity: + return entity + + return None + + +def _get_payload_size(body: Any) -> int | None: + if body is None: + return 0 + if isinstance(body, str): + return len(body.encode("utf-8")) + if isinstance(body, bytes): + return len(body) + try: + return len(body) + except TypeError: + return None diff --git a/tools/optscale_telemetry/tools/optscale_telemetry/otel_config.py b/tools/optscale_telemetry/tools/optscale_telemetry/otel_config.py new file mode 100644 index 000000000..32341735d --- /dev/null +++ b/tools/optscale_telemetry/tools/optscale_telemetry/otel_config.py @@ -0,0 +1,231 @@ +import atexit +import enum +import logging +from typing import Any + +from azure.monitor.opentelemetry.exporter import AzureMonitorTraceExporter +from opentelemetry import trace +from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter +from opentelemetry.sdk.resources import SERVICE_NAME, SERVICE_VERSION, Resource +from opentelemetry.sdk.trace import Span, TracerProvider +from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter + +LOG = logging.getLogger(__name__) + + +class OTELException(Exception): + pass + + +class OpenTelemetryExporter(enum.StrEnum): + CONSOLE = "console" + OTLP = "otlp" + AZURE_MONITOR = "azure_monitor" + + +class OpenTelemetryConfig: + def __init__( + self, + *, + service_name, + service_version, + otel_config, + service_config, + sqlalchemy_engine=None, + ): + self.service_name = service_name + self.service_version = service_version + self.otel_config = otel_config + self.service_config = service_config + self.sqlalchemy_engine = sqlalchemy_engine + self.enabled = False + + def setup_open_telemetry(self): + if not self.otel_config: + LOG.info("OTEL: no telemetry global configuration available.") + return + + if self.otel_config.get("enabled", "").lower() != "true": + LOG.info("OTEL: telemetry is not enabled.") + + if not self.service_config: + LOG.info("OTEL: no telemetry service configuration available.") + return + + otel_exporter = None + exporter_type = None + try: + otel_exporter = self.otel_config["exporter"] + exporter_type = OpenTelemetryExporter(otel_exporter["type"]) + except (KeyError, ValueError) as e: + raise OTELException( + f"OTEL: Invalid telemetry configuration. {type(e).__name__} - {e}." + ) from e + + connection_string = otel_exporter.get("connection_string") + + if ( + exporter_type in (OpenTelemetryExporter.OTLP, OpenTelemetryExporter.AZURE_MONITOR) + and not connection_string + ): + raise OTELException( + f"OTEL: Invalid configuration. The exporter `{exporter_type.value}` " + "requires a connection string." + ) + + resource = Resource( + attributes={ + SERVICE_NAME: self.service_name, + SERVICE_VERSION: self.service_version, + } + ) + tracer_provider = TracerProvider(resource=resource) + + if exporter_type == OpenTelemetryExporter.OTLP: + span_exporter = OTLPSpanExporter( + endpoint=connection_string, + ) + + elif exporter_type == OpenTelemetryExporter.AZURE_MONITOR: + span_exporter = AzureMonitorTraceExporter(connection_string=connection_string) + + else: + span_exporter = ConsoleSpanExporter() + + self.enabled = True + LOG.info(f"OTEL: using the exporter `{exporter_type.value}`.") + + span_processor = BatchSpanProcessor(span_exporter) + tracer_provider.add_span_processor(span_processor) + trace.set_tracer_provider(tracer_provider) + + self.instrument_asyncio() + self.instrument_threading() + self.instrument_tornado() + self.instrument_sqlalchemy() + self.instrument_requests() + self.instrument_urllib3() + self.instrument_mongo() + self.instrument_clickhouse() + self.instrument_kombu() + atexit.register(self.shutdown) + + def shutdown(self): + if not self.enabled: + return + + tracer_provider = trace.get_tracer_provider() + if hasattr(tracer_provider, "shutdown"): + tracer_provider.shutdown() + LOG.info("OTEL: tracer provider shutdown complete") + + def instrument_asyncio(self): + if self.service_config.get("enable_asyncio", "").lower() != "true": + return + + from opentelemetry.instrumentation.asyncio import AsyncioInstrumentor + + AsyncioInstrumentor().instrument() + LOG.info("OTEL: `asyncio` as been instrumented.") + + def instrument_mongo(self): + if self.service_config.get("enable_mongo", "").lower() != "true": + return + + from opentelemetry.instrumentation.pymongo import PymongoInstrumentor + + PymongoInstrumentor().instrument(capture_statement=True) + LOG.info("OTEL: `pymongo` as been instrumented.") + + def instrument_requests(self): + if self.service_config.get("enable_requests", "").lower() != "true": + return + + from opentelemetry.instrumentation.requests import RequestsInstrumentor + + RequestsInstrumentor().instrument() + LOG.info("OTEL: `requests` as been instrumented.") + + def instrument_kombu(self): + if self.service_config.get("enable_kombu", "true").lower() != "true": + return + + from tools.optscale_telemetry.kombu_instrumentor import KombuInstrumentor + + KombuInstrumentor().instrument() + LOG.info("OTEL: `kombu` as been instrumented.") + + def instrument_clickhouse(self): + if self.service_config.get("enable_clickhouse", "true").lower() != "true": + return + + from tools.optscale_telemetry.clickhouse_instrumentor import ClickHouseInstrumentor + ClickHouseInstrumentor().instrument() + + LOG.info("OTEL: `clickhouse` as been instrumented.") + + def instrument_sqlalchemy(self): + if self.service_config.get("enable_sqlalchemy", "").lower() != "true": + return + if not self.sqlalchemy_engine: + raise OTELException( + "OTEL: Invalid configuration. SQLAlchemy is enabled for the " + f"service `{self.service_name}` but no engine has been provided." + ) + + from opentelemetry.instrumentation.sqlalchemy import SQLAlchemyInstrumentor + + SQLAlchemyInstrumentor().instrument(engine=self.sqlalchemy_engine, enable_commenter=True) + LOG.info("OTEL: `sqlalchemy` as been instrumented.") + + def instrument_threading(self): + if self.service_config.get("enable_threading", "").lower() != "true": + return + + from opentelemetry.instrumentation.threading import ThreadingInstrumentor + + ThreadingInstrumentor().instrument() + LOG.info("OTEL: `threading` as been instrumented.") + + def instrument_tornado(self): + if self.service_config.get("enable_tornado", "").lower() != "true": + return + + from opentelemetry.instrumentation.tornado import TornadoInstrumentor + + TornadoInstrumentor().instrument() + LOG.info("OTEL: `tornado` as been instrumented.") + + def instrument_urllib3(self): + if self.service_config.get("enable_urllib3", "").lower() != "true": + return + + from opentelemetry.instrumentation.urllib3 import RequestInfo, URLLib3Instrumentor + from urllib3.connectionpool import HTTPConnectionPool + + def urllib3_request_hook( + span: Span, + pool: HTTPConnectionPool, + request_info: RequestInfo, + ) -> Any: + if not span or not span.is_recording(): + return + + url = request_info.url.lower() + + if "clickhouse" in url: + span.set_attribute("peer.service", "clickhouse") + span.set_attribute("db.system", "clickhouse") + span.update_name("HTTP clickhouse") + return + + if "etcd" in url: + span.set_attribute("peer.service", "etcd") + span.set_attribute("component", "etcd") + span.update_name("HTTP etcd") + return + + URLLib3Instrumentor().instrument( + request_hook=urllib3_request_hook, + ) + LOG.info("OTEL: `urllib3` as been instrumented.") diff --git a/tools/optscale_telemetry/tools/optscale_telemetry/utils.py b/tools/optscale_telemetry/tools/optscale_telemetry/utils.py new file mode 100644 index 000000000..bb251a46d --- /dev/null +++ b/tools/optscale_telemetry/tools/optscale_telemetry/utils.py @@ -0,0 +1,9 @@ +from opentelemetry import trace + + +def get_trace_headers(): + ctx = trace.get_current_span().get_span_context() + if not ctx.is_valid: + return {} + tid = format(ctx.trace_id, "032x") + return {"x-trace-id": tid} diff --git a/tools/optscale_telemetry/uv.lock b/tools/optscale_telemetry/uv.lock new file mode 100644 index 000000000..41916d106 --- /dev/null +++ b/tools/optscale_telemetry/uv.lock @@ -0,0 +1,790 @@ +version = 1 +revision = 3 +requires-python = ">=3.12.11, <3.13" + +[[package]] +name = "azure-core" +version = "1.38.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/fe/5c7710bc611a4070d06ba801de9a935cc87c3d4b689c644958047bdf2cba/azure_core-1.38.2.tar.gz", hash = "sha256:67562857cb979217e48dc60980243b61ea115b77326fa93d83b729e7ff0482e7", size = 363734, upload-time = "2026-02-18T19:33:05.6Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/23/6371a551800d3812d6019cd813acd985f9fac0fedc1290129211a73da4ae/azure_core-1.38.2-py3-none-any.whl", hash = "sha256:074806c75cf239ea284a33a66827695ef7aeddac0b4e19dda266a93e4665ead9", size = 217957, upload-time = "2026-02-18T19:33:07.696Z" }, +] + +[[package]] +name = "azure-monitor-opentelemetry-exporter" +version = "1.0.0b35" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "fixedint" }, + { name = "msrest" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-sdk" }, + { name = "psutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/97/38/adb1b1d2a2c89c52809206ad461d766e12df89ab6bc6a738b2a242b3c41f/azure_monitor_opentelemetry_exporter-1.0.0b35.tar.gz", hash = "sha256:5ecc1c502485ede7a11ccc9ef9370abf6ec4b0431ebec77dab25d568d018f04f", size = 186887, upload-time = "2025-03-05T16:56:53.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/72/b6b7bd0e81852b006fea29c9ab4d6e410b83eb3663b1ad692f28de331e2e/azure_monitor_opentelemetry_exporter-1.0.0b35-py2.py3-none-any.whl", hash = "sha256:93c8824f6c2589905159b4c27640f4be65ce96e1b51959b6b32ea63f518c3944", size = 153332, upload-time = "2025-03-05T16:56:54.607Z" }, +] + +[[package]] +name = "certifi" +version = "2026.2.25" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d8/a54f7c0b96f1df3563e9190f04daf981e365a9b397eedfdfb5dbef7e5c6c/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0294916d6ccf2d069727d65973c3a1ca477d68708db25fd758dd28b0827cff54", size = 189356, upload-time = "2026-03-06T06:01:16.511Z" }, + { url = "https://files.pythonhosted.org/packages/42/69/2bf7f76ce1446759a5787cb87d38f6a61eb47dbbdf035cfebf6347292a65/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc57a0baa3eeedd99fafaef7511b5a6ef4581494e8168ee086031744e2679467", size = 206369, upload-time = "2026-03-06T06:01:17.853Z" }, + { url = "https://files.pythonhosted.org/packages/10/9c/949d1a46dab56b959d9a87272482195f1840b515a3380e39986989a893ae/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ed1a9a204f317ef879b32f9af507d47e49cd5e7f8e8d5d96358c98373314fc60", size = 203285, upload-time = "2026-03-06T06:01:19.473Z" }, + { url = "https://files.pythonhosted.org/packages/67/5c/ae30362a88b4da237d71ea214a8c7eb915db3eec941adda511729ac25fa2/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad83b8f9379176c841f8865884f3514d905bcd2a9a3b210eaa446e7d2223e4d", size = 196274, upload-time = "2026-03-06T06:01:20.728Z" }, + { url = "https://files.pythonhosted.org/packages/b2/07/c9f2cb0e46cb6d64fdcc4f95953747b843bb2181bda678dc4e699b8f0f9a/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:a118e2e0b5ae6b0120d5efa5f866e58f2bb826067a646431da4d6a2bdae7950e", size = 184715, upload-time = "2026-03-06T06:01:22.194Z" }, + { url = "https://files.pythonhosted.org/packages/36/64/6b0ca95c44fddf692cd06d642b28f63009d0ce325fad6e9b2b4d0ef86a52/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:754f96058e61a5e22e91483f823e07df16416ce76afa4ebf306f8e1d1296d43f", size = 193426, upload-time = "2026-03-06T06:01:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/50/bc/a730690d726403743795ca3f5bb2baf67838c5fea78236098f324b965e40/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c300cefd9b0970381a46394902cd18eaf2aa00163f999590ace991989dcd0fc", size = 191780, upload-time = "2026-03-06T06:01:25.053Z" }, + { url = "https://files.pythonhosted.org/packages/97/4f/6c0bc9af68222b22951552d73df4532b5be6447cee32d58e7e8c74ecbb7b/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c108f8619e504140569ee7de3f97d234f0fbae338a7f9f360455071ef9855a95", size = 185805, upload-time = "2026-03-06T06:01:26.294Z" }, + { url = "https://files.pythonhosted.org/packages/dd/b9/a523fb9b0ee90814b503452b2600e4cbc118cd68714d57041564886e7325/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d1028de43596a315e2720a9849ee79007ab742c06ad8b45a50db8cdb7ed4a82a", size = 208342, upload-time = "2026-03-06T06:01:27.55Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/c59e761dee4464050713e50e27b58266cc8e209e518c0b378c1580c959ba/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:19092dde50335accf365cce21998a1c6dd8eafd42c7b226eb54b2747cdce2fac", size = 193661, upload-time = "2026-03-06T06:01:29.051Z" }, + { url = "https://files.pythonhosted.org/packages/1c/43/729fa30aad69783f755c5ad8649da17ee095311ca42024742701e202dc59/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4354e401eb6dab9aed3c7b4030514328a6c748d05e1c3e19175008ca7de84fb1", size = 204819, upload-time = "2026-03-06T06:01:30.298Z" }, + { url = "https://files.pythonhosted.org/packages/87/33/d9b442ce5a91b96fc0840455a9e49a611bbadae6122778d0a6a79683dd31/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a68766a3c58fde7f9aaa22b3786276f62ab2f594efb02d0a1421b6282e852e98", size = 198080, upload-time = "2026-03-06T06:01:31.478Z" }, + { url = "https://files.pythonhosted.org/packages/56/5a/b8b5a23134978ee9885cee2d6995f4c27cc41f9baded0a9685eabc5338f0/charset_normalizer-3.4.5-cp312-cp312-win32.whl", hash = "sha256:1827734a5b308b65ac54e86a618de66f935a4f63a8a462ff1e19a6788d6c2262", size = 132630, upload-time = "2026-03-06T06:01:33.056Z" }, + { url = "https://files.pythonhosted.org/packages/70/53/e44a4c07e8904500aec95865dc3f6464dc3586a039ef0df606eb3ac38e35/charset_normalizer-3.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:728c6a963dfab66ef865f49286e45239384249672cd598576765acc2a640a636", size = 142856, upload-time = "2026-03-06T06:01:34.489Z" }, + { url = "https://files.pythonhosted.org/packages/ea/aa/c5628f7cad591b1cf45790b7a61483c3e36cf41349c98af7813c483fd6e8/charset_normalizer-3.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:75dfd1afe0b1647449e852f4fb428195a7ed0588947218f7ba929f6538487f02", size = 132982, upload-time = "2026-03-06T06:01:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "coverage" +version = "7.13.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/24/56/95b7e30fa389756cb56630faa728da46a27b8c6eb46f9d557c68fff12b65/coverage-7.13.4.tar.gz", hash = "sha256:e5c8f6ed1e61a8b2dcdf31eb0b9bbf0130750ca79c1c49eb898e2ad86f5ccc91", size = 827239, upload-time = "2026-02-09T12:59:03.86Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/81/4ce2fdd909c5a0ed1f6dedb88aa57ab79b6d1fbd9b588c1ac7ef45659566/coverage-7.13.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:02231499b08dabbe2b96612993e5fc34217cdae907a51b906ac7fca8027a4459", size = 219449, upload-time = "2026-02-09T12:56:54.889Z" }, + { url = "https://files.pythonhosted.org/packages/5d/96/5238b1efc5922ddbdc9b0db9243152c09777804fb7c02ad1741eb18a11c0/coverage-7.13.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:40aa8808140e55dc022b15d8aa7f651b6b3d68b365ea0398f1441e0b04d859c3", size = 219810, upload-time = "2026-02-09T12:56:56.33Z" }, + { url = "https://files.pythonhosted.org/packages/78/72/2f372b726d433c9c35e56377cf1d513b4c16fe51841060d826b95caacec1/coverage-7.13.4-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5b856a8ccf749480024ff3bd7310adaef57bf31fd17e1bfc404b7940b6986634", size = 251308, upload-time = "2026-02-09T12:56:57.858Z" }, + { url = "https://files.pythonhosted.org/packages/5d/a0/2ea570925524ef4e00bb6c82649f5682a77fac5ab910a65c9284de422600/coverage-7.13.4-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2c048ea43875fbf8b45d476ad79f179809c590ec7b79e2035c662e7afa3192e3", size = 254052, upload-time = "2026-02-09T12:56:59.754Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ac/45dc2e19a1939098d783c846e130b8f862fbb50d09e0af663988f2f21973/coverage-7.13.4-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b7b38448866e83176e28086674fe7368ab8590e4610fb662b44e345b86d63ffa", size = 255165, upload-time = "2026-02-09T12:57:01.287Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4d/26d236ff35abc3b5e63540d3386e4c3b192168c1d96da5cb2f43c640970f/coverage-7.13.4-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:de6defc1c9badbf8b9e67ae90fd00519186d6ab64e5cc5f3d21359c2a9b2c1d3", size = 257432, upload-time = "2026-02-09T12:57:02.637Z" }, + { url = "https://files.pythonhosted.org/packages/ec/55/14a966c757d1348b2e19caf699415a2a4c4f7feaa4bbc6326a51f5c7dd1b/coverage-7.13.4-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7eda778067ad7ffccd23ecffce537dface96212576a07924cbf0d8799d2ded5a", size = 251716, upload-time = "2026-02-09T12:57:04.056Z" }, + { url = "https://files.pythonhosted.org/packages/77/33/50116647905837c66d28b2af1321b845d5f5d19be9655cb84d4a0ea806b4/coverage-7.13.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e87f6c587c3f34356c3759f0420693e35e7eb0e2e41e4c011cb6ec6ecbbf1db7", size = 253089, upload-time = "2026-02-09T12:57:05.503Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b4/8efb11a46e3665d92635a56e4f2d4529de6d33f2cb38afd47d779d15fc99/coverage-7.13.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8248977c2e33aecb2ced42fef99f2d319e9904a36e55a8a68b69207fb7e43edc", size = 251232, upload-time = "2026-02-09T12:57:06.879Z" }, + { url = "https://files.pythonhosted.org/packages/51/24/8cd73dd399b812cc76bb0ac260e671c4163093441847ffe058ac9fda1e32/coverage-7.13.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:25381386e80ae727608e662474db537d4df1ecd42379b5ba33c84633a2b36d47", size = 255299, upload-time = "2026-02-09T12:57:08.245Z" }, + { url = "https://files.pythonhosted.org/packages/03/94/0a4b12f1d0e029ce1ccc1c800944a9984cbe7d678e470bb6d3c6bc38a0da/coverage-7.13.4-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:ee756f00726693e5ba94d6df2bdfd64d4852d23b09bb0bc700e3b30e6f333985", size = 250796, upload-time = "2026-02-09T12:57:10.142Z" }, + { url = "https://files.pythonhosted.org/packages/73/44/6002fbf88f6698ca034360ce474c406be6d5a985b3fdb3401128031eef6b/coverage-7.13.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fdfc1e28e7c7cdce44985b3043bc13bbd9c747520f94a4d7164af8260b3d91f0", size = 252673, upload-time = "2026-02-09T12:57:12.197Z" }, + { url = "https://files.pythonhosted.org/packages/de/c6/a0279f7c00e786be75a749a5674e6fa267bcbd8209cd10c9a450c655dfa7/coverage-7.13.4-cp312-cp312-win32.whl", hash = "sha256:01d4cbc3c283a17fc1e42d614a119f7f438eabb593391283adca8dc86eff1246", size = 221990, upload-time = "2026-02-09T12:57:14.085Z" }, + { url = "https://files.pythonhosted.org/packages/77/4e/c0a25a425fcf5557d9abd18419c95b63922e897bc86c1f327f155ef234a9/coverage-7.13.4-cp312-cp312-win_amd64.whl", hash = "sha256:9401ebc7ef522f01d01d45532c68c5ac40fb27113019b6b7d8b208f6e9baa126", size = 222800, upload-time = "2026-02-09T12:57:15.944Z" }, + { url = "https://files.pythonhosted.org/packages/47/ac/92da44ad9a6f4e3a7debd178949d6f3769bedca33830ce9b1dcdab589a37/coverage-7.13.4-cp312-cp312-win_arm64.whl", hash = "sha256:b1ec7b6b6e93255f952e27ab58fbc68dcc468844b16ecbee881aeb29b6ab4d8d", size = 221415, upload-time = "2026-02-09T12:57:17.497Z" }, + { url = "https://files.pythonhosted.org/packages/0d/4a/331fe2caf6799d591109bb9c08083080f6de90a823695d412a935622abb2/coverage-7.13.4-py3-none-any.whl", hash = "sha256:1af1641e57cf7ba1bd67d677c9abdbcd6cc2ab7da3bca7fa1e2b7e50e65f2ad0", size = 211242, upload-time = "2026-02-09T12:59:02.032Z" }, +] + +[[package]] +name = "deprecated" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/49/85/12f0a49a7c4ffb70572b6c2ef13c90c88fd190debda93b23f026b25f9634/deprecated-1.3.1.tar.gz", hash = "sha256:b1b50e0ff0c1fddaa5708a2c6b0a6588bb09b892825ab2b214ac9ea9d92a5223", size = 2932523, upload-time = "2025-10-30T08:19:02.757Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/84/d0/205d54408c08b13550c733c4b85429e7ead111c7f0014309637425520a9a/deprecated-1.3.1-py2.py3-none-any.whl", hash = "sha256:597bfef186b6f60181535a29fbe44865ce137a5079f295b479886c82729d5f3f", size = 11298, upload-time = "2025-10-30T08:19:00.758Z" }, +] + +[[package]] +name = "dnspython" +version = "2.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" }, +] + +[[package]] +name = "fixedint" +version = "0.1.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/32/c6/b1b9b3f69915d51909ef6ebe6352e286ec3d6f2077278af83ec6e3cc569c/fixedint-0.1.6.tar.gz", hash = "sha256:703005d090499d41ce7ce2ee7eae8f7a5589a81acdc6b79f1728a56495f2c799", size = 12750, upload-time = "2020-06-20T22:14:16.544Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/6d/8f5307d26ce700a89e5a67d1e1ad15eff977211f9ed3ae90d7b0d67f4e66/fixedint-0.1.6-py3-none-any.whl", hash = "sha256:b8cf9f913735d2904deadda7a6daa9f57100599da1de57a7448ea1be75ae8c9c", size = 12702, upload-time = "2020-06-20T22:14:15.454Z" }, +] + +[[package]] +name = "googleapis-common-protos" +version = "1.73.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/96/a0205167fa0154f4a542fd6925bdc63d039d88dab3588b875078107e6f06/googleapis_common_protos-1.73.0.tar.gz", hash = "sha256:778d07cd4fbeff84c6f7c72102f0daf98fa2bfd3fa8bea426edc545588da0b5a", size = 147323, upload-time = "2026-03-06T21:53:09.727Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/69/28/23eea8acd65972bbfe295ce3666b28ac510dfcb115fac089d3edb0feb00a/googleapis_common_protos-1.73.0-py3-none-any.whl", hash = "sha256:dfdaaa2e860f242046be561e6d6cb5c5f1541ae02cfbcb034371aadb2942b4e8", size = 297578, upload-time = "2026-03-06T21:52:33.933Z" }, +] + +[[package]] +name = "grpcio" +version = "1.78.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/8a/3d098f35c143a89520e568e6539cc098fcd294495910e359889ce8741c84/grpcio-1.78.0.tar.gz", hash = "sha256:7382b95189546f375c174f53a5fa873cef91c4b8005faa05cc5b3beea9c4f1c5", size = 12852416, upload-time = "2026-02-06T09:57:18.093Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/f4/7384ed0178203d6074446b3c4f46c90a22ddf7ae0b3aee521627f54cfc2a/grpcio-1.78.0-cp312-cp312-linux_armv7l.whl", hash = "sha256:f9ab915a267fc47c7e88c387a3a28325b58c898e23d4995f765728f4e3dedb97", size = 5913985, upload-time = "2026-02-06T09:55:26.832Z" }, + { url = "https://files.pythonhosted.org/packages/81/ed/be1caa25f06594463f685b3790b320f18aea49b33166f4141bfdc2bfb236/grpcio-1.78.0-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:3f8904a8165ab21e07e58bf3e30a73f4dffc7a1e0dbc32d51c61b5360d26f43e", size = 11811853, upload-time = "2026-02-06T09:55:29.224Z" }, + { url = "https://files.pythonhosted.org/packages/24/a7/f06d151afc4e64b7e3cc3e872d331d011c279aaab02831e40a81c691fb65/grpcio-1.78.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:859b13906ce098c0b493af92142ad051bf64c7870fa58a123911c88606714996", size = 6475766, upload-time = "2026-02-06T09:55:31.825Z" }, + { url = "https://files.pythonhosted.org/packages/8a/a8/4482922da832ec0082d0f2cc3a10976d84a7424707f25780b82814aafc0a/grpcio-1.78.0-cp312-cp312-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:b2342d87af32790f934a79c3112641e7b27d63c261b8b4395350dad43eff1dc7", size = 7170027, upload-time = "2026-02-06T09:55:34.7Z" }, + { url = "https://files.pythonhosted.org/packages/54/bf/f4a3b9693e35d25b24b0b39fa46d7d8a3c439e0a3036c3451764678fec20/grpcio-1.78.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:12a771591ae40bc65ba67048fa52ef4f0e6db8279e595fd349f9dfddeef571f9", size = 6690766, upload-time = "2026-02-06T09:55:36.902Z" }, + { url = "https://files.pythonhosted.org/packages/c7/b9/521875265cc99fe5ad4c5a17010018085cae2810a928bf15ebe7d8bcd9cc/grpcio-1.78.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:185dea0d5260cbb2d224c507bf2a5444d5abbb1fa3594c1ed7e4c709d5eb8383", size = 7266161, upload-time = "2026-02-06T09:55:39.824Z" }, + { url = "https://files.pythonhosted.org/packages/05/86/296a82844fd40a4ad4a95f100b55044b4f817dece732bf686aea1a284147/grpcio-1.78.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:51b13f9aed9d59ee389ad666b8c2214cc87b5de258fa712f9ab05f922e3896c6", size = 8253303, upload-time = "2026-02-06T09:55:42.353Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e4/ea3c0caf5468537f27ad5aab92b681ed7cc0ef5f8c9196d3fd42c8c2286b/grpcio-1.78.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fd5f135b1bd58ab088930b3c613455796dfa0393626a6972663ccdda5b4ac6ce", size = 7698222, upload-time = "2026-02-06T09:55:44.629Z" }, + { url = "https://files.pythonhosted.org/packages/d7/47/7f05f81e4bb6b831e93271fb12fd52ba7b319b5402cbc101d588f435df00/grpcio-1.78.0-cp312-cp312-win32.whl", hash = "sha256:94309f498bcc07e5a7d16089ab984d42ad96af1d94b5a4eb966a266d9fcabf68", size = 4066123, upload-time = "2026-02-06T09:55:47.644Z" }, + { url = "https://files.pythonhosted.org/packages/ad/e7/d6914822c88aa2974dbbd10903d801a28a19ce9cd8bad7e694cbbcf61528/grpcio-1.78.0-cp312-cp312-win_amd64.whl", hash = "sha256:9566fe4ababbb2610c39190791e5b829869351d14369603702e890ef3ad2d06e", size = 4797657, upload-time = "2026-02-06T09:55:49.86Z" }, +] + +[[package]] +name = "idna" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/33/08/c1395a292bb23fd03bdf572a1357c5a733d3eecbab877641ceacab23db6e/importlib_metadata-8.6.1.tar.gz", hash = "sha256:310b41d755445d74569f993ccfc22838295d9fe005425094fad953d7f15c8580", size = 55767, upload-time = "2025-01-20T22:21:30.429Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971, upload-time = "2025-01-20T22:21:29.177Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" }, +] + +[[package]] +name = "msrest" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "azure-core" }, + { name = "certifi" }, + { name = "isodate" }, + { name = "requests" }, + { name = "requests-oauthlib" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/77/8397c8fb8fc257d8ea0fa66f8068e073278c65f05acb17dcb22a02bfdc42/msrest-0.7.1.zip", hash = "sha256:6e7661f46f3afd88b75667b7187a92829924446c7ea1d169be8c4bb7eeb788b9", size = 175332, upload-time = "2022-06-13T22:41:25.111Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/cf/f2966a2638144491f8696c27320d5219f48a072715075d168b31d3237720/msrest-0.7.1-py3-none-any.whl", hash = "sha256:21120a810e1233e5e6cc7fe40b474eeb4ec6f757a15d7cf86702c369f9567c32", size = 85384, upload-time = "2022-06-13T22:41:22.42Z" }, +] + +[[package]] +name = "oauthlib" +version = "3.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/5f/19930f824ffeb0ad4372da4812c50edbd1434f678c90c2733e1188edfc63/oauthlib-3.3.1.tar.gz", hash = "sha256:0f0f8aa759826a193cf66c12ea1af1637f87b9b4622d46e866952bb022e538c9", size = 185918, upload-time = "2025-06-19T22:48:08.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/9c/92789c596b8df838baa98fa71844d84283302f7604ed565dafe5a6b5041a/oauthlib-3.3.1-py3-none-any.whl", hash = "sha256:88119c938d2b8fb88561af5f6ee0eec8cc8d552b7bb1f712743136eb7523b7a1", size = 160065, upload-time = "2025-06-19T22:48:06.508Z" }, +] + +[[package]] +name = "opentelemetry-api" +version = "1.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "importlib-metadata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/ca/920a73b4a11cd271ba1c62f34dba27d7783996a6a7ac0bac7c83b230736d/opentelemetry_api-1.33.0.tar.gz", hash = "sha256:cc4380fd2e6da7dcb52a828ea81844ed1f4f2eb638ca3c816775109d93d58ced", size = 65000, upload-time = "2025-05-09T14:56:00.967Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/c4/26c7ec8e51c19632f42503dbabed286c261fb06f8f61ffd348690e36958a/opentelemetry_api-1.33.0-py3-none-any.whl", hash = "sha256:158df154f628e6615b65fdf6e59f99afabea7213e72c5809dd4adf06c0d997cd", size = 65772, upload-time = "2025-05-09T14:55:38.395Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-common" +version = "1.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-proto" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/31/70add0d54358ea5007f687b931a1f980e6c977299897cce763e968ffc4a5/opentelemetry_exporter_otlp_proto_common-1.33.0.tar.gz", hash = "sha256:2f43679dab68ce7708db18cb145b59a7e9184d46608ef037c9c22f47c5beb320", size = 20830, upload-time = "2025-05-09T14:56:03.176Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/ee/a8a2a0c965a8ac53d31a3d5b5582de16d27ece4108c152f42adeb11a6455/opentelemetry_exporter_otlp_proto_common-1.33.0-py3-none-any.whl", hash = "sha256:5c282fc752e4ebdf484c6af2f22d0af2048a5685400d59524e8a3dbcee315014", size = 18840, upload-time = "2025-05-09T14:55:42.378Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-grpc" +version = "1.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "googleapis-common-protos" }, + { name = "grpcio" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-common" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/86/13350f3a15800b6be90c3e2da98571e1421a50c06384cc2aad06a7266b20/opentelemetry_exporter_otlp_proto_grpc-1.33.0.tar.gz", hash = "sha256:99a2ec88f05ffa36897402820a73178cbc37dc3f9ebe2dbde6209be3303446f4", size = 22555, upload-time = "2025-05-09T14:56:03.812Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/e5/c37dae2fbc8c2b5d99ab1c6a0196e25df2e3f9980d19140506862ace2dc5/opentelemetry_exporter_otlp_proto_grpc-1.33.0-py3-none-any.whl", hash = "sha256:04b11348a40f4c21958d704083445f9bbd32155e046ba9157133fa1bf864d2f2", size = 18592, upload-time = "2025-05-09T14:55:43.706Z" }, +] + +[[package]] +name = "opentelemetry-exporter-otlp-proto-http" +version = "1.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "googleapis-common-protos" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-common" }, + { name = "opentelemetry-proto" }, + { name = "opentelemetry-sdk" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/c6/0b3af34737576015f24a4aa3dc484285639590ad705aa5a060199b91924a/opentelemetry_exporter_otlp_proto_http-1.33.0.tar.gz", hash = "sha256:bf0cf7568432621b903223e5b72aa9f8fe425fcc748e54d0b21ebe99885c12ee", size = 15354, upload-time = "2025-05-09T14:56:04.409Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/b3/29f61701722499b893bf9f0b43a6726fce871c9e8f8cc60dda397c4c916b/opentelemetry_exporter_otlp_proto_http-1.33.0-py3-none-any.whl", hash = "sha256:5babd7498845c12c2d503d8c185ce345cb35e91805d4e3e5ac32a3abd8f75d64", size = 17733, upload-time = "2025-05-09T14:55:45.045Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "packaging" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2b/00/00ab7ce770c419337e3286c29e59f979a05694aebf15a957bd17d7a0c2cb/opentelemetry_instrumentation-0.54b0.tar.gz", hash = "sha256:2949d0bbf2316eb5d928a5ef610d0a8a2c261ba80167d878abf6016e1c4ae7bb", size = 28434, upload-time = "2025-05-09T14:59:13.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/e9/426f4e5da65e2f8f53e7a8d2551bb56e49776cccf0b99cd99ab6295542cd/opentelemetry_instrumentation-0.54b0-py3-none-any.whl", hash = "sha256:1a502238f8af65625ad48800d268d467653e319d959e1732d3b3248916d21327", size = 31018, upload-time = "2025-05-09T14:58:13.019Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-asyncio" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/c9/afa15f7ad23bc6ac4d961e4207eaf2ab45d611572b8a3af08fa3d284add9/opentelemetry_instrumentation_asyncio-0.54b0.tar.gz", hash = "sha256:141abfeb147421dea2147876178e153f628b45511f2632bf519b65c23796c5ad", size = 14093, upload-time = "2025-05-09T14:59:19.201Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/65/4de0da3097dbcd3fd945bbea85e8ff5bb8c17a4f6cd67e064282bbdae199/opentelemetry_instrumentation_asyncio-0.54b0-py3-none-any.whl", hash = "sha256:91b5f4cd3bf5112c72e766c5677ff9f3faf0abb86dfd0e99accb3ff318178012", size = 14777, upload-time = "2025-05-09T14:58:24.119Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-logging" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e6/0b/a73746c6231c306f26a03e9c708a54b047a5951e81c95d05cd043628cfb8/opentelemetry_instrumentation_logging-0.54b0.tar.gz", hash = "sha256:d1ebc3a655777d57f1f54b820f75924add44c8239912c9ca1779f55bc3d1f3e8", size = 9979, upload-time = "2025-05-09T14:59:34.158Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/92/8323543ca0ac2961847c1893948b578a30373749f2fc84f1211dfacf5f6a/opentelemetry_instrumentation_logging-0.54b0-py3-none-any.whl", hash = "sha256:b7e9e7f2b94fc8c310349882238378602c7bee6f819a4b67542fc10d29b422c4", size = 12578, upload-time = "2025-05-09T14:58:45.651Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-pymongo" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/8c/e5729b8bdd7835af07fe99b658ae5000107dfeebd9b4c0d4c4e1cc1883b6/opentelemetry_instrumentation_pymongo-0.54b0.tar.gz", hash = "sha256:c7f7d19b150682adccb570c0aea2c302a900b80dd50ef5d9be90db061cc168ed", size = 9613, upload-time = "2025-05-09T14:59:39.537Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/92/2c3bb8ff52f86c6d4bd3dc425984646ae401e053864f4f8d2f46ec79bb76/opentelemetry_instrumentation_pymongo-0.54b0-py3-none-any.whl", hash = "sha256:8b6855f9c30ed32af8bfaeafeaf8540522f0d5bcfc8a27ac72c862df8eba1d45", size = 11315, upload-time = "2025-05-09T14:58:52.657Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-requests" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "opentelemetry-util-http" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e0/20/2ef61cc45a44f1d865d0a57c84c65649799d1d22fcb69f78c3133dd8fcba/opentelemetry_instrumentation_requests-0.54b0.tar.gz", hash = "sha256:abc604d58a0da9cbfad2e9439df2b85437ec00bf550753cf64bf6d61e2b98bdd", size = 15148, upload-time = "2025-05-09T14:59:44.091Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/46/0507f3f64683f8cf4aef9483c1b760418f9f17a2480fa970db6225ea42da/opentelemetry_instrumentation_requests-0.54b0-py3-none-any.whl", hash = "sha256:c05324b3a5a047b28cd7bccf1f506d7ebadbfd8faefc2661fe7d40c3218d9a8c", size = 12967, upload-time = "2025-05-09T14:58:58.498Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-sqlalchemy" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "packaging" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/0a/197fb8feee8c9e53b11cac36fa4fcf52a428469c2a62dc1c0af88e7afa01/opentelemetry_instrumentation_sqlalchemy-0.54b0.tar.gz", hash = "sha256:67e7de01c0dc2fa6eb24f795900f9758311f2d94c106578300e9d39ec3f0c75f", size = 14622, upload-time = "2025-05-09T14:59:44.735Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/9f/ef880d0c9d967752eaf9a13cd4fab5380ebbd827683232be1869c82ea659/opentelemetry_instrumentation_sqlalchemy-0.54b0-py3-none-any.whl", hash = "sha256:6791939efcaf02dff704a3f58d417d939a1e9cd8ebe691fb843d5f8f8fa3c182", size = 14168, upload-time = "2025-05-09T14:58:59.372Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-threading" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1f/b1/bc235038a2075803b9bb1643062253c6d27137b6dd1f0a94696a4fa63736/opentelemetry_instrumentation_threading-0.54b0.tar.gz", hash = "sha256:74677085514d0f3a0f77593fc515812f6048ec47023e618ee02c6d80ad02306a", size = 8774, upload-time = "2025-05-09T14:59:48.086Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/f6/c718ea2b6f703bedb965c5c77abdae6ee70059b179940a7f430c2a0906ac/opentelemetry_instrumentation_threading-0.54b0-py3-none-any.whl", hash = "sha256:39b1f581b74c7d7cd70ca4cffd19b9a3e2377ca44f337af12192f7667a225ea6", size = 9316, upload-time = "2025-05-09T14:59:02.953Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-tornado" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "opentelemetry-util-http" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/85/32d4d209daada13f3e798f48513ca33d0977c2c2265eceb9ba502ef7c45b/opentelemetry_instrumentation_tornado-0.54b0.tar.gz", hash = "sha256:96f29b58e8df7cc967cf9445cd6a9ae6d1e79d8f786e23f644f8fb1f2ddc00d5", size = 17089, upload-time = "2025-05-09T14:59:48.67Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/c8/c757e9f4463a86818febd0b436ebc9c8bdc1996f2cdb3209635ca6badebe/opentelemetry_instrumentation_tornado-0.54b0-py3-none-any.whl", hash = "sha256:0019acbd749901bbf1120d98d91ef7a0523dcaa6b8960e4128804febdf581b10", size = 15327, upload-time = "2025-05-09T14:59:03.796Z" }, +] + +[[package]] +name = "opentelemetry-instrumentation-urllib3" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "opentelemetry-util-http" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/3b/881db46fc473b0beeb6a2c50633c53f229d016be33727f7d8f93cd5f671f/opentelemetry_instrumentation_urllib3-0.54b0.tar.gz", hash = "sha256:ba8d278f1be5622096068bff9720d25f7c52d1303d554e874ca4b205f0eea88a", size = 15697, upload-time = "2025-05-09T14:59:50.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1f/13/545661a8adbbc32690c0aa87809cc0744c04905c34a1b16deb9114b3939d/opentelemetry_instrumentation_urllib3-0.54b0-py3-none-any.whl", hash = "sha256:1d4c088cde7c6258e182e5b58d6ffd2685317cd5407c69d5d1e8b5d64a5a28a9", size = 13124, upload-time = "2025-05-09T14:59:06.941Z" }, +] + +[[package]] +name = "opentelemetry-proto" +version = "1.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "protobuf" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cb/55/13a941b5fa0730875f2ef534cca8e09dd00142f4a4e1ab781f9825b212c4/opentelemetry_proto-1.33.0.tar.gz", hash = "sha256:ec5aa35486c990207ead2512a8d616d1b324928562c91dbc7e0cb9aa48c60b7b", size = 34362, upload-time = "2025-05-09T14:56:11.569Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/44/8f4029c09c7d4f275c7ed56af186ebd82af257a879266e9b3965f82ca09d/opentelemetry_proto-1.33.0-py3-none-any.whl", hash = "sha256:84a1d7daacac4aa0f24a5b1190a3e0619011dbff56f945fc2b6fc0a18f48b942", size = 55856, upload-time = "2025-05-09T14:55:55.513Z" }, +] + +[[package]] +name = "opentelemetry-sdk" +version = "1.33.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "opentelemetry-api" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/37/0a/b7ae406175a2798a767e12db223e842911d9c398eea100c41c989afd2aa8/opentelemetry_sdk-1.33.0.tar.gz", hash = "sha256:a7fc56d1e07b218fcc316b24d21b59d3f1967b2ca22c217b05da3a26b797cc68", size = 161381, upload-time = "2025-05-09T14:56:12.347Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/34/831f5d9ae9375c9ba2446cb3cc0be79d8d73b78f813c9567e1615c2624f6/opentelemetry_sdk-1.33.0-py3-none-any.whl", hash = "sha256:bed376b6d37fbf00688bb65edfee817dd01d48b8559212831437529a6066049a", size = 118861, upload-time = "2025-05-09T14:55:56.956Z" }, +] + +[[package]] +name = "opentelemetry-semantic-conventions" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "opentelemetry-api" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/92/8c/bc970d1599ff40b7913c953a95195addf11c81a27cc85d5ed568e9f8c57f/opentelemetry_semantic_conventions-0.54b0.tar.gz", hash = "sha256:467b739977bdcb079af1af69f73632535cdb51099d5e3c5709a35d10fe02a9c9", size = 118646, upload-time = "2025-05-09T14:56:13.596Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c8/aa/f7c46c19aee189e0123ef7209eaafc417e242b2073485dfb40523d6d8612/opentelemetry_semantic_conventions-0.54b0-py3-none-any.whl", hash = "sha256:fad7c1cf8908fd449eb5cf9fbbeefb301acf4bc995101f85277899cec125d823", size = 194937, upload-time = "2025-05-09T14:55:58.562Z" }, +] + +[[package]] +name = "opentelemetry-util-http" +version = "0.54b0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/14/51f18a82e858a06332e56fb523afbd5e5ff2dac5511a8c4ca64d163f15ca/opentelemetry_util_http-0.54b0.tar.gz", hash = "sha256:2b5fe7157928bdbde194d38df7cbd35a679631fe5b6c23b2c4a271229f7e42b5", size = 8041, upload-time = "2025-05-09T14:59:53.905Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/e0/b53c6af5f2a44c301290e7853829e5a3b195d1057a1ff24ab165f18f67ce/opentelemetry_util_http-0.54b0-py3-none-any.whl", hash = "sha256:40598360e08ee7f8ea563f40dee5e30b1c15be54615e11497aaf190930e94250", size = 7302, upload-time = "2025-05-09T14:59:10.374Z" }, +] + +[[package]] +name = "optscale-telemetry" +version = "0.0.0" +source = { editable = "." } +dependencies = [ + { name = "azure-monitor-opentelemetry-exporter" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-exporter-otlp-proto-grpc" }, + { name = "opentelemetry-exporter-otlp-proto-http" }, + { name = "opentelemetry-instrumentation-asyncio" }, + { name = "opentelemetry-instrumentation-logging" }, + { name = "opentelemetry-instrumentation-pymongo" }, + { name = "opentelemetry-instrumentation-requests" }, + { name = "opentelemetry-instrumentation-sqlalchemy" }, + { name = "opentelemetry-instrumentation-threading" }, + { name = "opentelemetry-instrumentation-tornado" }, + { name = "opentelemetry-instrumentation-urllib3" }, + { name = "opentelemetry-sdk" }, +] + +[package.dev-dependencies] +dev = [ + { name = "pymongo" }, + { name = "pytest" }, + { name = "pytest-asyncio" }, + { name = "pytest-cov" }, + { name = "pytest-mock" }, + { name = "pytest-randomly" }, + { name = "ruff" }, + { name = "tornado" }, +] + +[package.metadata] +requires-dist = [ + { name = "azure-monitor-opentelemetry-exporter", specifier = "==1.0.0b35" }, + { name = "opentelemetry-api", specifier = "==1.33.*" }, + { name = "opentelemetry-exporter-otlp-proto-grpc", specifier = "==1.33.*" }, + { name = "opentelemetry-exporter-otlp-proto-http", specifier = "==1.33.*" }, + { name = "opentelemetry-instrumentation-asyncio", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-logging", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-pymongo", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-requests", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-sqlalchemy", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-threading", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-tornado", specifier = "==0.54b0" }, + { name = "opentelemetry-instrumentation-urllib3", specifier = "==0.54b0" }, + { name = "opentelemetry-sdk", specifier = "==1.33.*" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "pymongo", specifier = "==4.6.3" }, + { name = "pytest", specifier = ">=8.4.2,<9.0.0" }, + { name = "pytest-asyncio", specifier = ">=1.2.0,<2.0.0" }, + { name = "pytest-cov", specifier = ">=7.0.0,<8.0.0" }, + { name = "pytest-mock", specifier = ">=3.15.1,<4.0.0" }, + { name = "pytest-randomly", specifier = ">=4.0.1,<5.0.0" }, + { name = "ruff", specifier = ">=0.15.6" }, + { name = "tornado", specifier = "==6.5" }, +] + +[[package]] +name = "packaging" +version = "26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "protobuf" +version = "5.29.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/57/394a763c103e0edf87f0938dafcd918d53b4c011dfc5c8ae80f3b0452dbb/protobuf-5.29.6.tar.gz", hash = "sha256:da9ee6a5424b6b30fd5e45c5ea663aef540ca95f9ad99d1e887e819cdf9b8723", size = 425623, upload-time = "2026-02-04T22:54:40.584Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/88/9ee58ff7863c479d6f8346686d4636dd4c415b0cbeed7a6a7d0617639c2a/protobuf-5.29.6-cp310-abi3-win32.whl", hash = "sha256:62e8a3114992c7c647bce37dcc93647575fc52d50e48de30c6fcb28a6a291eb1", size = 423357, upload-time = "2026-02-04T22:54:25.805Z" }, + { url = "https://files.pythonhosted.org/packages/1c/66/2dc736a4d576847134fb6d80bd995c569b13cdc7b815d669050bf0ce2d2c/protobuf-5.29.6-cp310-abi3-win_amd64.whl", hash = "sha256:7e6ad413275be172f67fdee0f43484b6de5a904cc1c3ea9804cb6fe2ff366eda", size = 435175, upload-time = "2026-02-04T22:54:28.592Z" }, + { url = "https://files.pythonhosted.org/packages/06/db/49b05966fd208ae3f44dcd33837b6243b4915c57561d730a43f881f24dea/protobuf-5.29.6-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:b5a169e664b4057183a34bdc424540e86eea47560f3c123a0d64de4e137f9269", size = 418619, upload-time = "2026-02-04T22:54:30.266Z" }, + { url = "https://files.pythonhosted.org/packages/b7/d7/48cbf6b0c3c39761e47a99cb483405f0fde2be22cf00d71ef316ce52b458/protobuf-5.29.6-cp38-abi3-manylinux2014_aarch64.whl", hash = "sha256:a8866b2cff111f0f863c1b3b9e7572dc7eaea23a7fae27f6fc613304046483e6", size = 320284, upload-time = "2026-02-04T22:54:31.782Z" }, + { url = "https://files.pythonhosted.org/packages/e3/dd/cadd6ec43069247d91f6345fa7a0d2858bef6af366dbd7ba8f05d2c77d3b/protobuf-5.29.6-cp38-abi3-manylinux2014_x86_64.whl", hash = "sha256:e3387f44798ac1106af0233c04fb8abf543772ff241169946f698b3a9a3d3ab9", size = 320478, upload-time = "2026-02-04T22:54:32.909Z" }, + { url = "https://files.pythonhosted.org/packages/5a/cb/e3065b447186cb70aa65acc70c86baf482d82bf75625bf5a2c4f6919c6a3/protobuf-5.29.6-py3-none-any.whl", hash = "sha256:6b9edb641441b2da9fa8f428760fc136a49cf97a52076010cf22a2ff73438a86", size = 173126, upload-time = "2026-02-04T22:54:39.462Z" }, +] + +[[package]] +name = "psutil" +version = "6.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1f/5a/07871137bb752428aa4b659f910b399ba6f291156bdea939be3e96cae7cb/psutil-6.1.1.tar.gz", hash = "sha256:cf8496728c18f2d0b45198f06895be52f36611711746b7f30c464b422b50e2f5", size = 508502, upload-time = "2024-12-19T18:21:20.568Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/99/ca79d302be46f7bdd8321089762dd4476ee725fce16fc2b2e1dbba8cac17/psutil-6.1.1-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:fc0ed7fe2231a444fc219b9c42d0376e0a9a1a72f16c5cfa0f68d19f1a0663e8", size = 247511, upload-time = "2024-12-19T18:21:45.163Z" }, + { url = "https://files.pythonhosted.org/packages/0b/6b/73dbde0dd38f3782905d4587049b9be64d76671042fdcaf60e2430c6796d/psutil-6.1.1-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:0bdd4eab935276290ad3cb718e9809412895ca6b5b334f5a9111ee6d9aff9377", size = 248985, upload-time = "2024-12-19T18:21:49.254Z" }, + { url = "https://files.pythonhosted.org/packages/17/38/c319d31a1d3f88c5b79c68b3116c129e5133f1822157dd6da34043e32ed6/psutil-6.1.1-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b6e06c20c05fe95a3d7302d74e7097756d4ba1247975ad6905441ae1b5b66003", size = 284488, upload-time = "2024-12-19T18:21:51.638Z" }, + { url = "https://files.pythonhosted.org/packages/9c/39/0f88a830a1c8a3aba27fededc642da37613c57cbff143412e3536f89784f/psutil-6.1.1-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:97f7cb9921fbec4904f522d972f0c0e1f4fabbdd4e0287813b21215074a0f160", size = 287477, upload-time = "2024-12-19T18:21:55.306Z" }, + { url = "https://files.pythonhosted.org/packages/47/da/99f4345d4ddf2845cb5b5bd0d93d554e84542d116934fde07a0c50bd4e9f/psutil-6.1.1-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:33431e84fee02bc84ea36d9e2c4a6d395d479c9dd9bba2376c1f6ee8f3a4e0b3", size = 289017, upload-time = "2024-12-19T18:21:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/38/53/bd755c2896f4461fd4f36fa6a6dcb66a88a9e4b9fd4e5b66a77cf9d4a584/psutil-6.1.1-cp37-abi3-win32.whl", hash = "sha256:eaa912e0b11848c4d9279a93d7e2783df352b082f40111e078388701fd479e53", size = 250602, upload-time = "2024-12-19T18:22:08.808Z" }, + { url = "https://files.pythonhosted.org/packages/7b/d7/7831438e6c3ebbfa6e01a927127a6cb42ad3ab844247f3c5b96bea25d73d/psutil-6.1.1-cp37-abi3-win_amd64.whl", hash = "sha256:f35cfccb065fff93529d2afb4a2e89e363fe63ca1e4a5da22b603a85833c2649", size = 254444, upload-time = "2024-12-19T18:22:11.335Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pymongo" +version = "4.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6f/5d/b05b09299f0b03219db9e31ea404e89c056f55a0aafbb403f6710391c44d/pymongo-4.6.3.tar.gz", hash = "sha256:400074090b9a631f120b42c61b222fd743490c133a5d2f99c0208cefcccc964e", size = 1431391, upload-time = "2024-03-28T01:25:26.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e3/2a/2618a4b06f171898567afcbea35e38b3331888bdc75ed0326722974186b4/pymongo-4.6.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:722f2b709b63311c0efda4fa4c603661faa4bec6bad24a6cc41a3bc6d841bf09", size = 533505, upload-time = "2024-03-28T01:23:03.718Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e0/282c46bb31f5a0b548153bd0f42a932765b217ac88e4b5e2f1fbad5eef07/pymongo-4.6.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:994386a4d6ad39e18bcede6dc8d1d693ec3ed897b88f86b1841fbc37227406da", size = 694486, upload-time = "2024-03-28T01:23:07.15Z" }, + { url = "https://files.pythonhosted.org/packages/e3/33/1e9c21c045dd1a5e13ba3f7fbf2675c5c8d03abd97bac987dfa31798e897/pymongo-4.6.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:391aea047bba928006114282f175bc8d09c53fe1b7d8920bf888325e229302fe", size = 704572, upload-time = "2024-03-28T01:23:09.279Z" }, + { url = "https://files.pythonhosted.org/packages/d4/fe/70f5a2bf64ab3353bed4487b7f6ac8f6ca90b65dcb9f10e193f4135d9f9e/pymongo-4.6.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4330c022024e7994b630199cdae909123e4b0e9cf15335de71b146c0f6a2435", size = 701333, upload-time = "2024-03-28T01:23:11.196Z" }, + { url = "https://files.pythonhosted.org/packages/e2/35/4b18e02232a86e7cb4ac478af78d33e3528182965e39c6d4dcac55284802/pymongo-4.6.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01277a7e183c59081368e4efbde2b8f577014431b257959ca98d3a4e8682dd51", size = 691985, upload-time = "2024-03-28T01:23:13.348Z" }, + { url = "https://files.pythonhosted.org/packages/86/3a/39bdf2351fc3a0296157d7416b4c1f783f4b602066d54d66299862d106a0/pymongo-4.6.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d30d5d7963453b478016bf7b0d87d7089ca24d93dbdecfbc9aa32f1b4772160a", size = 680748, upload-time = "2024-03-28T01:23:15.804Z" }, + { url = "https://files.pythonhosted.org/packages/e0/9a/fb43e171d0b314ab75206e59ae87196045617422885aa0e32f6c59ac9b07/pymongo-4.6.3-cp312-cp312-win32.whl", hash = "sha256:a023804a3ac0f85d4510265b60978522368b5815772262e61e3a2222a8b315c9", size = 467744, upload-time = "2024-03-28T01:23:17.985Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8a/fb83c32b40a47cbbbecff401e41f089b4387c76a806052ee4ac4810f06ad/pymongo-4.6.3-cp312-cp312-win_amd64.whl", hash = "sha256:2a6ae9a600bbc2dbff719c98bf5da584fb8a4f2bb23729a09be2e9c3dbc61c8a", size = 472992, upload-time = "2024-03-28T01:23:19.935Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" }, +] + +[[package]] +name = "pytest-asyncio" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" }, +] + +[[package]] +name = "pytest-cov" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "coverage" }, + { name = "pluggy" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" }, +] + +[[package]] +name = "pytest-mock" +version = "3.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" }, +] + +[[package]] +name = "pytest-randomly" +version = "4.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c4/1d/258a4bf1109258c00c35043f40433be5c16647387b6e7cd5582d638c116b/pytest_randomly-4.0.1.tar.gz", hash = "sha256:174e57bb12ac2c26f3578188490bd333f0e80620c3f47340158a86eca0593cd8", size = 14130, upload-time = "2025-09-12T15:23:00.085Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/33/3e/a4a9227807b56869790aad3e24472a554b585974fe7e551ea350f50897ae/pytest_randomly-4.0.1-py3-none-any.whl", hash = "sha256:e0dfad2fd4f35e07beff1e47c17fbafcf98f9bf4531fd369d9260e2f858bfcb7", size = 8304, upload-time = "2025-09-12T15:22:58.946Z" }, +] + +[[package]] +name = "requests" +version = "2.32.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "requests-oauthlib" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "oauthlib" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/f2/05f29bc3913aea15eb670be136045bf5c5bbf4b99ecb839da9b422bb2c85/requests-oauthlib-2.0.0.tar.gz", hash = "sha256:b3dffaebd884d8cd778494369603a9e7b58d29111bf6b41bdc2dcd87203af4e9", size = 55650, upload-time = "2024-03-22T20:32:29.939Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/5d/63d4ae3b9daea098d5d6f5da83984853c1bbacd5dc826764b249fe119d24/requests_oauthlib-2.0.0-py2.py3-none-any.whl", hash = "sha256:7dd8a5c40426b779b0868c404bdef9768deccf22749cde15852df527e6269b36", size = 24179, upload-time = "2024-03-22T20:32:28.055Z" }, +] + +[[package]] +name = "ruff" +version = "0.15.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/df/f8629c19c5318601d3121e230f74cbee7a3732339c52b21daa2b82ef9c7d/ruff-0.15.6.tar.gz", hash = "sha256:8394c7bb153a4e3811a4ecdacd4a8e6a4fa8097028119160dffecdcdf9b56ae4", size = 4597916, upload-time = "2026-03-12T23:05:47.51Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/2f/4e03a7e5ce99b517e98d3b4951f411de2b0fa8348d39cf446671adcce9a2/ruff-0.15.6-py3-none-linux_armv6l.whl", hash = "sha256:7c98c3b16407b2cf3d0f2b80c80187384bc92c6774d85fefa913ecd941256fff", size = 10508953, upload-time = "2026-03-12T23:05:17.246Z" }, + { url = "https://files.pythonhosted.org/packages/70/60/55bcdc3e9f80bcf39edf0cd272da6fa511a3d94d5a0dd9e0adf76ceebdb4/ruff-0.15.6-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:ee7dcfaad8b282a284df4aa6ddc2741b3f4a18b0555d626805555a820ea181c3", size = 10942257, upload-time = "2026-03-12T23:05:23.076Z" }, + { url = "https://files.pythonhosted.org/packages/e7/f9/005c29bd1726c0f492bfa215e95154cf480574140cb5f867c797c18c790b/ruff-0.15.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3bd9967851a25f038fc8b9ae88a7fbd1b609f30349231dffaa37b6804923c4bb", size = 10322683, upload-time = "2026-03-12T23:05:33.738Z" }, + { url = "https://files.pythonhosted.org/packages/5f/74/2f861f5fd7cbb2146bddb5501450300ce41562da36d21868c69b7a828169/ruff-0.15.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:13f4594b04e42cd24a41da653886b04d2ff87adbf57497ed4f728b0e8a4866f8", size = 10660986, upload-time = "2026-03-12T23:05:53.245Z" }, + { url = "https://files.pythonhosted.org/packages/c1/a1/309f2364a424eccb763cdafc49df843c282609f47fe53aa83f38272389e0/ruff-0.15.6-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2ed8aea2f3fe57886d3f00ea5b8aae5bf68d5e195f487f037a955ff9fbaac9e", size = 10332177, upload-time = "2026-03-12T23:05:56.145Z" }, + { url = "https://files.pythonhosted.org/packages/30/41/7ebf1d32658b4bab20f8ac80972fb19cd4e2c6b78552be263a680edc55ac/ruff-0.15.6-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:70789d3e7830b848b548aae96766431c0dc01a6c78c13381f423bf7076c66d15", size = 11170783, upload-time = "2026-03-12T23:06:01.742Z" }, + { url = "https://files.pythonhosted.org/packages/76/be/6d488f6adca047df82cd62c304638bcb00821c36bd4881cfca221561fdfc/ruff-0.15.6-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:542aaf1de3154cea088ced5a819ce872611256ffe2498e750bbae5247a8114e9", size = 12044201, upload-time = "2026-03-12T23:05:28.697Z" }, + { url = "https://files.pythonhosted.org/packages/71/68/e6f125df4af7e6d0b498f8d373274794bc5156b324e8ab4bf5c1b4fc0ec7/ruff-0.15.6-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c22e6f02c16cfac3888aa636e9eba857254d15bbacc9906c9689fdecb1953ab", size = 11421561, upload-time = "2026-03-12T23:05:31.236Z" }, + { url = "https://files.pythonhosted.org/packages/f1/9f/f85ef5fd01a52e0b472b26dc1b4bd228b8f6f0435975442ffa4741278703/ruff-0.15.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:98893c4c0aadc8e448cfa315bd0cc343a5323d740fe5f28ef8a3f9e21b381f7e", size = 11310928, upload-time = "2026-03-12T23:05:45.288Z" }, + { url = "https://files.pythonhosted.org/packages/8c/26/b75f8c421f5654304b89471ed384ae8c7f42b4dff58fa6ce1626d7f2b59a/ruff-0.15.6-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:70d263770d234912374493e8cc1e7385c5d49376e41dfa51c5c3453169dc581c", size = 11235186, upload-time = "2026-03-12T23:05:50.677Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d4/d5a6d065962ff7a68a86c9b4f5500f7d101a0792078de636526c0edd40da/ruff-0.15.6-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:55a1ad63c5a6e54b1f21b7514dfadc0c7fb40093fa22e95143cf3f64ebdcd512", size = 10635231, upload-time = "2026-03-12T23:05:37.044Z" }, + { url = "https://files.pythonhosted.org/packages/d6/56/7c3acf3d50910375349016cf33de24be021532042afbed87942858992491/ruff-0.15.6-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:8dc473ba093c5ec238bb1e7429ee676dca24643c471e11fbaa8a857925b061c0", size = 10340357, upload-time = "2026-03-12T23:06:04.748Z" }, + { url = "https://files.pythonhosted.org/packages/06/54/6faa39e9c1033ff6a3b6e76b5df536931cd30caf64988e112bbf91ef5ce5/ruff-0.15.6-py3-none-musllinux_1_2_i686.whl", hash = "sha256:85b042377c2a5561131767974617006f99f7e13c63c111b998f29fc1e58a4cfb", size = 10860583, upload-time = "2026-03-12T23:05:58.978Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/509a201b843b4dfb0b32acdedf68d951d3377988cae43949ba4c4133a96a/ruff-0.15.6-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cef49e30bc5a86a6a92098a7fbf6e467a234d90b63305d6f3ec01225a9d092e0", size = 11410976, upload-time = "2026-03-12T23:05:39.955Z" }, + { url = "https://files.pythonhosted.org/packages/6c/25/3fc9114abf979a41673ce877c08016f8e660ad6cf508c3957f537d2e9fa9/ruff-0.15.6-py3-none-win32.whl", hash = "sha256:bbf67d39832404812a2d23020dda68fee7f18ce15654e96fb1d3ad21a5fe436c", size = 10616872, upload-time = "2026-03-12T23:05:42.451Z" }, + { url = "https://files.pythonhosted.org/packages/89/7a/09ece68445ceac348df06e08bf75db72d0e8427765b96c9c0ffabc1be1d9/ruff-0.15.6-py3-none-win_amd64.whl", hash = "sha256:aee25bc84c2f1007ecb5037dff75cef00414fdf17c23f07dc13e577883dca406", size = 11787271, upload-time = "2026-03-12T23:05:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/7f/d0/578c47dd68152ddddddf31cd7fc67dc30b7cdf639a86275fda821b0d9d98/ruff-0.15.6-py3-none-win_arm64.whl", hash = "sha256:c34de3dd0b0ba203be50ae70f5910b17188556630e2178fd7d79fc030eb0d837", size = 11060497, upload-time = "2026-03-12T23:05:25.968Z" }, +] + +[[package]] +name = "tornado" +version = "6.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/63/c4/bb3bd68b1b3cd30abc6411469875e6d32004397ccc4a3230479f86f86a73/tornado-6.5.tar.gz", hash = "sha256:c70c0a26d5b2d85440e4debd14a8d0b463a0cf35d92d3af05f5f1ffa8675c826", size = 508968, upload-time = "2025-05-15T20:37:43.098Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/7c/6526062801e4becb5a7511079c0b0f170a80d929d312042d5b5c4afad464/tornado-6.5-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:f81067dad2e4443b015368b24e802d0083fecada4f0a4572fdb72fc06e54a9a6", size = 441204, upload-time = "2025-05-15T20:37:22.107Z" }, + { url = "https://files.pythonhosted.org/packages/3f/ff/53d49f869a390ce68d4f98306b6f9ad5765c114ab27ef47d7c9bd05d1191/tornado-6.5-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9ac1cbe1db860b3cbb251e795c701c41d343f06a96049d6274e7c77559117e41", size = 439373, upload-time = "2025-05-15T20:37:24.476Z" }, + { url = "https://files.pythonhosted.org/packages/4a/62/fdd9b12b95e4e2b7b8c21dfc306b0960b20b741e588318c13918cf52b868/tornado-6.5-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c625b9d03f1fb4d64149c47d0135227f0434ebb803e2008040eb92906b0105a", size = 442935, upload-time = "2025-05-15T20:37:26.638Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/0094bd1538cb8579f7a97330cb77f40c9b8042c71fb040e5daae439be1ae/tornado-6.5-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a0d8d2309faf015903080fb5bdd969ecf9aa5ff893290845cf3fd5b2dd101bc", size = 442282, upload-time = "2025-05-15T20:37:28.436Z" }, + { url = "https://files.pythonhosted.org/packages/d8/fa/23bb108afb8197a55edd333fe26a3dad9341ce441337aad95cd06b025594/tornado-6.5-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03576ab51e9b1677e4cdaae620d6700d9823568b7939277e4690fe4085886c55", size = 442515, upload-time = "2025-05-15T20:37:30.051Z" }, + { url = "https://files.pythonhosted.org/packages/dc/f2/c4d43d830578111b1826cf831fdbb8b2a10e3c4fccc4b774b69d818eb231/tornado-6.5-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ab75fe43d0e1b3a5e3ceddb2a611cb40090dd116a84fc216a07a298d9e000471", size = 443192, upload-time = "2025-05-15T20:37:31.832Z" }, + { url = "https://files.pythonhosted.org/packages/92/c5/932cc6941f88336d70744b3fda420b9cb18684c034293a1c430a766b2ad9/tornado-6.5-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:119c03f440a832128820e87add8a175d211b7f36e7ee161c631780877c28f4fb", size = 442615, upload-time = "2025-05-15T20:37:33.883Z" }, + { url = "https://files.pythonhosted.org/packages/70/90/e831b7800ec9632d5eb6a0931b016b823efa963356cb1c215f035b6d5d2e/tornado-6.5-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:231f2193bb4c28db2bdee9e57bc6ca0cd491f345cd307c57d79613b058e807e0", size = 442592, upload-time = "2025-05-15T20:37:35.507Z" }, + { url = "https://files.pythonhosted.org/packages/71/ed/fe27371e79930559e9a90324727267ad5cf9479a2c897ff75ace1d3bec3d/tornado-6.5-cp39-abi3-win32.whl", hash = "sha256:fd20c816e31be1bbff1f7681f970bbbd0bb241c364220140228ba24242bcdc59", size = 443674, upload-time = "2025-05-15T20:37:37.617Z" }, + { url = "https://files.pythonhosted.org/packages/78/77/85fb3a93ef109f6de9a60acc6302f9761a3e7150a6c1b40e8a4a215db5fc/tornado-6.5-cp39-abi3-win_amd64.whl", hash = "sha256:007f036f7b661e899bd9ef3fa5f87eb2cb4d1b2e7d67368e778e140a2f101a7a", size = 444118, upload-time = "2025-05-15T20:37:39.174Z" }, + { url = "https://files.pythonhosted.org/packages/54/9a/3cc3969c733ddd4f5992b3d4ec15c9a2564192c7b1a239ba21c8f73f8af4/tornado-6.5-cp39-abi3-win_arm64.whl", hash = "sha256:542e380658dcec911215c4820654662810c06ad872eefe10def6a5e9b20e9633", size = 442874, upload-time = "2025-05-15T20:37:41.267Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "urllib3" +version = "2.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, +] + +[[package]] +name = "wrapt" +version = "1.17.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/8f/aeb76c5b46e273670962298c23e7ddde79916cb74db802131d49a85e4b7d/wrapt-1.17.3.tar.gz", hash = "sha256:f66eb08feaa410fe4eebd17f2a2c8e2e46d3476e9f8c783daa8e09e0faa666d0", size = 55547, upload-time = "2025-08-12T05:53:21.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/41/cad1aba93e752f1f9268c77270da3c469883d56e2798e7df6240dcb2287b/wrapt-1.17.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ab232e7fdb44cdfbf55fc3afa31bcdb0d8980b9b95c38b6405df2acb672af0e0", size = 53998, upload-time = "2025-08-12T05:51:47.138Z" }, + { url = "https://files.pythonhosted.org/packages/60/f8/096a7cc13097a1869fe44efe68dace40d2a16ecb853141394047f0780b96/wrapt-1.17.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9baa544e6acc91130e926e8c802a17f3b16fbea0fd441b5a60f5cf2cc5c3deba", size = 39020, upload-time = "2025-08-12T05:51:35.906Z" }, + { url = "https://files.pythonhosted.org/packages/33/df/bdf864b8997aab4febb96a9ae5c124f700a5abd9b5e13d2a3214ec4be705/wrapt-1.17.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6b538e31eca1a7ea4605e44f81a48aa24c4632a277431a6ed3f328835901f4fd", size = 39098, upload-time = "2025-08-12T05:51:57.474Z" }, + { url = "https://files.pythonhosted.org/packages/9f/81/5d931d78d0eb732b95dc3ddaeeb71c8bb572fb01356e9133916cd729ecdd/wrapt-1.17.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:042ec3bb8f319c147b1301f2393bc19dba6e176b7da446853406d041c36c7828", size = 88036, upload-time = "2025-08-12T05:52:34.784Z" }, + { url = "https://files.pythonhosted.org/packages/ca/38/2e1785df03b3d72d34fc6252d91d9d12dc27a5c89caef3335a1bbb8908ca/wrapt-1.17.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3af60380ba0b7b5aeb329bc4e402acd25bd877e98b3727b0135cb5c2efdaefe9", size = 88156, upload-time = "2025-08-12T05:52:13.599Z" }, + { url = "https://files.pythonhosted.org/packages/b3/8b/48cdb60fe0603e34e05cffda0b2a4adab81fd43718e11111a4b0100fd7c1/wrapt-1.17.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0b02e424deef65c9f7326d8c19220a2c9040c51dc165cddb732f16198c168396", size = 87102, upload-time = "2025-08-12T05:52:14.56Z" }, + { url = "https://files.pythonhosted.org/packages/3c/51/d81abca783b58f40a154f1b2c56db1d2d9e0d04fa2d4224e357529f57a57/wrapt-1.17.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:74afa28374a3c3a11b3b5e5fca0ae03bef8450d6aa3ab3a1e2c30e3a75d023dc", size = 87732, upload-time = "2025-08-12T05:52:36.165Z" }, + { url = "https://files.pythonhosted.org/packages/9e/b1/43b286ca1392a006d5336412d41663eeef1ad57485f3e52c767376ba7e5a/wrapt-1.17.3-cp312-cp312-win32.whl", hash = "sha256:4da9f45279fff3543c371d5ababc57a0384f70be244de7759c85a7f989cb4ebe", size = 36705, upload-time = "2025-08-12T05:53:07.123Z" }, + { url = "https://files.pythonhosted.org/packages/28/de/49493f962bd3c586ab4b88066e967aa2e0703d6ef2c43aa28cb83bf7b507/wrapt-1.17.3-cp312-cp312-win_amd64.whl", hash = "sha256:e71d5c6ebac14875668a1e90baf2ea0ef5b7ac7918355850c0908ae82bcb297c", size = 38877, upload-time = "2025-08-12T05:53:05.436Z" }, + { url = "https://files.pythonhosted.org/packages/f1/48/0f7102fe9cb1e8a5a77f80d4f0956d62d97034bbe88d33e94699f99d181d/wrapt-1.17.3-cp312-cp312-win_arm64.whl", hash = "sha256:604d076c55e2fdd4c1c03d06dc1a31b95130010517b5019db15365ec4a405fc6", size = 36885, upload-time = "2025-08-12T05:52:54.367Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/a933bd70f98e9cf3e08167fc5cd7aaaca49147e48411c0bd5ae701bb2194/wrapt-1.17.3-py3-none-any.whl", hash = "sha256:7171ae35d2c33d326ac19dd8facb1e82e5fd04ef8c6c0e394d7af55a55051c22", size = 23591, upload-time = "2025-08-12T05:53:20.674Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] diff --git a/tools/run_test.sh b/tools/run_test.sh new file mode 100755 index 000000000..ebd9ec5f6 --- /dev/null +++ b/tools/run_test.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +set -e + +BUILD_TAG='build' +TEST_IMAGE=tools_optscale_telemetry_test:${BUILD_TAG} + +docker build -t ${TEST_IMAGE} --build-arg BUILDTAG=${BUILD_TAG} -f tools/optscale_telemetry/Dockerfile_tests . + +echo "Ruff tests>>>" +docker run -i --rm ${TEST_IMAGE} \ + bash -c "uv --project tools/optscale_telemetry run ruff check ." +echo "<<>>" +docker run -i --rm ${TEST_IMAGE} \ + bash -c "uv --project tools/optscale_telemetry run pytest" +echo "<< Date: Mon, 27 Apr 2026 13:19:40 +0400 Subject: [PATCH 27/30] OSN-1429. [Dependabot] Apollo Server: Browser bug allows for bypass of XS-Search (read-only Cross-Site Request Forgery) prevention ## Description - @apollo/server **Major** update to v5.5.0 - graphql minor update to v16.11.0 According to the [apollo/server@5.0.0 release notes](https://github.com/apollographql/apollo-server/releases/tag/%40apollo%2Fserver%405.0.0), upgrading from version **4** should not introduce major changes to the project. [Migrating tutorial](https://www.apollographql.com/docs/apollo-server/migration) --- ngui/pnpm-lock.yaml | 976 ++++++++++++++++++++------------------- ngui/server/package.json | 5 +- ngui/server/server.ts | 2 +- 3 files changed, 502 insertions(+), 481 deletions(-) diff --git a/ngui/pnpm-lock.yaml b/ngui/pnpm-lock.yaml index bcd7e4ef6..b2255d858 100644 --- a/ngui/pnpm-lock.yaml +++ b/ngui/pnpm-lock.yaml @@ -11,16 +11,16 @@ importers: devDependencies: '@graphql-codegen/cli': specifier: 6.3.0 - version: 6.3.0(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) + version: 6.3.0(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.11.0)(typescript@5.7.2) '@graphql-codegen/typescript': specifier: 5.0.10 - version: 5.0.10(graphql@16.10.0) + version: 5.0.10(graphql@16.11.0) '@graphql-codegen/typescript-react-apollo': specifier: 4.4.1 - version: 4.4.1(graphql@16.10.0) + version: 4.4.1(graphql@16.11.0) '@graphql-codegen/typescript-resolvers': specifier: 5.1.8 - version: 5.1.8(graphql@16.10.0) + version: 5.1.8(graphql@16.11.0) '@parcel/watcher': specifier: 2.5.1 version: 2.5.1 @@ -68,22 +68,25 @@ importers: dependencies: '@apollo/datasource-rest': specifier: 6.4.1 - version: 6.4.1(graphql@16.10.0) + version: 6.4.1(graphql@16.11.0) '@apollo/server': - specifier: 4.13.0 - version: 4.13.0(graphql@16.10.0) + specifier: 5.5.0 + version: 5.5.0(graphql@16.11.0) '@apollo/utils.keyvaluecache': specifier: 3.1.0 version: 3.1.0 + '@as-integrations/express4': + specifier: 1.1.2 + version: 1.1.2(@apollo/server@5.5.0(graphql@16.11.0))(express@4.22.1) '@graphql-tools/load-files': specifier: 7.0.0 - version: 7.0.0(graphql@16.10.0) + version: 7.0.0(graphql@16.11.0) '@graphql-tools/merge': specifier: 9.0.17 - version: 9.0.17(graphql@16.10.0) + version: 9.0.17(graphql@16.11.0) '@graphql-tools/schema': specifier: 10.0.25 - version: 10.0.25(graphql@16.10.0) + version: 10.0.25(graphql@16.11.0) body-parser: specifier: 1.20.4 version: 1.20.4 @@ -97,14 +100,14 @@ importers: specifier: 8.1.1 version: 8.1.1(express@4.22.1) graphql: - specifier: 16.10.0 - version: 16.10.0 + specifier: 16.11.0 + version: 16.11.0 graphql-scalars: specifier: 1.24.0 - version: 1.24.0(graphql@16.10.0) + version: 1.24.0(graphql@16.11.0) graphql-tag: specifier: 2.12.6 - version: 2.12.6(graphql@16.10.0) + version: 2.12.6(graphql@16.11.0) http-proxy-middleware: specifier: 2.0.9 version: 2.0.9(@types/express@4.17.25) @@ -114,7 +117,7 @@ importers: version: 9.39.2 '@graphql-eslint/eslint-plugin': specifier: 4.4.0 - version: 4.4.0(@types/node@25.2.3)(eslint@9.39.4(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2) + version: 4.4.0(@types/node@25.2.3)(eslint@9.39.4(jiti@2.4.2))(graphql@16.11.0)(typescript@5.7.2) '@typescript-eslint/eslint-plugin': specifier: 8.54.0 version: 8.54.0(@typescript-eslint/parser@8.54.0(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2))(eslint@9.39.4(jiti@2.4.2))(typescript@5.7.2) @@ -468,25 +471,23 @@ packages: resolution: {integrity: sha512-Lahx5zntHPZia35myYDBRuF58tlwPskwHc5CWBZC/4bMKB6siTBWwtMrkqXcsNwQiFSzSx5hKdRPUmemrEp3Gg==} hasBin: true - '@apollo/server-gateway-interface@1.1.1': - resolution: {integrity: sha512-pGwCl/po6+rxRmDMFgozKQo2pbsSwE91TpsDBAOgf74CRDPXHHtM88wbwjab0wMMZh95QfR45GGyDIdhY24bkQ==} - deprecated: '@apollo/server-gateway-interface v1 is part of Apollo Server v4, which is deprecated and will transition to end-of-life on January 26, 2026. As long as you are already using a non-EOL version of Node.js, upgrading to v2 should take only a few minutes. See https://www.apollographql.com/docs/apollo-server/previous-versions for details.' + '@apollo/server-gateway-interface@2.0.0': + resolution: {integrity: sha512-3HEMD6fSantG2My3jWkb9dvfkF9vJ4BDLRjMgsnD790VINtuPaEp+h3Hg9HOHiWkML6QsOhnaRqZ+gvhp3y8Nw==} peerDependencies: graphql: 14.x || 15.x || 16.x - '@apollo/server@4.13.0': - resolution: {integrity: sha512-t4GzaRiYIcPwYy40db6QjZzgvTr9ztDKBddykUXmBb2SVjswMKXbkaJ5nPeHqmT3awr9PAaZdCZdZhRj55I/8A==} - engines: {node: '>=14.16.0'} - deprecated: Apollo Server v4 is end-of-life since January 26, 2026. As long as you are already using a non-EOL version of Node.js, upgrading to v5 should take only a few minutes. See https://www.apollographql.com/docs/apollo-server/previous-versions for details. + '@apollo/server@5.5.0': + resolution: {integrity: sha512-vWtodBOK/SZwBTJzItECOmLfL8E8pn/IdvP7pnxN5g2tny9iW4+9sxdajE798wV1H2+PYp/rRcl/soSHIBKMPw==} + engines: {node: '>=20'} peerDependencies: - graphql: ^16.6.0 + graphql: ^16.11.0 '@apollo/usage-reporting-protobuf@4.1.1': resolution: {integrity: sha512-u40dIUePHaSKVshcedO7Wp+mPiZsaU6xjv9J+VyxpoU/zL6Jle+9zWeG98tr/+SZ0nZ4OXhrbb8SNr0rAPpIDA==} - '@apollo/utils.createhash@2.0.2': - resolution: {integrity: sha512-UkS3xqnVFLZ3JFpEmU/2cM2iKJotQXMoSTgxXsfQgXLC5gR1WaepoXagmYnPSA7Q/2cmnyTYK5OgAgoC4RULPg==} - engines: {node: '>=14'} + '@apollo/utils.createhash@3.0.1': + resolution: {integrity: sha512-CKrlySj4eQYftBE5MJ8IzKwIibQnftDT7yGfsJy5KSEEnLlPASX0UTpbKqkjlVEwPPd4mEwI7WOM7XNxEuO05A==} + engines: {node: '>=16'} '@apollo/utils.dropunuseddefinitions@2.0.1': resolution: {integrity: sha512-EsPIBqsSt2BwDsv8Wu76LK5R1KtsVkNoO4b0M5aK0hx+dGg9xJXuqlr7Fo34Dl+y83jmzn+UvEW+t1/GP2melA==} @@ -494,29 +495,21 @@ packages: peerDependencies: graphql: 14.x || 15.x || 16.x - '@apollo/utils.fetcher@2.0.1': - resolution: {integrity: sha512-jvvon885hEyWXd4H6zpWeN3tl88QcWnHp5gWF5OPF34uhvoR+DFqcNxs9vrRaBBSY3qda3Qe0bdud7tz2zGx1A==} - engines: {node: '>=14'} - '@apollo/utils.fetcher@3.1.0': resolution: {integrity: sha512-Z3QAyrsQkvrdTuHAFwWDNd+0l50guwoQUoaDQssLOjkmnmVuvXlJykqlEJolio+4rFwBnWdoY1ByFdKaQEcm7A==} engines: {node: '>=16'} - '@apollo/utils.isnodelike@2.0.1': - resolution: {integrity: sha512-w41XyepR+jBEuVpoRM715N2ZD0xMD413UiJx8w5xnAZD2ZkSJnMJBoIzauK83kJpSgNuR6ywbV29jG9NmxjK0Q==} - engines: {node: '>=14'} - - '@apollo/utils.keyvaluecache@2.1.1': - resolution: {integrity: sha512-qVo5PvUUMD8oB9oYvq4ViCjYAMWnZ5zZwEjNF37L2m1u528x5mueMlU+Cr1UinupCgdB78g+egA1G98rbJ03Vw==} - engines: {node: '>=14'} + '@apollo/utils.isnodelike@3.0.0': + resolution: {integrity: sha512-xrjyjfkzunZ0DeF6xkHaK5IKR8F1FBq6qV+uZ+h9worIF/2YSzA0uoBxGv6tbTeo9QoIQnRW4PVFzGix5E7n/g==} + engines: {node: '>=16'} '@apollo/utils.keyvaluecache@3.1.0': resolution: {integrity: sha512-MM/DKIqpQQbuNG1gNPAlGc45THdWkroTmN8o/J09merFwf/LlZ7+lAfcHFDXIYIknwKmUjJrOMS3OxYbjrz2hA==} engines: {node: '>=16.14'} - '@apollo/utils.logger@2.0.1': - resolution: {integrity: sha512-YuplwLHaHf1oviidB7MxnCXAdHp3IqYV8n0momZ3JfLniae92eYqMIx+j5qJFX6WKJPs6q7bczmV4lXIsTu5Pg==} - engines: {node: '>=14'} + '@apollo/utils.keyvaluecache@4.0.0': + resolution: {integrity: sha512-mKw1myRUkQsGPNB+9bglAuhviodJ2L2MRYLTafCMw5BIo7nbvCPNCkLnIHjZ1NOzH7SnMAr5c9LmXiqsgYqLZw==} + engines: {node: '>=20'} '@apollo/utils.logger@3.0.0': resolution: {integrity: sha512-M8V8JOTH0F2qEi+ktPfw4RL7MvUycDfKp7aEap2eWXfL5SqWHN6jTLbj5f5fj1cceHpyaUSOZlvlaaryaxZAmg==} @@ -552,10 +545,6 @@ packages: peerDependencies: graphql: 14.x || 15.x || 16.x - '@apollo/utils.withrequired@2.0.1': - resolution: {integrity: sha512-YBDiuAX9i1lLc6GeTy1m7DGLFn/gMnvXqlalOIMjM7DeOgIacEjjfwPqb0M1CQ2v11HhR15d1NmxJoRCfrNqcA==} - engines: {node: '>=14'} - '@apollo/utils.withrequired@3.0.0': resolution: {integrity: sha512-aaxeavfJ+RHboh7c2ofO5HHtQobGX4AgUujXP4CXpREHp9fQ9jPi6K9T1jrAKe7HIipoP0OJ1gd6JamSkFIpvA==} engines: {node: '>=16'} @@ -565,6 +554,13 @@ packages: peerDependencies: graphql: '*' + '@as-integrations/express4@1.1.2': + resolution: {integrity: sha512-PGeMcwoOKdYnZ4LtsmM7aLNoel3tbK8wKnfyahdRau1qb7wLbuaXB35zg3w34Ov4bm3WJtO3yzd8Bw5jVE+aIQ==} + engines: {node: '>=20'} + peerDependencies: + '@apollo/server': ^4.0.0 || ^5.0.0 + express: ^4.0.0 + '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -1405,11 +1401,6 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@8.4.2': - resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/merge@9.0.17': resolution: {integrity: sha512-3K4g8KKbIqfdmK0L5+VtZsqwAeElPkvT5ejiH+KEhn2wyKNCi4HYHxpQk8xbu+dSwLlm9Lhet1hylpo/mWCkuQ==} engines: {node: '>=16.0.0'} @@ -1452,11 +1443,6 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/schema@9.0.19': - resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/url-loader@8.0.31': resolution: {integrity: sha512-QGP3py6DAdKERHO5D38Oi+6j+v0O3rkBbnLpyOo87rmIRbwE6sOkL5JeHegHs7EEJ279fBX6lMt8ry0wBMGtyA==} engines: {node: '>=16.0.0'} @@ -1487,11 +1473,6 @@ packages: peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/utils@9.2.1': - resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} - peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - '@graphql-tools/wrap@10.1.2': resolution: {integrity: sha512-vjmPVrYCRelytltyzHy1+QP4mIBRcStjbDNsEC1TMth9KH9wGi3xToIjAAD4GTOnrc6UyZ9IqaIAhffEnhBTRQ==} engines: {node: '>=18.0.0'} @@ -2722,9 +2703,6 @@ packages: '@types/ms@2.1.0': resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - '@types/node-fetch@2.6.13': - resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node@22.10.5': resolution: {integrity: sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==} @@ -2752,9 +2730,6 @@ packages: '@types/prop-types@15.7.15': resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} - '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -3416,6 +3391,10 @@ packages: resolution: {integrity: sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==} engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + body-parser@2.2.2: + resolution: {integrity: sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==} + engines: {node: '>=18'} + brace-expansion@1.1.14: resolution: {integrity: sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==} @@ -4509,6 +4488,10 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} + finalhandler@2.1.1: + resolution: {integrity: sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==} + engines: {node: '>= 18.0.0'} + find-root@1.1.0: resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} @@ -4833,6 +4816,10 @@ packages: resolution: {integrity: sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + graphql@16.11.0: + resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} + engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + grid-index@1.1.0: resolution: {integrity: sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==} @@ -5508,10 +5495,6 @@ packages: lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - lru-cache@7.18.3: - resolution: {integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==} - engines: {node: '>=12'} - luxon@2.5.2: resolution: {integrity: sha512-Yg7/RDp4nedqmLgyH0LwgGRvMEKVzKbUdkBYyCosbHgJ+kaOUx0qzSiSatVc3DFygnirTPYnMM2P5dg2uH1WvA==} engines: {node: '>=12'} @@ -5604,6 +5587,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + memoize-one@6.0.0: resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} @@ -5734,10 +5721,18 @@ packages: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + mime-db@1.54.0: + resolution: {integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==} + engines: {node: '>= 0.6'} + mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime-types@3.0.2: + resolution: {integrity: sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==} + engines: {node: '>=18'} + mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} engines: {node: '>=4'} @@ -5829,8 +5824,8 @@ packages: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} engines: {node: '>= 0.6'} - negotiator@0.6.4: - resolution: {integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==} + negotiator@1.0.0: + resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==} engines: {node: '>= 0.6'} neo-async@2.6.2: @@ -5842,9 +5837,6 @@ packages: no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - node-abort-controller@3.1.1: - resolution: {integrity: sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==} - node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} @@ -6241,6 +6233,10 @@ packages: resolution: {integrity: sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==} engines: {node: '>= 0.8'} + raw-body@3.0.2: + resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==} + engines: {node: '>= 0.10'} + react-big-calendar@1.5.2: resolution: {integrity: sha512-qr34KSvdYrGYQ8WLbyyXXUGzpBLRhBTOMKdt7s/o0eRqw2s9WWGlcQN9yy4721XDU9BfRnKAyR2xxNOs5PvMaQ==} peerDependencies: @@ -7173,6 +7169,10 @@ packages: resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} engines: {node: '>= 0.6'} + type-is@2.0.1: + resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} + engines: {node: '>= 0.6'} + type@2.7.3: resolution: {integrity: sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==} @@ -7340,18 +7340,14 @@ packages: utrie@1.0.2: resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} - uuid@9.0.0: - resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} + uuid@11.1.0: + resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==} hasBin: true - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + uuid@9.0.0: + resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true - value-or-promise@1.0.12: - resolution: {integrity: sha512-Z6Uz+TYwEqE7ZN50gwn+1LCVo9ZVrpxRPOhOLnncYkY1ZzOYtrX8Fwf/rFktZ8R5mJms6EZf5TqNOMeZmnPq9Q==} - engines: {node: '>=12'} - vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -7508,10 +7504,6 @@ packages: engines: {node: '>=18'} deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} @@ -7691,9 +7683,9 @@ snapshots: '@analytics/type-utils@0.6.2': {} - '@apollo/cache-control-types@1.0.3(graphql@16.10.0)': + '@apollo/cache-control-types@1.0.3(graphql@16.11.0)': dependencies: - graphql: 16.10.0 + graphql: 16.11.0 '@apollo/client@3.12.6(@types/react@18.2.45)(graphql-ws@5.16.0(graphql@16.10.0))(graphql@16.10.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -7719,14 +7711,14 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@apollo/datasource-rest@6.4.1(graphql@16.10.0)': + '@apollo/datasource-rest@6.4.1(graphql@16.11.0)': dependencies: '@apollo/utils.fetcher': 3.1.0 '@apollo/utils.keyvaluecache': 3.1.0 '@apollo/utils.logger': 3.0.0 '@apollo/utils.withrequired': 3.0.0 '@types/http-cache-semantics': 4.0.4 - graphql: 16.10.0 + graphql: 16.11.0 http-cache-semantics: 4.2.0 lodash.clonedeep: 4.5.0 lodash.isplainobject: 4.0.6 @@ -7749,117 +7741,111 @@ snapshots: '@types/long': 4.0.2 long: 4.0.0 - '@apollo/server-gateway-interface@1.1.1(graphql@16.10.0)': + '@apollo/server-gateway-interface@2.0.0(graphql@16.11.0)': dependencies: '@apollo/usage-reporting-protobuf': 4.1.1 - '@apollo/utils.fetcher': 2.0.1 - '@apollo/utils.keyvaluecache': 2.1.1 - '@apollo/utils.logger': 2.0.1 - graphql: 16.10.0 + '@apollo/utils.fetcher': 3.1.0 + '@apollo/utils.keyvaluecache': 4.0.0 + '@apollo/utils.logger': 3.0.0 + graphql: 16.11.0 - '@apollo/server@4.13.0(graphql@16.10.0)': + '@apollo/server@5.5.0(graphql@16.11.0)': dependencies: - '@apollo/cache-control-types': 1.0.3(graphql@16.10.0) - '@apollo/server-gateway-interface': 1.1.1(graphql@16.10.0) + '@apollo/cache-control-types': 1.0.3(graphql@16.11.0) + '@apollo/server-gateway-interface': 2.0.0(graphql@16.11.0) '@apollo/usage-reporting-protobuf': 4.1.1 - '@apollo/utils.createhash': 2.0.2 - '@apollo/utils.fetcher': 2.0.1 - '@apollo/utils.isnodelike': 2.0.1 - '@apollo/utils.keyvaluecache': 2.1.1 - '@apollo/utils.logger': 2.0.1 - '@apollo/utils.usagereporting': 2.1.0(graphql@16.10.0) - '@apollo/utils.withrequired': 2.0.1 - '@graphql-tools/schema': 9.0.19(graphql@16.10.0) - '@types/express': 4.17.25 - '@types/express-serve-static-core': 4.19.8 - '@types/node-fetch': 2.6.13 + '@apollo/utils.createhash': 3.0.1 + '@apollo/utils.fetcher': 3.1.0 + '@apollo/utils.isnodelike': 3.0.0 + '@apollo/utils.keyvaluecache': 4.0.0 + '@apollo/utils.logger': 3.0.0 + '@apollo/utils.usagereporting': 2.1.0(graphql@16.11.0) + '@apollo/utils.withrequired': 3.0.0 + '@graphql-tools/schema': 10.0.25(graphql@16.11.0) async-retry: 1.3.3 + body-parser: 2.2.2 content-type: 1.0.5 cors: 2.8.5 - express: 4.22.1 - graphql: 16.10.0 + finalhandler: 2.1.1 + graphql: 16.11.0 loglevel: 1.9.2 - lru-cache: 7.18.3 - negotiator: 0.6.4 - node-abort-controller: 3.1.1 - node-fetch: 2.7.0 - uuid: 9.0.1 - whatwg-mimetype: 3.0.0 + lru-cache: 11.2.5 + negotiator: 1.0.0 + uuid: 11.1.0 + whatwg-mimetype: 4.0.0 transitivePeerDependencies: - - encoding - supports-color '@apollo/usage-reporting-protobuf@4.1.1': dependencies: '@apollo/protobufjs': 1.2.7 - '@apollo/utils.createhash@2.0.2': + '@apollo/utils.createhash@3.0.1': dependencies: - '@apollo/utils.isnodelike': 2.0.1 + '@apollo/utils.isnodelike': 3.0.0 sha.js: 2.4.12 - '@apollo/utils.dropunuseddefinitions@2.0.1(graphql@16.10.0)': + '@apollo/utils.dropunuseddefinitions@2.0.1(graphql@16.11.0)': dependencies: - graphql: 16.10.0 - - '@apollo/utils.fetcher@2.0.1': {} + graphql: 16.11.0 '@apollo/utils.fetcher@3.1.0': {} - '@apollo/utils.isnodelike@2.0.1': {} - - '@apollo/utils.keyvaluecache@2.1.1': - dependencies: - '@apollo/utils.logger': 2.0.1 - lru-cache: 7.18.3 + '@apollo/utils.isnodelike@3.0.0': {} '@apollo/utils.keyvaluecache@3.1.0': dependencies: '@apollo/utils.logger': 3.0.0 lru-cache: 10.4.3 - '@apollo/utils.logger@2.0.1': {} + '@apollo/utils.keyvaluecache@4.0.0': + dependencies: + '@apollo/utils.logger': 3.0.0 + lru-cache: 11.2.5 '@apollo/utils.logger@3.0.0': {} - '@apollo/utils.printwithreducedwhitespace@2.0.1(graphql@16.10.0)': + '@apollo/utils.printwithreducedwhitespace@2.0.1(graphql@16.11.0)': dependencies: - graphql: 16.10.0 + graphql: 16.11.0 - '@apollo/utils.removealiases@2.0.1(graphql@16.10.0)': + '@apollo/utils.removealiases@2.0.1(graphql@16.11.0)': dependencies: - graphql: 16.10.0 + graphql: 16.11.0 - '@apollo/utils.sortast@2.0.1(graphql@16.10.0)': + '@apollo/utils.sortast@2.0.1(graphql@16.11.0)': dependencies: - graphql: 16.10.0 + graphql: 16.11.0 lodash.sortby: 4.7.0 - '@apollo/utils.stripsensitiveliterals@2.0.1(graphql@16.10.0)': + '@apollo/utils.stripsensitiveliterals@2.0.1(graphql@16.11.0)': dependencies: - graphql: 16.10.0 + graphql: 16.11.0 - '@apollo/utils.usagereporting@2.1.0(graphql@16.10.0)': + '@apollo/utils.usagereporting@2.1.0(graphql@16.11.0)': dependencies: '@apollo/usage-reporting-protobuf': 4.1.1 - '@apollo/utils.dropunuseddefinitions': 2.0.1(graphql@16.10.0) - '@apollo/utils.printwithreducedwhitespace': 2.0.1(graphql@16.10.0) - '@apollo/utils.removealiases': 2.0.1(graphql@16.10.0) - '@apollo/utils.sortast': 2.0.1(graphql@16.10.0) - '@apollo/utils.stripsensitiveliterals': 2.0.1(graphql@16.10.0) - graphql: 16.10.0 - - '@apollo/utils.withrequired@2.0.1': {} + '@apollo/utils.dropunuseddefinitions': 2.0.1(graphql@16.11.0) + '@apollo/utils.printwithreducedwhitespace': 2.0.1(graphql@16.11.0) + '@apollo/utils.removealiases': 2.0.1(graphql@16.11.0) + '@apollo/utils.sortast': 2.0.1(graphql@16.11.0) + '@apollo/utils.stripsensitiveliterals': 2.0.1(graphql@16.11.0) + graphql: 16.11.0 '@apollo/utils.withrequired@3.0.0': {} - '@ardatan/relay-compiler@13.0.1(graphql@16.10.0)': + '@ardatan/relay-compiler@13.0.1(graphql@16.11.0)': dependencies: '@babel/runtime': 7.29.2 - graphql: 16.10.0 + graphql: 16.11.0 immutable: 5.1.5 invariant: 2.2.4 + '@as-integrations/express4@1.1.2(@apollo/server@5.5.0(graphql@16.11.0))(express@4.22.1)': + dependencies: + '@apollo/server': 5.5.0(graphql@16.11.0) + express: 4.22.1 + '@asamuzakjp/css-color@3.2.0': dependencies: '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) @@ -8475,38 +8461,38 @@ snapshots: '@googlemaps/js-api-loader@1.16.10': {} - '@graphql-codegen/add@6.0.1(graphql@16.10.0)': + '@graphql-codegen/add@6.0.1(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/cli@6.3.0(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-codegen/cli@6.3.0(@parcel/watcher@2.5.1)(@types/node@22.10.5)(graphql@16.11.0)(typescript@5.7.2)': dependencies: '@babel/generator': 7.28.0 '@babel/template': 7.27.2 '@babel/types': 7.28.0 - '@graphql-codegen/client-preset': 5.3.0(graphql@16.10.0) - '@graphql-codegen/core': 5.0.2(graphql@16.10.0) - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-tools/apollo-engine-loader': 8.0.29(graphql@16.10.0) - '@graphql-tools/code-file-loader': 8.1.31(graphql@16.10.0) - '@graphql-tools/git-loader': 8.0.35(graphql@16.10.0) - '@graphql-tools/github-loader': 9.1.1(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/graphql-file-loader': 8.1.13(graphql@16.10.0) - '@graphql-tools/json-file-loader': 8.0.27(graphql@16.10.0) - '@graphql-tools/load': 8.1.9(graphql@16.10.0) - '@graphql-tools/merge': 9.0.17(graphql@16.10.0) - '@graphql-tools/url-loader': 9.1.1(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-codegen/client-preset': 5.3.0(graphql@16.11.0) + '@graphql-codegen/core': 5.0.2(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-tools/apollo-engine-loader': 8.0.29(graphql@16.11.0) + '@graphql-tools/code-file-loader': 8.1.31(graphql@16.11.0) + '@graphql-tools/git-loader': 8.0.35(graphql@16.11.0) + '@graphql-tools/github-loader': 9.1.1(@types/node@22.10.5)(graphql@16.11.0) + '@graphql-tools/graphql-file-loader': 8.1.13(graphql@16.11.0) + '@graphql-tools/json-file-loader': 8.0.27(graphql@16.11.0) + '@graphql-tools/load': 8.1.9(graphql@16.11.0) + '@graphql-tools/merge': 9.0.17(graphql@16.11.0) + '@graphql-tools/url-loader': 9.1.1(@types/node@22.10.5)(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@inquirer/prompts': 7.10.1(@types/node@22.10.5) '@whatwg-node/fetch': 0.10.8 chalk: 4.1.2 cosmiconfig: 9.0.1(typescript@5.7.2) debounce: 2.2.0 detect-indent: 6.1.0 - graphql: 16.10.0 - graphql-config: 5.1.6(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2) + graphql: 16.11.0 + graphql-config: 5.1.6(@types/node@22.10.5)(graphql@16.11.0)(typescript@5.7.2) is-glob: 4.0.3 jiti: 2.4.2 json-to-pretty-yaml: 1.2.2 @@ -8532,127 +8518,127 @@ snapshots: - typescript - utf-8-validate - '@graphql-codegen/client-preset@5.3.0(graphql@16.10.0)': + '@graphql-codegen/client-preset@5.3.0(graphql@16.11.0)': dependencies: '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@graphql-codegen/add': 6.0.1(graphql@16.10.0) - '@graphql-codegen/gql-tag-operations': 5.2.0(graphql@16.10.0) - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/typed-document-node': 6.1.8(graphql@16.10.0) - '@graphql-codegen/typescript': 5.0.10(graphql@16.10.0) - '@graphql-codegen/typescript-operations': 5.1.0(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) - '@graphql-tools/documents': 1.0.1(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-codegen/add': 6.0.1(graphql@16.11.0) + '@graphql-codegen/gql-tag-operations': 5.2.0(graphql@16.11.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/typed-document-node': 6.1.8(graphql@16.11.0) + '@graphql-codegen/typescript': 5.0.10(graphql@16.11.0) + '@graphql-codegen/typescript-operations': 5.1.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) + '@graphql-tools/documents': 1.0.1(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/core@5.0.2(graphql@16.10.0)': + '@graphql-codegen/core@5.0.2(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-tools/schema': 10.0.25(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/gql-tag-operations@5.2.0(graphql@16.10.0)': + '@graphql-codegen/gql-tag-operations@5.2.0(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) auto-bind: 4.0.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/plugin-helpers@6.3.0(graphql@16.10.0)': + '@graphql-codegen/plugin-helpers@6.3.0(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) change-case-all: 1.0.15 common-tags: 1.8.2 - graphql: 16.10.0 + graphql: 16.11.0 import-from: 4.0.0 tslib: 2.8.1 - '@graphql-codegen/schema-ast@5.0.2(graphql@16.10.0)': + '@graphql-codegen/schema-ast@5.0.2(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/typed-document-node@6.1.8(graphql@16.10.0)': + '@graphql-codegen/typed-document-node@6.1.8(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) auto-bind: 4.0.0 change-case-all: 1.0.15 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/typescript-operations@5.1.0(graphql@16.10.0)': + '@graphql-codegen/typescript-operations@5.1.0(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/typescript': 5.0.10(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/typescript': 5.0.10(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) auto-bind: 4.0.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/typescript-react-apollo@4.4.1(graphql@16.10.0)': + '@graphql-codegen/typescript-react-apollo@4.4.1(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) auto-bind: 4.0.0 change-case-all: 1.0.15 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/typescript-resolvers@5.1.8(graphql@16.10.0)': + '@graphql-codegen/typescript-resolvers@5.1.8(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/typescript': 5.0.10(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/typescript': 5.0.10(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) auto-bind: 4.0.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/typescript@5.0.10(graphql@16.10.0)': + '@graphql-codegen/typescript@5.0.10(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-codegen/schema-ast': 5.0.2(graphql@16.10.0) - '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-codegen/schema-ast': 5.0.2(graphql@16.11.0) + '@graphql-codegen/visitor-plugin-common': 6.3.0(graphql@16.11.0) auto-bind: 4.0.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-codegen/visitor-plugin-common@6.3.0(graphql@16.10.0)': + '@graphql-codegen/visitor-plugin-common@6.3.0(graphql@16.11.0)': dependencies: - '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.10.0) - '@graphql-tools/optimize': 2.0.0(graphql@16.10.0) - '@graphql-tools/relay-operation-optimizer': 7.1.3(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-codegen/plugin-helpers': 6.3.0(graphql@16.11.0) + '@graphql-tools/optimize': 2.0.0(graphql@16.11.0) + '@graphql-tools/relay-operation-optimizer': 7.1.3(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) auto-bind: 4.0.0 change-case-all: 1.0.15 dependency-graph: 1.0.0 - graphql: 16.10.0 - graphql-tag: 2.12.6(graphql@16.10.0) + graphql: 16.11.0 + graphql-tag: 2.12.6(graphql@16.11.0) parse-filepath: 1.0.2 tslib: 2.8.1 - '@graphql-eslint/eslint-plugin@4.4.0(@types/node@25.2.3)(eslint@9.39.4(jiti@2.4.2))(graphql@16.10.0)(typescript@5.7.2)': + '@graphql-eslint/eslint-plugin@4.4.0(@types/node@25.2.3)(eslint@9.39.4(jiti@2.4.2))(graphql@16.11.0)(typescript@5.7.2)': dependencies: - '@graphql-tools/code-file-loader': 8.1.20(graphql@16.10.0) - '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/code-file-loader': 8.1.20(graphql@16.11.0) + '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) debug: 4.4.1(supports-color@5.5.0) eslint: 9.39.4(jiti@2.4.2) fast-glob: 3.3.3 - graphql: 16.10.0 - graphql-config: 5.1.5(@types/node@25.2.3)(graphql@16.10.0)(typescript@5.7.2) - graphql-depth-limit: 1.1.0(graphql@16.10.0) + graphql: 16.11.0 + graphql-config: 5.1.5(@types/node@25.2.3)(graphql@16.11.0)(typescript@5.7.2) + graphql-depth-limit: 1.1.0(graphql@16.11.0) lodash.lowercase: 4.3.0 transitivePeerDependencies: - '@fastify/websocket' @@ -8669,102 +8655,102 @@ snapshots: '@graphql-hive/signal@2.0.0': {} - '@graphql-tools/apollo-engine-loader@8.0.29(graphql@16.10.0)': + '@graphql-tools/apollo-engine-loader@8.0.29(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@whatwg-node/fetch': 0.10.13 - graphql: 16.10.0 + graphql: 16.11.0 sync-fetch: 0.6.0 tslib: 2.8.1 - '@graphql-tools/batch-execute@10.0.8(graphql@16.10.0)': + '@graphql-tools/batch-execute@10.0.8(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/batch-execute@9.0.17(graphql@16.10.0)': + '@graphql-tools/batch-execute@9.0.17(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/code-file-loader@8.1.20(graphql@16.10.0)': + '@graphql-tools/code-file-loader@8.1.20(graphql@16.11.0)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.10.0) - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) + '@graphql-tools/graphql-tag-pluck': 8.3.19(graphql@16.11.0) + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/code-file-loader@8.1.31(graphql@16.10.0)': + '@graphql-tools/code-file-loader@8.1.31(graphql@16.11.0)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 transitivePeerDependencies: - supports-color - '@graphql-tools/delegate@10.2.21(graphql@16.10.0)': + '@graphql-tools/delegate@10.2.21(graphql@16.11.0)': dependencies: - '@graphql-tools/batch-execute': 9.0.17(graphql@16.10.0) - '@graphql-tools/executor': 1.4.7(graphql@16.10.0) - '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/batch-execute': 9.0.17(graphql@16.11.0) + '@graphql-tools/executor': 1.4.7(graphql@16.11.0) + '@graphql-tools/schema': 10.0.25(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 dset: 3.1.4 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/delegate@12.0.14(graphql@16.10.0)': + '@graphql-tools/delegate@12.0.14(graphql@16.11.0)': dependencies: - '@graphql-tools/batch-execute': 10.0.8(graphql@16.10.0) - '@graphql-tools/executor': 1.5.2(graphql@16.10.0) - '@graphql-tools/schema': 10.0.32(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/batch-execute': 10.0.8(graphql@16.11.0) + '@graphql-tools/executor': 1.5.2(graphql@16.11.0) + '@graphql-tools/schema': 10.0.32(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/promise-helpers': 1.3.2 dataloader: 2.2.3 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/documents@1.0.1(graphql@16.10.0)': + '@graphql-tools/documents@1.0.1(graphql@16.11.0)': dependencies: - graphql: 16.10.0 + graphql: 16.11.0 lodash.sortby: 4.7.0 tslib: 2.8.1 - '@graphql-tools/executor-common@0.0.4(graphql@16.10.0)': + '@graphql-tools/executor-common@0.0.4(graphql@16.11.0)': dependencies: '@envelop/core': 5.3.0 - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + graphql: 16.11.0 - '@graphql-tools/executor-common@1.0.6(graphql@16.10.0)': + '@graphql-tools/executor-common@1.0.6(graphql@16.11.0)': dependencies: '@envelop/core': 5.5.1 - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 - '@graphql-tools/executor-graphql-ws@2.0.5(graphql@16.10.0)': + '@graphql-tools/executor-graphql-ws@2.0.5(graphql@16.11.0)': dependencies: - '@graphql-tools/executor-common': 0.0.4(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@whatwg-node/disposablestack': 0.0.6 - graphql: 16.10.0 - graphql-ws: 6.0.5(graphql@16.10.0)(ws@8.20.0) + graphql: 16.11.0 + graphql-ws: 6.0.5(graphql@16.11.0)(ws@8.20.0) isomorphic-ws: 5.0.0(ws@8.20.0) tslib: 2.8.1 ws: 8.20.0 @@ -8775,13 +8761,13 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/executor-graphql-ws@3.1.5(graphql@16.10.0)': + '@graphql-tools/executor-graphql-ws@3.1.5(graphql@16.11.0)': dependencies: - '@graphql-tools/executor-common': 1.0.6(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/executor-common': 1.0.6(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@whatwg-node/disposablestack': 0.0.6 - graphql: 16.10.0 - graphql-ws: 6.0.8(graphql@16.10.0)(ws@8.20.0) + graphql: 16.11.0 + graphql-ws: 6.0.8(graphql@16.11.0)(ws@8.20.0) isows: 1.0.7(ws@8.20.0) tslib: 2.8.1 ws: 8.20.0 @@ -8791,41 +8777,41 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/executor-http@1.3.3(@types/node@25.2.3)(graphql@16.10.0)': + '@graphql-tools/executor-http@1.3.3(@types/node@25.2.3)(graphql@16.11.0)': dependencies: '@graphql-hive/signal': 1.0.0 - '@graphql-tools/executor-common': 0.0.4(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/executor-common': 0.0.4(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/fetch': 0.10.8 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 meros: 1.3.1(@types/node@25.2.3) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - '@graphql-tools/executor-http@3.2.1(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/executor-http@3.2.1(@types/node@22.10.5)(graphql@16.11.0)': dependencies: '@graphql-hive/signal': 2.0.0 - '@graphql-tools/executor-common': 1.0.6(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/executor-common': 1.0.6(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 meros: 1.3.2(@types/node@22.10.5) tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - '@graphql-tools/executor-legacy-ws@1.1.17(graphql@16.10.0)': + '@graphql-tools/executor-legacy-ws@1.1.17(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@types/ws': 8.18.1 - graphql: 16.10.0 + graphql: 16.11.0 isomorphic-ws: 5.0.0(ws@8.20.0) tslib: 2.8.1 ws: 8.20.0 @@ -8833,11 +8819,11 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor-legacy-ws@1.1.27(graphql@16.10.0)': + '@graphql-tools/executor-legacy-ws@1.1.27(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@types/ws': 8.18.1 - graphql: 16.10.0 + graphql: 16.11.0 isomorphic-ws: 5.0.0(ws@8.20.0) tslib: 2.8.1 ws: 8.20.0 @@ -8845,31 +8831,31 @@ snapshots: - bufferutil - utf-8-validate - '@graphql-tools/executor@1.4.7(graphql@16.10.0)': + '@graphql-tools/executor@1.4.7(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/executor@1.5.2(graphql@16.10.0)': + '@graphql-tools/executor@1.5.2(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@repeaterjs/repeater': 3.0.6 '@whatwg-node/disposablestack': 0.0.6 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/git-loader@8.0.35(graphql@16.10.0)': + '@graphql-tools/git-loader@8.0.35(graphql@16.11.0)': dependencies: - '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 is-glob: 4.0.3 micromatch: 4.0.8 tslib: 2.8.1 @@ -8877,186 +8863,172 @@ snapshots: transitivePeerDependencies: - supports-color - '@graphql-tools/github-loader@9.1.1(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/github-loader@9.1.1(@types/node@22.10.5)(graphql@16.11.0)': dependencies: - '@graphql-tools/executor-http': 3.2.1(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/executor-http': 3.2.1(@types/node@22.10.5)(graphql@16.11.0) + '@graphql-tools/graphql-tag-pluck': 8.3.30(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 sync-fetch: 0.6.0 tslib: 2.8.1 transitivePeerDependencies: - '@types/node' - supports-color - '@graphql-tools/graphql-file-loader@8.0.20(graphql@16.10.0)': + '@graphql-tools/graphql-file-loader@8.0.20(graphql@16.11.0)': dependencies: - '@graphql-tools/import': 7.0.19(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/import': 7.0.19(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/graphql-file-loader@8.1.13(graphql@16.10.0)': + '@graphql-tools/graphql-file-loader@8.1.13(graphql@16.11.0)': dependencies: - '@graphql-tools/import': 7.1.13(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/import': 7.1.13(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.10.0)': + '@graphql-tools/graphql-tag-pluck@8.3.19(graphql@16.11.0)': dependencies: '@babel/core': 7.28.0 '@babel/parser': 7.28.0 '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.0) '@babel/traverse': 7.28.0 '@babel/types': 7.28.0 - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/graphql-tag-pluck@8.3.30(graphql@16.10.0)': + '@graphql-tools/graphql-tag-pluck@8.3.30(graphql@16.11.0)': dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.2 '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.29.0) '@babel/traverse': 7.28.0 '@babel/types': 7.28.0 - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@graphql-tools/import@7.0.19(graphql@16.10.0)': + '@graphql-tools/import@7.0.19(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + graphql: 16.11.0 resolve-from: 5.0.0 tslib: 2.8.1 - '@graphql-tools/import@7.1.13(graphql@16.10.0)': + '@graphql-tools/import@7.1.13(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 resolve-from: 5.0.0 tslib: 2.8.1 - '@graphql-tools/json-file-loader@8.0.18(graphql@16.10.0)': + '@graphql-tools/json-file-loader@8.0.18(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/json-file-loader@8.0.27(graphql@16.10.0)': + '@graphql-tools/json-file-loader@8.0.27(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/load-files@7.0.0(graphql@16.10.0)': + '@graphql-tools/load-files@7.0.0(graphql@16.11.0)': dependencies: globby: 11.1.0 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 unixify: 1.0.0 - '@graphql-tools/load@8.1.0(graphql@16.10.0)': + '@graphql-tools/load@8.1.0(graphql@16.11.0)': dependencies: - '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/schema': 10.0.25(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + graphql: 16.11.0 p-limit: 3.1.0 tslib: 2.8.1 - '@graphql-tools/load@8.1.9(graphql@16.10.0)': + '@graphql-tools/load@8.1.9(graphql@16.11.0)': dependencies: - '@graphql-tools/schema': 10.0.32(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/schema': 10.0.32(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 p-limit: 3.1.0 tslib: 2.8.1 - '@graphql-tools/merge@8.4.2(graphql@16.10.0)': + '@graphql-tools/merge@9.0.17(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 9.2.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 10.8.6(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/merge@9.0.17(graphql@16.10.0)': + '@graphql-tools/merge@9.1.1(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.8.6(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/merge@9.1.1(graphql@16.10.0)': + '@graphql-tools/merge@9.1.8(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/merge@9.1.8(graphql@16.10.0)': + '@graphql-tools/optimize@2.0.0(graphql@16.11.0)': dependencies: - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 - tslib: 2.8.1 - - '@graphql-tools/optimize@2.0.0(graphql@16.10.0)': - dependencies: - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/relay-operation-optimizer@7.1.3(graphql@16.10.0)': + '@graphql-tools/relay-operation-optimizer@7.1.3(graphql@16.11.0)': dependencies: - '@ardatan/relay-compiler': 13.0.1(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@ardatan/relay-compiler': 13.0.1(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/schema@10.0.25(graphql@16.10.0)': + '@graphql-tools/schema@10.0.25(graphql@16.11.0)': dependencies: - '@graphql-tools/merge': 9.1.1(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/merge': 9.1.1(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/schema@10.0.32(graphql@16.10.0)': + '@graphql-tools/schema@10.0.32(graphql@16.11.0)': dependencies: - '@graphql-tools/merge': 9.1.8(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - graphql: 16.10.0 + '@graphql-tools/merge': 9.1.8(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/schema@9.0.19(graphql@16.10.0)': + '@graphql-tools/url-loader@8.0.31(@types/node@25.2.3)(graphql@16.11.0)': dependencies: - '@graphql-tools/merge': 8.4.2(graphql@16.10.0) - '@graphql-tools/utils': 9.2.1(graphql@16.10.0) - graphql: 16.10.0 - tslib: 2.8.1 - value-or-promise: 1.0.12 - - '@graphql-tools/url-loader@8.0.31(@types/node@25.2.3)(graphql@16.10.0)': - dependencies: - '@graphql-tools/executor-graphql-ws': 2.0.5(graphql@16.10.0) - '@graphql-tools/executor-http': 1.3.3(@types/node@25.2.3)(graphql@16.10.0) - '@graphql-tools/executor-legacy-ws': 1.1.17(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) - '@graphql-tools/wrap': 10.1.2(graphql@16.10.0) + '@graphql-tools/executor-graphql-ws': 2.0.5(graphql@16.11.0) + '@graphql-tools/executor-http': 1.3.3(@types/node@25.2.3)(graphql@16.11.0) + '@graphql-tools/executor-legacy-ws': 1.1.17(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) + '@graphql-tools/wrap': 10.1.2(graphql@16.11.0) '@types/ws': 8.18.1 '@whatwg-node/fetch': 0.10.8 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 isomorphic-ws: 5.0.0(ws@8.20.0) sync-fetch: 0.6.0-2 tslib: 2.8.1 @@ -9069,17 +9041,17 @@ snapshots: - uWebSockets.js - utf-8-validate - '@graphql-tools/url-loader@9.1.1(@types/node@22.10.5)(graphql@16.10.0)': + '@graphql-tools/url-loader@9.1.1(@types/node@22.10.5)(graphql@16.11.0)': dependencies: - '@graphql-tools/executor-graphql-ws': 3.1.5(graphql@16.10.0) - '@graphql-tools/executor-http': 3.2.1(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/executor-legacy-ws': 1.1.27(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) - '@graphql-tools/wrap': 11.1.14(graphql@16.10.0) + '@graphql-tools/executor-graphql-ws': 3.1.5(graphql@16.11.0) + '@graphql-tools/executor-http': 3.2.1(@types/node@22.10.5)(graphql@16.11.0) + '@graphql-tools/executor-legacy-ws': 1.1.27(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) + '@graphql-tools/wrap': 11.1.14(graphql@16.11.0) '@types/ws': 8.18.1 '@whatwg-node/fetch': 0.10.13 '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 isomorphic-ws: 5.0.0(ws@8.20.0) sync-fetch: 0.6.0 tslib: 2.8.1 @@ -9091,60 +9063,58 @@ snapshots: - crossws - utf-8-validate - '@graphql-tools/utils@10.8.6(graphql@16.10.0)': + '@graphql-tools/utils@10.8.6(graphql@16.11.0)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 dset: 3.1.4 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/utils@10.9.1(graphql@16.10.0)': + '@graphql-tools/utils@10.9.1(graphql@16.11.0)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 dset: 3.1.4 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/utils@11.0.1(graphql@16.10.0)': + '@graphql-tools/utils@11.0.1(graphql@16.11.0)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 cross-inspect: 1.0.1 - graphql: 16.10.0 - tslib: 2.8.1 - - '@graphql-tools/utils@9.2.1(graphql@16.10.0)': - dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.10.0) - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/wrap@10.1.2(graphql@16.10.0)': + '@graphql-tools/wrap@10.1.2(graphql@16.11.0)': dependencies: - '@graphql-tools/delegate': 10.2.21(graphql@16.10.0) - '@graphql-tools/schema': 10.0.25(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/delegate': 10.2.21(graphql@16.11.0) + '@graphql-tools/schema': 10.0.25(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 - '@graphql-tools/wrap@11.1.14(graphql@16.10.0)': + '@graphql-tools/wrap@11.1.14(graphql@16.11.0)': dependencies: - '@graphql-tools/delegate': 12.0.14(graphql@16.10.0) - '@graphql-tools/schema': 10.0.32(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/delegate': 12.0.14(graphql@16.11.0) + '@graphql-tools/schema': 10.0.32(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) '@whatwg-node/promise-helpers': 1.3.2 - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 '@graphql-typed-document-node/core@3.2.0(graphql@16.10.0)': dependencies: graphql: 16.10.0 + '@graphql-typed-document-node/core@3.2.0(graphql@16.11.0)': + dependencies: + graphql: 16.11.0 + '@humanfs/core@0.19.1': {} '@humanfs/node@0.16.6': @@ -10350,6 +10320,7 @@ snapshots: dependencies: '@types/connect': 3.4.38 '@types/node': 22.10.5 + optional: true '@types/chai@5.2.2': dependencies: @@ -10358,6 +10329,7 @@ snapshots: '@types/connect@3.4.38': dependencies: '@types/node': 22.10.5 + optional: true '@types/d3-color@3.1.3': {} @@ -10417,17 +10389,19 @@ snapshots: '@types/express-serve-static-core@4.19.8': dependencies: - '@types/node': 25.2.3 - '@types/qs': 6.14.0 + '@types/node': 22.10.5 + '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 + optional: true '@types/express@4.17.25': dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.8 - '@types/qs': 6.14.0 + '@types/qs': 6.9.18 '@types/serve-static': 1.15.10 + optional: true '@types/file-saver@2.0.7': {} @@ -10454,7 +10428,8 @@ snapshots: '@types/http-cache-semantics@4.0.4': {} - '@types/http-errors@2.0.5': {} + '@types/http-errors@2.0.5': + optional: true '@types/http-proxy@1.17.16': dependencies: @@ -10495,15 +10470,11 @@ snapshots: dependencies: '@types/unist': 3.0.3 - '@types/mime@1.3.5': {} + '@types/mime@1.3.5': + optional: true '@types/ms@2.1.0': {} - '@types/node-fetch@2.6.13': - dependencies: - '@types/node': 25.2.3 - form-data: 4.0.5 - '@types/node@22.10.5': dependencies: undici-types: 6.20.0 @@ -10511,6 +10482,7 @@ snapshots: '@types/node@25.2.3': dependencies: undici-types: 7.16.0 + optional: true '@types/offscreencanvas@2019.7.3': {} @@ -10526,14 +10498,13 @@ snapshots: '@types/prop-types@15.7.15': {} - '@types/qs@6.14.0': {} - '@types/qs@6.9.18': {} '@types/raf@3.4.3': optional: true - '@types/range-parser@1.2.7': {} + '@types/range-parser@1.2.7': + optional: true '@types/react-dom@18.2.18': dependencies: @@ -10564,17 +10535,20 @@ snapshots: '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 25.2.3 + '@types/node': 22.10.5 + optional: true '@types/send@1.2.1': dependencies: - '@types/node': 25.2.3 + '@types/node': 22.10.5 + optional: true '@types/serve-static@1.15.10': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 25.2.3 + '@types/node': 22.10.5 '@types/send': 0.17.6 + optional: true '@types/stack-utils@2.0.3': {} @@ -11284,6 +11258,20 @@ snapshots: transitivePeerDependencies: - supports-color + body-parser@2.2.2: + dependencies: + bytes: 3.1.2 + content-type: 1.0.5 + debug: 4.4.3 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + on-finished: 2.4.1 + qs: 6.14.2 + raw-body: 3.0.2 + type-is: 2.0.1 + transitivePeerDependencies: + - supports-color + brace-expansion@1.1.14: dependencies: balanced-match: 1.0.2 @@ -12558,6 +12546,17 @@ snapshots: transitivePeerDependencies: - supports-color + finalhandler@2.1.1: + dependencies: + debug: 4.4.3 + encodeurl: 2.0.0 + escape-html: 1.0.3 + on-finished: 2.4.1 + parseurl: 1.3.3 + statuses: 2.0.2 + transitivePeerDependencies: + - supports-color + find-root@1.1.0: {} find-up@5.0.0: @@ -12864,16 +12863,16 @@ snapshots: graceful-fs@4.2.11: {} - graphql-config@5.1.5(@types/node@25.2.3)(graphql@16.10.0)(typescript@5.7.2): + graphql-config@5.1.5(@types/node@25.2.3)(graphql@16.11.0)(typescript@5.7.2): dependencies: - '@graphql-tools/graphql-file-loader': 8.0.20(graphql@16.10.0) - '@graphql-tools/json-file-loader': 8.0.18(graphql@16.10.0) - '@graphql-tools/load': 8.1.0(graphql@16.10.0) - '@graphql-tools/merge': 9.0.17(graphql@16.10.0) - '@graphql-tools/url-loader': 8.0.31(@types/node@25.2.3)(graphql@16.10.0) - '@graphql-tools/utils': 10.9.1(graphql@16.10.0) + '@graphql-tools/graphql-file-loader': 8.0.20(graphql@16.11.0) + '@graphql-tools/json-file-loader': 8.0.18(graphql@16.11.0) + '@graphql-tools/load': 8.1.0(graphql@16.11.0) + '@graphql-tools/merge': 9.0.17(graphql@16.11.0) + '@graphql-tools/url-loader': 8.0.31(@types/node@25.2.3)(graphql@16.11.0) + '@graphql-tools/utils': 10.9.1(graphql@16.11.0) cosmiconfig: 8.3.6(typescript@5.7.2) - graphql: 16.10.0 + graphql: 16.11.0 jiti: 2.4.2 minimatch: 9.0.9 string-env-interpolation: 1.0.1 @@ -12887,16 +12886,16 @@ snapshots: - uWebSockets.js - utf-8-validate - graphql-config@5.1.6(@types/node@22.10.5)(graphql@16.10.0)(typescript@5.7.2): + graphql-config@5.1.6(@types/node@22.10.5)(graphql@16.11.0)(typescript@5.7.2): dependencies: - '@graphql-tools/graphql-file-loader': 8.1.13(graphql@16.10.0) - '@graphql-tools/json-file-loader': 8.0.27(graphql@16.10.0) - '@graphql-tools/load': 8.1.9(graphql@16.10.0) - '@graphql-tools/merge': 9.0.17(graphql@16.10.0) - '@graphql-tools/url-loader': 9.1.1(@types/node@22.10.5)(graphql@16.10.0) - '@graphql-tools/utils': 11.0.1(graphql@16.10.0) + '@graphql-tools/graphql-file-loader': 8.1.13(graphql@16.11.0) + '@graphql-tools/json-file-loader': 8.0.27(graphql@16.11.0) + '@graphql-tools/load': 8.1.9(graphql@16.11.0) + '@graphql-tools/merge': 9.0.17(graphql@16.11.0) + '@graphql-tools/url-loader': 9.1.1(@types/node@22.10.5)(graphql@16.11.0) + '@graphql-tools/utils': 11.0.1(graphql@16.11.0) cosmiconfig: 8.3.6(typescript@5.7.2) - graphql: 16.10.0 + graphql: 16.11.0 jiti: 2.4.2 minimatch: 10.2.5 string-env-interpolation: 1.0.1 @@ -12909,14 +12908,14 @@ snapshots: - typescript - utf-8-validate - graphql-depth-limit@1.1.0(graphql@16.10.0): + graphql-depth-limit@1.1.0(graphql@16.11.0): dependencies: arrify: 1.0.1 - graphql: 16.10.0 + graphql: 16.11.0 - graphql-scalars@1.24.0(graphql@16.10.0): + graphql-scalars@1.24.0(graphql@16.11.0): dependencies: - graphql: 16.10.0 + graphql: 16.11.0 tslib: 2.8.1 graphql-tag@2.12.6(graphql@16.10.0): @@ -12924,24 +12923,31 @@ snapshots: graphql: 16.10.0 tslib: 2.8.1 + graphql-tag@2.12.6(graphql@16.11.0): + dependencies: + graphql: 16.11.0 + tslib: 2.8.1 + graphql-ws@5.16.0(graphql@16.10.0): dependencies: graphql: 16.10.0 - graphql-ws@6.0.5(graphql@16.10.0)(ws@8.20.0): + graphql-ws@6.0.5(graphql@16.11.0)(ws@8.20.0): dependencies: - graphql: 16.10.0 + graphql: 16.11.0 optionalDependencies: ws: 8.20.0 - graphql-ws@6.0.8(graphql@16.10.0)(ws@8.20.0): + graphql-ws@6.0.8(graphql@16.11.0)(ws@8.20.0): dependencies: - graphql: 16.10.0 + graphql: 16.11.0 optionalDependencies: ws: 8.20.0 graphql@16.10.0: {} + graphql@16.11.0: {} + grid-index@1.1.0: {} hammerjs@2.0.8: {} @@ -13673,8 +13679,6 @@ snapshots: dependencies: yallist: 3.1.1 - lru-cache@7.18.3: {} - luxon@2.5.2: {} magic-string@0.27.0: @@ -13912,6 +13916,8 @@ snapshots: media-typer@0.3.0: {} + media-typer@1.1.0: {} + memoize-one@6.0.0: {} memoizerific@1.11.3: @@ -14132,10 +14138,16 @@ snapshots: mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 + mime-types@3.0.2: + dependencies: + mime-db: 1.54.0 + mime@1.6.0: {} mimic-function@5.0.1: {} @@ -14209,7 +14221,7 @@ snapshots: negotiator@0.6.3: {} - negotiator@0.6.4: {} + negotiator@1.0.0: {} neo-async@2.6.2: {} @@ -14220,8 +14232,6 @@ snapshots: lower-case: 2.0.2 tslib: 2.8.1 - node-abort-controller@3.1.1: {} - node-addon-api@7.1.1: {} node-domexception@1.0.0: {} @@ -14688,6 +14698,13 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@3.0.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.1 + iconv-lite: 0.7.2 + unpipe: 1.0.0 + react-big-calendar@1.5.2(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@babel/runtime': 7.27.6 @@ -15805,6 +15822,12 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 + type-is@2.0.1: + dependencies: + content-type: 1.0.5 + media-typer: 1.1.0 + mime-types: 3.0.2 + type@2.7.3: {} typed-array-buffer@1.0.3: @@ -15881,7 +15904,8 @@ snapshots: undici-types@6.20.0: {} - undici-types@7.16.0: {} + undici-types@7.16.0: + optional: true unified@10.1.2: dependencies: @@ -16045,11 +16069,9 @@ snapshots: base64-arraybuffer: 1.0.2 optional: true - uuid@9.0.0: {} + uuid@11.1.0: {} - uuid@9.0.1: {} - - value-or-promise@1.0.12: {} + uuid@9.0.0: {} vary@1.1.2: {} @@ -16245,8 +16267,6 @@ snapshots: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: {} - whatwg-mimetype@4.0.0: {} whatwg-url@14.2.0: diff --git a/ngui/server/package.json b/ngui/server/package.json index 0ab0d089a..69fec7986 100644 --- a/ngui/server/package.json +++ b/ngui/server/package.json @@ -32,8 +32,9 @@ "homepage": "https://gitlab.com/hystax/ngui_server#readme", "dependencies": { "@apollo/datasource-rest": "6.4.1", - "@apollo/server": "4.13.0", + "@apollo/server": "5.5.0", "@apollo/utils.keyvaluecache": "3.1.0", + "@as-integrations/express4": "1.1.2", "@graphql-tools/load-files": "7.0.0", "@graphql-tools/merge": "9.0.17", "@graphql-tools/schema": "10.0.25", @@ -41,7 +42,7 @@ "cors": "2.8.5", "express": "4.22.1", "express-rate-limit": "8.1.1", - "graphql": "16.10.0", + "graphql": "16.11.0", "graphql-scalars": "1.24.0", "graphql-tag": "2.12.6", "http-proxy-middleware": "2.0.9" diff --git a/ngui/server/server.ts b/ngui/server/server.ts index 97d12c7bd..8f74a899b 100644 --- a/ngui/server/server.ts +++ b/ngui/server/server.ts @@ -1,7 +1,7 @@ import http from "http"; import path from "path"; import { ApolloServer } from "@apollo/server"; -import { expressMiddleware } from "@apollo/server/express4"; +import { expressMiddleware } from "@as-integrations/express4"; import { ApolloServerPluginDrainHttpServer } from "@apollo/server/plugin/drainHttpServer"; import express from "express"; import cors from "cors"; From 894175b2998518f20c433e1d198f19d7e6210584 Mon Sep 17 00:00:00 2001 From: stanfra <142495589+stanfra@users.noreply.github.com> Date: Wed, 29 Apr 2026 11:30:20 +0400 Subject: [PATCH 28/30] OSN-1445. Updated actions/checkout and docker/login-action versions --- .github/workflows/test_auth.yaml | 4 ++-- .github/workflows/test_bailiff.yml | 4 ++-- .github/workflows/test_bi_exporter.yaml | 4 ++-- .github/workflows/test_bi_scheduler.yaml | 4 ++-- .github/workflows/test_booking_observer.yaml | 4 ++-- .github/workflows/test_bumischeduler.yaml | 4 ++-- .github/workflows/test_bumiworker.yaml | 4 ++-- .github/workflows/test_calendar_observer.yaml | 4 ++-- .github/workflows/test_cleanelkdb.yaml | 4 ++-- .github/workflows/test_cleaninfluxdb.yaml | 4 ++-- .github/workflows/test_cleanmongodb.yaml | 4 ++-- .github/workflows/test_configurator.yaml | 4 ++-- .github/workflows/test_demo_org_cleanup.yaml | 4 ++-- .github/workflows/test_diproxy.yaml | 4 ++-- .github/workflows/test_diworker.yaml | 4 ++-- .github/workflows/test_elk.yaml | 4 ++-- .github/workflows/test_error_pages.yaml | 4 ++-- .github/workflows/test_etcd.yaml | 4 ++-- .github/workflows/test_failed_imports_dataset_generator.yaml | 4 ++-- .github/workflows/test_gemini_scheduler.yaml | 4 ++-- .github/workflows/test_gemini_worker.yaml | 4 ++-- .github/workflows/test_grafana.yaml | 4 ++-- .github/workflows/test_grafana_nginx.yaml | 4 ++-- .github/workflows/test_herald.yaml | 4 ++-- .github/workflows/test_herald_executor.yaml | 4 ++-- .github/workflows/test_influxdb.yaml | 4 ++-- .github/workflows/test_insider.yaml | 4 ++-- .github/workflows/test_jira_bus.yaml | 4 ++-- .github/workflows/test_jira_ui.yaml | 4 ++-- .github/workflows/test_katara_service.yaml | 4 ++-- .github/workflows/test_katara_worker.yaml | 4 ++-- .github/workflows/test_keeper.yaml | 4 ++-- .github/workflows/test_keeper_executor.yaml | 4 ++-- .github/workflows/test_layout_cleaner.yaml | 4 ++-- .github/workflows/test_live_demo_generator.yaml | 4 ++-- .github/workflows/test_mariadb.yaml | 4 ++-- .github/workflows/test_metroculus.yaml | 4 ++-- .github/workflows/test_mongo.yaml | 4 ++-- .github/workflows/test_ngui.yaml | 4 ++-- .github/workflows/test_organization_violations.yaml | 4 ++-- .github/workflows/test_power_schedule.yaml | 4 ++-- .github/workflows/test_redis.yaml | 4 ++-- .github/workflows/test_resource_discovery.yaml | 4 ++-- .github/workflows/test_resource_observer.yaml | 4 ++-- .github/workflows/test_resource_violations.yaml | 4 ++-- .github/workflows/test_rest-api.yaml | 4 ++-- .github/workflows/test_risp.yaml | 4 ++-- .github/workflows/test_slacker.yaml | 4 ++-- .github/workflows/test_slacker_executor.yaml | 4 ++-- .github/workflows/test_subspector.yml | 4 ++-- .github/workflows/test_subsyncer.yml | 4 ++-- .github/workflows/test_trapper.yaml | 4 ++-- .github/workflows/test_users_dataset_generator.yaml | 4 ++-- .github/workflows/test_webhook_executor.yaml | 4 ++-- 54 files changed, 108 insertions(+), 108 deletions(-) diff --git a/.github/workflows/test_auth.yaml b/.github/workflows/test_auth.yaml index d4551db76..23d130730 100644 --- a/.github/workflows/test_auth.yaml +++ b/.github/workflows/test_auth.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_bailiff.yml b/.github/workflows/test_bailiff.yml index d21a3d650..5f7940b7e 100644 --- a/.github/workflows/test_bailiff.yml +++ b/.github/workflows/test_bailiff.yml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_bi_exporter.yaml b/.github/workflows/test_bi_exporter.yaml index 5fd483db6..6989bf552 100644 --- a/.github/workflows/test_bi_exporter.yaml +++ b/.github/workflows/test_bi_exporter.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out actions code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_bi_scheduler.yaml b/.github/workflows/test_bi_scheduler.yaml index aa38ab9fb..5f3b7caba 100644 --- a/.github/workflows/test_bi_scheduler.yaml +++ b/.github/workflows/test_bi_scheduler.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_booking_observer.yaml b/.github/workflows/test_booking_observer.yaml index 726b2e68a..e691e89fb 100644 --- a/.github/workflows/test_booking_observer.yaml +++ b/.github/workflows/test_booking_observer.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_bumischeduler.yaml b/.github/workflows/test_bumischeduler.yaml index a2d2918e7..b9b0648b1 100644 --- a/.github/workflows/test_bumischeduler.yaml +++ b/.github/workflows/test_bumischeduler.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_bumiworker.yaml b/.github/workflows/test_bumiworker.yaml index f793b3671..904bd8d9d 100644 --- a/.github/workflows/test_bumiworker.yaml +++ b/.github/workflows/test_bumiworker.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_calendar_observer.yaml b/.github/workflows/test_calendar_observer.yaml index 656aad748..2f97b49d2 100644 --- a/.github/workflows/test_calendar_observer.yaml +++ b/.github/workflows/test_calendar_observer.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_cleanelkdb.yaml b/.github/workflows/test_cleanelkdb.yaml index eb39735d6..2c58d40a7 100644 --- a/.github/workflows/test_cleanelkdb.yaml +++ b/.github/workflows/test_cleanelkdb.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_cleaninfluxdb.yaml b/.github/workflows/test_cleaninfluxdb.yaml index 77e7e59db..97df3e66a 100644 --- a/.github/workflows/test_cleaninfluxdb.yaml +++ b/.github/workflows/test_cleaninfluxdb.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_cleanmongodb.yaml b/.github/workflows/test_cleanmongodb.yaml index 25d3dacf8..03cba4385 100644 --- a/.github/workflows/test_cleanmongodb.yaml +++ b/.github/workflows/test_cleanmongodb.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_configurator.yaml b/.github/workflows/test_configurator.yaml index 4b2211b08..34f101752 100644 --- a/.github/workflows/test_configurator.yaml +++ b/.github/workflows/test_configurator.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_demo_org_cleanup.yaml b/.github/workflows/test_demo_org_cleanup.yaml index 846bbff98..bb8aec2e9 100644 --- a/.github/workflows/test_demo_org_cleanup.yaml +++ b/.github/workflows/test_demo_org_cleanup.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_diproxy.yaml b/.github/workflows/test_diproxy.yaml index bf6ad06f4..cd3b16167 100644 --- a/.github/workflows/test_diproxy.yaml +++ b/.github/workflows/test_diproxy.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_diworker.yaml b/.github/workflows/test_diworker.yaml index 007ca3ead..ab99167c7 100644 --- a/.github/workflows/test_diworker.yaml +++ b/.github/workflows/test_diworker.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_elk.yaml b/.github/workflows/test_elk.yaml index e922cab60..09c3f3131 100644 --- a/.github/workflows/test_elk.yaml +++ b/.github/workflows/test_elk.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_error_pages.yaml b/.github/workflows/test_error_pages.yaml index 17d6779aa..02bb7ae9a 100644 --- a/.github/workflows/test_error_pages.yaml +++ b/.github/workflows/test_error_pages.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_etcd.yaml b/.github/workflows/test_etcd.yaml index 6734947d6..49404dda8 100644 --- a/.github/workflows/test_etcd.yaml +++ b/.github/workflows/test_etcd.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_failed_imports_dataset_generator.yaml b/.github/workflows/test_failed_imports_dataset_generator.yaml index c725d8193..2cea7f0cf 100644 --- a/.github/workflows/test_failed_imports_dataset_generator.yaml +++ b/.github/workflows/test_failed_imports_dataset_generator.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_gemini_scheduler.yaml b/.github/workflows/test_gemini_scheduler.yaml index 81008a8a2..2bc2d6d6d 100644 --- a/.github/workflows/test_gemini_scheduler.yaml +++ b/.github/workflows/test_gemini_scheduler.yaml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_gemini_worker.yaml b/.github/workflows/test_gemini_worker.yaml index 6cb6c15e1..2826443f8 100644 --- a/.github/workflows/test_gemini_worker.yaml +++ b/.github/workflows/test_gemini_worker.yaml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_grafana.yaml b/.github/workflows/test_grafana.yaml index 0df89afa0..cb6d32ff3 100644 --- a/.github/workflows/test_grafana.yaml +++ b/.github/workflows/test_grafana.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_grafana_nginx.yaml b/.github/workflows/test_grafana_nginx.yaml index 5a43f04e6..95ed7544f 100644 --- a/.github/workflows/test_grafana_nginx.yaml +++ b/.github/workflows/test_grafana_nginx.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_herald.yaml b/.github/workflows/test_herald.yaml index e662e2083..7109007f8 100644 --- a/.github/workflows/test_herald.yaml +++ b/.github/workflows/test_herald.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_herald_executor.yaml b/.github/workflows/test_herald_executor.yaml index 23cc996ee..eb03a2558 100644 --- a/.github/workflows/test_herald_executor.yaml +++ b/.github/workflows/test_herald_executor.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_influxdb.yaml b/.github/workflows/test_influxdb.yaml index 59968b8a1..158350ca3 100644 --- a/.github/workflows/test_influxdb.yaml +++ b/.github/workflows/test_influxdb.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_insider.yaml b/.github/workflows/test_insider.yaml index 72d728885..1c382e36b 100644 --- a/.github/workflows/test_insider.yaml +++ b/.github/workflows/test_insider.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_jira_bus.yaml b/.github/workflows/test_jira_bus.yaml index 74d7768a5..980e560c2 100644 --- a/.github/workflows/test_jira_bus.yaml +++ b/.github/workflows/test_jira_bus.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_jira_ui.yaml b/.github/workflows/test_jira_ui.yaml index 6d5bbdf14..790724540 100644 --- a/.github/workflows/test_jira_ui.yaml +++ b/.github/workflows/test_jira_ui.yaml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_katara_service.yaml b/.github/workflows/test_katara_service.yaml index e5df87472..3ed15e96e 100644 --- a/.github/workflows/test_katara_service.yaml +++ b/.github/workflows/test_katara_service.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_katara_worker.yaml b/.github/workflows/test_katara_worker.yaml index 8adc1e4db..617f80329 100644 --- a/.github/workflows/test_katara_worker.yaml +++ b/.github/workflows/test_katara_worker.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_keeper.yaml b/.github/workflows/test_keeper.yaml index 0592e214e..8fc6f7176 100644 --- a/.github/workflows/test_keeper.yaml +++ b/.github/workflows/test_keeper.yaml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_keeper_executor.yaml b/.github/workflows/test_keeper_executor.yaml index 916fa1330..e9538754d 100644 --- a/.github/workflows/test_keeper_executor.yaml +++ b/.github/workflows/test_keeper_executor.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_layout_cleaner.yaml b/.github/workflows/test_layout_cleaner.yaml index a24b932d7..7bd1f5917 100644 --- a/.github/workflows/test_layout_cleaner.yaml +++ b/.github/workflows/test_layout_cleaner.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_live_demo_generator.yaml b/.github/workflows/test_live_demo_generator.yaml index d4d96fdc2..66106b1e3 100644 --- a/.github/workflows/test_live_demo_generator.yaml +++ b/.github/workflows/test_live_demo_generator.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_mariadb.yaml b/.github/workflows/test_mariadb.yaml index 4ded7bde7..8e6f2acf1 100644 --- a/.github/workflows/test_mariadb.yaml +++ b/.github/workflows/test_mariadb.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_metroculus.yaml b/.github/workflows/test_metroculus.yaml index 01b16341b..fbbbd69ae 100644 --- a/.github/workflows/test_metroculus.yaml +++ b/.github/workflows/test_metroculus.yaml @@ -13,13 +13,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_mongo.yaml b/.github/workflows/test_mongo.yaml index 2205e82a2..fb2a2e241 100644 --- a/.github/workflows/test_mongo.yaml +++ b/.github/workflows/test_mongo.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_ngui.yaml b/.github/workflows/test_ngui.yaml index 1c294f5b5..d443e0f2b 100644 --- a/.github/workflows/test_ngui.yaml +++ b/.github/workflows/test_ngui.yaml @@ -15,13 +15,13 @@ jobs: group: build-ngui steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_organization_violations.yaml b/.github/workflows/test_organization_violations.yaml index f7fd20d2d..db958a24d 100644 --- a/.github/workflows/test_organization_violations.yaml +++ b/.github/workflows/test_organization_violations.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_power_schedule.yaml b/.github/workflows/test_power_schedule.yaml index 238adebdb..173e01a0a 100644 --- a/.github/workflows/test_power_schedule.yaml +++ b/.github/workflows/test_power_schedule.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_redis.yaml b/.github/workflows/test_redis.yaml index a6a170b29..7d65166cc 100644 --- a/.github/workflows/test_redis.yaml +++ b/.github/workflows/test_redis.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_resource_discovery.yaml b/.github/workflows/test_resource_discovery.yaml index 89ae003f3..66e1fa780 100644 --- a/.github/workflows/test_resource_discovery.yaml +++ b/.github/workflows/test_resource_discovery.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_resource_observer.yaml b/.github/workflows/test_resource_observer.yaml index 6bf41f7e1..f40fa0c17 100644 --- a/.github/workflows/test_resource_observer.yaml +++ b/.github/workflows/test_resource_observer.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_resource_violations.yaml b/.github/workflows/test_resource_violations.yaml index 96dcaa1a4..2e705554c 100644 --- a/.github/workflows/test_resource_violations.yaml +++ b/.github/workflows/test_resource_violations.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_rest-api.yaml b/.github/workflows/test_rest-api.yaml index 0afaa7a83..2886063b9 100644 --- a/.github/workflows/test_rest-api.yaml +++ b/.github/workflows/test_rest-api.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_risp.yaml b/.github/workflows/test_risp.yaml index fc2ba5792..208265582 100644 --- a/.github/workflows/test_risp.yaml +++ b/.github/workflows/test_risp.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_slacker.yaml b/.github/workflows/test_slacker.yaml index 654f00826..afb4314eb 100644 --- a/.github/workflows/test_slacker.yaml +++ b/.github/workflows/test_slacker.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_slacker_executor.yaml b/.github/workflows/test_slacker_executor.yaml index b5419a7f7..bf4b9ce80 100644 --- a/.github/workflows/test_slacker_executor.yaml +++ b/.github/workflows/test_slacker_executor.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_subspector.yml b/.github/workflows/test_subspector.yml index fe1a2c4df..12d5d8d47 100644 --- a/.github/workflows/test_subspector.yml +++ b/.github/workflows/test_subspector.yml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_subsyncer.yml b/.github/workflows/test_subsyncer.yml index 8d19978ba..e243219cc 100644 --- a/.github/workflows/test_subsyncer.yml +++ b/.github/workflows/test_subsyncer.yml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_trapper.yaml b/.github/workflows/test_trapper.yaml index 792ea2972..6895561a7 100644 --- a/.github/workflows/test_trapper.yaml +++ b/.github/workflows/test_trapper.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_users_dataset_generator.yaml b/.github/workflows/test_users_dataset_generator.yaml index a269f77de..69259bb16 100644 --- a/.github/workflows/test_users_dataset_generator.yaml +++ b/.github/workflows/test_users_dataset_generator.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} diff --git a/.github/workflows/test_webhook_executor.yaml b/.github/workflows/test_webhook_executor.yaml index 66ffa9057..43699e125 100644 --- a/.github/workflows/test_webhook_executor.yaml +++ b/.github/workflows/test_webhook_executor.yaml @@ -14,13 +14,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v6 - name: Login to Docker Hub (optional) env: username: ${{ secrets.EXT_DOCKER_LOGIN }} password: ${{ secrets.EXT_DOCKER_TOKEN }} if: ${{ env.username != '' && env.password != ''}} - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ env.username }} password: ${{ env.password }} From e509a7daf44fc32547867eef2ea67c46b402526c Mon Sep 17 00:00:00 2001 From: sd-hystax <110374605+sd-hystax@users.noreply.github.com> Date: Mon, 4 May 2026 09:37:13 +0300 Subject: [PATCH 29/30] OSN-1447. Expenses indexes effectiveness ## Description Expenses indexes effectiveness ## Related issue number OSN-1447. ## Special notes ## Checklist * [ ] The pull request title is a good summary of the changes * [ ] Unit tests for the changes exist * [ ] New and existing unit tests pass locally --- .../controllers/available_filters.py | 3 +- .../rest_api_server/controllers/expense.py | 38 +++++++++---------- .../controllers/organization_constraint.py | 37 ++++++++++-------- .../tests/unittests/test_api_base.py | 3 +- 4 files changed, 42 insertions(+), 39 deletions(-) diff --git a/rest_api/rest_api_server/controllers/available_filters.py b/rest_api/rest_api_server/controllers/available_filters.py index 2fdd17276..2755f7bad 100644 --- a/rest_api/rest_api_server/controllers/available_filters.py +++ b/rest_api/rest_api_server/controllers/available_filters.py @@ -166,7 +166,8 @@ def generate_filters_pipeline(self, organization_id, start_date, end_date, query = super().generate_filters_pipeline( organization_id, start_date, end_date, params, data_filters) - query['$and'].append({'cluster_id': None}) + for part in query['$or']: + part['$and'].append({'cluster_id': None}) return query def get_filter_values(self, uniq_values_map, filters): diff --git a/rest_api/rest_api_server/controllers/expense.py b/rest_api/rest_api_server/controllers/expense.py index 4f481b91c..7eb516c25 100644 --- a/rest_api/rest_api_server/controllers/expense.py +++ b/rest_api/rest_api_server/controllers/expense.py @@ -1151,21 +1151,17 @@ def generate_filters_pipeline(self, organization_id, start_date, for cloud_account_id in cloud_account_ids: # dict is unhashable so collect via dict if cloud_account_id == nil_uuid: - main_filters[True] = {'$and': [ - {'organization_id': organization_id}, - {'cloud_account_id': None} - ]} + main_filters[True] = { + 'organization_id': organization_id, + 'cloud_account_id': None + } else: main_filters[False] = { 'cloud_account_id': {'$in': cloud_account_ids} } - - query = { - '$and': [ - {'$or': list(main_filters.values())}, - {'deleted_at': 0} - ] - } + filters: list[dict] = [ + {'deleted_at': 0} + ] first_seen_lte = data_filters.get('first_seen_lte') if first_seen_lte is not None: end_date = min(end_date, first_seen_lte) @@ -1192,12 +1188,11 @@ def generate_filters_pipeline(self, organization_id, start_date, seen_filters['_last_seen_date'].update({ '$lte': timestamp_to_day_start(last_seen_lte) }) - query['$and'].append(seen_filters) - + filters.append(seen_filters) resource_type_condition = self.get_resource_type_condition( params.pop('resource_type', [])) if resource_type_condition: - query['$and'].append({'$or': resource_type_condition}) + filters.append({'$or': resource_type_condition}) for filter_name in ['tag', 'without_tag']: tag_params = params.pop(filter_name, None) @@ -1211,13 +1206,13 @@ def generate_filters_pipeline(self, organization_id, start_date, else: tag_filter.append( {'tags.%s' % v: {'$exists': filled_cond}}) - query['$and'].append({'$or': tag_filter}) + filters.append({'$or': tag_filter}) meta_filters = params.pop('meta', None) if meta_filters: meta_vals = [] for v in meta_filters: meta_vals.append({f'meta.{v}': {'$exists': True}}) - query['$and'].append({'$or': meta_vals}) + filters.append({'$or': meta_vals}) for regex_key, query_key in { 'name_like': 'name', @@ -1226,7 +1221,7 @@ def generate_filters_pipeline(self, organization_id, start_date, regex_val = params.pop(regex_key, None) if regex_val: query_val = self._transform_regex(regex_val) - query['$and'].append({ + filters.append({ query_key: {'$regex': query_val, '$options': 'i'} }) @@ -1234,7 +1229,7 @@ def generate_filters_pipeline(self, organization_id, start_date, for n, filter_value in enumerate(filter_values): if filter_value == nil_uuid: filter_values[n] = None - query['$and'].append({filter_key: {'$in': filter_values}}) + filters.append({filter_key: {'$in': filter_values}}) for string_field in [ 'service_name', 'created_by_kind', 'created_by_name', @@ -1242,7 +1237,7 @@ def generate_filters_pipeline(self, organization_id, start_date, ]: name_set = data_filters.get(string_field) if name_set is not None: - query['$and'].append( + filters.append( {string_field: {'$in': list(set(name_set))}}) for bool_field in ['active', 'constraint_violated']: @@ -1252,7 +1247,7 @@ def generate_filters_pipeline(self, organization_id, start_date, for value in bool_value: value = {'$ne': True} if value is False else value bool_cond['$or'].append({bool_field: value}) - query['$and'].append(bool_cond) + filters.append(bool_cond) recommend_filter = data_filters.get('recommendations') if recommend_filter is not None: @@ -1268,7 +1263,8 @@ def generate_filters_pipeline(self, organization_id, start_date, {'recommendations': None}, {'recommendations.run_timestamp': {'$lt': last_run}} ]}) - query['$and'].append(recommend_cond) + filters.append(recommend_cond) + query = {'$or': [{'$and': [v, *filters]} for v in main_filters.values()]} return query def get_resources_data(self, organization_id, query_filters, data_filters, diff --git a/rest_api/rest_api_server/controllers/organization_constraint.py b/rest_api/rest_api_server/controllers/organization_constraint.py index 74501b2b6..f506b6c51 100644 --- a/rest_api/rest_api_server/controllers/organization_constraint.py +++ b/rest_api/rest_api_server/controllers/organization_constraint.py @@ -152,22 +152,25 @@ def _get_filter_values(self, uniq_values_map, filters): def _generate_base_filter(self, organization_id, start_date, end_date): _, cloud_accs = self.get_organization_and_cloud_accs(organization_id) cloud_account_ids = [c.id for c in cloud_accs] + filters = [ + {'_first_seen_date': {'$lte': timestamp_to_day_start( + end_date)}}, + {'_last_seen_date': {'$gte': timestamp_to_day_start( + start_date)}}, + {'first_seen': {'$lte': end_date}}, + {'last_seen': {'$gte': start_date}}, + {'deleted_at': 0} + ] query = { - '$and': [ - {'$or': [ - {'$and': [ - {'organization_id': organization_id}, - {'cloud_account_id': None} - ]}, - {'cloud_account_id': {'$in': cloud_account_ids}} + '$or': [ + {'$and': [ + {'organization_id': organization_id, 'cloud_account_id': None}, + *filters ]}, - {'_first_seen_date': {'$lte': timestamp_to_day_start( - end_date)}}, - {'_last_seen_date': {'$gte': timestamp_to_day_start( - start_date)}}, - {'first_seen': {'$lte': end_date}}, - {'last_seen': {'$gte': start_date}}, - {'deleted_at': 0} + {'$and': [ + {'cloud_account_id': {'$in': cloud_account_ids}}, + *filters + ]} ] } return query @@ -177,7 +180,8 @@ def generate_filters_pipeline(self, organization_id, start_date, end_date, params.pop('cloud_account_id', None) query = self._generate_base_filter( organization_id, start_date, end_date) - query['$and'].append({'cluster_id': None}) + for part in query['$or']: + part['$and'].append({'cluster_id': None}) subquery = [] resource_type_condition = self.get_resource_type_condition( @@ -247,7 +251,8 @@ def generate_filters_pipeline(self, organization_id, start_date, end_date, ]}) if subquery: - query['$and'].append({'$or': subquery}) + for part in query['$or']: + part['$and'].append({'$or': subquery}) return query def get_resources_data(self, organization_id, query_filters, diff --git a/rest_api/rest_api_server/tests/unittests/test_api_base.py b/rest_api/rest_api_server/tests/unittests/test_api_base.py index 027bf91f9..6464057c1 100644 --- a/rest_api/rest_api_server/tests/unittests/test_api_base.py +++ b/rest_api/rest_api_server/tests/unittests/test_api_base.py @@ -436,7 +436,8 @@ def patched_aggregate_resource_filters(self, match_query, **kwargs): # https://github.com/mongomock/mongomock/commit/c32b94a7691cb882cbd415eb90f71ad2982b0780 # also mongomock cannot add to set False value last_recommend_run = kwargs['last_recommend_run'] - match_query['$and'].append({'cluster_id': None}) + for part in match_query['$or']: + part['$and'].append({'cluster_id': None}) collected_filters = [ 'service_name', 'pool_id', 'employee_id', 'k8s_node', 'region', 'resource_type', 'k8s_namespace', 'k8s_service', 'cloud_account_id' From a7f811ccd5689d8e7ab15da393185b973c22d976 Mon Sep 17 00:00:00 2001 From: Francesco Faraone Date: Tue, 5 May 2026 06:56:04 +0200 Subject: [PATCH 30/30] Speed up cloudaccount.config decryption with Fernet + HKDF Migrate cloud account config from cryptocode to fernet --- ...8_migrate_cloudaccount_config_to_fernet.py | 134 ++++++++++++++++++ rest_api/rest_api_server/models/models.py | 11 +- rest_api/rest_api_server/utils.py | 46 +++++- 3 files changed, 182 insertions(+), 9 deletions(-) create mode 100644 rest_api/rest_api_server/alembic/versions/c1d4f7a92b08_migrate_cloudaccount_config_to_fernet.py diff --git a/rest_api/rest_api_server/alembic/versions/c1d4f7a92b08_migrate_cloudaccount_config_to_fernet.py b/rest_api/rest_api_server/alembic/versions/c1d4f7a92b08_migrate_cloudaccount_config_to_fernet.py new file mode 100644 index 000000000..bc8bf61e3 --- /dev/null +++ b/rest_api/rest_api_server/alembic/versions/c1d4f7a92b08_migrate_cloudaccount_config_to_fernet.py @@ -0,0 +1,134 @@ +"""migrate cloudaccount config from cryptocode to fernet + +Revision ID: c1d4f7a92b08 +Revises: 3f8a9c2b7d1e +Create Date: 2026-04-28 + +""" +import base64 +import json +import logging +import os + +import cryptocode +from alembic import op +from cryptography.fernet import Fernet, InvalidToken +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.kdf.hkdf import HKDF +from sqlalchemy.sql import text + +from optscale_client.config_client.client import Client as EtcdClient + +# revision identifiers, used by Alembic. +revision = 'c1d4f7a92b08' +down_revision = '3f8a9c2b7d1e' +branch_labels = None +depends_on = None + +LOG = logging.getLogger(__name__) + +DEFAULT_ETCD_HOST = 'etcd-client' +DEFAULT_ETCD_PORT = 80 +FERNET_PREFIX = 'v2:' +FERNET_KDF_INFO = b'optscale-config-fernet-v1' +BATCH_SIZE = 500 + + +def _etcd_salt(): + host = os.environ.get('HX_ETCD_HOST', DEFAULT_ETCD_HOST) + port = int(os.environ.get('HX_ETCD_PORT', DEFAULT_ETCD_PORT)) + return EtcdClient(host=host, port=port).encryption_salt() + + +def _build_fernet(master): + if isinstance(master, str): + master = master.encode('utf-8') + derived = HKDF( + algorithm=hashes.SHA256(), + length=32, + salt=None, + info=FERNET_KDF_INFO, + ).derive(master) + return Fernet(base64.urlsafe_b64encode(derived)) + + +def _legacy_decode(salt, encoded): + decrypted = cryptocode.decrypt(encoded, salt) + if decrypted is False: + raise ValueError('cryptocode.decrypt returned False (wrong salt?)') + return json.loads(decrypted) + + +def _fernet_encode(fernet, config_dict): + token = fernet.encrypt(json.dumps(config_dict).encode('utf-8')).decode('utf-8') + return FERNET_PREFIX + token + + +def _iter_rows(conn): + last_id = '' + stmt = text( + "SELECT id, config FROM cloudaccount " + "WHERE config IS NOT NULL AND id > :last_id AND deleted_at = 0 " + "ORDER BY id LIMIT :batch" + ) + while True: + rows = conn.execute( + stmt, last_id=last_id, batch=BATCH_SIZE + ).fetchall() + if not rows: + return + yield rows + last_id = rows[-1][0] + + +def upgrade(): + salt = _etcd_salt() + fernet = _build_fernet(salt) + LOG.warning( + 'migration salt: type=%s len=%s repr=%r', + type(salt).__name__, len(salt), salt[:8] if salt else salt) + + conn = op.get_bind() + update_stmt = text( + "UPDATE cloudaccount SET config = :cfg WHERE id = :id" + ) + migrated = skipped = failed = 0 + for rows in _iter_rows(conn): + for row_id, cfg in rows: + if not cfg or cfg.startswith(FERNET_PREFIX): + skipped += 1 + continue + try: + plain = _legacy_decode(salt, cfg) + except Exception: + failed += 1 + continue + new_cfg = _fernet_encode(fernet, plain) + conn.execute(update_stmt, cfg=new_cfg, id=row_id) + migrated += 1 + LOG.info( + 'cloudaccount config migration: migrated=%d skipped=%d failed=%d', + migrated, skipped, failed) + + +def downgrade(): + salt = _etcd_salt() + fernet = _build_fernet(salt) + + conn = op.get_bind() + update_stmt = text( + "UPDATE cloudaccount SET config = :cfg WHERE id = :id" + ) + for rows in _iter_rows(conn): + for row_id, cfg in rows: + if not cfg or not cfg.startswith(FERNET_PREFIX): + continue + try: + token = cfg[len(FERNET_PREFIX):].encode('utf-8') + plain = json.loads(fernet.decrypt(token).decode('utf-8')) + except InvalidToken: + LOG.exception( + 'Failed to decode v2 config for %s', row_id) + continue + legacy = cryptocode.encrypt(json.dumps(plain), salt) + conn.execute(update_stmt, cfg=legacy, id=row_id) diff --git a/rest_api/rest_api_server/models/models.py b/rest_api/rest_api_server/models/models.py index fe21bde12..69da95f43 100644 --- a/rest_api/rest_api_server/models/models.py +++ b/rest_api/rest_api_server/models/models.py @@ -332,16 +332,21 @@ def __init__(self, **kwargs): @hybrid_property def decoded_config(self): - return decode_config(self.config) + cached = self.__dict__.get('_decoded_config_cache') + if cached is not None and cached[0] == self.config: + return cached[1] + decoded = decode_config(self.config) + self.__dict__['_decoded_config_cache'] = (self.config, decoded) + return decoded def to_dict(self, secure=False): cloud_acc_dict = super().to_dict() cloud_acc_dict['type'] = cloud_acc_dict['type'].value if self.parent_id and self.parent and self.parent.deleted_at == 0: - config = self.parent.decoded_config + config = dict(self.parent.decoded_config) config.update(self.decoded_config) else: - config = self.decoded_config + config = dict(self.decoded_config) if cloud_acc_dict.pop('cost_model_id', None): config['cost_model'] = self.cost_model.loaded_value if secure: diff --git a/rest_api/rest_api_server/utils.py b/rest_api/rest_api_server/utils.py index 4c9de9507..0136b8dff 100644 --- a/rest_api/rest_api_server/utils.py +++ b/rest_api/rest_api_server/utils.py @@ -11,6 +11,7 @@ from concurrent.futures import ThreadPoolExecutor from datetime import datetime from decimal import Decimal +from functools import cache from string import ascii_letters, digits from urllib.parse import urlencode @@ -18,7 +19,9 @@ import json_excel_converter.xlsx.formats as ExcelFormats import netaddr from bson import ObjectId -from cryptography.fernet import Fernet +from cryptography.fernet import Fernet, InvalidToken +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.primitives.kdf.hkdf import HKDF from json_excel_converter import Converter as ExcelConverter from json_excel_converter.xlsx import Writer as ExcelWriter, DEFAULT_COLUMN_WIDTH from opentelemetry import trace @@ -50,6 +53,8 @@ LOG = logging.getLogger(__name__) GB = 1024 * 1024 * 1024 SECONDS_IN_HOUR = 60 * 60 +FERNET_CONFIG_PREFIX = 'v2:' +_FERNET_CONFIG_KDF_INFO = b'optscale-config-fernet-v1' def singleton(class_): @@ -527,15 +532,44 @@ def _get_encryption_salt(): return Config().client.encryption_salt() +@cache +def _get_config_fernet(): + """Derive the Fernet key once per process from the etcd master secret. + + The etcd value is high-entropy random bytes, so HKDF is the correct + primitive: it provides domain separation via ``info`` without the + work-factor overhead of a password-based KDF. + """ + master = _get_encryption_salt() + if isinstance(master, str): + master = master.encode('utf-8') + derived = HKDF( + algorithm=hashes.SHA256(), + length=32, + salt=None, + info=_FERNET_CONFIG_KDF_INFO, + ).derive(master) + return Fernet(base64.urlsafe_b64encode(derived)) + + def encode_config(config_dict): - s = _get_encryption_salt() - return cryptocode.encrypt( - json.dumps(config_dict), s) + payload = json.dumps(config_dict).encode('utf-8') + token = _get_config_fernet().encrypt(payload).decode('utf-8') + return FERNET_CONFIG_PREFIX + token def decode_config(encoded_str): - s = _get_encryption_salt() - return json.loads(cryptocode.decrypt(encoded_str, s)) + if encoded_str is None: + return None + if encoded_str.startswith(FERNET_CONFIG_PREFIX): + token = encoded_str[len(FERNET_CONFIG_PREFIX):].encode('utf-8') + try: + data = _get_config_fernet().decrypt(token) + except InvalidToken as exc: + raise ValueError('invalid Fernet config token') from exc + return json.loads(data.decode('utf-8')) + # Legacy cryptocode + return json.loads(cryptocode.decrypt(encoded_str, _get_encryption_salt())) def get_bi_encryption_key():