From 436aa3dcda8b57ae01700f69d74d9b1be0c22a21 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Mon, 22 Aug 2022 08:18:01 -0700 Subject: [PATCH] Use abort-controller package to fix typing issues (#6077) --- package.json | 1 + src/common/k8s-api/__tests__/kube-api.test.ts | 1 + src/common/k8s-api/kube-api.ts | 6 ++---- src/common/k8s-api/kube-object.store.ts | 6 ++---- src/common/utils/abort-controller.ts | 2 ++ src/common/utils/delay.ts | 2 ++ src/common/utils/reject-promise.ts | 2 ++ src/renderer/kube-watch-api/kube-watch-api.ts | 1 + yarn.lock | 12 ++++++++++++ 9 files changed, 25 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 3ce4397b1f..a37a98b99b 100644 --- a/package.json +++ b/package.json @@ -225,6 +225,7 @@ "@sentry/integrations": "^6.19.3", "@side/jest-runtime": "^1.0.1", "@types/circular-dependency-plugin": "5.0.5", + "abort-controller": "^3.0.0", "auto-bind": "^4.0.0", "await-lock": "^2.2.2", "byline": "^5.0.0", diff --git a/src/common/k8s-api/__tests__/kube-api.test.ts b/src/common/k8s-api/__tests__/kube-api.test.ts index 0b0efd86da..4406afe3a5 100644 --- a/src/common/k8s-api/__tests__/kube-api.test.ts +++ b/src/common/k8s-api/__tests__/kube-api.test.ts @@ -14,6 +14,7 @@ import { DeploymentApi, Ingress, IngressApi, Pod, PodApi } from "../endpoints"; import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting"; import apiManagerInjectable from "../api-manager/manager.injectable"; import autoRegistrationInjectable from "../api-manager/auto-registration.injectable"; +import { AbortController } from "abort-controller"; jest.mock("../api-manager"); diff --git a/src/common/k8s-api/kube-api.ts b/src/common/k8s-api/kube-api.ts index 31fad33d72..ddc2456668 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -27,9 +27,7 @@ import type { PartialDeep } from "type-fest"; import logger from "../logger"; import { Environments, getEnvironmentSpecificLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; import autoRegistrationEmitterInjectable from "./api-manager/auto-registration-emitter.injectable"; - -// TODO: upgrade node-fetch once we are starting to use ES modules -type LegacyAbortSignal = NonNullable; +import type AbortController from "abort-controller"; /** * The options used for creating a `KubeApi` @@ -719,7 +717,7 @@ export class KubeApi< const requestParams = timeout ? { query: { timeoutSeconds: timeout }} : {}; const watchUrl = this.getWatchUrl(namespace); const responsePromise = this.request.getResponse(watchUrl, requestParams, { - signal: abortController.signal as LegacyAbortSignal, + signal: abortController.signal, timeout: 600_000, }); diff --git a/src/common/k8s-api/kube-object.store.ts b/src/common/k8s-api/kube-object.store.ts index 852e615332..bf511beb27 100644 --- a/src/common/k8s-api/kube-object.store.ts +++ b/src/common/k8s-api/kube-object.store.ts @@ -20,9 +20,7 @@ import logger from "../logger"; import assert from "assert"; import type { PartialDeep } from "type-fest"; import { entries } from "../utils/objects"; - -// TODO: upgrade node-fetch once we are starting to use ES modules -type LegacyAbortSignal = NonNullable; +import { AbortController } from "abort-controller"; export type OnLoadFailure = (error: unknown) => void; @@ -480,7 +478,7 @@ export abstract class KubeObjectStore< }); // TODO: upgrade node-fetch once we are starting to use ES modules - const signal = abortController.signal as LegacyAbortSignal; + const signal = abortController.signal; const callback: KubeApiWatchCallback = (data, error) => { if (!this.isLoaded || error?.type === "aborted") return; diff --git a/src/common/utils/abort-controller.ts b/src/common/utils/abort-controller.ts index 5382281cf9..67c7fa5b1e 100644 --- a/src/common/utils/abort-controller.ts +++ b/src/common/utils/abort-controller.ts @@ -3,6 +3,8 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +import { AbortController } from "abort-controller"; + /** * This is like an `AbortController` but will also abort if the parent aborts, * but won't make the parent abort if this aborts (single direction) diff --git a/src/common/utils/delay.ts b/src/common/utils/delay.ts index d86395026b..96171f6535 100644 --- a/src/common/utils/delay.ts +++ b/src/common/utils/delay.ts @@ -3,6 +3,8 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +import type AbortController from "abort-controller"; + /** * Return a promise that will be resolved after at least `timeout` ms have * passed. If `failFast` is provided then the promise is also resolved if it has diff --git a/src/common/utils/reject-promise.ts b/src/common/utils/reject-promise.ts index 0211586783..8212bacd3f 100644 --- a/src/common/utils/reject-promise.ts +++ b/src/common/utils/reject-promise.ts @@ -3,6 +3,8 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +import type { AbortSignal } from "abort-controller"; + /** * Creates a new promise that will be rejected when the signal rejects. * diff --git a/src/renderer/kube-watch-api/kube-watch-api.ts b/src/renderer/kube-watch-api/kube-watch-api.ts index e1de15defe..38bf1e1631 100644 --- a/src/renderer/kube-watch-api/kube-watch-api.ts +++ b/src/renderer/kube-watch-api/kube-watch-api.ts @@ -10,6 +10,7 @@ import type { ClusterFrameContext } from "../cluster-frame-context/cluster-frame import logger from "../../common/logger"; import type { KubeObjectStoreLoadAllParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store"; import type { RequestInit } from "node-fetch"; +import { AbortController } from "abort-controller"; // TODO: upgrade node-fetch once we are starting to use ES modules type LegacyAbortSignal = NonNullable; diff --git a/yarn.lock b/yarn.lock index 2d1713abbe..c8eb8b08e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2833,6 +2833,13 @@ abbrev@1, abbrev@~1.1.1: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + accepts@~1.3.4, accepts@~1.3.5: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -5911,6 +5918,11 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"