diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a71fc42771..9aaeec71f6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,8 +11,9 @@ jobs: name: Test runs-on: ${{ matrix.os }} strategy: + fail-fast: false matrix: - os: [ubuntu-18.04, macos-11, windows-2019] + os: [ubuntu-20.04, macos-11, windows-2019] node-version: [16.x] steps: - name: Checkout Release from lens diff --git a/Makefile b/Makefile index 9dfb2cf512..d04b3febe1 100644 --- a/Makefile +++ b/Makefile @@ -17,8 +17,7 @@ else endif node_modules: yarn.lock - yarn install --frozen-lockfile --network-timeout=100000 - yarn check --verify-tree --integrity + yarn install --check-files --frozen-lockfile --network-timeout=100000 binaries/client: node_modules yarn download:binaries diff --git a/package.json b/package.json index 1391ec431b..e5e43186d5 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "productName": "OpenLens", "description": "OpenLens - Open Source IDE for Kubernetes", "homepage": "https://github.com/lensapp/lens", - "version": "6.0.1", + "version": "6.0.2-alpha.0", "main": "static/build/main.js", "copyright": "© 2022 OpenLens Authors", "license": "MIT", @@ -43,7 +43,9 @@ "version-checkout": "cat package.json | jq '.version' -r | xargs printf \"release/v%s\" | xargs git checkout -b", "version-commit": "cat package.json | jq '.version' -r | xargs printf \"release v%s\" | git commit --no-edit -s -F -", "version": "yarn run version-checkout && git add package.json && yarn run version-commit", - "postversion": "git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version" + "postversion": "git push --set-upstream ${GIT_REMOTE:-origin} release/v$npm_package_version", + "precreate-release-pr": "npx swc ./scripts/create-release-pr.ts -o ./scripts/create-release-pr.mjs", + "create-release-pr": "node ./scripts/create-release-pr.mjs" }, "config": { "k8sProxyVersion": "0.2.1", @@ -203,17 +205,20 @@ "role": "Viewer" } }, + "resolutions": { + "@astronautlabs/jsonpath/underscore": "^1.12.1" + }, "dependencies": { "@astronautlabs/jsonpath": "^1.1.0", "@hapi/call": "^9.0.0", "@hapi/subtext": "^7.0.4", "@kubernetes/client-node": "^0.17.0", "@material-ui/styles": "^4.11.5", - "@ogre-tools/fp": "9.0.1", - "@ogre-tools/injectable": "9.0.1", - "@ogre-tools/injectable-extension-for-auto-registration": "9.0.1", - "@ogre-tools/injectable-extension-for-mobx": "9.0.1", - "@ogre-tools/injectable-react": "9.0.1", + "@ogre-tools/fp": "9.0.3", + "@ogre-tools/injectable": "9.0.3", + "@ogre-tools/injectable-extension-for-auto-registration": "9.0.3", + "@ogre-tools/injectable-extension-for-mobx": "9.0.3", + "@ogre-tools/injectable-react": "9.0.3", "@sentry/electron": "^3.0.7", "@sentry/integrations": "^6.19.3", "@side/jest-runtime": "^1.0.1", @@ -253,7 +258,7 @@ "moment-timezone": "^0.5.34", "monaco-editor": "^0.29.1", "monaco-editor-webpack-plugin": "^5.0.0", - "node-fetch": "lensapp/node-fetch#2.x", + "node-fetch": "^2.6.7", "node-pty": "0.10.1", "npm": "^6.14.17", "p-limit": "^3.1.0", @@ -291,6 +296,7 @@ "@material-ui/lab": "^4.0.0-alpha.60", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@sentry/types": "^6.19.7", + "@swc/cli": "^0.1.57", "@swc/core": "^1.2.223", "@swc/jest": "^0.2.22", "@testing-library/dom": "^7.31.2", diff --git a/scripts/.gitignore b/scripts/.gitignore new file mode 100644 index 0000000000..493f3a63f4 --- /dev/null +++ b/scripts/.gitignore @@ -0,0 +1,2 @@ +*.mjs +*.map diff --git a/scripts/.swcrc b/scripts/.swcrc new file mode 100644 index 0000000000..8e7a530f16 --- /dev/null +++ b/scripts/.swcrc @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/swcrc", + "jsc": { + "parser": { + "syntax": "typescript" + }, + "target": "es2022" + } +} diff --git a/scripts/create-release-pr.mjs b/scripts/create-release-pr.ts similarity index 63% rename from scripts/create-release-pr.mjs rename to scripts/create-release-pr.ts index e135f66fc4..da0d5d4f26 100755 --- a/scripts/create-release-pr.mjs +++ b/scripts/create-release-pr.ts @@ -1,16 +1,14 @@ -#!/usr/bin/env node /** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ - -// This script creates a release PR -import { execSync, exec, spawn } from "child_process"; +import child_process from "child_process"; import commandLineArgs from "command-line-args"; import fse from "fs-extra"; import { basename } from "path"; +import { createInterface } from "readline"; import semver from "semver"; -import { promisify } from "util"; +import { inspect, promisify } from "util"; const { SemVer, @@ -18,8 +16,8 @@ const { rcompare: semverRcompare, lte: semverLte, } = semver; -const { readJsonSync } = fse; -const execP = promisify(exec); +const exec = promisify(child_process.exec); +const execFile = promisify(child_process.execFile); const options = commandLineArgs([ { @@ -82,17 +80,17 @@ if (basename(process.cwd()) === "scripts") { } -const currentVersion = new SemVer(readJsonSync("./package.json").version); +const currentVersion = new SemVer((await fse.readJson("./package.json")).version); console.log(`current version: ${currentVersion.format()}`); console.log("fetching tags..."); -execSync("git fetch --tags --force"); +await exec("git fetch --tags --force"); -const actualTags = execSync("git tag --list", { encoding: "utf-8" }).split(/\r?\n/).map(line => line.trim()); +const actualTags = (await exec("git tag --list", { encoding: "utf-8" })).stdout.split(/\r?\n/).map(line => line.trim()); const [previousReleasedVersion] = actualTags - .map(semverValid) - .filter(Boolean) - .sort(semverRcompare) + .map((value) => semverValid(value)) + .filter((v): v is string => typeof v === "string") + .sort((l, r) => semverRcompare(l, r)) .filter(version => semverLte(version, currentVersion)); const npmVersionArgs = [ @@ -107,9 +105,9 @@ if (options.preid) { npmVersionArgs.push("--git-tag-version false"); -execSync(npmVersionArgs.join(" "), { stdio: "ignore" }); +await exec(npmVersionArgs.join(" ")); -const newVersion = new SemVer(readJsonSync("./package.json").version); +const newVersion = new SemVer((await fse.readJson("./package.json")).version); const newVersionMilestone = `${newVersion.major}.${newVersion.minor}.${newVersion.patch}`; console.log(`new version: ${newVersion.format()}`); @@ -121,22 +119,63 @@ const getMergedPrsArgs = [ "--limit=500", // Should be big enough, if not we need to release more often ;) "--state=merged", "--base=master", - "--json mergeCommit,title,author,labels,number,milestone", + "--json mergeCommit,title,author,labels,number,milestone,mergedAt", ]; +interface GithubPrData { + author: { + login: string; + }; + labels: { + id: string; + name: string; + description: string; + color: string; + }[]; + mergeCommit: { + oid: string; + }; + mergedAt: string; + milestone: { + number: number; + title: string; + description: string; + dueOn: null | string; + }; + number: number; + title: string; +} + console.log("retreiving last 500 PRs to create release PR body..."); -const mergedPrs = JSON.parse(execSync(getMergedPrsArgs.join(" "), { encoding: "utf-8" })); +const mergedPrs = JSON.parse((await exec(getMergedPrsArgs.join(" "), { encoding: "utf-8" })).stdout) as GithubPrData[]; const milestoneRelevantPrs = mergedPrs.filter(pr => pr.milestone?.title === newVersionMilestone); const relaventPrsQuery = await Promise.all( milestoneRelevantPrs.map(async pr => ({ pr, - stdout: (await execP(`git tag v${previousReleasedVersion} --no-contains ${pr.mergeCommit.oid}`)).stdout, + stdout: (await exec(`git tag v${previousReleasedVersion} --no-contains ${pr.mergeCommit.oid}`)).stdout, })), ); const relaventPrs = relaventPrsQuery .filter(query => query.stdout) .map(query => query.pr) - .filter(pr => pr.labels.every(label => label.name !== "skip-changelog")); + .filter(pr => pr.labels.every(label => label.name !== "skip-changelog")) + .map(pr => ({ ...pr, mergedAt: new Date(pr.mergedAt) })) + .sort((left, right) => { + const leftAge = left.mergedAt.valueOf(); + const rightAge = right.mergedAt.valueOf(); + + if (leftAge === rightAge) { + return 0; + } + + if (leftAge > rightAge) { + return 1; + } + + return -1; + }); + +console.log(inspect(relaventPrs, false, null, true)); const enhancementPrLabelName = "enhancement"; const bugfixPrLabelName = "bug"; @@ -199,19 +238,34 @@ const createPrArgs = [ "--body-file", "-", ]; -const createPrProcess = spawn("gh", createPrArgs, { stdio: "pipe" }); -let result = ""; +const rl = createInterface(process.stdin); -createPrProcess.stdout.on("data", (chunk) => result += chunk); +if (prBase !== "master") { + console.log("Cherry-picking commits to current branch"); -createPrProcess.stdin.write(prBody); -createPrProcess.stdin.end(); + for (const pr of relaventPrs) { + try { + const promise = exec(`git cherry-pick ${pr.mergeCommit.oid}`); -await new Promise((resolve) => { - createPrProcess.on("close", () => { - createPrProcess.stdout.removeAllListeners(); - resolve(); - }); -}); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + promise.child.stdout!.pipe(process.stdout); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + promise.child.stderr!.pipe(process.stderr); -console.log(result); + await promise; + } catch { + console.error(`Failed to cherry-pick ${pr.mergeCommit.oid}, please resolve conflicts and then press enter here:`); + await new Promise(resolve => rl.on("line", () => resolve())); + } + } +} + +const createPrProcess = execFile("gh", createPrArgs); + +createPrProcess.child.stdout?.pipe(process.stdout); +createPrProcess.child.stderr?.pipe(process.stderr); + +createPrProcess.child.stdin?.write(prBody); +createPrProcess.child.stdin?.end(); + +await createPrProcess; diff --git a/src/common/k8s-api/__tests__/kube-api.test.ts b/src/common/k8s-api/__tests__/kube-api.test.ts index 36f2aea748..05da1f89d5 100644 --- a/src/common/k8s-api/__tests__/kube-api.test.ts +++ b/src/common/k8s-api/__tests__/kube-api.test.ts @@ -6,7 +6,6 @@ import { forRemoteCluster, KubeApi } from "../kube-api"; import { KubeJsonApi } from "../kube-json-api"; import { KubeObject } from "../kube-object"; -import AbortController from "abort-controller"; import { delay } from "../../utils/delay"; import { PassThrough } from "stream"; import { ApiManager } from "../api-manager"; @@ -15,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 5427b22159..ddc2456668 100644 --- a/src/common/k8s-api/kube-api.ts +++ b/src/common/k8s-api/kube-api.ts @@ -19,7 +19,6 @@ import { KubeJsonApi } from "./kube-json-api"; import type { Disposer } from "../utils"; import { isDefined, noop, WrappedAbortController } from "../utils"; import type { RequestInit } from "node-fetch"; -import type AbortController from "abort-controller"; import type { AgentOptions } from "https"; import { Agent } from "https"; import type { Patch } from "rfc6902"; @@ -28,6 +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"; +import type AbortController from "abort-controller"; /** * The options used for creating a `KubeApi` diff --git a/src/common/k8s-api/kube-object.store.ts b/src/common/k8s-api/kube-object.store.ts index 0af08e560c..5412bbc87c 100644 --- a/src/common/k8s-api/kube-object.store.ts +++ b/src/common/k8s-api/kube-object.store.ts @@ -15,12 +15,12 @@ import { ItemStore } from "../item.store"; import type { KubeApiQueryParams, KubeApi, KubeApiWatchCallback } from "./kube-api"; import { parseKubeApi } from "./kube-api-parse"; import type { RequestInit } from "node-fetch"; -import AbortController from "abort-controller"; import type { Patch } from "rfc6902"; import logger from "../logger"; import assert from "assert"; import type { PartialDeep } from "type-fest"; import { entries } from "../utils/objects"; +import AbortController from "abort-controller"; export type OnLoadFailure = (error: unknown) => void; @@ -477,7 +477,8 @@ export abstract class KubeObjectStore< callback, }); - const { signal } = abortController; + // TODO: upgrade node-fetch once we are starting to use ES modules + 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 e115fd5868..db40edd6f6 100644 --- a/src/common/utils/abort-controller.ts +++ b/src/common/utils/abort-controller.ts @@ -2,8 +2,13 @@ * Copyright (c) OpenLens Authors. All rights reserved. * 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) + */ export class WrappedAbortController extends AbortController { constructor(parent?: AbortController) { super(); diff --git a/src/common/utils/delay.ts b/src/common/utils/delay.ts index 2c4a5c455e..96171f6535 100644 --- a/src/common/utils/delay.ts +++ b/src/common/utils/delay.ts @@ -3,7 +3,7 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import type { AbortController } from "abort-controller"; +import type AbortController from "abort-controller"; /** * Return a promise that will be resolved after at least `timeout` ms have diff --git a/src/main/cluster-detectors/distribution-detector.ts b/src/main/cluster-detectors/distribution-detector.ts index c912fcf5b5..dcdacfb253 100644 --- a/src/main/cluster-detectors/distribution-detector.ts +++ b/src/main/cluster-detectors/distribution-detector.ts @@ -96,8 +96,6 @@ export class DistributionDetector extends BaseClusterDetector { } public async getKubernetesVersion() { - if (this.cluster.version) return this.cluster.version; - const response = await this.k8sRequest("/version"); return response.gitVersion; diff --git a/src/main/helm/helm-release-manager.ts b/src/main/helm/helm-release-manager.ts index 4c6e974152..f0907dc3c2 100644 --- a/src/main/helm/helm-release-manager.ts +++ b/src/main/helm/helm-release-manager.ts @@ -194,6 +194,11 @@ async function getResources(name: string, namespace: string, kubeconfigPath: str "--kubeconfig", kubeconfigPath, "-f", "-", "--output", "json", + // Temporary workaround for https://github.com/lensapp/lens/issues/6031 + // and other potential issues where resources can't be found. Showing + // no resources is better than the app hard-locking, and at least + // the helm metadata is shown. + "--ignore-not-found", ]; try { @@ -208,9 +213,13 @@ async function getResources(name: string, namespace: string, kubeconfigPath: str .on("exit", (code, signal) => { if (typeof code === "number") { if (code === 0) { - const output = json.parse(stdout) as { items: JsonObject[] }; + if (stdout === "") { + resolve([]); + } else { + const output = json.parse(stdout) as { items: JsonObject[] }; - resolve(output.items); + resolve(output.items); + } } else { reject(stderr); } diff --git a/src/renderer/components/+namespaces/namespace-select-filter.scss b/src/renderer/components/+namespaces/namespace-select-filter.scss index 869d647557..f227976b46 100644 --- a/src/renderer/components/+namespaces/namespace-select-filter.scss +++ b/src/renderer/components/+namespaces/namespace-select-filter.scss @@ -20,6 +20,7 @@ padding-left: 8px; margin-right: -8px; padding-right: 8px; + line-height: 1.1; &::-webkit-scrollbar { display: none; diff --git a/src/renderer/components/+nodes/nodes.scss b/src/renderer/components/+nodes/nodes.scss index bace3aa726..74adf66e3d 100644 --- a/src/renderer/components/+nodes/nodes.scss +++ b/src/renderer/components/+nodes/nodes.scss @@ -49,7 +49,6 @@ &.conditions { flex: 1.7; - text-align: right; .condition { display: inline-block; diff --git a/src/renderer/components/+workloads-replicasets/scale-dialog/dialog.tsx b/src/renderer/components/+workloads-replicasets/scale-dialog/dialog.tsx index 2193da284b..3b6969a5bb 100644 --- a/src/renderer/components/+workloads-replicasets/scale-dialog/dialog.tsx +++ b/src/renderer/components/+workloads-replicasets/scale-dialog/dialog.tsx @@ -104,7 +104,7 @@ class NonInjectedReplicaSetScaleDialog extends Component - Scale Replica Set + {"Scale Replica Set "} {replicaSet.getName()} )} @@ -131,16 +131,16 @@ class NonInjectedReplicaSetScaleDialog extends Component
- +
{warning && ( diff --git a/src/renderer/components/app.scss b/src/renderer/components/app.scss index 68cc6db3d9..19c7b53d6f 100755 --- a/src/renderer/components/app.scss +++ b/src/renderer/components/app.scss @@ -72,7 +72,6 @@ html, body { body { color: var(--textColorPrimary); - background-color: var(--mainBackground); font-size: var(--font-size); font-family: var(--font-main); } @@ -89,6 +88,11 @@ body { #app { height: 100%; min-height: 100%; + background-color: var(--mainBackground); + + &:empty { + background-color: transparent; + } > * { height: inherit; @@ -180,6 +184,10 @@ a { } } +iframe { + color-scheme: auto; // Remove default white background on iframes +} + // colors .success { color: var(--colorSuccess); diff --git a/src/renderer/components/badge/badge.module.scss b/src/renderer/components/badge/badge.module.scss index f3c6bcf13a..2223129ebb 100644 --- a/src/renderer/components/badge/badge.module.scss +++ b/src/renderer/components/badge/badge.module.scss @@ -25,7 +25,7 @@ cursor: pointer; } -.badge:not(.isExpanded) { +.badge:not(.scrollable):not(.isExpanded) { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; diff --git a/src/renderer/components/badge/badge.tsx b/src/renderer/components/badge/badge.tsx index 27eda81214..f0efb701bd 100644 --- a/src/renderer/components/badge/badge.tsx +++ b/src/renderer/components/badge/badge.tsx @@ -5,7 +5,7 @@ import styles from "./badge.module.scss"; -import React, { createRef, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import { action, observable } from "mobx"; import { observer } from "mobx-react"; import { cssNames } from "../../utils/cssNames"; @@ -40,12 +40,15 @@ export const Badge = withTooltip(observer(({ children, ...elemProps }: BadgeProps) => { - const elem = createRef(); + const elem = useRef(null); const [isExpanded, setIsExpanded] = useState(false); + const [isExpandable, setIsExpandable] = useState(false); - const isExpandable = expandable && elem.current - ? elem.current.clientWidth < elem.current.scrollWidth - : false; + useEffect(() => { + const { clientWidth = 0, scrollWidth = 0 } = elem.current ?? {}; + + setIsExpandable(expandable && (clientWidth < scrollWidth)); + }, [expandable, elem.current]); const onMouseUp = action(() => { if (!isExpandable || badgeMeta.hasTextSelected) { diff --git a/src/renderer/components/cluster-settings/components/cluster-local-terminal-settings.tsx b/src/renderer/components/cluster-settings/components/cluster-local-terminal-settings.tsx index ab1a4b9db0..93eb567186 100644 --- a/src/renderer/components/cluster-settings/components/cluster-local-terminal-settings.tsx +++ b/src/renderer/components/cluster-settings/components/cluster-local-terminal-settings.tsx @@ -166,6 +166,8 @@ export const ClusterLocalTerminalSetting = observer(({ cluster }: ClusterLocalTe material="close" title="Clear" onClick={() => setAndCommitDirectory("")} + smallest + style={{ marginRight: "var(--margin)" }} /> ) } @@ -173,6 +175,7 @@ export const ClusterLocalTerminalSetting = observer(({ cluster }: ClusterLocalTe material="folder" title="Pick from filesystem" onClick={openFilePicker} + smallest /> )} diff --git a/src/renderer/components/dock/create-resource/view.tsx b/src/renderer/components/dock/create-resource/view.tsx index 711397c752..a9245e4494 100644 --- a/src/renderer/components/dock/create-resource/view.tsx +++ b/src/renderer/components/dock/create-resource/view.tsx @@ -11,7 +11,6 @@ import type { IComputedValue } from "mobx"; import { makeObservable, observable } from "mobx"; import { observer } from "mobx-react"; import type { CreateResourceTabStore } from "./store"; -import type { DockTab } from "../dock/store"; import { EditorPanel } from "../editor-panel"; import { InfoPanel } from "../info-panel"; import * as resourceApplierApi from "../../../../common/k8s-api/endpoints/resource-applier.api"; @@ -31,7 +30,7 @@ import getDetailsUrlInjectable from "../../kube-detail-params/get-details-url.in import navigateInjectable from "../../../navigation/navigate.injectable"; export interface CreateResourceProps { - tab: DockTab; + tabId: string; } interface Dependencies { @@ -52,7 +51,7 @@ class NonInjectedCreateResource extends React.Component { renderTab(tab: DockTab) { switch (tab.kind) { case TabKind.CREATE_RESOURCE: - return ; + return ; case TabKind.EDIT_RESOURCE: - return ; + return ; case TabKind.INSTALL_CHART: - return ; + return ; case TabKind.UPGRADE_CHART: return ; case TabKind.POD_LOGS: diff --git a/src/renderer/components/dock/edit-resource/view.tsx b/src/renderer/components/dock/edit-resource/view.tsx index 35714d2d24..d448a86ce8 100644 --- a/src/renderer/components/dock/edit-resource/view.tsx +++ b/src/renderer/components/dock/edit-resource/view.tsx @@ -5,7 +5,6 @@ import React from "react"; import { observer } from "mobx-react"; -import type { DockTab } from "../dock/store"; import { Spinner } from "../../spinner"; import { withInjectables } from "@ogre-tools/injectable-react"; import type { EditResourceModel } from "./edit-resource-model/edit-resource-model.injectable"; @@ -16,7 +15,7 @@ import { Badge } from "../../badge"; import { Notice } from "../../+extensions/notice"; export interface EditResourceProps { - tab: DockTab; + tabId: string; } interface Dependencies { @@ -24,7 +23,7 @@ interface Dependencies { } const NonInjectedEditResource = observer( - ({ model, tab: { id: tabId }}: EditResourceProps & Dependencies) => { + ({ model, tabId }: EditResourceProps & Dependencies) => { return (
{model.shouldShowErrorAboutNoResource && ( @@ -78,7 +77,7 @@ export const EditResource = withInjectables( ), getProps: async (di, props) => ({ - model: await di.inject(editResourceModelInjectable, props.tab.id), + model: await di.inject(editResourceModelInjectable, props.tabId), ...props, }), }, diff --git a/src/renderer/components/dock/install-chart/view.tsx b/src/renderer/components/dock/install-chart/view.tsx index 282acce6d8..98914b88e3 100644 --- a/src/renderer/components/dock/install-chart/view.tsx +++ b/src/renderer/components/dock/install-chart/view.tsx @@ -7,7 +7,6 @@ import "./install-chart.scss"; import React from "react"; import { observer } from "mobx-react"; -import type { DockTab } from "../dock/store"; import { InfoPanel } from "../info-panel"; import { Badge } from "../../badge"; import { NamespaceSelect } from "../../+namespaces/namespace-select"; @@ -23,8 +22,8 @@ import type { InstallChartModel } from "./install-chart-model.injectable"; import installChartModelInjectable from "./install-chart-model.injectable"; import { Spinner } from "../../spinner"; -export interface InstallCharProps { - tab: DockTab; +export interface InstallChartProps { + tabId: string; } interface Dependencies { @@ -32,7 +31,7 @@ interface Dependencies { } const NonInjectedInstallChart = observer( - ({ model: model, tab: { id: tabId }}: InstallCharProps & Dependencies) => { + ({ model: model, tabId }: InstallChartProps & Dependencies) => { const installed = model.installed.get(); if (installed) { @@ -144,7 +143,7 @@ const NonInjectedInstallChart = observer( }, ); -export const InstallChart = withInjectables( +export const InstallChart = withInjectables( NonInjectedInstallChart, { @@ -156,7 +155,7 @@ export const InstallChart = withInjectables( ), getProps: async (di, props) => ({ - model: await di.inject(installChartModelInjectable, props.tab.id), + model: await di.inject(installChartModelInjectable, props.tabId), ...props, }), }, diff --git a/src/renderer/components/select/select.scss b/src/renderer/components/select/select.scss index 9faa60b54a..1cc50a2c00 100644 --- a/src/renderer/components/select/select.scss +++ b/src/renderer/components/select/select.scss @@ -49,6 +49,7 @@ html { &__single-value { color: var(--textColorSecondary); + overflow: visible; } &__indicator { diff --git a/src/renderer/components/tabs/tabs.scss b/src/renderer/components/tabs/tabs.scss index 2bee04e024..2eaf698676 100644 --- a/src/renderer/components/tabs/tabs.scss +++ b/src/renderer/components/tabs/tabs.scss @@ -54,11 +54,10 @@ position: absolute; right: 0; bottom: 0; - width: 0; - height: $unit * 0.5; - transition: width 150ms; + height: 3px; + transition: opacity 150ms; background: currentColor; - color: var(--halfGray) + opacity: 0; } &:focus { @@ -76,6 +75,7 @@ left: 0; right: auto; color: var(--line-color-active); + opacity: 1; } } } diff --git a/src/renderer/kube-watch-api/kube-watch-api.ts b/src/renderer/kube-watch-api/kube-watch-api.ts index c28ea2e794..95c0442fcb 100644 --- a/src/renderer/kube-watch-api/kube-watch-api.ts +++ b/src/renderer/kube-watch-api/kube-watch-api.ts @@ -5,11 +5,11 @@ import { comparer, reaction } from "mobx"; import type { Disposer } from "../../common/utils"; import { disposer, getOrInsert, noop, WrappedAbortController } from "../../common/utils"; -import AbortController from "abort-controller"; import { once } from "lodash"; import type { ClusterFrameContext } from "../cluster-frame-context/cluster-frame-context"; import logger from "../../common/logger"; import type { KubeObjectStoreLoadAllParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store"; +import AbortController from "abort-controller"; // Kubernetes watch-api client // API: https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams diff --git a/yarn.lock b/yarn.lock index 4b79090cd6..b0a0c0b15e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -481,7 +481,7 @@ resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== -"@electron/get@^1.13.0": +"@electron/get@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== @@ -1225,46 +1225,46 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@ogre-tools/fp@9.0.1", "@ogre-tools/fp@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-9.0.1.tgz#22c23bd209f6f56bf66a5ff4514930334a3a4782" - integrity sha512-7kORUcvR9DZz5/2qDSSKExGeisXzfmOafP+Z6l8C+WQXEmEQm7CmFMyBEyMkei0eNFzNghlKYgRFpsvBdU3KAg== +"@ogre-tools/fp@9.0.3", "@ogre-tools/fp@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-9.0.3.tgz#f8c9a3316b688c4782309e050c86aa04bebfc293" + integrity sha512-j5TQAxiz6ncEfYFBcqnWXeLZY89Qd+dZ9UlfonBdw/C9okxjNeFL+2bmt+b/Vxscz1cOLGZ1F6nmlhQdTtHzPw== dependencies: lodash "^4.17.21" -"@ogre-tools/injectable-extension-for-auto-registration@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-9.0.1.tgz#e00dff5bd833068faa58d8fa514b218515c55775" - integrity sha512-reyhW2wWPrNnGXo88QKWUsLyhjF195i0/iXfdAoR8/4lRxWmzka58bc8r6jFvTBBJ6eXaGidhUa5DqZe+Oia2Q== +"@ogre-tools/injectable-extension-for-auto-registration@9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-9.0.3.tgz#a26d2a39e24ec3a0800fe21141c0f4f0e7d5504d" + integrity sha512-0zjt4w1ACBX9a3FyhTD+/AAqk/xov2bw+Cnbte7NMOVWAbHDfQpmbdiKJlMnFcMUd8vdwOEMm1Z4ogT1VkUeqg== dependencies: - "@ogre-tools/fp" "^9.0.1" - "@ogre-tools/injectable" "^9.0.1" + "@ogre-tools/fp" "^9.0.3" + "@ogre-tools/injectable" "^9.0.3" lodash "^4.17.21" -"@ogre-tools/injectable-extension-for-mobx@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-9.0.1.tgz#3d9e6e119b7db5a4e4309e89ba6b301635c8da90" - integrity sha512-wNHIG73NTGfmRb0b2nNhJD9ek4RcyBp/189KfrXhTt6/5KwMEuOeJjAbh8xwbhpYJnWFcMzWKLTqePozc+Ntww== +"@ogre-tools/injectable-extension-for-mobx@9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-9.0.3.tgz#24a14b940f51cae8b07645a2376d804b826c659e" + integrity sha512-DgCbAIqMPKgeNETY/8nxz6llAk8fAihGcbs/fkKINe4N9zFgOBKsuk/w67Sx0rTE7l35L6HQenbo7nJhIqbCWA== dependencies: - "@ogre-tools/fp" "^9.0.1" - "@ogre-tools/injectable" "^9.0.1" + "@ogre-tools/fp" "^9.0.3" + "@ogre-tools/injectable" "^9.0.3" lodash "^4.17.21" -"@ogre-tools/injectable-react@9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-9.0.1.tgz#d72a155b914873f1a5e35ee167aa14dd7c0e7454" - integrity sha512-GjkhhONy4hamw5Mx79ZxhL3Pbgnfnf1mrkixDkqlXFzhdPBHDtCYIZu9Y6NjSRLgEwXTrAPYv9lDqREnRbUwLA== +"@ogre-tools/injectable-react@9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-9.0.3.tgz#bc125ef906b171c8894f711f8b61f38d49e81dd0" + integrity sha512-6O9vr19Mcy0uUekZhRyjsM5nw8pgFXhbNvZ8JOnBQg6Lp1CqdasIFhJ0Hdxb8w8P9Zs+pd8pfevRVotq0ouV2Q== dependencies: - "@ogre-tools/fp" "^9.0.1" - "@ogre-tools/injectable" "^9.0.1" + "@ogre-tools/fp" "^9.0.3" + "@ogre-tools/injectable" "^9.0.3" lodash "^4.17.21" -"@ogre-tools/injectable@9.0.1", "@ogre-tools/injectable@^9.0.1": - version "9.0.1" - resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-9.0.1.tgz#611a2dd8468bfe3610f005178837d76071a44a70" - integrity sha512-orcERUOeUEP2oBAcr9rKYbik+r/xJEIb5uedPMMqPzPJnNwZ9JA/1rDEJcx1/I9aHgjUQpeFANjYI4eYDcwEYQ== +"@ogre-tools/injectable@9.0.3", "@ogre-tools/injectable@^9.0.3": + version "9.0.3" + resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-9.0.3.tgz#6d9e01a5be7e7c96e7bcbc727f928faad5e11884" + integrity sha512-KCmqcMEl/1Jjwg6XzNve+JVaW/OtiJUOKBucTJx2ZKBlAQaKz1/VUP7IB4UoQ4RWVa0+mUKLTxBTQFBQfp05RA== dependencies: - "@ogre-tools/fp" "^9.0.1" + "@ogre-tools/fp" "^9.0.3" lodash "^4.17.21" "@pmmmwh/react-refresh-webpack-plugin@^0.5.7": @@ -1435,101 +1435,111 @@ dependencies: "@sinonjs/commons" "^1.7.0" -"@swc/core-android-arm-eabi@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.223.tgz#5d5ae572c90eb2e19f46c1ef56aab2e3fa7101fe" - integrity sha512-Hy/ya4oy80Ay70H9vhA8W0/FU9aQ/oQjvZ/on+wcNMATAiU9tk47i73LtPM01GruNiYJOwFcf2XWjlTpq5a0BQ== +"@swc/cli@^0.1.57": + version "0.1.57" + resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.57.tgz#a9c424de5a217ec20a4b7c2c0e5c343980537e83" + integrity sha512-HxM8TqYHhAg+zp7+RdTU69bnkl4MWdt1ygyp6BDIPjTiaJVH6Dizn2ezbgDS8mnFZI1FyhKvxU/bbaUs8XhzQg== + dependencies: + commander "^7.1.0" + fast-glob "^3.2.5" + slash "3.0.0" + source-map "^0.7.3" + +"@swc/core-android-arm-eabi@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.244.tgz#f45c5560a471b867f780ed9bd0799620ff8afd04" + integrity sha512-bQN6SY78bFIm6lz46ss4+ZDU9owevVjF95Cm+3KB/13ZOPF+m5Pdm8WQLoBYTLgJ0r4/XukEe9XXjba/6Kf8kw== dependencies: "@swc/wasm" "1.2.122" -"@swc/core-android-arm64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.223.tgz#13c1751f9af36525adbb420098a4c74765afa7c4" - integrity sha512-qujrIXDBMWcPcdtTG/r+RNVBU5rg2Sk9Vg+U4FybX3c34rIyX2QYu5sxwM/HIGfd6wCbt5lyFZOvgSY000MTNw== +"@swc/core-android-arm64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.244.tgz#92d6cc1829d621fa1aa88d84d30a85112a82d148" + integrity sha512-CJeL/EeOIzrH+77otNT6wfGF8uadOHo4rEaBN/xvmtnpdADjYJ8Wt85X4nRK0G929bMke/QdJm5ilPNJdmgCTg== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-darwin-arm64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.223.tgz#44ee2d1fbf9350c6aeda1983a384514272a9b2b7" - integrity sha512-CX32sRhAnFj3fJI6V4vdu5IUV5frEZNZM6hIPUs1UuVpxyuto9IZwd2y7/ACItB5RipA3VDL/c7jrFdSmfrgzg== +"@swc/core-darwin-arm64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.244.tgz#7e068d14c357771f7ca23d7e1941e8bd577d2b5f" + integrity sha512-ZhRK8L/lpPCerUxtrW48cRJtpsUG5xVTUXu3N0TrYuxRzzapHgK+61g1JdtcwdNvEV7l00X4vfCBRYO0S2nsmw== -"@swc/core-darwin-x64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.223.tgz#a157820e158d22c9b443821d15258bc58978e154" - integrity sha512-5FVQgWtqMmpOtky0JLTIF4a1WiAkuDOe5mwgzpi8nZ7nCxNo/DNThBbnIDlNhrR4M/1M6wzPshn1wNivvD7MQw== +"@swc/core-darwin-x64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.244.tgz#bdf3c8150a3e18c392f3d30749a24f71bbd381cd" + integrity sha512-4mY8Gkq2ZMUpXYCLceGp7w0Jnxp75N1gQswNFhMBU4k90ElDuBtPoUSnB1v8MwlQtK7WA25MdvwFnBaEJnfxOg== -"@swc/core-freebsd-x64@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.223.tgz#ec9b300860f378aeb183084d89ba65009910d9f9" - integrity sha512-5oumS+YZyOMMKc5D3Bvf/541SF8n4b8LQ5x4WFA2CdAzD/jCgphE0IoAZ0u3bHz9S6Tl6Emu11V+/ALHE1oUew== +"@swc/core-freebsd-x64@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.244.tgz#0941dd18745cc19ed35bc8b5f4c06f62fe91240d" + integrity sha512-k/NEZfkgtZ4S96woYArZ89jwJ/L1zyxihTgFFu7SxDt+WRE1EPmY42Gt4y874zi1JiSEFSRHiiueDUfRPu7C0Q== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-linux-arm-gnueabihf@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.223.tgz#3403de3c9402e1eeca68b1c134ea574739c7c49c" - integrity sha512-osYjVijq101xZjwPUKR6AUib1LZU9laaM3aEOyElAi8cHolsZEp8D9ynr7cSWFUZJuzpTlY7iuJeY3FszdWrJA== +"@swc/core-linux-arm-gnueabihf@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.244.tgz#e60536c2c7e858940138366d9438d33c80a119e3" + integrity sha512-tE9b/oZWhMXwoXHkgHFckMrLrlczvG7HgQAdtDuA6g30Xd/3XmdVzC4NbXR+1HoaGVDh7cf0EFE3aKdfPvPQwA== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-linux-arm64-gnu@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.223.tgz#d0a2d5dd01c5744950e57ec59aa4696bbabf02e4" - integrity sha512-JZdPZIZzkJ6R+XB0lCnL0eD9VK/JfpZgKBqR3Gur9Fxs8Ea9p1HhZHSEAJ2T2YwV629dYjXwKqraOkLQrEMzCg== +"@swc/core-linux-arm64-gnu@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.244.tgz#daa61051c971c30dd3bb5414be98ca7392b08c06" + integrity sha512-zrpVKUeQxZnzorOp3aXhjK1X2/6xuVZcdyxAUDzItP6G4nLbgPBEQLUi6aUjOjquFiihokXoKWaMPQjF/LqH+g== -"@swc/core-linux-arm64-musl@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.223.tgz#667bd6583f93909736600acdd9d5cc4c6141d577" - integrity sha512-9BVDH5Cq+VlAuJrshCgxWgziLEGzShZ2OVZ7SEA/+md1y69x2VdMR9lMSfD/EXqb6AJAaFODRe20Irtppeqr2Q== +"@swc/core-linux-arm64-musl@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.244.tgz#177ea7e8ba74309c2a08e165f147e63b7420a5d8" + integrity sha512-gI6bntk+HDe2witOsQgBDyDDpRmF5dfxbygvVsEdCI+Ko9yj5S9aCsc8WhhbtdcEG1Fo3v/sM/F/9pGatCAwzQ== -"@swc/core-linux-x64-gnu@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.223.tgz#c29788110fe1aa7fb86332178dcd1606368fd2c2" - integrity sha512-Z+KAxSpUDNEPfjOKX/tZk67StvzIyAhTc5FPWoVhx5CBlkGQaDBRl1TNmb1wdne/WF9xVkx6wz22pvNevX5fig== +"@swc/core-linux-x64-gnu@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.244.tgz#c4f00359567fdb25ab5616bf000168f4fcf30534" + integrity sha512-hwJ5HrDj7asmVGjzaT6SFdhPVxVUIYm9LCuE3yu89+6C5aR9YrCXvpgIjGcHJvEO2PLAtff72FsX7sbXbzzYGQ== -"@swc/core-linux-x64-musl@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.223.tgz#24b7001530d4e09d7bae58c704ac79a6593bb9c1" - integrity sha512-3EkAOA0KQdm7Rw/0L5odtDKAtmzhgF7FKTL+zZb+s0ju5oMwFGN+XIIwUQdPSf11Ej3ezjHjHTFTlv0xqutfuA== +"@swc/core-linux-x64-musl@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.244.tgz#f4d07fbd6c73f54dfa351caf8263a81245882a1f" + integrity sha512-P8d4AIVN63xaS3t5WhOo0Ejy/X7XaDxXe9sJpEbGQP7CGofhURvgXwe8Q6uhPeWC9AwEPu35ArFQ0ZUmOCY0rg== -"@swc/core-win32-arm64-msvc@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.223.tgz#8902c20d3d7ed2c9741ff0e227581d26ce8e0497" - integrity sha512-n8LWkej30hvfvazrJgwS6kwBZXMFCevLiRsZmP8O4hpC9b1wfAa+KLm4nHOR+J8jwF7LEjiERdU6tbIWZz0Tnw== +"@swc/core-win32-arm64-msvc@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.244.tgz#38167a47c1cd8c73d0621a14d46b7982d1d314ff" + integrity sha512-PZUhgooqPDo+NUo+tIxWI1jKnYVV2ACs8eUkSE++Qf7E4/9Igy79XHbG4/G5ERlCudhdcw4XkYiRN8GJQg6P5w== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-win32-ia32-msvc@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.223.tgz#591405f9fa07915e9d0b94a4174a5745621fe580" - integrity sha512-kEDGFFUC6xPqCom03QtR+76Ptwtf8RABI4FqRdvrvbasw9zj0xkuLSDCvqL72zdOZCWRciiFijQVHfndLByMAQ== +"@swc/core-win32-ia32-msvc@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.244.tgz#7d6cb0ab95358dc56bd92ca85ac06687a732fa51" + integrity sha512-w7v8fND4E8wOHoVVNJIDjOh8EQiedI9HCsCTEDM/z/dVPsk/rxi6iHYnZG6gv+X/d0aCLeZQOkW9khfyy128cg== dependencies: "@swc/wasm" "1.2.130" -"@swc/core-win32-x64-msvc@1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.223.tgz#7a4549cedb7c0e7a3d4861c2b5230224194e0f04" - integrity sha512-nzL8rwzMFA9cBK2s+QBMPcNnoGSPMfgY9ypRw/nTp0hQDgdLOXHy9moGFJg8dbdQD39kC5s8yQ0BmyKvePILgg== +"@swc/core-win32-x64-msvc@1.2.244": + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.244.tgz#fed9dd48b3ac1269c7dc62e23fa875ec3f2356b4" + integrity sha512-/A9ssLtqXEQrdHnJ9SvZSBF7zQM/0ydz8B3p5BT9kUbAhmNqbfE4/Wy3d2zd7nrF16n6tRm4giCzcIdzd/7mvw== "@swc/core@^1.2.223": - version "1.2.223" - resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.223.tgz#e44a3f6971a1f5c22d1037cf60510ef32c93d2a5" - integrity sha512-LcKX1frJ1iJDSYlY9Bg0vm0rYsXloITh6PdEYM5amT73J9mC1c2YpWLnWQiH2QpcyblyMhX1pk1eZ2JZjaynrQ== + version "1.2.244" + resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.244.tgz#d8ba46113c35f2e33dad6663ba8ce178542e24a3" + integrity sha512-/UguNMvKgVeR8wGFb53h+Y9hFSiEpeUhC4Cr1neN15wvWZD3lfvN4qAdqNifZiiPKXrCwYy8NTKlHVtHMYzpXw== optionalDependencies: - "@swc/core-android-arm-eabi" "1.2.223" - "@swc/core-android-arm64" "1.2.223" - "@swc/core-darwin-arm64" "1.2.223" - "@swc/core-darwin-x64" "1.2.223" - "@swc/core-freebsd-x64" "1.2.223" - "@swc/core-linux-arm-gnueabihf" "1.2.223" - "@swc/core-linux-arm64-gnu" "1.2.223" - "@swc/core-linux-arm64-musl" "1.2.223" - "@swc/core-linux-x64-gnu" "1.2.223" - "@swc/core-linux-x64-musl" "1.2.223" - "@swc/core-win32-arm64-msvc" "1.2.223" - "@swc/core-win32-ia32-msvc" "1.2.223" - "@swc/core-win32-x64-msvc" "1.2.223" + "@swc/core-android-arm-eabi" "1.2.244" + "@swc/core-android-arm64" "1.2.244" + "@swc/core-darwin-arm64" "1.2.244" + "@swc/core-darwin-x64" "1.2.244" + "@swc/core-freebsd-x64" "1.2.244" + "@swc/core-linux-arm-gnueabihf" "1.2.244" + "@swc/core-linux-arm64-gnu" "1.2.244" + "@swc/core-linux-arm64-musl" "1.2.244" + "@swc/core-linux-x64-gnu" "1.2.244" + "@swc/core-linux-x64-musl" "1.2.244" + "@swc/core-win32-arm64-msvc" "1.2.244" + "@swc/core-win32-ia32-msvc" "1.2.244" + "@swc/core-win32-x64-msvc" "1.2.244" "@swc/jest@^0.2.22": version "0.2.22" @@ -2108,10 +2118,10 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== -"@types/node@^14.6.2": - version "14.18.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.18.tgz#5c9503030df484ccffcbb935ea9a9e1d6fad1a20" - integrity sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig== +"@types/node@^16.11.26": + version "16.11.56" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.56.tgz#dcbb617669481e158e0f1c6204d1c768cd675901" + integrity sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A== "@types/node@^16.11.47": version "16.11.47" @@ -4182,7 +4192,7 @@ commander@^5.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -commander@^7.0.0: +commander@^7.0.0, commander@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -5947,7 +5957,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.2.11, fast-glob@^3.2.9: +fast-glob@^3.2.11, fast-glob@^3.2.5, fast-glob@^3.2.9: version "3.2.11" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== @@ -9416,19 +9426,13 @@ node-fetch-npm@^2.0.2: json-parse-better-errors "^1.0.0" safe-buffer "^5.1.1" -node-fetch@2.6.7: +node-fetch@2.6.7, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== dependencies: whatwg-url "^5.0.0" -node-fetch@lensapp/node-fetch#2.x: - version "2.6.6" - resolved "https://codeload.github.com/lensapp/node-fetch/tar.gz/c869d40ba7dd3bce392c34e36118c225b6ada8fb" - dependencies: - whatwg-url "^5.0.0" - node-forge@^0.10.0: version "0.10.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" @@ -11819,7 +11823,7 @@ sisteransi@^1.0.5: resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== -slash@^3.0.0: +slash@3.0.0, slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== @@ -12678,7 +12682,7 @@ tr46@^3.0.0: tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== tree-kill@^1.2.2: version "1.2.2" @@ -12930,10 +12934,10 @@ undefsafe@^2.0.5: resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -underscore@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" - integrity sha1-a7rwh3UA02vjTsqlhODbn+8DUgk= +underscore@1.7.0, underscore@^1.12.1: + version "1.13.4" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee" + integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ== underscore@^1.9.1: version "1.13.3" @@ -13253,7 +13257,7 @@ wcwidth@^1.0.0: webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== webidl-conversions@^5.0.0: version "5.0.0" @@ -13447,7 +13451,7 @@ whatwg-url@^11.0.0: whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0"