1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

Release/v6.0.2 alpha.0 (#6116)

* Fix create release PR to cherry-pick commits

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix create release PR to cherry-pick commits

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* release v6.0.2-alpha.0

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix Badges being too small when scrollable and not expandable (#5987)

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Remove Tabs hover line width transition (#6020)

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fix distribution detector erroneously depending on previous metadata (#6023)

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Override @astronautlabs/jsonpath's underscore version (#6044)

* Override @astronautlabs/jsonpath's underscore version

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Remove use of buggy 'yarn check'

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Don't error out if we can't find resources from helm in our cluster, and handle "blank" output from kubectl gracefully. (#6039)

* Use official node-fetch 2.x (#6049)

* Fix UI for scaling ReplicaSets (#6052)

* Use color-scheme: auto on all iframes (#6074)

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Use abort-controller package to fix typing issues (#6077)

* Use default export to fix issue with package lying with types (#6081)

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Switch ubuntu CI to ubuntu-20.04 (#6078)

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix <Select/> text overflow below baseline (#6085)

* Fix: do not crop <Select/> single value

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fix: do not crop namespace selector placeholder

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Align working dir input height with others

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Linter fix

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Prevent massed remounting of dock tabs when dock height changes (#6104)

* Update injectable to make withInjectables have authentic React reconciliation

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Make some dock tabs have primitive props to have them React reconcile properly

Currently tab objects that are stored in a storage change reference on every change of dock height, making them less usable as React prop for causing involuntary remounting.

Co-authored-by: Mikko Aspiala <mikko.aspiala@gmail.com>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>

* Fix node conditions column text-align (#6092)

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Make cluster #app component transparent (#6076)

until theme ready

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>

* Fix badge not expanding on click when appropriate (#6029)

* Fix badge not expanding on click when appropriate

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix snapshots

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fix snapshots

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Update other snapshots

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Remove unneccessary code

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Disable fail-fast on the testing CI jobs (#6080)

- There are several reasons why these might fail that are irrelavent to
  the other pipelines. So we should just let them continue

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>

Signed-off-by: Sebastian Malton <sebastian@malton.name>
Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
Co-authored-by: Alex Andreev <alex.andreev.email@gmail.com>
Co-authored-by: Michael Pearson <mipearson@gmail.com>
Co-authored-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
Co-authored-by: Carlos René Mederos Arias <krlosmederos@gmail.com>
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Sebastian Malton 2022-08-26 12:13:13 -07:00 committed by GitHub
parent 1c18272b74
commit 24e8861a1a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 303 additions and 203 deletions

View File

@ -11,8 +11,9 @@ jobs:
name: Test name: Test
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
strategy: strategy:
fail-fast: false
matrix: matrix:
os: [ubuntu-18.04, macos-11, windows-2019] os: [ubuntu-20.04, macos-11, windows-2019]
node-version: [16.x] node-version: [16.x]
steps: steps:
- name: Checkout Release from lens - name: Checkout Release from lens

View File

@ -17,8 +17,7 @@ else
endif endif
node_modules: yarn.lock node_modules: yarn.lock
yarn install --frozen-lockfile --network-timeout=100000 yarn install --check-files --frozen-lockfile --network-timeout=100000
yarn check --verify-tree --integrity
binaries/client: node_modules binaries/client: node_modules
yarn download:binaries yarn download:binaries

View File

@ -3,7 +3,7 @@
"productName": "OpenLens", "productName": "OpenLens",
"description": "OpenLens - Open Source IDE for Kubernetes", "description": "OpenLens - Open Source IDE for Kubernetes",
"homepage": "https://github.com/lensapp/lens", "homepage": "https://github.com/lensapp/lens",
"version": "6.0.1", "version": "6.0.2-alpha.0",
"main": "static/build/main.js", "main": "static/build/main.js",
"copyright": "© 2022 OpenLens Authors", "copyright": "© 2022 OpenLens Authors",
"license": "MIT", "license": "MIT",
@ -43,7 +43,9 @@
"version-checkout": "cat package.json | jq '.version' -r | xargs printf \"release/v%s\" | xargs git checkout -b", "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-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", "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": { "config": {
"k8sProxyVersion": "0.2.1", "k8sProxyVersion": "0.2.1",
@ -203,17 +205,20 @@
"role": "Viewer" "role": "Viewer"
} }
}, },
"resolutions": {
"@astronautlabs/jsonpath/underscore": "^1.12.1"
},
"dependencies": { "dependencies": {
"@astronautlabs/jsonpath": "^1.1.0", "@astronautlabs/jsonpath": "^1.1.0",
"@hapi/call": "^9.0.0", "@hapi/call": "^9.0.0",
"@hapi/subtext": "^7.0.4", "@hapi/subtext": "^7.0.4",
"@kubernetes/client-node": "^0.17.0", "@kubernetes/client-node": "^0.17.0",
"@material-ui/styles": "^4.11.5", "@material-ui/styles": "^4.11.5",
"@ogre-tools/fp": "9.0.1", "@ogre-tools/fp": "9.0.3",
"@ogre-tools/injectable": "9.0.1", "@ogre-tools/injectable": "9.0.3",
"@ogre-tools/injectable-extension-for-auto-registration": "9.0.1", "@ogre-tools/injectable-extension-for-auto-registration": "9.0.3",
"@ogre-tools/injectable-extension-for-mobx": "9.0.1", "@ogre-tools/injectable-extension-for-mobx": "9.0.3",
"@ogre-tools/injectable-react": "9.0.1", "@ogre-tools/injectable-react": "9.0.3",
"@sentry/electron": "^3.0.7", "@sentry/electron": "^3.0.7",
"@sentry/integrations": "^6.19.3", "@sentry/integrations": "^6.19.3",
"@side/jest-runtime": "^1.0.1", "@side/jest-runtime": "^1.0.1",
@ -253,7 +258,7 @@
"moment-timezone": "^0.5.34", "moment-timezone": "^0.5.34",
"monaco-editor": "^0.29.1", "monaco-editor": "^0.29.1",
"monaco-editor-webpack-plugin": "^5.0.0", "monaco-editor-webpack-plugin": "^5.0.0",
"node-fetch": "lensapp/node-fetch#2.x", "node-fetch": "^2.6.7",
"node-pty": "0.10.1", "node-pty": "0.10.1",
"npm": "^6.14.17", "npm": "^6.14.17",
"p-limit": "^3.1.0", "p-limit": "^3.1.0",
@ -291,6 +296,7 @@
"@material-ui/lab": "^4.0.0-alpha.60", "@material-ui/lab": "^4.0.0-alpha.60",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.7", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.7",
"@sentry/types": "^6.19.7", "@sentry/types": "^6.19.7",
"@swc/cli": "^0.1.57",
"@swc/core": "^1.2.223", "@swc/core": "^1.2.223",
"@swc/jest": "^0.2.22", "@swc/jest": "^0.2.22",
"@testing-library/dom": "^7.31.2", "@testing-library/dom": "^7.31.2",

2
scripts/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*.mjs
*.map

9
scripts/.swcrc Normal file
View File

@ -0,0 +1,9 @@
{
"$schema": "https://json.schemastore.org/swcrc",
"jsc": {
"parser": {
"syntax": "typescript"
},
"target": "es2022"
}
}

View File

@ -1,16 +1,14 @@
#!/usr/bin/env node
/** /**
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import child_process from "child_process";
// This script creates a release PR
import { execSync, exec, spawn } from "child_process";
import commandLineArgs from "command-line-args"; import commandLineArgs from "command-line-args";
import fse from "fs-extra"; import fse from "fs-extra";
import { basename } from "path"; import { basename } from "path";
import { createInterface } from "readline";
import semver from "semver"; import semver from "semver";
import { promisify } from "util"; import { inspect, promisify } from "util";
const { const {
SemVer, SemVer,
@ -18,8 +16,8 @@ const {
rcompare: semverRcompare, rcompare: semverRcompare,
lte: semverLte, lte: semverLte,
} = semver; } = semver;
const { readJsonSync } = fse; const exec = promisify(child_process.exec);
const execP = promisify(exec); const execFile = promisify(child_process.execFile);
const options = commandLineArgs([ 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(`current version: ${currentVersion.format()}`);
console.log("fetching tags..."); 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 const [previousReleasedVersion] = actualTags
.map(semverValid) .map((value) => semverValid(value))
.filter(Boolean) .filter((v): v is string => typeof v === "string")
.sort(semverRcompare) .sort((l, r) => semverRcompare(l, r))
.filter(version => semverLte(version, currentVersion)); .filter(version => semverLte(version, currentVersion));
const npmVersionArgs = [ const npmVersionArgs = [
@ -107,9 +105,9 @@ if (options.preid) {
npmVersionArgs.push("--git-tag-version false"); 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}`; const newVersionMilestone = `${newVersion.major}.${newVersion.minor}.${newVersion.patch}`;
console.log(`new version: ${newVersion.format()}`); 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 ;) "--limit=500", // Should be big enough, if not we need to release more often ;)
"--state=merged", "--state=merged",
"--base=master", "--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..."); 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 milestoneRelevantPrs = mergedPrs.filter(pr => pr.milestone?.title === newVersionMilestone);
const relaventPrsQuery = await Promise.all( const relaventPrsQuery = await Promise.all(
milestoneRelevantPrs.map(async pr => ({ milestoneRelevantPrs.map(async pr => ({
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 const relaventPrs = relaventPrsQuery
.filter(query => query.stdout) .filter(query => query.stdout)
.map(query => query.pr) .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 enhancementPrLabelName = "enhancement";
const bugfixPrLabelName = "bug"; const bugfixPrLabelName = "bug";
@ -199,19 +238,34 @@ const createPrArgs = [
"--body-file", "-", "--body-file", "-",
]; ];
const createPrProcess = spawn("gh", createPrArgs, { stdio: "pipe" }); const rl = createInterface(process.stdin);
let result = "";
createPrProcess.stdout.on("data", (chunk) => result += chunk); if (prBase !== "master") {
console.log("Cherry-picking commits to current branch");
createPrProcess.stdin.write(prBody); for (const pr of relaventPrs) {
createPrProcess.stdin.end(); try {
const promise = exec(`git cherry-pick ${pr.mergeCommit.oid}`);
await new Promise((resolve) => { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
createPrProcess.on("close", () => { promise.child.stdout!.pipe(process.stdout);
createPrProcess.stdout.removeAllListeners(); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
resolve(); 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<void>(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;

View File

@ -6,7 +6,6 @@
import { forRemoteCluster, KubeApi } from "../kube-api"; import { forRemoteCluster, KubeApi } from "../kube-api";
import { KubeJsonApi } from "../kube-json-api"; import { KubeJsonApi } from "../kube-json-api";
import { KubeObject } from "../kube-object"; import { KubeObject } from "../kube-object";
import AbortController from "abort-controller";
import { delay } from "../../utils/delay"; import { delay } from "../../utils/delay";
import { PassThrough } from "stream"; import { PassThrough } from "stream";
import { ApiManager } from "../api-manager"; import { ApiManager } from "../api-manager";
@ -15,6 +14,7 @@ import { DeploymentApi, Ingress, IngressApi, Pod, PodApi } from "../endpoints";
import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting"; import { getDiForUnitTesting } from "../../../renderer/getDiForUnitTesting";
import apiManagerInjectable from "../api-manager/manager.injectable"; import apiManagerInjectable from "../api-manager/manager.injectable";
import autoRegistrationInjectable from "../api-manager/auto-registration.injectable"; import autoRegistrationInjectable from "../api-manager/auto-registration.injectable";
import AbortController from "abort-controller";
jest.mock("../api-manager"); jest.mock("../api-manager");

View File

@ -19,7 +19,6 @@ import { KubeJsonApi } from "./kube-json-api";
import type { Disposer } from "../utils"; import type { Disposer } from "../utils";
import { isDefined, noop, WrappedAbortController } from "../utils"; import { isDefined, noop, WrappedAbortController } from "../utils";
import type { RequestInit } from "node-fetch"; import type { RequestInit } from "node-fetch";
import type AbortController from "abort-controller";
import type { AgentOptions } from "https"; import type { AgentOptions } from "https";
import { Agent } from "https"; import { Agent } from "https";
import type { Patch } from "rfc6902"; import type { Patch } from "rfc6902";
@ -28,6 +27,7 @@ import type { PartialDeep } from "type-fest";
import logger from "../logger"; import logger from "../logger";
import { Environments, getEnvironmentSpecificLegacyGlobalDiForExtensionApi } from "../../extensions/as-legacy-globals-for-extension-api/legacy-global-di-for-extension-api"; 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 autoRegistrationEmitterInjectable from "./api-manager/auto-registration-emitter.injectable";
import type AbortController from "abort-controller";
/** /**
* The options used for creating a `KubeApi` * The options used for creating a `KubeApi`

View File

@ -15,12 +15,12 @@ import { ItemStore } from "../item.store";
import type { KubeApiQueryParams, KubeApi, KubeApiWatchCallback } from "./kube-api"; import type { KubeApiQueryParams, KubeApi, KubeApiWatchCallback } from "./kube-api";
import { parseKubeApi } from "./kube-api-parse"; import { parseKubeApi } from "./kube-api-parse";
import type { RequestInit } from "node-fetch"; import type { RequestInit } from "node-fetch";
import AbortController from "abort-controller";
import type { Patch } from "rfc6902"; import type { Patch } from "rfc6902";
import logger from "../logger"; import logger from "../logger";
import assert from "assert"; import assert from "assert";
import type { PartialDeep } from "type-fest"; import type { PartialDeep } from "type-fest";
import { entries } from "../utils/objects"; import { entries } from "../utils/objects";
import AbortController from "abort-controller";
export type OnLoadFailure = (error: unknown) => void; export type OnLoadFailure = (error: unknown) => void;
@ -477,7 +477,8 @@ export abstract class KubeObjectStore<
callback, callback,
}); });
const { signal } = abortController; // TODO: upgrade node-fetch once we are starting to use ES modules
const signal = abortController.signal;
const callback: KubeApiWatchCallback<D> = (data, error) => { const callback: KubeApiWatchCallback<D> = (data, error) => {
if (!this.isLoaded || error?.type === "aborted") return; if (!this.isLoaded || error?.type === "aborted") return;

View File

@ -2,8 +2,13 @@
* Copyright (c) OpenLens Authors. All rights reserved. * Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information. * Licensed under MIT License. See LICENSE in root directory for more information.
*/ */
import AbortController from "abort-controller"; 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 { export class WrappedAbortController extends AbortController {
constructor(parent?: AbortController) { constructor(parent?: AbortController) {
super(); super();

View File

@ -3,7 +3,7 @@
* Licensed under MIT License. See LICENSE in root directory for more information. * 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 * Return a promise that will be resolved after at least `timeout` ms have

View File

@ -96,8 +96,6 @@ export class DistributionDetector extends BaseClusterDetector {
} }
public async getKubernetesVersion() { public async getKubernetesVersion() {
if (this.cluster.version) return this.cluster.version;
const response = await this.k8sRequest("/version"); const response = await this.k8sRequest("/version");
return response.gitVersion; return response.gitVersion;

View File

@ -194,6 +194,11 @@ async function getResources(name: string, namespace: string, kubeconfigPath: str
"--kubeconfig", kubeconfigPath, "--kubeconfig", kubeconfigPath,
"-f", "-", "-f", "-",
"--output", "json", "--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 { try {
@ -208,9 +213,13 @@ async function getResources(name: string, namespace: string, kubeconfigPath: str
.on("exit", (code, signal) => { .on("exit", (code, signal) => {
if (typeof code === "number") { if (typeof code === "number") {
if (code === 0) { if (code === 0) {
if (stdout === "") {
resolve([]);
} else {
const output = json.parse(stdout) as { items: JsonObject[] }; const output = json.parse(stdout) as { items: JsonObject[] };
resolve(output.items); resolve(output.items);
}
} else { } else {
reject(stderr); reject(stderr);
} }

View File

@ -20,6 +20,7 @@
padding-left: 8px; padding-left: 8px;
margin-right: -8px; margin-right: -8px;
padding-right: 8px; padding-right: 8px;
line-height: 1.1;
&::-webkit-scrollbar { &::-webkit-scrollbar {
display: none; display: none;

View File

@ -49,7 +49,6 @@
&.conditions { &.conditions {
flex: 1.7; flex: 1.7;
text-align: right;
.condition { .condition {
display: inline-block; display: inline-block;

View File

@ -104,7 +104,7 @@ class NonInjectedReplicaSetScaleDialog extends Component<ReplicaSetScaleDialogPr
<Wizard <Wizard
header={( header={(
<h5> <h5>
Scale Replica Set {"Scale Replica Set "}
<span>{replicaSet.getName()}</span> <span>{replicaSet.getName()}</span>
</h5> </h5>
)} )}
@ -131,16 +131,16 @@ class NonInjectedReplicaSetScaleDialog extends Component<ReplicaSetScaleDialogPr
/> />
</div> </div>
<div className="plus-minus-container flex gaps"> <div className="plus-minus-container flex gaps">
<Icon
material="add_circle_outline"
onClick={this.desiredReplicasUp}
data-testid="desired-replicas-up"
/>
<Icon <Icon
material="remove_circle_outline" material="remove_circle_outline"
onClick={this.desiredReplicasDown} onClick={this.desiredReplicasDown}
data-testid="desired-replicas-down" data-testid="desired-replicas-down"
/> />
<Icon
material="add_circle_outline"
onClick={this.desiredReplicasUp}
data-testid="desired-replicas-up"
/>
</div> </div>
</div> </div>
{warning && ( {warning && (

View File

@ -72,7 +72,6 @@ html, body {
body { body {
color: var(--textColorPrimary); color: var(--textColorPrimary);
background-color: var(--mainBackground);
font-size: var(--font-size); font-size: var(--font-size);
font-family: var(--font-main); font-family: var(--font-main);
} }
@ -89,6 +88,11 @@ body {
#app { #app {
height: 100%; height: 100%;
min-height: 100%; min-height: 100%;
background-color: var(--mainBackground);
&:empty {
background-color: transparent;
}
> * { > * {
height: inherit; height: inherit;
@ -180,6 +184,10 @@ a {
} }
} }
iframe {
color-scheme: auto; // Remove default white background on iframes
}
// colors // colors
.success { .success {
color: var(--colorSuccess); color: var(--colorSuccess);

View File

@ -25,7 +25,7 @@
cursor: pointer; cursor: pointer;
} }
.badge:not(.isExpanded) { .badge:not(.scrollable):not(.isExpanded) {
white-space: nowrap; white-space: nowrap;
overflow: hidden; overflow: hidden;
text-overflow: ellipsis; text-overflow: ellipsis;

View File

@ -5,7 +5,7 @@
import styles from "./badge.module.scss"; 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 { action, observable } from "mobx";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { cssNames } from "../../utils/cssNames"; import { cssNames } from "../../utils/cssNames";
@ -40,12 +40,15 @@ export const Badge = withTooltip(observer(({
children, children,
...elemProps ...elemProps
}: BadgeProps) => { }: BadgeProps) => {
const elem = createRef<HTMLDivElement>(); const elem = useRef<HTMLDivElement>(null);
const [isExpanded, setIsExpanded] = useState(false); const [isExpanded, setIsExpanded] = useState(false);
const [isExpandable, setIsExpandable] = useState(false);
const isExpandable = expandable && elem.current useEffect(() => {
? elem.current.clientWidth < elem.current.scrollWidth const { clientWidth = 0, scrollWidth = 0 } = elem.current ?? {};
: false;
setIsExpandable(expandable && (clientWidth < scrollWidth));
}, [expandable, elem.current]);
const onMouseUp = action(() => { const onMouseUp = action(() => {
if (!isExpandable || badgeMeta.hasTextSelected) { if (!isExpandable || badgeMeta.hasTextSelected) {

View File

@ -166,6 +166,8 @@ export const ClusterLocalTerminalSetting = observer(({ cluster }: ClusterLocalTe
material="close" material="close"
title="Clear" title="Clear"
onClick={() => setAndCommitDirectory("")} onClick={() => setAndCommitDirectory("")}
smallest
style={{ marginRight: "var(--margin)" }}
/> />
) )
} }
@ -173,6 +175,7 @@ export const ClusterLocalTerminalSetting = observer(({ cluster }: ClusterLocalTe
material="folder" material="folder"
title="Pick from filesystem" title="Pick from filesystem"
onClick={openFilePicker} onClick={openFilePicker}
smallest
/> />
</> </>
)} )}

View File

@ -11,7 +11,6 @@ import type { IComputedValue } from "mobx";
import { makeObservable, observable } from "mobx"; import { makeObservable, observable } from "mobx";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { CreateResourceTabStore } from "./store"; import type { CreateResourceTabStore } from "./store";
import type { DockTab } from "../dock/store";
import { EditorPanel } from "../editor-panel"; import { EditorPanel } from "../editor-panel";
import { InfoPanel } from "../info-panel"; import { InfoPanel } from "../info-panel";
import * as resourceApplierApi from "../../../../common/k8s-api/endpoints/resource-applier.api"; 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"; import navigateInjectable from "../../../navigation/navigate.injectable";
export interface CreateResourceProps { export interface CreateResourceProps {
tab: DockTab; tabId: string;
} }
interface Dependencies { interface Dependencies {
@ -52,7 +51,7 @@ class NonInjectedCreateResource extends React.Component<CreateResourceProps & De
} }
get tabId() { get tabId() {
return this.props.tab.id; return this.props.tabId;
} }
get data() { get data() {

View File

@ -104,11 +104,11 @@ class NonInjectedDock extends React.Component<DockProps & Dependencies> {
renderTab(tab: DockTab) { renderTab(tab: DockTab) {
switch (tab.kind) { switch (tab.kind) {
case TabKind.CREATE_RESOURCE: case TabKind.CREATE_RESOURCE:
return <CreateResource tab={tab} />; return <CreateResource tabId={tab.id} />;
case TabKind.EDIT_RESOURCE: case TabKind.EDIT_RESOURCE:
return <EditResource tab={tab} />; return <EditResource tabId={tab.id} />;
case TabKind.INSTALL_CHART: case TabKind.INSTALL_CHART:
return <InstallChart tab={tab} />; return <InstallChart tabId={tab.id} />;
case TabKind.UPGRADE_CHART: case TabKind.UPGRADE_CHART:
return <UpgradeChart tab={tab} />; return <UpgradeChart tab={tab} />;
case TabKind.POD_LOGS: case TabKind.POD_LOGS:

View File

@ -5,7 +5,6 @@
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { DockTab } from "../dock/store";
import { Spinner } from "../../spinner"; import { Spinner } from "../../spinner";
import { withInjectables } from "@ogre-tools/injectable-react"; import { withInjectables } from "@ogre-tools/injectable-react";
import type { EditResourceModel } from "./edit-resource-model/edit-resource-model.injectable"; import type { EditResourceModel } from "./edit-resource-model/edit-resource-model.injectable";
@ -16,7 +15,7 @@ import { Badge } from "../../badge";
import { Notice } from "../../+extensions/notice"; import { Notice } from "../../+extensions/notice";
export interface EditResourceProps { export interface EditResourceProps {
tab: DockTab; tabId: string;
} }
interface Dependencies { interface Dependencies {
@ -24,7 +23,7 @@ interface Dependencies {
} }
const NonInjectedEditResource = observer( const NonInjectedEditResource = observer(
({ model, tab: { id: tabId }}: EditResourceProps & Dependencies) => { ({ model, tabId }: EditResourceProps & Dependencies) => {
return ( return (
<div className="EditResource flex column"> <div className="EditResource flex column">
{model.shouldShowErrorAboutNoResource && ( {model.shouldShowErrorAboutNoResource && (
@ -78,7 +77,7 @@ export const EditResource = withInjectables<Dependencies, EditResourceProps>(
), ),
getProps: async (di, props) => ({ getProps: async (di, props) => ({
model: await di.inject(editResourceModelInjectable, props.tab.id), model: await di.inject(editResourceModelInjectable, props.tabId),
...props, ...props,
}), }),
}, },

View File

@ -7,7 +7,6 @@ import "./install-chart.scss";
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import type { DockTab } from "../dock/store";
import { InfoPanel } from "../info-panel"; import { InfoPanel } from "../info-panel";
import { Badge } from "../../badge"; import { Badge } from "../../badge";
import { NamespaceSelect } from "../../+namespaces/namespace-select"; 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 installChartModelInjectable from "./install-chart-model.injectable";
import { Spinner } from "../../spinner"; import { Spinner } from "../../spinner";
export interface InstallCharProps { export interface InstallChartProps {
tab: DockTab; tabId: string;
} }
interface Dependencies { interface Dependencies {
@ -32,7 +31,7 @@ interface Dependencies {
} }
const NonInjectedInstallChart = observer( const NonInjectedInstallChart = observer(
({ model: model, tab: { id: tabId }}: InstallCharProps & Dependencies) => { ({ model: model, tabId }: InstallChartProps & Dependencies) => {
const installed = model.installed.get(); const installed = model.installed.get();
if (installed) { if (installed) {
@ -144,7 +143,7 @@ const NonInjectedInstallChart = observer(
}, },
); );
export const InstallChart = withInjectables<Dependencies, InstallCharProps>( export const InstallChart = withInjectables<Dependencies, InstallChartProps>(
NonInjectedInstallChart, NonInjectedInstallChart,
{ {
@ -156,7 +155,7 @@ export const InstallChart = withInjectables<Dependencies, InstallCharProps>(
), ),
getProps: async (di, props) => ({ getProps: async (di, props) => ({
model: await di.inject(installChartModelInjectable, props.tab.id), model: await di.inject(installChartModelInjectable, props.tabId),
...props, ...props,
}), }),
}, },

View File

@ -49,6 +49,7 @@ html {
&__single-value { &__single-value {
color: var(--textColorSecondary); color: var(--textColorSecondary);
overflow: visible;
} }
&__indicator { &__indicator {

View File

@ -54,11 +54,10 @@
position: absolute; position: absolute;
right: 0; right: 0;
bottom: 0; bottom: 0;
width: 0; height: 3px;
height: $unit * 0.5; transition: opacity 150ms;
transition: width 150ms;
background: currentColor; background: currentColor;
color: var(--halfGray) opacity: 0;
} }
&:focus { &:focus {
@ -76,6 +75,7 @@
left: 0; left: 0;
right: auto; right: auto;
color: var(--line-color-active); color: var(--line-color-active);
opacity: 1;
} }
} }
} }

View File

@ -5,11 +5,11 @@
import { comparer, reaction } from "mobx"; import { comparer, reaction } from "mobx";
import type { Disposer } from "../../common/utils"; import type { Disposer } from "../../common/utils";
import { disposer, getOrInsert, noop, WrappedAbortController } from "../../common/utils"; import { disposer, getOrInsert, noop, WrappedAbortController } from "../../common/utils";
import AbortController from "abort-controller";
import { once } from "lodash"; import { once } from "lodash";
import type { ClusterFrameContext } from "../cluster-frame-context/cluster-frame-context"; import type { ClusterFrameContext } from "../cluster-frame-context/cluster-frame-context";
import logger from "../../common/logger"; import logger from "../../common/logger";
import type { KubeObjectStoreLoadAllParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store"; import type { KubeObjectStoreLoadAllParams, KubeObjectStoreSubscribeParams } from "../../common/k8s-api/kube-object.store";
import AbortController from "abort-controller";
// Kubernetes watch-api client // Kubernetes watch-api client
// API: https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams // API: https://developer.mozilla.org/en-US/docs/Web/API/Streams_API/Using_readable_streams

238
yarn.lock
View File

@ -481,7 +481,7 @@
resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
"@electron/get@^1.13.0": "@electron/get@^1.14.1":
version "1.14.1" version "1.14.1"
resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" resolved "https://registry.yarnpkg.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40"
integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==
@ -1225,46 +1225,46 @@
mkdirp "^1.0.4" mkdirp "^1.0.4"
rimraf "^3.0.2" rimraf "^3.0.2"
"@ogre-tools/fp@9.0.1", "@ogre-tools/fp@^9.0.1": "@ogre-tools/fp@9.0.3", "@ogre-tools/fp@^9.0.3":
version "9.0.1" version "9.0.3"
resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-9.0.1.tgz#22c23bd209f6f56bf66a5ff4514930334a3a4782" resolved "https://registry.yarnpkg.com/@ogre-tools/fp/-/fp-9.0.3.tgz#f8c9a3316b688c4782309e050c86aa04bebfc293"
integrity sha512-7kORUcvR9DZz5/2qDSSKExGeisXzfmOafP+Z6l8C+WQXEmEQm7CmFMyBEyMkei0eNFzNghlKYgRFpsvBdU3KAg== integrity sha512-j5TQAxiz6ncEfYFBcqnWXeLZY89Qd+dZ9UlfonBdw/C9okxjNeFL+2bmt+b/Vxscz1cOLGZ1F6nmlhQdTtHzPw==
dependencies: dependencies:
lodash "^4.17.21" lodash "^4.17.21"
"@ogre-tools/injectable-extension-for-auto-registration@9.0.1": "@ogre-tools/injectable-extension-for-auto-registration@9.0.3":
version "9.0.1" version "9.0.3"
resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-9.0.1.tgz#e00dff5bd833068faa58d8fa514b218515c55775" resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-9.0.3.tgz#a26d2a39e24ec3a0800fe21141c0f4f0e7d5504d"
integrity sha512-reyhW2wWPrNnGXo88QKWUsLyhjF195i0/iXfdAoR8/4lRxWmzka58bc8r6jFvTBBJ6eXaGidhUa5DqZe+Oia2Q== integrity sha512-0zjt4w1ACBX9a3FyhTD+/AAqk/xov2bw+Cnbte7NMOVWAbHDfQpmbdiKJlMnFcMUd8vdwOEMm1Z4ogT1VkUeqg==
dependencies: dependencies:
"@ogre-tools/fp" "^9.0.1" "@ogre-tools/fp" "^9.0.3"
"@ogre-tools/injectable" "^9.0.1" "@ogre-tools/injectable" "^9.0.3"
lodash "^4.17.21" lodash "^4.17.21"
"@ogre-tools/injectable-extension-for-mobx@9.0.1": "@ogre-tools/injectable-extension-for-mobx@9.0.3":
version "9.0.1" version "9.0.3"
resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-9.0.1.tgz#3d9e6e119b7db5a4e4309e89ba6b301635c8da90" resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-9.0.3.tgz#24a14b940f51cae8b07645a2376d804b826c659e"
integrity sha512-wNHIG73NTGfmRb0b2nNhJD9ek4RcyBp/189KfrXhTt6/5KwMEuOeJjAbh8xwbhpYJnWFcMzWKLTqePozc+Ntww== integrity sha512-DgCbAIqMPKgeNETY/8nxz6llAk8fAihGcbs/fkKINe4N9zFgOBKsuk/w67Sx0rTE7l35L6HQenbo7nJhIqbCWA==
dependencies: dependencies:
"@ogre-tools/fp" "^9.0.1" "@ogre-tools/fp" "^9.0.3"
"@ogre-tools/injectable" "^9.0.1" "@ogre-tools/injectable" "^9.0.3"
lodash "^4.17.21" lodash "^4.17.21"
"@ogre-tools/injectable-react@9.0.1": "@ogre-tools/injectable-react@9.0.3":
version "9.0.1" version "9.0.3"
resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-9.0.1.tgz#d72a155b914873f1a5e35ee167aa14dd7c0e7454" resolved "https://registry.yarnpkg.com/@ogre-tools/injectable-react/-/injectable-react-9.0.3.tgz#bc125ef906b171c8894f711f8b61f38d49e81dd0"
integrity sha512-GjkhhONy4hamw5Mx79ZxhL3Pbgnfnf1mrkixDkqlXFzhdPBHDtCYIZu9Y6NjSRLgEwXTrAPYv9lDqREnRbUwLA== integrity sha512-6O9vr19Mcy0uUekZhRyjsM5nw8pgFXhbNvZ8JOnBQg6Lp1CqdasIFhJ0Hdxb8w8P9Zs+pd8pfevRVotq0ouV2Q==
dependencies: dependencies:
"@ogre-tools/fp" "^9.0.1" "@ogre-tools/fp" "^9.0.3"
"@ogre-tools/injectable" "^9.0.1" "@ogre-tools/injectable" "^9.0.3"
lodash "^4.17.21" lodash "^4.17.21"
"@ogre-tools/injectable@9.0.1", "@ogre-tools/injectable@^9.0.1": "@ogre-tools/injectable@9.0.3", "@ogre-tools/injectable@^9.0.3":
version "9.0.1" version "9.0.3"
resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-9.0.1.tgz#611a2dd8468bfe3610f005178837d76071a44a70" resolved "https://registry.yarnpkg.com/@ogre-tools/injectable/-/injectable-9.0.3.tgz#6d9e01a5be7e7c96e7bcbc727f928faad5e11884"
integrity sha512-orcERUOeUEP2oBAcr9rKYbik+r/xJEIb5uedPMMqPzPJnNwZ9JA/1rDEJcx1/I9aHgjUQpeFANjYI4eYDcwEYQ== integrity sha512-KCmqcMEl/1Jjwg6XzNve+JVaW/OtiJUOKBucTJx2ZKBlAQaKz1/VUP7IB4UoQ4RWVa0+mUKLTxBTQFBQfp05RA==
dependencies: dependencies:
"@ogre-tools/fp" "^9.0.1" "@ogre-tools/fp" "^9.0.3"
lodash "^4.17.21" lodash "^4.17.21"
"@pmmmwh/react-refresh-webpack-plugin@^0.5.7": "@pmmmwh/react-refresh-webpack-plugin@^0.5.7":
@ -1435,101 +1435,111 @@
dependencies: dependencies:
"@sinonjs/commons" "^1.7.0" "@sinonjs/commons" "^1.7.0"
"@swc/core-android-arm-eabi@1.2.223": "@swc/cli@^0.1.57":
version "1.2.223" version "0.1.57"
resolved "https://registry.yarnpkg.com/@swc/core-android-arm-eabi/-/core-android-arm-eabi-1.2.223.tgz#5d5ae572c90eb2e19f46c1ef56aab2e3fa7101fe" resolved "https://registry.yarnpkg.com/@swc/cli/-/cli-0.1.57.tgz#a9c424de5a217ec20a4b7c2c0e5c343980537e83"
integrity sha512-Hy/ya4oy80Ay70H9vhA8W0/FU9aQ/oQjvZ/on+wcNMATAiU9tk47i73LtPM01GruNiYJOwFcf2XWjlTpq5a0BQ== 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: dependencies:
"@swc/wasm" "1.2.122" "@swc/wasm" "1.2.122"
"@swc/core-android-arm64@1.2.223": "@swc/core-android-arm64@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.223.tgz#13c1751f9af36525adbb420098a4c74765afa7c4" resolved "https://registry.yarnpkg.com/@swc/core-android-arm64/-/core-android-arm64-1.2.244.tgz#92d6cc1829d621fa1aa88d84d30a85112a82d148"
integrity sha512-qujrIXDBMWcPcdtTG/r+RNVBU5rg2Sk9Vg+U4FybX3c34rIyX2QYu5sxwM/HIGfd6wCbt5lyFZOvgSY000MTNw== integrity sha512-CJeL/EeOIzrH+77otNT6wfGF8uadOHo4rEaBN/xvmtnpdADjYJ8Wt85X4nRK0G929bMke/QdJm5ilPNJdmgCTg==
dependencies: dependencies:
"@swc/wasm" "1.2.130" "@swc/wasm" "1.2.130"
"@swc/core-darwin-arm64@1.2.223": "@swc/core-darwin-arm64@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.223.tgz#44ee2d1fbf9350c6aeda1983a384514272a9b2b7" resolved "https://registry.yarnpkg.com/@swc/core-darwin-arm64/-/core-darwin-arm64-1.2.244.tgz#7e068d14c357771f7ca23d7e1941e8bd577d2b5f"
integrity sha512-CX32sRhAnFj3fJI6V4vdu5IUV5frEZNZM6hIPUs1UuVpxyuto9IZwd2y7/ACItB5RipA3VDL/c7jrFdSmfrgzg== integrity sha512-ZhRK8L/lpPCerUxtrW48cRJtpsUG5xVTUXu3N0TrYuxRzzapHgK+61g1JdtcwdNvEV7l00X4vfCBRYO0S2nsmw==
"@swc/core-darwin-x64@1.2.223": "@swc/core-darwin-x64@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.223.tgz#a157820e158d22c9b443821d15258bc58978e154" resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.2.244.tgz#bdf3c8150a3e18c392f3d30749a24f71bbd381cd"
integrity sha512-5FVQgWtqMmpOtky0JLTIF4a1WiAkuDOe5mwgzpi8nZ7nCxNo/DNThBbnIDlNhrR4M/1M6wzPshn1wNivvD7MQw== integrity sha512-4mY8Gkq2ZMUpXYCLceGp7w0Jnxp75N1gQswNFhMBU4k90ElDuBtPoUSnB1v8MwlQtK7WA25MdvwFnBaEJnfxOg==
"@swc/core-freebsd-x64@1.2.223": "@swc/core-freebsd-x64@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.223.tgz#ec9b300860f378aeb183084d89ba65009910d9f9" resolved "https://registry.yarnpkg.com/@swc/core-freebsd-x64/-/core-freebsd-x64-1.2.244.tgz#0941dd18745cc19ed35bc8b5f4c06f62fe91240d"
integrity sha512-5oumS+YZyOMMKc5D3Bvf/541SF8n4b8LQ5x4WFA2CdAzD/jCgphE0IoAZ0u3bHz9S6Tl6Emu11V+/ALHE1oUew== integrity sha512-k/NEZfkgtZ4S96woYArZ89jwJ/L1zyxihTgFFu7SxDt+WRE1EPmY42Gt4y874zi1JiSEFSRHiiueDUfRPu7C0Q==
dependencies: dependencies:
"@swc/wasm" "1.2.130" "@swc/wasm" "1.2.130"
"@swc/core-linux-arm-gnueabihf@1.2.223": "@swc/core-linux-arm-gnueabihf@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.223.tgz#3403de3c9402e1eeca68b1c134ea574739c7c49c" resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.2.244.tgz#e60536c2c7e858940138366d9438d33c80a119e3"
integrity sha512-osYjVijq101xZjwPUKR6AUib1LZU9laaM3aEOyElAi8cHolsZEp8D9ynr7cSWFUZJuzpTlY7iuJeY3FszdWrJA== integrity sha512-tE9b/oZWhMXwoXHkgHFckMrLrlczvG7HgQAdtDuA6g30Xd/3XmdVzC4NbXR+1HoaGVDh7cf0EFE3aKdfPvPQwA==
dependencies: dependencies:
"@swc/wasm" "1.2.130" "@swc/wasm" "1.2.130"
"@swc/core-linux-arm64-gnu@1.2.223": "@swc/core-linux-arm64-gnu@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.223.tgz#d0a2d5dd01c5744950e57ec59aa4696bbabf02e4" resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.2.244.tgz#daa61051c971c30dd3bb5414be98ca7392b08c06"
integrity sha512-JZdPZIZzkJ6R+XB0lCnL0eD9VK/JfpZgKBqR3Gur9Fxs8Ea9p1HhZHSEAJ2T2YwV629dYjXwKqraOkLQrEMzCg== integrity sha512-zrpVKUeQxZnzorOp3aXhjK1X2/6xuVZcdyxAUDzItP6G4nLbgPBEQLUi6aUjOjquFiihokXoKWaMPQjF/LqH+g==
"@swc/core-linux-arm64-musl@1.2.223": "@swc/core-linux-arm64-musl@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.223.tgz#667bd6583f93909736600acdd9d5cc4c6141d577" resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.2.244.tgz#177ea7e8ba74309c2a08e165f147e63b7420a5d8"
integrity sha512-9BVDH5Cq+VlAuJrshCgxWgziLEGzShZ2OVZ7SEA/+md1y69x2VdMR9lMSfD/EXqb6AJAaFODRe20Irtppeqr2Q== integrity sha512-gI6bntk+HDe2witOsQgBDyDDpRmF5dfxbygvVsEdCI+Ko9yj5S9aCsc8WhhbtdcEG1Fo3v/sM/F/9pGatCAwzQ==
"@swc/core-linux-x64-gnu@1.2.223": "@swc/core-linux-x64-gnu@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.223.tgz#c29788110fe1aa7fb86332178dcd1606368fd2c2" resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.2.244.tgz#c4f00359567fdb25ab5616bf000168f4fcf30534"
integrity sha512-Z+KAxSpUDNEPfjOKX/tZk67StvzIyAhTc5FPWoVhx5CBlkGQaDBRl1TNmb1wdne/WF9xVkx6wz22pvNevX5fig== integrity sha512-hwJ5HrDj7asmVGjzaT6SFdhPVxVUIYm9LCuE3yu89+6C5aR9YrCXvpgIjGcHJvEO2PLAtff72FsX7sbXbzzYGQ==
"@swc/core-linux-x64-musl@1.2.223": "@swc/core-linux-x64-musl@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.223.tgz#24b7001530d4e09d7bae58c704ac79a6593bb9c1" resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.2.244.tgz#f4d07fbd6c73f54dfa351caf8263a81245882a1f"
integrity sha512-3EkAOA0KQdm7Rw/0L5odtDKAtmzhgF7FKTL+zZb+s0ju5oMwFGN+XIIwUQdPSf11Ej3ezjHjHTFTlv0xqutfuA== integrity sha512-P8d4AIVN63xaS3t5WhOo0Ejy/X7XaDxXe9sJpEbGQP7CGofhURvgXwe8Q6uhPeWC9AwEPu35ArFQ0ZUmOCY0rg==
"@swc/core-win32-arm64-msvc@1.2.223": "@swc/core-win32-arm64-msvc@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.223.tgz#8902c20d3d7ed2c9741ff0e227581d26ce8e0497" resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.2.244.tgz#38167a47c1cd8c73d0621a14d46b7982d1d314ff"
integrity sha512-n8LWkej30hvfvazrJgwS6kwBZXMFCevLiRsZmP8O4hpC9b1wfAa+KLm4nHOR+J8jwF7LEjiERdU6tbIWZz0Tnw== integrity sha512-PZUhgooqPDo+NUo+tIxWI1jKnYVV2ACs8eUkSE++Qf7E4/9Igy79XHbG4/G5ERlCudhdcw4XkYiRN8GJQg6P5w==
dependencies: dependencies:
"@swc/wasm" "1.2.130" "@swc/wasm" "1.2.130"
"@swc/core-win32-ia32-msvc@1.2.223": "@swc/core-win32-ia32-msvc@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.223.tgz#591405f9fa07915e9d0b94a4174a5745621fe580" resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.2.244.tgz#7d6cb0ab95358dc56bd92ca85ac06687a732fa51"
integrity sha512-kEDGFFUC6xPqCom03QtR+76Ptwtf8RABI4FqRdvrvbasw9zj0xkuLSDCvqL72zdOZCWRciiFijQVHfndLByMAQ== integrity sha512-w7v8fND4E8wOHoVVNJIDjOh8EQiedI9HCsCTEDM/z/dVPsk/rxi6iHYnZG6gv+X/d0aCLeZQOkW9khfyy128cg==
dependencies: dependencies:
"@swc/wasm" "1.2.130" "@swc/wasm" "1.2.130"
"@swc/core-win32-x64-msvc@1.2.223": "@swc/core-win32-x64-msvc@1.2.244":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.223.tgz#7a4549cedb7c0e7a3d4861c2b5230224194e0f04" resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.2.244.tgz#fed9dd48b3ac1269c7dc62e23fa875ec3f2356b4"
integrity sha512-nzL8rwzMFA9cBK2s+QBMPcNnoGSPMfgY9ypRw/nTp0hQDgdLOXHy9moGFJg8dbdQD39kC5s8yQ0BmyKvePILgg== integrity sha512-/A9ssLtqXEQrdHnJ9SvZSBF7zQM/0ydz8B3p5BT9kUbAhmNqbfE4/Wy3d2zd7nrF16n6tRm4giCzcIdzd/7mvw==
"@swc/core@^1.2.223": "@swc/core@^1.2.223":
version "1.2.223" version "1.2.244"
resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.223.tgz#e44a3f6971a1f5c22d1037cf60510ef32c93d2a5" resolved "https://registry.yarnpkg.com/@swc/core/-/core-1.2.244.tgz#d8ba46113c35f2e33dad6663ba8ce178542e24a3"
integrity sha512-LcKX1frJ1iJDSYlY9Bg0vm0rYsXloITh6PdEYM5amT73J9mC1c2YpWLnWQiH2QpcyblyMhX1pk1eZ2JZjaynrQ== integrity sha512-/UguNMvKgVeR8wGFb53h+Y9hFSiEpeUhC4Cr1neN15wvWZD3lfvN4qAdqNifZiiPKXrCwYy8NTKlHVtHMYzpXw==
optionalDependencies: optionalDependencies:
"@swc/core-android-arm-eabi" "1.2.223" "@swc/core-android-arm-eabi" "1.2.244"
"@swc/core-android-arm64" "1.2.223" "@swc/core-android-arm64" "1.2.244"
"@swc/core-darwin-arm64" "1.2.223" "@swc/core-darwin-arm64" "1.2.244"
"@swc/core-darwin-x64" "1.2.223" "@swc/core-darwin-x64" "1.2.244"
"@swc/core-freebsd-x64" "1.2.223" "@swc/core-freebsd-x64" "1.2.244"
"@swc/core-linux-arm-gnueabihf" "1.2.223" "@swc/core-linux-arm-gnueabihf" "1.2.244"
"@swc/core-linux-arm64-gnu" "1.2.223" "@swc/core-linux-arm64-gnu" "1.2.244"
"@swc/core-linux-arm64-musl" "1.2.223" "@swc/core-linux-arm64-musl" "1.2.244"
"@swc/core-linux-x64-gnu" "1.2.223" "@swc/core-linux-x64-gnu" "1.2.244"
"@swc/core-linux-x64-musl" "1.2.223" "@swc/core-linux-x64-musl" "1.2.244"
"@swc/core-win32-arm64-msvc" "1.2.223" "@swc/core-win32-arm64-msvc" "1.2.244"
"@swc/core-win32-ia32-msvc" "1.2.223" "@swc/core-win32-ia32-msvc" "1.2.244"
"@swc/core-win32-x64-msvc" "1.2.223" "@swc/core-win32-x64-msvc" "1.2.244"
"@swc/jest@^0.2.22": "@swc/jest@^0.2.22":
version "0.2.22" version "0.2.22"
@ -2108,10 +2118,10 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b"
integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==
"@types/node@^14.6.2": "@types/node@^16.11.26":
version "14.18.18" version "16.11.56"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.18.tgz#5c9503030df484ccffcbb935ea9a9e1d6fad1a20" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.56.tgz#dcbb617669481e158e0f1c6204d1c768cd675901"
integrity sha512-B9EoJFjhqcQ9OmQrNorItO+OwEOORNn3S31WuiHvZY/dm9ajkB7AKD/8toessEtHHNL+58jofbq7hMMY9v4yig== integrity sha512-aFcUkv7EddxxOa/9f74DINReQ/celqH8DiB3fRYgVDM2Xm5QJL8sl80QKuAnGvwAsMn+H3IFA6WCrQh1CY7m1A==
"@types/node@^16.11.47": "@types/node@^16.11.47":
version "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" resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae"
integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==
commander@^7.0.0: commander@^7.0.0, commander@^7.1.0:
version "7.2.0" version "7.2.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 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" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 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" version "3.2.11"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9"
integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==
@ -9416,19 +9426,13 @@ node-fetch-npm@^2.0.2:
json-parse-better-errors "^1.0.0" json-parse-better-errors "^1.0.0"
safe-buffer "^5.1.1" safe-buffer "^5.1.1"
node-fetch@2.6.7: node-fetch@2.6.7, node-fetch@^2.6.7:
version "2.6.7" version "2.6.7"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
dependencies: dependencies:
whatwg-url "^5.0.0" 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: node-forge@^0.10.0:
version "0.10.0" version "0.10.0"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" 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" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
slash@^3.0.0: slash@3.0.0, slash@^3.0.0:
version "3.0.0" version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
@ -12678,7 +12682,7 @@ tr46@^3.0.0:
tr46@~0.0.3: tr46@~0.0.3:
version "0.0.3" version "0.0.3"
resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
tree-kill@^1.2.2: tree-kill@^1.2.2:
version "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" resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
underscore@1.7.0: underscore@1.7.0, underscore@^1.12.1:
version "1.7.0" version "1.13.4"
resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.7.0.tgz#6bbaf0877500d36be34ecaa584e0db9fef035209" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.4.tgz#7886b46bbdf07f768e0052f1828e1dcab40c0dee"
integrity sha1-a7rwh3UA02vjTsqlhODbn+8DUgk= integrity sha512-BQFnUDuAQ4Yf/cYY5LNrK9NCJFKriaRbD9uR1fTeXnBeoa97W0i41qkZfGO9pSo8I5KzjAcSY2XYtdf0oKd7KQ==
underscore@^1.9.1: underscore@^1.9.1:
version "1.13.3" version "1.13.3"
@ -13253,7 +13257,7 @@ wcwidth@^1.0.0:
webidl-conversions@^3.0.0: webidl-conversions@^3.0.0:
version "3.0.1" version "3.0.1"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" 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: webidl-conversions@^5.0.0:
version "5.0.0" version "5.0.0"
@ -13447,7 +13451,7 @@ whatwg-url@^11.0.0:
whatwg-url@^5.0.0: whatwg-url@^5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
dependencies: dependencies:
tr46 "~0.0.3" tr46 "~0.0.3"
webidl-conversions "^3.0.0" webidl-conversions "^3.0.0"