From 4b8838bea437793ff30c22552c7d384c42559204 Mon Sep 17 00:00:00 2001 From: Pascal Birchler Date: Fri, 18 Jul 2025 00:54:19 +0200 Subject: [PATCH] fix: remove direct gaxios dependency (#4289) --- package-lock.json | 107 ------------------ packages/cli/package.json | 1 - .../cli/src/ui/hooks/usePrivacySettings.ts | 14 ++- packages/core/package.json | 1 - packages/core/src/utils/errors.ts | 13 ++- 5 files changed, 18 insertions(+), 118 deletions(-) diff --git a/package-lock.json b/package-lock.json index aa2927f9..d5d0e294 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4039,15 +4039,6 @@ "devOptional": true, "license": "MIT" }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", @@ -5302,29 +5293,6 @@ "reusify": "^1.0.4" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/figures": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", @@ -5464,18 +5432,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "license": "MIT", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/forwarded": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", @@ -5549,20 +5505,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/gaxios": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.1.tgz", - "integrity": "sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==", - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "node-fetch": "^3.3.2" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/gcp-metadata": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", @@ -7926,44 +7868,6 @@ "dev": true, "license": "MIT" }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "deprecated": "Use your platform's native DOMException instead", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/normalize-package-data": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", @@ -11222,15 +11126,6 @@ "node": ">=18" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -11725,7 +11620,6 @@ "command-exists": "^1.2.9", "diff": "^7.0.0", "dotenv": "^17.1.0", - "gaxios": "^7.1.1", "glob": "^10.4.1", "highlight.js": "^11.11.1", "ink": "^6.0.1", @@ -11911,7 +11805,6 @@ "ajv": "^8.17.1", "diff": "^7.0.0", "dotenv": "^17.1.0", - "gaxios": "^7.1.1", "glob": "^10.4.5", "google-auth-library": "^9.11.0", "html-to-text": "^9.0.5", diff --git a/packages/cli/package.json b/packages/cli/package.json index 48a54aa1..42261ddf 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -33,7 +33,6 @@ "command-exists": "^1.2.9", "diff": "^7.0.0", "dotenv": "^17.1.0", - "gaxios": "^7.1.1", "glob": "^10.4.1", "highlight.js": "^11.11.1", "ink": "^6.0.1", diff --git a/packages/cli/src/ui/hooks/usePrivacySettings.ts b/packages/cli/src/ui/hooks/usePrivacySettings.ts index 44824def..bc98649b 100644 --- a/packages/cli/src/ui/hooks/usePrivacySettings.ts +++ b/packages/cli/src/ui/hooks/usePrivacySettings.ts @@ -4,7 +4,6 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { GaxiosError } from 'gaxios'; import { useState, useEffect, useCallback } from 'react'; import { Config, CodeAssistServer, UserTierId } from '@google/gemini-cli-core'; @@ -113,13 +112,18 @@ async function getRemoteDataCollectionOptIn( try { const resp = await server.getCodeAssistGlobalUserSetting(); return resp.freeTierDataCollectionOptin; - } catch (e) { - if (e instanceof GaxiosError) { - if (e.response?.status === 404) { + } catch (error: unknown) { + if (error && typeof error === 'object' && 'response' in error) { + const gaxiosError = error as { + response?: { + status?: unknown; + }; + }; + if (gaxiosError.response?.status === 404) { return true; } } - throw e; + throw error; } } diff --git a/packages/core/package.json b/packages/core/package.json index 240cccfa..ffc945e5 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -33,7 +33,6 @@ "ajv": "^8.17.1", "diff": "^7.0.0", "dotenv": "^17.1.0", - "gaxios": "^7.1.1", "glob": "^10.4.5", "google-auth-library": "^9.11.0", "html-to-text": "^9.0.5", diff --git a/packages/core/src/utils/errors.ts b/packages/core/src/utils/errors.ts index 4787c439..a57186b2 100644 --- a/packages/core/src/utils/errors.ts +++ b/packages/core/src/utils/errors.ts @@ -4,7 +4,11 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { GaxiosError } from 'gaxios'; +interface GaxiosError { + response?: { + data?: unknown; + }; +} export function isNodeError(error: unknown): error is NodeJS.ErrnoException { return error instanceof Error && 'code' in error; @@ -33,8 +37,9 @@ interface ResponseData { } export function toFriendlyError(error: unknown): unknown { - if (error instanceof GaxiosError) { - const data = parseResponseData(error); + if (error && typeof error === 'object' && 'response' in error) { + const gaxiosError = error as GaxiosError; + const data = parseResponseData(gaxiosError); if (data.error && data.error.message && data.error.code) { switch (data.error.code) { case 400: @@ -58,5 +63,5 @@ function parseResponseData(error: GaxiosError): ResponseData { if (typeof error.response?.data === 'string') { return JSON.parse(error.response?.data) as ResponseData; } - return typeof error.response?.data as ResponseData; + return error.response?.data as ResponseData; }