From b0d72b78d0841971812ab810ded841a6ef9c0421 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 1 Sep 2022 07:05:32 -0700 Subject: [PATCH] Bump typescript, @typescript-eslint/eslint-plugin, and @typescript-eslint/parser (#6143) --- package.json | 6 +- src/common/base-store.ts | 2 +- ...get-configuration-file-model.injectable.ts | 2 +- src/common/k8s-api/endpoints/metrics.api.ts | 48 ++++---- src/common/protocol-handler/router.ts | 30 ++--- src/common/utils/readableStream.ts | 1 + src/common/utils/singleton.ts | 2 +- ...ct-for-extension-api-with-modifications.ts | 2 +- src/extensions/extension-store.ts | 2 +- .../metrics/add-metrics-route.injectable.ts | 3 +- src/main/routes/metrics/metrics-query.ts | 7 -- ...or-general-entity-navigation.injectable.ts | 3 +- src/renderer/navigation/index.ts | 6 - .../navigation/match-route.injectable.ts | 2 +- src/renderer/utils/storageHelper.ts | 4 +- yarn.lock | 103 +++++++++--------- 16 files changed, 105 insertions(+), 118 deletions(-) delete mode 100644 src/main/routes/metrics/metrics-query.ts diff --git a/package.json b/package.json index e3302ba8f8..c5b9569385 100644 --- a/package.json +++ b/package.json @@ -362,8 +362,8 @@ "@types/webpack-dev-server": "^4.7.2", "@types/webpack-env": "^1.18.0", "@types/webpack-node-externals": "^2.5.3", - "@typescript-eslint/eslint-plugin": "^5.35.1", - "@typescript-eslint/parser": "^5.35.1", + "@typescript-eslint/eslint-plugin": "^5.36.1", + "@typescript-eslint/parser": "^5.36.1", "adr": "^1.4.1", "ansi_up": "^5.1.0", "chart.js": "^2.9.4", @@ -428,7 +428,7 @@ "typed-emitter": "^1.4.0", "typedoc": "0.23.11", "typedoc-plugin-markdown": "^3.13.1", - "typescript": "^4.7.4", + "typescript": "^4.8.2", "typescript-plugin-css-modules": "^3.4.0", "webpack": "^5.74.0", "webpack-cli": "^4.9.2", diff --git a/src/common/base-store.ts b/src/common/base-store.ts index 1bc2357458..ecaa281864 100644 --- a/src/common/base-store.ts +++ b/src/common/base-store.ts @@ -31,7 +31,7 @@ export interface BaseStoreParams extends ConfOptions { /** * Note: T should only contain base JSON serializable types. */ -export abstract class BaseStore extends Singleton { +export abstract class BaseStore extends Singleton { protected storeConfig?: Config; protected syncDisposers: Disposer[] = []; diff --git a/src/common/get-configuration-file-model/get-configuration-file-model.injectable.ts b/src/common/get-configuration-file-model/get-configuration-file-model.injectable.ts index a1027c22c6..dc54e96de1 100644 --- a/src/common/get-configuration-file-model/get-configuration-file-model.injectable.ts +++ b/src/common/get-configuration-file-model/get-configuration-file-model.injectable.ts @@ -8,7 +8,7 @@ import type { BaseStoreParams } from "../base-store"; const getConfigurationFileModelInjectable = getInjectable({ id: "get-configuration-file-model", - instantiate: () => (content: BaseStoreParams) => new Config(content), + instantiate: () => (content: BaseStoreParams) => new Config(content), causesSideEffects: true, }); diff --git a/src/common/k8s-api/endpoints/metrics.api.ts b/src/common/k8s-api/endpoints/metrics.api.ts index 7b0028b061..b5469e8a24 100644 --- a/src/common/k8s-api/endpoints/metrics.api.ts +++ b/src/common/k8s-api/endpoints/metrics.api.ts @@ -7,7 +7,6 @@ import moment from "moment"; import { apiBase } from "../index"; -import type { IMetricsQuery } from "../../../main/routes/metrics/metrics-query"; export interface MetricData { status: string; @@ -55,28 +54,33 @@ export interface IResourceMetrics { networkTransmit: T; } +async function getMetrics(query: string, reqParams?: IMetricsReqParams): Promise; +async function getMetrics(query: string[], reqParams?: IMetricsReqParams): Promise; +async function getMetrics(query: Record>>, reqParams?: IMetricsReqParams): Promise>; + +async function getMetrics(query: string | string[] | Partial>>>, reqParams: IMetricsReqParams = {}): Promise>> { + const { range = 3600, step = 60, namespace } = reqParams; + let { start, end } = reqParams; + + if (!start && !end) { + const timeNow = Date.now() / 1000; + const now = moment.unix(timeNow).startOf("minute").unix(); // round date to minutes + + start = now - range; + end = now; + } + + return apiBase.post("/metrics", { + data: query, + query: { + start, end, step, + "kubernetes_namespace": namespace, + }, + }); +} + export const metricsApi = { - async getMetrics(query: T, reqParams: IMetricsReqParams = {}): Promise { - const { range = 3600, step = 60, namespace } = reqParams; - let { start, end } = reqParams; - - if (!start && !end) { - const timeNow = Date.now() / 1000; - const now = moment.unix(timeNow).startOf("minute").unix(); // round date to minutes - - start = now - range; - end = now; - } - - return apiBase.post("/metrics", { - data: query, - query: { - start, end, step, - "kubernetes_namespace": namespace, - }, - }); - }, - + getMetrics, async getMetricProviders(): Promise { return apiBase.get("/metrics/providers"); }, diff --git a/src/common/protocol-handler/router.ts b/src/common/protocol-handler/router.ts index 1c0ae909eb..3204a5356c 100644 --- a/src/common/protocol-handler/router.ts +++ b/src/common/protocol-handler/router.ts @@ -113,7 +113,17 @@ export abstract class LensProtocolRouter { } // if no exact match pick the one that is the most specific - return matches.sort(([a], [b]) => compareMatches(a, b))[0] ?? null; + return matches.sort(([a], [b]) => { + if (a.path === "/") { + return 1; + } + + if (b.path === "/") { + return -1; + } + + return countBy(b.path)["/"] - countBy(a.path)["/"]; + })[0] ?? null; } /** @@ -265,21 +275,3 @@ export abstract class LensProtocolRouter { this.internalRoutes.delete(urlSchema); } } - -/** - * a comparison function for `array.sort(...)`. Sort order should be most path - * parts to least path parts. - * @param a the left side to compare - * @param b the right side to compare - */ -function compareMatches(a: match, b: match): number { - if (a.path === "/") { - return 1; - } - - if (b.path === "/") { - return -1; - } - - return countBy(b.path)["/"] - countBy(a.path)["/"]; -} diff --git a/src/common/utils/readableStream.ts b/src/common/utils/readableStream.ts index 5fd49ba699..136e18c841 100644 --- a/src/common/utils/readableStream.ts +++ b/src/common/utils/readableStream.ts @@ -4,6 +4,7 @@ */ import { Readable } from "readable-stream"; +import type { ReadableStreamDefaultReadResult } from "stream/web"; import type { TypedArray } from "type-fest"; /** diff --git a/src/common/utils/singleton.ts b/src/common/utils/singleton.ts index d553de52db..d60fdb0490 100644 --- a/src/common/utils/singleton.ts +++ b/src/common/utils/singleton.ts @@ -27,7 +27,7 @@ export class Singleton { * @param args The constructor arguments for the child class * @returns An instance of the child class */ - static createInstance(this: StaticThis, ...args: R): T { + static createInstance(this: StaticThis, ...args: R): T { if (!Singleton.instances.has(this)) { if (Singleton.creating.length > 0) { throw new TypeError(`Cannot create a second singleton (${this.name}) while creating a first (${Singleton.creating})`); diff --git a/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api-with-modifications.ts b/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api-with-modifications.ts index 340a97c941..a5261d2917 100644 --- a/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api-with-modifications.ts +++ b/src/extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api-with-modifications.ts @@ -9,7 +9,7 @@ import type { Injectable } from "@ogre-tools/injectable"; * @deprecated use asLegacyGlobalForExtensionApi instead, and use proper implementations instead of "modifications". */ export const asLegacyGlobalObjectForExtensionApiWithModifications = < - InjectableInstance extends InjectionTokenInstance, + InjectableInstance extends InjectionTokenInstance & object, InjectionTokenInstance, ModificationObject extends object, >( diff --git a/src/extensions/extension-store.ts b/src/extensions/extension-store.ts index 62799f9843..59a7ce86b9 100644 --- a/src/extensions/extension-store.ts +++ b/src/extensions/extension-store.ts @@ -8,7 +8,7 @@ import * as path from "path"; import type { LensExtension } from "./lens-extension"; import assert from "assert"; -export abstract class ExtensionStore extends BaseStore { +export abstract class ExtensionStore extends BaseStore { readonly displayName = "ExtensionStore"; protected extension?: LensExtension; diff --git a/src/main/routes/metrics/add-metrics-route.injectable.ts b/src/main/routes/metrics/add-metrics-route.injectable.ts index b97a08d827..5f97ddf4c3 100644 --- a/src/main/routes/metrics/add-metrics-route.injectable.ts +++ b/src/main/routes/metrics/add-metrics-route.injectable.ts @@ -9,7 +9,6 @@ import type { ClusterPrometheusMetadata } from "../../../common/cluster-types"; import { ClusterMetadataKey } from "../../../common/cluster-types"; import logger from "../../logger"; import type { Cluster } from "../../../common/cluster/cluster"; -import type { IMetricsQuery } from "./metrics-query"; import { clusterRoute } from "../../router/route"; import { isObject } from "lodash"; import { isRequestError } from "../../../common/utils"; @@ -60,7 +59,7 @@ const addMetricsRouteInjectable = getRouteInjectable({ const getMetrics = di.inject(getMetricsInjectable); const loadMetrics = loadMetricsFor(getMetrics); - const queryParams: IMetricsQuery = Object.fromEntries(query.entries()); + const queryParams = Object.fromEntries(query.entries()); const prometheusMetadata: ClusterPrometheusMetadata = {}; try { diff --git a/src/main/routes/metrics/metrics-query.ts b/src/main/routes/metrics/metrics-query.ts deleted file mode 100644 index d6d9532b3b..0000000000 --- a/src/main/routes/metrics/metrics-query.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -export type IMetricsQuery = string | string[] | { - [metricName: string]: string; -}; diff --git a/src/renderer/api/helpers/watch-for-general-entity-navigation.injectable.ts b/src/renderer/api/helpers/watch-for-general-entity-navigation.injectable.ts index 14ae9f9f98..0e73acfcd1 100644 --- a/src/renderer/api/helpers/watch-for-general-entity-navigation.injectable.ts +++ b/src/renderer/api/helpers/watch-for-general-entity-navigation.injectable.ts @@ -4,6 +4,7 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { reaction, when } from "mobx"; +import type { GeneralEntity } from "../../../common/catalog-entities"; import generalCategoryInjectable from "../../../common/catalog/categories/general.injectable"; import isActiveRouteInjectable from "../../navigation/is-route-active.injectable"; import observableHistoryInjectable from "../../navigation/observable-history.injectable"; @@ -30,7 +31,7 @@ const watchForGeneralEntityNavigationInjectable = getInjectable({ dispose.push(reaction( () => observableHistory.location, () => { - const entities = entityRegistry.getItemsForCategory(generalCategory); + const entities = entityRegistry.getItemsForCategory(generalCategory) as GeneralEntity[]; const activeEntity = entities.find(entity => isActiveRoute(entity.spec.path)); if (activeEntity) { diff --git a/src/renderer/navigation/index.ts b/src/renderer/navigation/index.ts index fc8fbc314f..efa63e34cf 100644 --- a/src/renderer/navigation/index.ts +++ b/src/renderer/navigation/index.ts @@ -5,7 +5,6 @@ import { asLegacyGlobalFunctionForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-function-for-extension-api"; import { asLegacyGlobalForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api"; -import matchRouteInjectable from "./match-route.injectable"; import navigateInjectable from "./navigate.injectable"; import observableHistoryInjectable from "./observable-history.injectable"; @@ -21,9 +20,4 @@ export const navigation = asLegacyGlobalForExtensionApi(observableHistoryInjecta */ export const navigate = asLegacyGlobalFunctionForExtensionApi(navigateInjectable); -/** - * @deprecated use `di.inject(matchRouteInjectable)` instead - */ -export const matchRoute = asLegacyGlobalFunctionForExtensionApi(matchRouteInjectable); - export * from "./page-param"; diff --git a/src/renderer/navigation/match-route.injectable.ts b/src/renderer/navigation/match-route.injectable.ts index df079f335f..44518c3e09 100644 --- a/src/renderer/navigation/match-route.injectable.ts +++ b/src/renderer/navigation/match-route.injectable.ts @@ -7,7 +7,7 @@ import type { match, RouteProps } from "react-router"; import { matchPath } from "react-router"; import observableHistoryInjectable from "./observable-history.injectable"; -export type MatchRoute = (route: string | string[] | RouteProps) => match | null; +export type MatchRoute = (route: string | string[] | RouteProps) => match | null; const matchRouteInjectable = getInjectable({ id: "match-route", diff --git a/src/renderer/utils/storageHelper.ts b/src/renderer/utils/storageHelper.ts index 6a690654da..613778cc3d 100755 --- a/src/renderer/utils/storageHelper.ts +++ b/src/renderer/utils/storageHelper.ts @@ -9,6 +9,7 @@ import type { Draft } from "immer"; import { produce, isDraft } from "immer"; import { isEqual, isPlainObject } from "lodash"; import logger from "../../main/logger"; +import assert from "assert"; export interface StorageChange { key: string; @@ -154,8 +155,9 @@ export class StorageHelper implements StorageLayer { } @action - merge(value: Partial | ((draft: Draft) => Partial | void)) { + merge(value: T extends object ? Partial | ((draft: Draft) => Partial | void) : never) { const nextValue = produce(toJS(this.get()), (draft) => { + assert(typeof draft === "object" && draft); if (typeof value == "function") { const newValue = value(draft); diff --git a/yarn.lock b/yarn.lock index 644a0420e2..ca8a8b7705 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2571,14 +2571,14 @@ dependencies: "@types/yargs-parser" "*" -"@typescript-eslint/eslint-plugin@^5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.35.1.tgz#0d822bfea7469904dfc1bb8f13cabd362b967c93" - integrity sha512-RBZZXZlI4XCY4Wzgy64vB+0slT9+yAPQRjj/HSaRwUot33xbDjF1oN9BLwOLTewoOI0jothIltZRe9uJCHf8gg== +"@typescript-eslint/eslint-plugin@^5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.36.1.tgz#471f64dc53600025e470dad2ca4a9f2864139019" + integrity sha512-iC40UK8q1tMepSDwiLbTbMXKDxzNy+4TfPWgIL661Ym0sD42vRcQU93IsZIrmi+x292DBr60UI/gSwfdVYexCA== dependencies: - "@typescript-eslint/scope-manager" "5.35.1" - "@typescript-eslint/type-utils" "5.35.1" - "@typescript-eslint/utils" "5.35.1" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/type-utils" "5.36.1" + "@typescript-eslint/utils" "5.36.1" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -2586,69 +2586,70 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.35.1.tgz#bf2ee2ebeaa0a0567213748243fb4eec2857f04f" - integrity sha512-XL2TBTSrh3yWAsMYpKseBYTVpvudNf69rPOWXWVBI08My2JVT5jR66eTt4IgQFHA/giiKJW5dUD4x/ZviCKyGg== +"@typescript-eslint/parser@^5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.36.1.tgz#931c22c7bacefd17e29734628cdec8b2acdcf1ce" + integrity sha512-/IsgNGOkBi7CuDfUbwt1eOqUXF9WGVBW9dwEe1pi+L32XrTsZIgmDFIi2RxjzsvB/8i+MIf5JIoTEH8LOZ368A== dependencies: - "@typescript-eslint/scope-manager" "5.35.1" - "@typescript-eslint/types" "5.35.1" - "@typescript-eslint/typescript-estree" "5.35.1" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/typescript-estree" "5.36.1" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.35.1.tgz#ccb69d54b7fd0f2d0226a11a75a8f311f525ff9e" - integrity sha512-kCYRSAzIW9ByEIzmzGHE50NGAvAP3wFTaZevgWva7GpquDyFPFcmvVkFJGWJJktg/hLwmys/FZwqM9EKr2u24Q== +"@typescript-eslint/scope-manager@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.36.1.tgz#23c49b7ddbcffbe09082e6694c2524950766513f" + integrity sha512-pGC2SH3/tXdu9IH3ItoqciD3f3RRGCh7hb9zPdN2Drsr341zgd6VbhP5OHQO/reUqihNltfPpMpTNihFMarP2w== dependencies: - "@typescript-eslint/types" "5.35.1" - "@typescript-eslint/visitor-keys" "5.35.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" -"@typescript-eslint/type-utils@5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.35.1.tgz#d50903b56758c5c8fc3be52b3be40569f27f9c4a" - integrity sha512-8xT8ljvo43Mp7BiTn1vxLXkjpw8wS4oAc00hMSB4L1/jIiYbjjnc3Qp2GAUOG/v8zsNCd1qwcqfCQ0BuishHkw== +"@typescript-eslint/type-utils@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.36.1.tgz#016fc2bff6679f54c0b2df848a493f0ca3d4f625" + integrity sha512-xfZhfmoQT6m3lmlqDvDzv9TiCYdw22cdj06xY0obSznBsT///GK5IEZQdGliXpAOaRL34o8phEvXzEo/VJx13Q== dependencies: - "@typescript-eslint/utils" "5.35.1" + "@typescript-eslint/typescript-estree" "5.36.1" + "@typescript-eslint/utils" "5.36.1" debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.35.1.tgz#af355fe52a0cc88301e889bc4ada72f279b63d61" - integrity sha512-FDaujtsH07VHzG0gQ6NDkVVhi1+rhq0qEvzHdJAQjysN+LHDCKDKCBRlZFFE0ec0jKxiv0hN63SNfExy0KrbQQ== +"@typescript-eslint/types@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.36.1.tgz#1cf0e28aed1cb3ee676917966eb23c2f8334ce2c" + integrity sha512-jd93ShpsIk1KgBTx9E+hCSEuLCUFwi9V/urhjOWnOaksGZFbTOxAT47OH2d4NLJnLhkVD+wDbB48BuaycZPLBg== -"@typescript-eslint/typescript-estree@5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.35.1.tgz#db878a39a0dbdc9bb133f11cdad451770bfba211" - integrity sha512-JUqE1+VRTGyoXlDWWjm6MdfpBYVq+hixytrv1oyjYIBEOZhBCwtpp5ZSvBt4wIA1MKWlnaC2UXl2XmYGC3BoQA== +"@typescript-eslint/typescript-estree@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.36.1.tgz#b857f38d6200f7f3f4c65cd0a5afd5ae723f2adb" + integrity sha512-ih7V52zvHdiX6WcPjsOdmADhYMDN15SylWRZrT2OMy80wzKbc79n8wFW0xpWpU0x3VpBz/oDgTm2xwDAnFTl+g== dependencies: - "@typescript-eslint/types" "5.35.1" - "@typescript-eslint/visitor-keys" "5.35.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/visitor-keys" "5.36.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.35.1.tgz#ae1399afbfd6aa7d0ed1b7d941e9758d950250eb" - integrity sha512-v6F8JNXgeBWI4pzZn36hT2HXXzoBBBJuOYvoQiaQaEEjdi5STzux3Yj8v7ODIpx36i/5s8TdzuQ54TPc5AITQQ== +"@typescript-eslint/utils@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.36.1.tgz#136d5208cc7a3314b11c646957f8f0b5c01e07ad" + integrity sha512-lNj4FtTiXm5c+u0pUehozaUWhh7UYKnwryku0nxJlYUEWetyG92uw2pr+2Iy4M/u0ONMKzfrx7AsGBTCzORmIg== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.35.1" - "@typescript-eslint/types" "5.35.1" - "@typescript-eslint/typescript-estree" "5.35.1" + "@typescript-eslint/scope-manager" "5.36.1" + "@typescript-eslint/types" "5.36.1" + "@typescript-eslint/typescript-estree" "5.36.1" eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.35.1": - version "5.35.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.35.1.tgz#285e9e34aed7c876f16ff646a3984010035898e6" - integrity sha512-cEB1DvBVo1bxbW/S5axbGPE6b7FIMAbo3w+AGq6zNDA7+NYJOIkKj/sInfTv4edxd4PxJSgdN4t6/pbvgA+n5g== +"@typescript-eslint/visitor-keys@5.36.1": + version "5.36.1" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.36.1.tgz#7731175312d65738e501780f923896d200ad1615" + integrity sha512-ojB9aRyRFzVMN3b5joSYni6FAS10BBSCAfKJhjJAV08t/a95aM6tAhz+O1jF+EtgxktuSO3wJysp2R+Def/IWQ== dependencies: - "@typescript-eslint/types" "5.35.1" + "@typescript-eslint/types" "5.36.1" eslint-visitor-keys "^3.3.0" "@webassemblyjs/ast@1.11.1": @@ -13498,10 +13499,10 @@ typescript-plugin-css-modules@^3.4.0: stylus "^0.54.8" tsconfig-paths "^3.9.0" -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== +typescript@^4.8.2: + version "4.8.2" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.2.tgz#e3b33d5ccfb5914e4eeab6699cf208adee3fd790" + integrity sha512-C0I1UsrrDHo2fYI5oaCGbSejwX4ch+9Y5jTQELvovfmFkK3HHSZJB8MSJcWLmCUBzQBchCrZ9rMRV6GuNrvGtw== typical@^4.0.0: version "4.0.0"