From e310ee948c5907e67e92b1186c17ed8b280f0dc7 Mon Sep 17 00:00:00 2001 From: Philippe Martin Date: Thu, 19 Dec 2024 15:13:33 +0100 Subject: [PATCH] chore: update @kubernetes/client-node to v1.0.0 (#10436) * chore: kubernetes client v1.0.0 + remove patches Signed-off-by: Philippe Martin * fix: do not use AbortError Signed-off-by: Philippe Martin --- package.json | 5 +- .../kubernetes/context-health-checker.spec.ts | 6 +- .../kubernetes/context-health-checker.ts | 8 +- .../@kubernetes__client-node@1.0.0-rc7.patch | 199 ------------------ pnpm-lock.yaml | 72 +++---- 5 files changed, 37 insertions(+), 253 deletions(-) delete mode 100644 patches/@kubernetes__client-node@1.0.0-rc7.patch diff --git a/package.json b/package.json index f43dd294c..7c2f95a21 100644 --- a/package.json +++ b/package.json @@ -177,7 +177,7 @@ }, "dependencies": { "@docker/extension-api-client-types": "0.3.4", - "@kubernetes/client-node": "^1.0.0-rc7", + "@kubernetes/client-node": "^1.0.0", "@segment/analytics-node": "^2.2.0", "@types/semver": "^7.5.8", "@types/stream-json": "^1.7.8", @@ -218,9 +218,6 @@ "@docusaurus/theme-mermaid>mermaid": "^10.9.3", "webpack-dev-server>http-proxy-middleware": "^2.0.7", "@kubernetes/client-node>jsonpath-plus": "^10.0.7" - }, - "patchedDependencies": { - "@kubernetes/client-node@1.0.0-rc7": "patches/@kubernetes__client-node@1.0.0-rc7.patch" } }, "packageManager": "pnpm@9.14.1+sha512.7f1de9cffea40ff4594c48a94776112a0db325e81fb18a9400362ff7b7247f4fbd76c3011611c9f8ac58743c3dc526017894e07948de9b72052f874ee2edfdcd" diff --git a/packages/main/src/plugin/kubernetes/context-health-checker.spec.ts b/packages/main/src/plugin/kubernetes/context-health-checker.spec.ts index 0f3ae1923..d5628d644 100644 --- a/packages/main/src/plugin/kubernetes/context-health-checker.spec.ts +++ b/packages/main/src/plugin/kubernetes/context-health-checker.spec.ts @@ -17,7 +17,7 @@ ***********************************************************************/ import type { Cluster, Context, User } from '@kubernetes/client-node'; -import { AbortError, Health } from '@kubernetes/client-node'; +import { Health } from '@kubernetes/client-node'; import { beforeEach, describe, expect, test, vi } from 'vitest'; import { ContextHealthChecker } from './context-health-checker.js'; @@ -158,7 +158,9 @@ test('onStateChange is not fired when readyz is rejected with an abort error', a const onStateChangeCB = vi.fn(); hc.onStateChange(onStateChangeCB); - readyzMock.mockRejectedValue(new AbortError('a message')); + const err = new Error('a message'); + err.name = 'AbortError'; + readyzMock.mockRejectedValue(err); await hc.start(); expect(onStateChangeCB).toHaveBeenCalledOnce(); expect(onStateChangeCB).toHaveBeenCalledWith({ diff --git a/packages/main/src/plugin/kubernetes/context-health-checker.ts b/packages/main/src/plugin/kubernetes/context-health-checker.ts index 1fb638b5e..b7a141925 100644 --- a/packages/main/src/plugin/kubernetes/context-health-checker.ts +++ b/packages/main/src/plugin/kubernetes/context-health-checker.ts @@ -16,7 +16,7 @@ * SPDX-License-Identifier: Apache-2.0 ***********************************************************************/ -import { AbortError, Health } from '@kubernetes/client-node'; +import { Health } from '@kubernetes/client-node'; import type { Disposable } from '@podman-desktop/api'; import type { Event } from '../events/emitter.js'; @@ -90,7 +90,7 @@ export class ContextHealthChecker implements Disposable { }; this.#onStateChange.fire(this.#currentState); } catch (err: unknown) { - if (!(err instanceof AbortError)) { + if (!this.isAbortError(err)) { this.#currentState = { kubeConfig: this.#kubeConfig, contextName: this.#contextName, @@ -111,4 +111,8 @@ export class ContextHealthChecker implements Disposable { public getState(): ContextHealthState { return this.#currentState; } + + private isAbortError(err: unknown): boolean { + return err instanceof Error && err.name === 'AbortError'; + } } diff --git a/patches/@kubernetes__client-node@1.0.0-rc7.patch b/patches/@kubernetes__client-node@1.0.0-rc7.patch deleted file mode 100644 index 87124fa7e..000000000 --- a/patches/@kubernetes__client-node@1.0.0-rc7.patch +++ /dev/null @@ -1,199 +0,0 @@ -diff --git a/dist/cache.js b/dist/cache.js -index 3f7f6d2942d046a375f01a6c5a49d8b5cad8e2a7..f36613e12c280266768f5e7575c0970c53f79bc9 100644 ---- a/dist/cache.js -+++ b/dist/cache.js -@@ -138,6 +138,11 @@ class ListWatch { - } - watchHandler(phase, obj, watchObj) { - switch (phase) { -+ case 'ERROR': -+ if (obj.code === 410) { -+ this.resourceVersion = ''; -+ } -+ break; - case 'ADDED': - case 'MODIFIED': - addOrUpdateObject(this.objects, obj, this.callbackCache[informer_1.ADD].slice(), this.callbackCache[informer_1.UPDATE].slice()); -diff --git a/dist/exec_auth.js b/dist/exec_auth.js -index 3dad5f788ba10617405c6eea3f6e2e941d3bf03b..e0f778bb570f375e18326634d6e7d22f2da66aac 100644 ---- a/dist/exec_auth.js -+++ b/dist/exec_auth.js -@@ -6,7 +6,7 @@ const node_child_process_1 = tslib_1.__importDefault(require("node:child_process - class ExecAuth { - constructor() { - this.tokenCache = {}; -- this.execFn = node_child_process_1.default.spawnSync; -+ this.execFn = node_child_process_1.default.spawn; - } - isAuthProvider(user) { - if (!user) { -@@ -21,7 +21,7 @@ class ExecAuth { - return (user.authProvider.name === 'exec' || !!(user.authProvider.config && user.authProvider.config.exec)); - } - async applyAuthentication(user, opts) { -- const credential = this.getCredential(user); -+ const credential = await this.getCredential(user); - if (!credential) { - return; - } -@@ -48,7 +48,7 @@ class ExecAuth { - } - return null; - } -- getCredential(user) { -+ async getCredential(user) { - // TODO: Add a unit test for token caching. - const cachedToken = this.tokenCache[user.name]; - if (cachedToken) { -@@ -77,16 +77,41 @@ class ExecAuth { - exec.env.forEach((elt) => (env[elt.name] = elt.value)); - opts = { ...opts, env }; - } -- const result = this.execFn(exec.command, exec.args, opts); -- if (result.error) { -- throw result.error; -- } -- if (result.status === 0) { -- const obj = JSON.parse(result.stdout.toString('utf8')); -- this.tokenCache[user.name] = obj; -- return obj; -- } -- throw new Error(result.stderr.toString('utf8')); -+ return new Promise((resolve, reject) => { -+ let stdoutData = ''; -+ let stderrData = ''; -+ let savedError = undefined; -+ const subprocess = this.execFn(exec.command, exec.args, opts); -+ subprocess.stdout.setEncoding('utf8'); -+ subprocess.stderr.setEncoding('utf8'); -+ subprocess.stdout.on('data', (data) => { -+ stdoutData += data; -+ }); -+ subprocess.stderr.on('data', (data) => { -+ stderrData += data; -+ }); -+ subprocess.on('error', (error) => { -+ savedError = error; -+ }); -+ subprocess.on('close', (code) => { -+ if (savedError) { -+ reject(savedError); -+ return; -+ } -+ if (code !== 0) { -+ reject(new Error(stderrData)); -+ return; -+ } -+ try { -+ const obj = JSON.parse(stdoutData); -+ this.tokenCache[user.name] = obj; -+ resolve(obj); -+ } -+ catch (error) { -+ reject(error); -+ } -+ }); -+ }); - } - } - exports.ExecAuth = ExecAuth; -diff --git a/dist/health.d.ts b/dist/health.d.ts -new file mode 100644 -index 0000000000000000000000000000000000000000..aeedff6524c952b712330d02738898a99071632d ---- /dev/null -+++ b/dist/health.d.ts -@@ -0,0 +1,10 @@ -+import { KubeConfig } from './config'; -+import { RequestOptions } from 'node:https'; -+export declare class Health { -+ config: KubeConfig; -+ constructor(config: KubeConfig); -+ readyz(opts: RequestOptions): Promise; -+ livez(opts: RequestOptions): Promise; -+ private healthz; -+ private check; -+} -diff --git a/dist/health.js b/dist/health.js -new file mode 100644 -index 0000000000000000000000000000000000000000..bdd7eb7e3105431a2195c2a3f63a28a3598ce4d1 ---- /dev/null -+++ b/dist/health.js -@@ -0,0 +1,54 @@ -+"use strict"; -+Object.defineProperty(exports, "__esModule", { value: true }); -+exports.Health = void 0; -+const tslib_1 = require("tslib"); -+const node_fetch_1 = tslib_1.__importDefault(require("node-fetch")); -+class Health { -+ constructor(config) { -+ this.config = config; -+ } -+ async readyz(opts) { -+ return this.check('/readyz', opts); -+ } -+ async livez(opts) { -+ return this.check('/livez', opts); -+ } -+ async healthz(opts) { -+ return this.check('/healthz', opts); -+ } -+ async check(path, opts) { -+ const cluster = this.config.getCurrentCluster(); -+ if (!cluster) { -+ throw new Error('No currently active cluster'); -+ } -+ const requestURL = new URL(cluster.server + path); -+ const requestInit = await this.config.applyToFetchOptions(opts); -+ if (opts.signal) { -+ requestInit.signal = opts.signal; -+ } -+ requestInit.method = 'GET'; -+ try { -+ const response = await (0, node_fetch_1.default)(requestURL.toString(), requestInit); -+ const status = response.status; -+ if (status === 200) { -+ return true; -+ } -+ if (status === 404) { -+ if (path === '/healthz') { -+ // /livez/readyz return 404 and healthz also returns 404, let's consider it is live -+ return true; -+ } -+ return this.healthz(opts); -+ } -+ return false; -+ } -+ catch (err) { -+ if (err instanceof Error && err.name === 'AbortError') { -+ throw err; -+ } -+ throw new Error('Error occurred in health request'); -+ } -+ } -+} -+exports.Health = Health; -+//# sourceMappingURL=health.js.map -\ No newline at end of file -diff --git a/dist/index.d.ts b/dist/index.d.ts -index 04f5e65e76c7cec21d02d29613e6ed04ff72c79f..2f1798f1c85920e7c3c425db1cab225eed72f2b5 100644 ---- a/dist/index.d.ts -+++ b/dist/index.d.ts -@@ -14,5 +14,6 @@ export * from './cp'; - export * from './patch'; - export * from './metrics'; - export * from './object'; -+export * from './health'; - export { ConfigOptions, User, Cluster, Context } from './config_types'; - export { AbortError, FetchError } from 'node-fetch'; -diff --git a/dist/index.js b/dist/index.js -index 9c3ad1c9cbe64251c4e7cd6de0ebb4f5543243f6..64d0491a7df5ca623f0aacb0f251a43a4de5e017 100644 ---- a/dist/index.js -+++ b/dist/index.js -@@ -18,6 +18,7 @@ tslib_1.__exportStar(require("./cp"), exports); - tslib_1.__exportStar(require("./patch"), exports); - tslib_1.__exportStar(require("./metrics"), exports); - tslib_1.__exportStar(require("./object"), exports); -+tslib_1.__exportStar(require("./health"), exports); - // Export AbortError and FetchError so that instanceof checks in user code will definitely use the same instances - var node_fetch_1 = require("node-fetch"); - Object.defineProperty(exports, "AbortError", { enumerable: true, get: function () { return node_fetch_1.AbortError; } }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bc9c16bf1..d32450f72 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,11 +13,6 @@ overrides: webpack-dev-server>http-proxy-middleware: ^2.0.7 '@kubernetes/client-node>jsonpath-plus': ^10.0.7 -patchedDependencies: - '@kubernetes/client-node@1.0.0-rc7': - hash: qiizxg7xna3mgq7rborknvsqki - path: patches/@kubernetes__client-node@1.0.0-rc7.patch - importers: .: @@ -26,8 +21,8 @@ importers: specifier: 0.3.4 version: 0.3.4 '@kubernetes/client-node': - specifier: ^1.0.0-rc7 - version: 1.0.0-rc7(patch_hash=qiizxg7xna3mgq7rborknvsqki)(encoding@0.1.13) + specifier: ^1.0.0 + version: 1.0.0(encoding@0.1.13) '@segment/analytics-node': specifier: ^2.2.0 version: 2.2.0(encoding@0.1.13) @@ -223,7 +218,7 @@ importers: version: 9.17.0(jiti@2.4.1) eslint-import-resolver-custom-alias: specifier: ^1.3.2 - version: 1.3.2(eslint-plugin-import@2.31.0) + version: 1.3.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.1))) eslint-import-resolver-typescript: specifier: ^3.7.0 version: 3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.1)) @@ -3015,8 +3010,8 @@ packages: peerDependencies: jsep: ^0.4.0||^1.0.0 - '@kubernetes/client-node@1.0.0-rc7': - resolution: {integrity: sha512-s0U74yQ/nTq13xk3YI8P2y02pUm9TritjhsCIbtPYbOrG/5ti2bY2WhxxQWGx1LhiTZPEdoULtsyXI2XrIESJw==} + '@kubernetes/client-node@1.0.0': + resolution: {integrity: sha512-a8NSvFDSHKFZ0sR1hbPSf8IDFNJwctEU5RodSCNiq/moRXWmrdmqhb1RRQzF+l+TSBaDgHw3YsYNxxE92STBzw==} '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} @@ -7488,9 +7483,6 @@ packages: joi@17.13.3: resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} - jose@4.15.9: - resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} - jose@5.9.6: resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} @@ -8509,14 +8501,13 @@ packages: nwsapi@2.2.13: resolution: {integrity: sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==} + oauth4webapi@3.1.4: + resolution: {integrity: sha512-eVfN3nZNbok2s/ROifO0UAc5G8nRoLSbrcKJ09OqmucgnhXEfdIQOR4gq1eJH1rN3gV7rNw62bDEgftsgFtBEg==} + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} - object-hash@2.2.0: - resolution: {integrity: sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==} - engines: {node: '>= 6'} - object-hash@3.0.0: resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} engines: {node: '>= 6'} @@ -8552,10 +8543,6 @@ packages: resolution: {integrity: sha512-wbqF4uc1YbcldtiBFfkSnquHtECEIpYD78YUXI6ri1Im5OO2NLo6ZVpRdbJpdnpZ05zMrVPssNiEo6JQtea+Qg==} engines: {node: '>= 18'} - oidc-token-hash@5.0.3: - resolution: {integrity: sha512-IF4PcGgzAr6XXSff26Sk/+P4KZFJVuHAJZj3wgO3vX2bMdNVp/QXTP3P7CEm9V1IdG8lDLY3HhiqpsE/nOwpPw==} - engines: {node: ^10.13.0 || >=12.0.0} - on-finished@2.4.1: resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} engines: {node: '>= 0.8'} @@ -8593,8 +8580,8 @@ packages: resolution: {integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==} hasBin: true - openid-client@5.7.0: - resolution: {integrity: sha512-4GCCGZt1i2kTHpwvaC/sCpTpQqDnBzDzuJcJMbH+y1Q5qI8U8RBvoSh28svarXszZHR5BAMXbJPX1PGPRE3VOA==} + openid-client@6.1.7: + resolution: {integrity: sha512-JfY/KvQgOutmG2P+oVNKInE7zIh+im1MQOaO7g5CtNnTWMociA563WweiEMKfR9ry9XG3K2HGvj9wEqhCQkPMg==} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} @@ -14122,11 +14109,11 @@ snapshots: '@isaacs/cliui@8.0.2': dependencies: - string-width: 5.1.2 + string-width: 4.2.3 string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 + wrap-ansi: 7.0.0 wrap-ansi-cjs: wrap-ansi@7.0.0 '@isaacs/fs-minipass@4.0.1': @@ -14178,7 +14165,7 @@ snapshots: dependencies: jsep: 1.4.0 - '@kubernetes/client-node@1.0.0-rc7(patch_hash=qiizxg7xna3mgq7rborknvsqki)(encoding@0.1.13)': + '@kubernetes/client-node@1.0.0(encoding@0.1.13)': dependencies: '@types/js-yaml': 4.0.9 '@types/node': 22.9.1 @@ -14191,13 +14178,12 @@ snapshots: js-yaml: 4.1.0 jsonpath-plus: 10.2.0 node-fetch: 2.7.0(encoding@0.1.13) - openid-client: 5.7.0 + openid-client: 6.1.7 rfc4648: 1.5.3 stream-buffers: 3.0.3 tar: 7.4.3 tmp-promise: 3.0.3 tslib: 2.8.1 - url-parse: 1.5.10 ws: 8.18.0 transitivePeerDependencies: - bufferutil @@ -16005,7 +15991,7 @@ snapshots: app-builder-bin@5.0.0-alpha.10: {} - app-builder-lib@25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): + app-builder-lib@25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): dependencies: '@develar/schema-utils': 2.6.5 '@electron/notarize': 2.5.0 @@ -17484,7 +17470,7 @@ snapshots: dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) builder-util: 25.1.7 builder-util-runtime: 9.2.10 fs-extra: 10.1.0 @@ -17651,7 +17637,7 @@ snapshots: electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) archiver: 5.3.2 builder-util: 25.1.7 fs-extra: 10.1.0 @@ -17662,7 +17648,7 @@ snapshots: electron-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)): dependencies: - app-builder-lib: 25.1.8(dmg-builder@25.1.8)(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) + app-builder-lib: 25.1.8(dmg-builder@25.1.8(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)))(electron-builder-squirrel-windows@25.1.8(dmg-builder@25.1.8)) builder-util: 25.1.7 builder-util-runtime: 9.2.10 chalk: 4.1.2 @@ -17987,7 +17973,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-custom-alias@1.3.2(eslint-plugin-import@2.31.0): + eslint-import-resolver-custom-alias@1.3.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.1))): dependencies: eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.1)) glob-parent: 6.0.2 @@ -18017,7 +18003,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.1)): + eslint-module-utils@2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.1)))(eslint@9.17.0(jiti@2.4.1)): dependencies: debug: 3.2.7 optionalDependencies: @@ -18058,7 +18044,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.17.0(jiti@2.4.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0)(eslint@9.17.0(jiti@2.4.1)) + eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.18.1(eslint@9.17.0(jiti@2.4.1))(typescript@5.6.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.7.0(eslint-plugin-import@2.31.0)(eslint@9.17.0(jiti@2.4.1)))(eslint@9.17.0(jiti@2.4.1)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -19673,8 +19659,6 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - jose@4.15.9: {} - jose@5.9.6: {} js-tokens@4.0.0: {} @@ -21164,9 +21148,9 @@ snapshots: nwsapi@2.2.13: {} - object-assign@4.1.1: {} + oauth4webapi@3.1.4: {} - object-hash@2.2.0: {} + object-assign@4.1.1: {} object-hash@3.0.0: {} @@ -21215,8 +21199,6 @@ snapshots: '@octokit/request-error': 6.1.5 '@octokit/types': 13.6.1 - oidc-token-hash@5.0.3: {} - on-finished@2.4.1: dependencies: ee-first: 1.1.1 @@ -21253,12 +21235,10 @@ snapshots: opener@1.5.2: {} - openid-client@5.7.0: + openid-client@6.1.7: dependencies: - jose: 4.15.9 - lru-cache: 6.0.0 - object-hash: 2.2.0 - oidc-token-hash: 5.0.3 + jose: 5.9.6 + oauth4webapi: 3.1.4 optionator@0.9.4: dependencies: