diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1bbcb3366e..eb2278097d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -67,6 +67,10 @@ jobs: - run: make test-extensions name: Run In-tree Extension tests + - run: make ci-validate-dev + if: ${{ contains(github.event.pull_request.labels.*.name, 'dependencies') }} + name: Validate dev mode will work + - name: Install integration test dependencies id: minikube uses: medyagh/setup-minikube@5a9a7104d7322fa40424de8855c84685e89cefd7 diff --git a/Makefile b/Makefile index 1435ab5004..6db96fbc2b 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,9 @@ compile-dev: node_modules yarn compile:main --cache yarn compile:renderer --cache +.PHONY: validate-dev +ci-validate-dev: binaries/client build-extensions compile-dev + .PHONY: dev dev: binaries/client build-extensions rm -rf static/build/ diff --git a/integration/__tests__/cluster-pages.tests.ts b/integration/__tests__/cluster-pages.tests.ts index 72efd5b99d..de1a8fa60b 100644 --- a/integration/__tests__/cluster-pages.tests.ts +++ b/integration/__tests__/cluster-pages.tests.ts @@ -183,9 +183,7 @@ utils.describeIf(minikubeReady(TEST_NAMESPACE))("Minikube based tests", () => { } const testPodName = "nginx-create-pod-test"; - const monacoEditor = await frame.waitForSelector( - `.Dock.isOpen [data-test-component="monaco-editor"]`, - ); + const monacoEditor = await frame.waitForSelector(`.Dock.isOpen [data-test-id="monaco-editor"]`); await monacoEditor.click(); await monacoEditor.type("apiVersion: v1", { delay: 10 }); diff --git a/package.json b/package.json index 601ca71866..01583e195f 100644 --- a/package.json +++ b/package.json @@ -17,11 +17,11 @@ "debug-build": "concurrently yarn:compile:main yarn:compile:extension-types", "dev-run": "nodemon --watch ./static/build/main.js --exec \"electron --remote-debugging-port=9223 --inspect .\"", "dev:main": "yarn run compile:main --watch --progress", - "dev:renderer": "yarn run ts-node webpack.dev-server.ts", + "dev:renderer": "yarn run ts-node webpack/dev-server.ts", "compile": "env NODE_ENV=production concurrently yarn:compile:*", - "compile:main": "yarn run webpack --config webpack.main.ts", - "compile:renderer": "yarn run webpack --config webpack.renderer.ts", - "compile:extension-types": "yarn run webpack --config webpack.extensions.ts", + "compile:main": "yarn run webpack --config webpack/main.ts", + "compile:renderer": "yarn run webpack --config webpack/renderer.ts", + "compile:extension-types": "yarn run webpack --config webpack/extensions.ts", "npm:fix-build-version": "yarn run ts-node build/set_build_version.ts", "npm:fix-package-version": "yarn run ts-node build/set_npm_version.ts", "build:linux": "yarn run compile && electron-builder --linux --dir", @@ -199,6 +199,7 @@ } }, "dependencies": { + "@astronautlabs/jsonpath": "^1.1.0", "@hapi/call": "^8.0.1", "@hapi/subtext": "^7.0.3", "@kubernetes/client-node": "^0.16.3", @@ -229,7 +230,6 @@ "joi": "^17.6.0", "js-yaml": "^4.1.0", "jsdom": "^16.7.0", - "jsonpath": "^1.1.1", "lodash": "^4.17.15", "mac-ca": "^1.0.6", "marked": "^4.0.12", @@ -239,7 +239,7 @@ "mobx-react": "^7.3.0", "mobx-utils": "^6.0.4", "mock-fs": "^5.1.2", - "moment": "^2.29.1", + "moment": "^2.29.3", "moment-timezone": "^0.5.34", "monaco-editor": "^0.29.1", "monaco-editor-webpack-plugin": "^5.0.0", @@ -259,7 +259,7 @@ "request-promise-native": "^1.0.9", "rfc6902": "^4.0.2", "selfsigned": "^2.0.1", - "semver": "^7.3.2", + "semver": "^7.3.7", "shell-env": "^3.0.1", "spdy": "^4.0.2", "tar": "^6.1.11", @@ -278,7 +278,7 @@ "@material-ui/core": "^4.12.3", "@material-ui/icons": "^4.11.2", "@material-ui/lab": "^4.0.0-alpha.60", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.4", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", "@sentry/types": "^6.19.3", "@testing-library/jest-dom": "^5.16.3", "@testing-library/react": "^12.1.4", @@ -299,7 +299,6 @@ "@types/jest": "^26.0.24", "@types/js-yaml": "^4.0.5", "@types/jsdom": "^16.2.14", - "@types/jsonpath": "^0.2.0", "@types/lodash": "^4.14.181", "@types/marked": "^4.0.3", "@types/md5-file": "^4.0.2", @@ -313,7 +312,7 @@ "@types/react": "^17.0.43", "@types/react-beautiful-dnd": "^13.1.2", "@types/react-dom": "^17.0.14", - "@types/react-router-dom": "^5.3.2", + "@types/react-router-dom": "^5.3.3", "@types/react-select": "3.1.2", "@types/react-table": "^7.7.9", "@types/react-virtualized-auto-sizer": "^1.0.1", @@ -347,15 +346,15 @@ "deepdash": "^5.3.9", "dompurify": "^2.3.6", "electron": "^14.2.9", - "electron-builder": "^22.14.13", + "electron-builder": "^23.0.3", "electron-notarize": "^0.3.0", - "esbuild": "^0.14.34", + "esbuild": "^0.14.38", "esbuild-loader": "^2.18.0", "eslint": "^8.11.0", "eslint-plugin-header": "^3.1.1", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react": "^7.29.4", - "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-react-hooks": "^4.4.0", "eslint-plugin-unused-imports": "^2.0.0", "flex.box": "^3.4.4", "fork-ts-checker-webpack-plugin": "^6.5.0", @@ -380,9 +379,9 @@ "postcss-loader": "^6.2.1", "randomcolor": "^0.6.2", "react-beautiful-dnd": "^13.1.0", - "react-refresh": "^0.11.0", + "react-refresh": "^0.12.0", "react-refresh-typescript": "^2.0.4", - "react-router-dom": "^5.3.0", + "react-router-dom": "^5.3.1", "react-select": "3.2.0", "react-select-event": "^5.3.0", "react-table": "^7.7.0", @@ -403,7 +402,7 @@ "typeface-roboto": "^1.1.13", "typescript": "^4.5.5", "typescript-plugin-css-modules": "^3.4.0", - "webpack": "^5.69.0", + "webpack": "^5.72.0", "webpack-cli": "^4.9.2", "webpack-dev-server": "^4.8.1", "webpack-node-externals": "^3.0.0", diff --git a/src/common/utils/defineGlobal.ts b/src/common/utils/defineGlobal.ts deleted file mode 100755 index 50d685dc5a..0000000000 --- a/src/common/utils/defineGlobal.ts +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -// Setup variable in global scope (top-level object) -// Global type definition must be added separately to `mocks.d.ts` in form: -// declare const __globalName: any; - -export function defineGlobal(propName: string, descriptor: PropertyDescriptor) { - const scope = typeof global !== "undefined" ? global : window; - - if (Object.prototype.hasOwnProperty.call(scope, propName)) { - return; - } - - Object.defineProperty(scope, propName, descriptor); -} diff --git a/src/common/utils/index.ts b/src/common/utils/index.ts index 0ecb4bc71e..eab3239350 100644 --- a/src/common/utils/index.ts +++ b/src/common/utils/index.ts @@ -20,7 +20,6 @@ export * from "./collection-functions"; export * from "./convertCpu"; export * from "./convertMemory"; export * from "./debouncePromise"; -export * from "./defineGlobal"; export * from "./delay"; export * from "./disposer"; export * from "./downloadFile"; diff --git a/src/common/vars.ts b/src/common/vars.ts index 5a08e458a0..52c9a15156 100644 --- a/src/common/vars.ts +++ b/src/common/vars.ts @@ -7,7 +7,6 @@ import path from "path"; import { SemVer } from "semver"; import packageInfo from "../../package.json"; -import { defineGlobal } from "./utils/defineGlobal"; import { lazyInitialized } from "./utils/lazy-initialized"; export const isMac = process.platform === "darwin"; @@ -101,26 +100,12 @@ export const kubectlBinaryName = getBinaryName("kubectl"); * @deprecated for being explicit side effect. */ export const kubectlBinaryPath = lazyInitialized(() => path.join(baseBinariesDir.get(), kubectlBinaryName)); - -// Webpack build paths -export const contextDir = process.cwd(); -export const buildDir = path.join(contextDir, "static", publicPath); -export const preloadEntrypoint = path.join(contextDir, "src/preload.ts"); -export const mainDir = path.join(contextDir, "src/main"); -export const rendererDir = path.join(contextDir, "src/renderer"); -export const htmlTemplate = path.resolve(rendererDir, "template.html"); -export const sassCommonVars = path.resolve(rendererDir, "components/vars.scss"); - -// Special runtime paths -defineGlobal("__static", { - get() { - const root = isDevelopment - ? contextDir - : (process.resourcesPath ?? contextDir); - - return path.resolve(root, "static"); - }, -}); +export const staticFilesDirectory = path.resolve( + !isProduction + ? process.cwd() + : process.resourcesPath, + "static", +); // Apis export const apiPrefix = "/api" as string; // local router apis @@ -142,5 +127,3 @@ export const appSemVer = new SemVer(packageInfo.version); export const docsUrl = "https://docs.k8slens.dev/main/" as string; export const sentryDsn = packageInfo.config?.sentryDsn ?? ""; - -export const webpackDevServerPort: number = Number(process.env.WEBPACK_DEV_SERVER_PORT) || 9191; diff --git a/src/common/vars/context-dir.injectable.ts b/src/common/vars/context-dir.injectable.ts deleted file mode 100644 index fdef6c2c71..0000000000 --- a/src/common/vars/context-dir.injectable.ts +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ -import { getInjectable } from "@ogre-tools/injectable"; -import { contextDir } from "../vars"; - -const contextDirInjectable = getInjectable({ - id: "context-dir", - instantiate: () => contextDir, -}); - -export default contextDirInjectable; diff --git a/src/extensions/extension-discovery/extension-discovery.ts b/src/extensions/extension-discovery/extension-discovery.ts index 0bb6f4f08a..846a13f17e 100644 --- a/src/extensions/extension-discovery/extension-discovery.ts +++ b/src/extensions/extension-discovery/extension-discovery.ts @@ -16,7 +16,7 @@ import logger from "../../main/logger"; import type { ExtensionsStore } from "../extensions-store/extensions-store"; import type { ExtensionLoader } from "../extension-loader"; import type { LensExtensionId, LensExtensionManifest } from "../lens-extension"; -import { isProduction } from "../../common/vars"; +import { isProduction, staticFilesDirectory } from "../../common/vars"; import type { ExtensionInstallationStateStore } from "../extension-installation-state-store/extension-installation-state-store"; import type { PackageJson } from "type-fest"; import { extensionDiscoveryStateChannel } from "../../common/ipc/extension-handling"; @@ -112,7 +112,7 @@ export class ExtensionDiscovery { } get inTreeFolderPath(): string { - return path.resolve(__static, "../extensions"); + return path.resolve(staticFilesDirectory, "../extensions"); } get nodeModulesPath(): string { diff --git a/src/extensions/renderer-api/components.ts b/src/extensions/renderer-api/components.ts index 62d97c490c..21733bd85e 100644 --- a/src/extensions/renderer-api/components.ts +++ b/src/extensions/renderer-api/components.ts @@ -64,6 +64,11 @@ export * from "../../renderer/components/layout/sub-title"; export * from "../../renderer/components/input/search-input"; export * from "../../renderer/components/chart/bar-chart"; export * from "../../renderer/components/chart/pie-chart"; +export { + MonacoEditor, + type MonacoEditorProps, type MonacoEditorId, + type MonacoTheme, type MonacoCustomTheme, +} from "../../renderer/components/monaco-editor"; // kube helpers export * from "../../renderer/components/kube-detail-params"; diff --git a/src/main/index.ts b/src/main/index.ts index 4162b30bcd..f6c0b1bbc0 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -11,7 +11,7 @@ import httpProxy from "http-proxy"; import * as LensExtensionsCommonApi from "../extensions/common-api"; import * as LensExtensionsMainApi from "../extensions/main-api"; import { app, autoUpdater, dialog, powerMonitor } from "electron"; -import { appName, isIntegrationTesting, isMac, isWindows, productName } from "../common/vars"; +import { appName, isIntegrationTesting, isMac, isWindows, productName, staticFilesDirectory } from "../common/vars"; import { LensProxy } from "./lens-proxy"; import { WindowManager } from "./window-manager"; import { ClusterManager } from "./cluster-manager"; @@ -198,7 +198,7 @@ async function main(di: DiContainer) { powerMonitor.on("shutdown", () => app.exit()); - registerFileProtocol("static", __static); + registerFileProtocol("static", staticFilesDirectory); PrometheusProviderRegistry.createInstance(); initializers.initPrometheusProviderRegistry(); diff --git a/src/main/router/router.ts b/src/main/router/router.ts index 56455e52e7..545462ead6 100644 --- a/src/main/router/router.ts +++ b/src/main/router/router.ts @@ -11,9 +11,6 @@ import type { Cluster } from "../../common/cluster/cluster"; import type { LensApiResultContentType } from "./router-content-types"; import { contentTypes } from "./router-content-types"; -// TODO: Import causes side effect, sets value for __static -import "../../common/vars"; - export interface RouterRequestOpts { req: http.IncomingMessage; res: http.ServerResponse; diff --git a/src/main/routes/static-file-route.injectable.ts b/src/main/routes/static-file-route.injectable.ts index e1ee4862b2..9e90e23eef 100644 --- a/src/main/routes/static-file-route.injectable.ts +++ b/src/main/routes/static-file-route.injectable.ts @@ -8,7 +8,7 @@ import type { SupportedFileExtension } from "../router/router-content-types"; import { contentTypes } from "../router/router-content-types"; import logger from "../logger"; import { routeInjectionToken } from "../router/router.injectable"; -import { appName, publicPath, webpackDevServerPort } from "../../common/vars"; +import { appName, publicPath, staticFilesDirectory } from "../../common/vars"; import path from "path"; import isDevelopmentInjectable from "../../common/vars/is-development.injectable"; import httpProxy from "http-proxy"; @@ -17,6 +17,7 @@ import type { GetAbsolutePath } from "../../common/path/get-absolute-path.inject import getAbsolutePathInjectable from "../../common/path/get-absolute-path.injectable"; import type { JoinPaths } from "../../common/path/join-paths.injectable"; import joinPathsInjectable from "../../common/path/join-paths.injectable"; +import { webpackDevServerPort } from "../../../webpack/vars"; interface ProductionDependencies { readFileBuffer: (path: string) => Promise; @@ -27,7 +28,7 @@ interface ProductionDependencies { const handleStaticFileInProduction = ({ readFileBuffer, getAbsolutePath, joinPaths }: ProductionDependencies) => async ({ params }: LensApiRequest) => { - const staticPath = getAbsolutePath(__static); + const staticPath = getAbsolutePath(staticFilesDirectory); let filePath = params.path; for (let retryCount = 0; retryCount < 5; retryCount += 1) { diff --git a/src/main/tray/tray.ts b/src/main/tray/tray.ts index ed33e7faa5..bef95610fd 100644 --- a/src/main/tray/tray.ts +++ b/src/main/tray/tray.ts @@ -12,7 +12,7 @@ import { showAbout } from "../menu/menu"; import { checkForUpdates, isAutoUpdateEnabled } from "../app-updater"; import type { WindowManager } from "../window-manager"; import logger from "../logger"; -import { isDevelopment, isWindows, productName } from "../../common/vars"; +import { isDevelopment, isWindows, productName, staticFilesDirectory } from "../../common/vars"; import { exitApp } from "../exit-app"; import { toJS } from "../../common/utils"; import type { TrayMenuRegistration } from "./tray-menu-registration"; @@ -25,7 +25,7 @@ export let tray: Tray; export function getTrayIcon(): string { return path.resolve( - __static, + staticFilesDirectory, isDevelopment ? "../build/tray" : "icons", // copied within electron-builder extras "trayIconTemplate.png", ); diff --git a/src/renderer/components/+custom-resources/crd-resource-details.tsx b/src/renderer/components/+custom-resources/crd-resource-details.tsx index 6ac5d61ed2..1c43769e2e 100644 --- a/src/renderer/components/+custom-resources/crd-resource-details.tsx +++ b/src/renderer/components/+custom-resources/crd-resource-details.tsx @@ -6,7 +6,6 @@ import "./crd-resource-details.scss"; import React from "react"; -import jsonPath from "jsonpath"; import { observer } from "mobx-react"; import { cssNames } from "../../utils"; import { Badge } from "../badge"; @@ -16,10 +15,11 @@ import { KubeObjectMeta } from "../kube-object-meta"; import { Input } from "../input"; import type { AdditionalPrinterColumnsV1 } from "../../../common/k8s-api/endpoints/crd.api"; import { CustomResourceDefinition } from "../../../common/k8s-api/endpoints/crd.api"; -import { parseJsonPath } from "../../utils/jsonPath"; +import { convertKubectlJsonPathToNodeJsonPath } from "../../utils/jsonPath"; import type { KubeObjectMetadata, KubeObjectStatus } from "../../../common/k8s-api/kube-object"; import { KubeObject } from "../../../common/k8s-api/kube-object"; import logger from "../../../common/logger"; +import { JSONPath } from "@astronautlabs/jsonpath"; export interface CustomResourceDetailsProps extends KubeObjectDetailsProps { crd: CustomResourceDefinition; @@ -48,9 +48,9 @@ function convertSpecValue(value: any): any { @observer export class CustomResourceDetails extends React.Component { renderAdditionalColumns(resource: KubeObject, columns: AdditionalPrinterColumnsV1[]) { - return columns.map(({ name, jsonPath: jp }) => ( + return columns.map(({ name, jsonPath }) => ( - {convertSpecValue(jsonPath.value(resource, parseJsonPath(jp.slice(1))))} + {convertSpecValue(JSONPath.query(resource, convertKubectlJsonPathToNodeJsonPath(jsonPath)))} )); } diff --git a/src/renderer/components/+custom-resources/crd-resources.tsx b/src/renderer/components/+custom-resources/crd-resources.tsx index 528f4ea0d9..08d56488bd 100644 --- a/src/renderer/components/+custom-resources/crd-resources.tsx +++ b/src/renderer/components/+custom-resources/crd-resources.tsx @@ -6,14 +6,13 @@ import "./crd-resources.scss"; import React from "react"; -import { value } from "jsonpath"; import { observer } from "mobx-react"; import { KubeObjectListLayout } from "../kube-object-list-layout"; import type { IComputedValue } from "mobx"; import { computed, makeObservable } from "mobx"; import { crdStore } from "./crd.store"; import { apiManager } from "../../../common/k8s-api/api-manager"; -import { parseJsonPath } from "../../utils/jsonPath"; +import { safeJSONPathValue } from "../../utils/jsonPath"; import { TabLayout } from "../layout/tab-layout-2"; import { withInjectables } from "@ogre-tools/injectable-react"; import customResourcesRouteParametersInjectable from "./custom-resources-route-parameters.injectable"; @@ -70,7 +69,7 @@ class NonInjectedCrdResources extends React.Component { [columnId.age]: customResource => -customResource.getCreationTimestamp(), ...Object.fromEntries(extraColumns.map(({ name, jsonPath }) => [ name, - customResource => value(customResource, parseJsonPath(jsonPath.slice(1))), + customResource => safeJSONPathValue(customResource, jsonPath), ])), }} searchFilters={[ @@ -95,22 +94,11 @@ class NonInjectedCrdResources extends React.Component { })), { title: "Age", className: "age", sortBy: columnId.age, id: columnId.age }, ]} - renderTableContents={crdInstance => [ - crdInstance.getName(), - isNamespaced && crdInstance.getNs(), - ...extraColumns.map((column) => { - let rawValue = value(crdInstance, parseJsonPath(column.jsonPath.slice(1))); - - if (Array.isArray(rawValue) || typeof rawValue === "object") { - rawValue = JSON.stringify(rawValue); - } - - return { - renderBoolean: true, - children: rawValue, - }; - }), - , + renderTableContents={customResource => [ + customResource.getName(), + isNamespaced && customResource.getNs(), + ...extraColumns.map((column) => safeJSONPathValue(customResource, column.jsonPath)), + , ]} failedToLoadMessage={( <> diff --git a/src/renderer/components/dock/create-resource/lens-templates.injectable.ts b/src/renderer/components/dock/create-resource/lens-templates.injectable.ts index d162dcb931..898855a309 100644 --- a/src/renderer/components/dock/create-resource/lens-templates.injectable.ts +++ b/src/renderer/components/dock/create-resource/lens-templates.injectable.ts @@ -5,7 +5,7 @@ import { getInjectable } from "@ogre-tools/injectable"; import path from "path"; import { hasCorrectExtension } from "./has-correct-extension"; -import "../../../../common/vars"; +import { staticFilesDirectory } from "../../../../common/vars"; import readFileInjectable from "../../../../common/fs/read-file.injectable"; import readDirInjectable from "../../../../common/fs/read-dir.injectable"; import type { RawTemplates } from "./create-resource-templates.injectable"; @@ -19,7 +19,7 @@ interface Dependencies { } async function getTemplates({ readDir, readFile, getAbsolutePath }: Dependencies) { - const templatesFolder = getAbsolutePath(__static, "../templates/create-resource"); + const templatesFolder = getAbsolutePath(staticFilesDirectory, "../templates/create-resource"); /** * Mapping between file names and their contents diff --git a/src/renderer/components/layout/top-bar/top-bar.module.scss b/src/renderer/components/layout/top-bar/top-bar.module.scss index fd4610eb2e..f8da7d01bc 100644 --- a/src/renderer/components/layout/top-bar/top-bar.module.scss +++ b/src/renderer/components/layout/top-bar/top-bar.module.scss @@ -26,7 +26,7 @@ &:first-of-type { padding-left: 1.5rem; - & > * { + & > *:not(:empty) { margin-right: 1rem; } } @@ -34,7 +34,7 @@ &:last-of-type { padding-right: 1.5rem; - & > * { + & > *:not(:empty) { margin-left: 1rem; } } diff --git a/src/renderer/components/monaco-editor/monaco-editor.tsx b/src/renderer/components/monaco-editor/monaco-editor.tsx index f50e49f191..6c8f3e01a6 100644 --- a/src/renderer/components/monaco-editor/monaco-editor.tsx +++ b/src/renderer/components/monaco-editor/monaco-editor.tsx @@ -9,12 +9,12 @@ import { observer } from "mobx-react"; import { action, computed, makeObservable, observable, reaction } from "mobx"; import { editor, Uri } from "monaco-editor"; import type { MonacoTheme } from "./monaco-themes"; -import type { MonacoValidator } from "./monaco-validators"; -import { monacoValidators } from "./monaco-validators"; +import { type MonacoValidator, monacoValidators } from "./monaco-validators"; import { debounce, merge } from "lodash"; -import { cssNames, disposer } from "../../utils"; +import { autoBind, cssNames, disposer } from "../../utils"; import { UserStore } from "../../../common/user-store"; import { ThemeStore } from "../../theme.store"; +import logger from "../../../main/logger"; export type MonacoEditorId = string; @@ -45,32 +45,28 @@ export const defaultEditorProps: Partial = { @observer export class MonacoEditor extends React.Component { - static defaultProps = defaultEditorProps as object; - static viewStates = new WeakMap(); + static readonly defaultProps = defaultEditorProps as object; + static readonly viewStates = new WeakMap(); static createUri(id: MonacoEditorId): Uri { return Uri.file(`/monaco-editor/${id}`); } - public staticId = `editor-id#${Math.round(1e7 * Math.random())}`; - public dispose = disposer(); - - // TODO: investigate how to replace with "common/logger" - // currently leads for stucking UI forever & infinite loop. - // e.g. happens on tab change/create, maybe some other cases too. - logger = console; + private staticId = `editor-id#${Math.round(1e7 * Math.random())}`; + private dispose = disposer(); @observable.ref containerElem: HTMLElement; @observable.ref editor: editor.IStandaloneCodeEditor; - @observable dimensions: { width?: number; height?: number } = {}; - @observable unmounting = false; + @observable readonly dimensions: { width?: number; height?: number } = {}; + @observable private unmounting = false; constructor(props: MonacoEditorProps) { super(props); makeObservable(this); + autoBind(this); } - @computed get id() { + @computed get id(): MonacoEditorId { return this.props.id ?? this.staticId; } @@ -94,7 +90,8 @@ export class MonacoEditor extends React.Component { ); } - @computed get logMetadata() { + @computed + private get logMetadata() { return { editorId: this.id, model: this.model, @@ -121,8 +118,8 @@ export class MonacoEditor extends React.Component { return () => resizeObserver.unobserve(containerElem); } - onModelChange = (model: editor.ITextModel, oldModel?: editor.ITextModel) => { - this.logger?.info("[MONACO]: model change", { model, oldModel }, this.logMetadata); + protected onModelChange(model: editor.ITextModel, oldModel?: editor.ITextModel) { + logger.info("[MONACO]: model change", { model, oldModel }, this.logMetadata); if (oldModel) { this.saveViewState(oldModel); @@ -134,18 +131,17 @@ export class MonacoEditor extends React.Component { this.editor.focus(); // keep focus in editor, e.g. when clicking between dock-tabs this.props.onModelChange?.(model, oldModel); this.validateLazy(); - }; + } /** * Save current view-model state in the editor. * This will allow restore cursor position, selected text, etc. - * @param {editor.ITextModel} model */ - private saveViewState(model: editor.ITextModel) { + protected saveViewState(model: editor.ITextModel) { MonacoEditor.viewStates.set(model.uri, this.editor.saveViewState()); } - private restoreViewState(model: editor.ITextModel) { + protected restoreViewState(model: editor.ITextModel) { const viewState = MonacoEditor.viewStates.get(model.uri); if (viewState) { @@ -156,9 +152,9 @@ export class MonacoEditor extends React.Component { componentDidMount() { try { this.createEditor(); - this.logger?.info(`[MONACO]: editor did mount`, this.logMetadata); + logger.info(`[MONACO]: editor did mount`, this.logMetadata); } catch (error) { - this.logger?.error(`[MONACO]: mounting failed: ${error}`, this.logMetadata); + logger.error(`[MONACO]: mounting failed: ${error}`, this.logMetadata); } } @@ -168,7 +164,7 @@ export class MonacoEditor extends React.Component { this.destroy(); } - private createEditor() { + protected createEditor() { if (!this.containerElem || this.editor || this.unmounting) { return; } @@ -184,7 +180,7 @@ export class MonacoEditor extends React.Component { ...this.options, }); - this.logger?.info(`[MONACO]: editor created for language=${language}, theme=${theme}`, this.logMetadata); + logger.info(`[MONACO]: editor created for language=${language}, theme=${theme}`, this.logMetadata); this.validateLazy(); // validate initial value this.restoreViewState(this.model); // restore previous state if any @@ -250,7 +246,8 @@ export class MonacoEditor extends React.Component { this.editor?.focus(); } - validate = action((value = this.getValue()) => { + @action + validate(value = this.getValue()) { const validators: MonacoValidator[] = [ monacoValidators[this.props.language], // parsing syntax check ].filter(Boolean); @@ -262,19 +259,21 @@ export class MonacoEditor extends React.Component { this.props.onError?.(error); // emit error outside } } - }); + } // avoid excessive validations during typing validateLazy = debounce(this.validate, 250); - bindRef = (elem: HTMLElement) => this.containerElem = elem; + protected bindRef(elem: HTMLElement) { + this.containerElem = elem; + } render() { const { className, style } = this.props; return (
{ - test("should convert \\. to use indexed notation", () => { - const res = parseJsonPath(".metadata.labels.kubesphere\\.io/alias-name"); + it("should convert \\. to use indexed notation", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels.kubesphere\\.io/alias-name"); - expect(res).toBe(".metadata.labels['kubesphere.io/alias-name']"); + expect(res).toBe("$.metadata.labels['kubesphere.io/alias-name']"); }); - test("should convert keys with escaped characters to use indexed notation", () => { - const res = parseJsonPath(".metadata.labels.kubesphere\\\"io/alias-name"); + it("should convert keys with escaped characters to use indexed notation", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels.kubesphere\\\"io/alias-name"); - expect(res).toBe(".metadata.labels['kubesphere\"io/alias-name']"); + expect(res).toBe("$.metadata.labels['kubesphere\"io/alias-name']"); }); - test("should convert '-' to use indexed notation", () => { - const res = parseJsonPath(".metadata.labels.alias-name"); + it("should convert '-' to use indexed notation", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels.alias-name"); - expect(res).toBe(".metadata.labels['alias-name']"); + expect(res).toBe("$.metadata.labels['alias-name']"); }); - test("should handle scenario when both \\. and indexed notation are present", () => { - const rest = parseJsonPath(".metadata.labels\\.serving['some.other.item']"); + it("should drop leading dot if first group is converted to index notation", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata\\.labels.alias-name"); - expect(rest).toBe(".metadata['labels.serving']['some.other.item']"); + expect(res).toBe("$['metadata.labels']['alias-name']"); }); + it("should handle scenario when both \\. and indexed notation are present", () => { + const rest = convertKubectlJsonPathToNodeJsonPath(".metadata.labels\\.serving['some.other.item']"); - test("should not touch given jsonPath if no invalid characters present", () => { - const res = parseJsonPath(".status.conditions[?(@.type=='Ready')].status"); - - expect(res).toBe(".status.conditions[?(@.type=='Ready')].status"); + expect(rest).toBe("$.metadata['labels.serving']['some.other.item']"); }); - test("strips '\\' away from the result", () => { - const res = parseJsonPath(".metadata.labels['serving\\.knative\\.dev/configuration']"); + it("should not touch given jsonPath if no invalid characters present", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".status.conditions[?(@.type=='Ready')].status"); - expect(res).toBe(".metadata.labels['serving.knative.dev/configuration']"); + expect(res).toBe("$.status.conditions[?(@.type=='Ready')].status"); }); + it("strips '\\' away from the result", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels['serving\\.knative\\.dev/configuration']"); + + expect(res).toBe("$.metadata.labels['serving.knative.dev/configuration']"); + }); + + it("converts all [] to [0]", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels[].foo[]"); + + expect(res).toBe("$.metadata.labels[0].foo[0]"); + }); + + it("converts ending .. to ..*", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels[].."); + + expect(res).toBe("$.metadata.labels[0]"); + }); + + it("converts ending ...name to ..name", () => { + const res = convertKubectlJsonPathToNodeJsonPath(".metadata.labels[]...name"); + + expect(res).toBe("$.metadata.labels[0]..name"); + }); +}); + +describe("safeJSONPathValue", () => { + let oldWarn: typeof console["warn"]; + + beforeEach(() => { + oldWarn = console.warn; + console.warn = jest.fn(); + }); + + afterEach(() => { + console.warn = oldWarn; + }); + + it("should convert boolean values to strings", () => { + const res = safeJSONPathValue({ bar: false }, ".bar"); + + expect(res).toBe("false"); + }); + + it("should convert number values to strings", () => { + const res = safeJSONPathValue({ bar: 0 }, ".bar"); + + expect(res).toBe("0"); + }); + + it("should join sliced entries with commas only", () => { + const res = safeJSONPathValue({ + bar: [ + { + foo: 1, + }, + { + foo: "hello", + }, + ], + }, ".bar[].foo"); + + expect(res).toBe("1"); + }); + + it("should join an array of values using JSON.stringify", () => { + const res = safeJSONPathValue({ + bar: [ + "world", + "hello", + ], + }, ".bar"); + + expect(res).toBe(`["world","hello"]`); + }); + + it("should stringify an object value", () => { + const res = safeJSONPathValue({ + foo: { bar: "bat" }, + }, ".foo"); + + expect(res).toBe(`{"bar":"bat"}`); + }); + + it("should use convertKubectlJsonPathToNodeJsonPath", () => { + const res = safeJSONPathValue({ + foo: { "hello.world": "bat" }, + }, ".foo.hello\\.world"); + + expect(res).toBe("bat"); + }); + + it("should not throw when given '.spec.metrics[*].external.highWatermark..'", () => { + const obj = { + spec: { + metrics: [ + { + external: { + metricName: "cpu", + highWatermark: "100", + }, + }, + { + external: { + metricName: "memory", + highWatermark: "100", + }, + }, + ], + }, + }; + + const res = safeJSONPathValue(obj, ".spec.metrics[*].external.highWatermark.."); + + expect(res).toBe("100, 100"); + }); + + it("should not throw if path is invalid jsonpath", () => { + const res = safeJSONPathValue({ + foo: { "hello.world": "bat" }, + }, "asd["); + + expect(res).toBe(""); + }); }); diff --git a/src/renderer/utils/jsonPath.ts b/src/renderer/utils/jsonPath.ts index 6bbf0c7a24..3aedbd0919 100644 --- a/src/renderer/utils/jsonPath.ts +++ b/src/renderer/utils/jsonPath.ts @@ -3,28 +3,63 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -// Helper to convert strings used for jsonPath where \. or - is present to use indexed notation, -// for example: .metadata.labels.kubesphere\.io/alias-name -> .metadata.labels['kubesphere\.io/alias-name'] +import { JSONPath } from "@astronautlabs/jsonpath"; -export function parseJsonPath(jsonPath: string) { - let pathExpression = jsonPath; +const slashDashSearch = /[\\-]/g; +const pathByBareDots = /(?<=\w)\./; +const textBeforeFirstSquare = /^.*(?=\[)/g; +const backSlash = /\\/g; +const kubectlOptionPrefix = /^\$?\.?(?.*)/; +const sliceVersion = /\[]/g; +const tripleDotName = /\.\.\.(?.)/g; +const trailingDotDot = /\.\.$/; - if (jsonPath.match(/[\\-]/g)) { // search for '\' and '-' - const [first, ...rest] = jsonPath.split(/(?<=\w)\./); // split jsonPath by '.' (\. cases are ignored) +/** + * The GO package that kubectl and kubernetes uses for its JSONpath implementation has some + * shorthand conveniences that are not part of the official spec. This function tries to convert + * those shorthands to the official spec. + * + * Known shorthands: + * - Leading `$` is optional (but implied) + * - The string `\.` is used to denote the "value of '.'" and not "next key" + * - The string `-` can be used while not in quotes + * - `[]` as shorthand for `[0]` + * - Remove `..` at the end of a path, we will just format it slightly differently + * - Allow `...foo` as well as `..foo` + */ +export function convertKubectlJsonPathToNodeJsonPath(jsonPath: string) { + const startMatch = jsonPath.match(kubectlOptionPrefix); + let start = "$"; + + if (!startMatch) { + return start; + } + + let { pathExpression } = startMatch.groups; + + if (pathExpression.match(slashDashSearch)) { + const [first, ...rest] = pathExpression.split(pathByBareDots); pathExpression = `${convertToIndexNotation(first, true)}${rest.map(value => convertToIndexNotation(value)).join("")}`; } + pathExpression = pathExpression.replace(trailingDotDot, ""); + pathExpression = pathExpression.replace(tripleDotName, "..$"); + + if (!pathExpression.startsWith("[")) { + start += "."; + } + // strip '\' characters from the result - return pathExpression.replace(/\\/g, ""); + return `${start}${pathExpression.replace(backSlash, "").replace(sliceVersion, "[0]")}`; } function convertToIndexNotation(key: string, firstItem = false) { - if (key.match(/[\\-]/g)) { // check if found '\' and '-' in key + if (key.match(slashDashSearch)) { if (key.includes("[")) { // handle cases where key contains [...] - const keyToConvert = key.match(/^.*(?=\[)/g); // get the text from the key before '[' + const keyToConvert = key.match(textBeforeFirstSquare); // get the text from the key before '[' - if (keyToConvert && keyToConvert[0].match(/[\\-]/g)) { // check if that part contains illegal characters + if (keyToConvert && keyToConvert[0].match(slashDashSearch)) { // check if that part contains illegal characters return key.replace(keyToConvert[0], `['${keyToConvert[0]}']`); // surround key with '[' and ']' } else { return `.${key}`; // otherwise return as is with leading '.' @@ -38,3 +73,35 @@ function convertToIndexNotation(key: string, firstItem = false) { return `${prefix}${key}`; } } + +function formatJSONValue(value: unknown) { + if (typeof value === "object") { + return JSON.stringify(value); + } + + return String(value); +} + +/** + * This function is a safer version of `JSONPath.value(obj, path)` with untrusted jsonpath strings + * + * This function will also stringify the value retreived from the object + */ +export function safeJSONPathValue(obj: object, path: string): string { + try { + const parsedPath = JSONPath.parse(convertKubectlJsonPathToNodeJsonPath(path)); + const isSlice = parsedPath.some((exp: any) => exp.expression.type === "slice" || "wildcard"); + const value = JSONPath.query(obj, JSONPath.stringify(parsedPath), isSlice ? Infinity : 1); + + if (isSlice) { + return value.map(formatJSONValue).join(", "); + } + + return formatJSONValue(value[0]); + } catch (error) { + // something failed + console.warn("[JSON-PATH]: failed to parse jsonpath", error); + + return ""; + } +} diff --git a/tsconfig.json b/tsconfig.json index 9cd814d6d6..8d74393715 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -32,7 +32,11 @@ "types/*" ] }, - "plugins": [{ "name": "typescript-plugin-css-modules" }] + "plugins": [ + { + "name": "typescript-plugin-css-modules" + } + ] }, "ts-node": { "transpileOnly": true, @@ -42,7 +46,7 @@ }, "include": [ "src/**/*", - "types/*.d.ts" + "types/*.d.ts", ], "exclude": [ "node_modules", diff --git a/types/mocks.d.ts b/types/mocks.d.ts index 0fbde3b4f9..17dba848b7 100644 --- a/types/mocks.d.ts +++ b/types/mocks.d.ts @@ -8,9 +8,6 @@ declare module "win-ca/api" declare module "@hapi/call" declare module "@hapi/subtext" -// Global path to static assets -declare const __static: string; - // Support import for custom module extensions // https://www.typescriptlang.org/docs/handbook/modules.html#wildcard-module-declarations declare module "*.module.scss" { diff --git a/webpack.dev-server.ts b/webpack.dev-server.ts deleted file mode 100644 index 966a0f32de..0000000000 --- a/webpack.dev-server.ts +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import Webpack from "webpack"; -import WebpackDevServer from "webpack-dev-server"; -import { webpackLensRenderer } from "./webpack.renderer"; -import { buildDir, webpackDevServerPort } from "./src/common/vars"; -import logger from "./src/common/logger"; - -/** - * Creates `webpack-dev-server` - * API docs: - * @url https://webpack.js.org/configuration/dev-server/ - * @url https://github.com/chimurai/http-proxy-middleware - */ -function createDevServer(): WebpackDevServer { - const config = webpackLensRenderer({ showVars: false }); - const compiler = Webpack(config); - - const server = new WebpackDevServer({ - setupExitSignals: true, - headers: { - "Access-Control-Allow-Origin": "*", - }, - allowedHosts: "all", - host: "localhost", - port: webpackDevServerPort, - static: buildDir, // aka `devServer.contentBase` in webpack@4 - hot: "only", // use HMR only without errors - liveReload: false, - devMiddleware: { - writeToDisk: false, - index: "OpenLensDev.html", - publicPath: "/build", - }, - proxy: { - "^/$": "/build/", - }, - client: { - overlay: false, // don't show warnings and errors on top of rendered app view - logging: "error", - }, - }, compiler); - - logger.info(`[WEBPACK-DEV-SERVER]: created with options`, server.options); - - return server; -} - -const server = createDevServer(); - -server.start(); diff --git a/webpack/dev-server.ts b/webpack/dev-server.ts new file mode 100644 index 0000000000..d4d62ddb0c --- /dev/null +++ b/webpack/dev-server.ts @@ -0,0 +1,47 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import Webpack from "webpack"; +import WebpackDevServer from "webpack-dev-server"; +import { webpackLensRenderer } from "./renderer"; +import logger from "../src/common/logger"; +import { buildDir, webpackDevServerPort } from "./vars"; + +/** + * API docs: + * @url https://webpack.js.org/configuration/dev-server/ + * @url https://github.com/chimurai/http-proxy-middleware + */ +const config = webpackLensRenderer({ showVars: false }); +const compiler = Webpack(config); + +const server = new WebpackDevServer({ + setupExitSignals: true, + headers: { + "Access-Control-Allow-Origin": "*", + }, + allowedHosts: "all", + host: "localhost", + port: webpackDevServerPort, + static: buildDir, // aka `devServer.contentBase` in webpack@4 + hot: "only", // use HMR only without errors + liveReload: false, + devMiddleware: { + writeToDisk: false, + index: "OpenLensDev.html", + publicPath: "/build", + }, + proxy: { + "^/$": "/build/", + }, + client: { + overlay: false, // don't show warnings and errors on top of rendered app view + logging: "error", + }, +}, compiler); + +logger.info(`[WEBPACK-DEV-SERVER]: created with options`, server.options); + +server.start(); diff --git a/webpack.extensions.ts b/webpack/extensions.ts similarity index 87% rename from webpack.extensions.ts rename to webpack/extensions.ts index 57064a14be..961c1d3bf2 100644 --- a/webpack.extensions.ts +++ b/webpack/extensions.ts @@ -6,25 +6,21 @@ import path from "path"; import type webpack from "webpack"; -import * as vars from "./src/common/vars"; -import { cssModulesWebpackRule, fontsLoaderWebpackRules, iconsAndImagesWebpackRules } from "./webpack.renderer"; +import { cssModulesWebpackRule, fontsLoaderWebpackRules, iconsAndImagesWebpackRules } from "./renderer"; +import { extensionEntry, extensionOutDir, isDevelopment } from "./vars"; export default function generateExtensionTypes(): webpack.Configuration { - const { isDevelopment } = vars; - const entry = "./src/extensions/extension-api.ts"; - const outDir = "./src/extensions/npm/extensions/dist"; - return { // Compile for Electron for renderer process // see target: "electron-renderer", - entry, + entry: extensionEntry, // this is the default mode, so we should make it explicit to silence the warning mode: isDevelopment ? "development" : "production", output: { filename: "extension-api.js", // need to be an absolute path - path: path.resolve(__dirname, `${outDir}/src/extensions`), + path: path.resolve(extensionOutDir, "src", "extensions"), // can be use in commonjs environments // e.g. require('@k8slens/extensions') libraryTarget: "commonjs", @@ -54,7 +50,7 @@ export default function generateExtensionTypes(): webpack.Configuration { compilerOptions: { declaration: true, // output .d.ts sourceMap: false, // to override sourceMap: true in tsconfig.json - outDir, // where the .d.ts should be located + outDir: extensionOutDir, // where the .d.ts should be located }, }, }, diff --git a/src/common/getTSLoader.ts b/webpack/get-typescript-loader.ts similarity index 89% rename from src/common/getTSLoader.ts rename to webpack/get-typescript-loader.ts index 6eb670bf07..57e57245be 100644 --- a/src/common/getTSLoader.ts +++ b/webpack/get-typescript-loader.ts @@ -11,7 +11,7 @@ import type { Options as TSLoaderOptions } from "ts-loader"; * depends on env LENS_DEV_USE_ESBUILD_LOADER to use esbuild-loader (faster) or good-old ts-loader * @returns ts/tsx webpack loader configuration object */ -const getTSLoader = (options: Partial = {}, testRegExp?: RegExp) => { +export default function getTypescriptLoader(options: Partial = {}, testRegExp?: RegExp) { testRegExp ??= /\.tsx?$/; // by default covers react/jsx-stuff options.transpileOnly ??= true; @@ -37,6 +37,4 @@ const getTSLoader = (options: Partial = {}, testRegExp?: RegExp options, }, }; -}; - -export default getTSLoader; +} diff --git a/webpack.main.ts b/webpack/main.ts similarity index 77% rename from webpack.main.ts rename to webpack/main.ts index db742f44e6..397ffb2968 100755 --- a/webpack.main.ts +++ b/webpack/main.ts @@ -7,16 +7,20 @@ import path from "path"; import type webpack from "webpack"; import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin"; import nodeExternals from "webpack-node-externals"; -import * as vars from "./src/common/vars"; -import getTSLoader from "./src/common/getTSLoader"; +import getTypeScriptLoader from "./get-typescript-loader"; import CircularDependencyPlugin from "circular-dependency-plugin"; -import { iconsAndImagesWebpackRules } from "./webpack.renderer"; +import { iconsAndImagesWebpackRules } from "./renderer"; +import type { WebpackPluginInstance } from "webpack"; +import { buildDir, isDevelopment, mainDir } from "./vars"; const configs: { (): webpack.Configuration }[] = []; configs.push((): webpack.Configuration => { - console.info("WEBPACK:main", { ...vars }); - const { mainDir, buildDir, isDevelopment } = vars; + console.info("WEBPACK:main", { + isDevelopment, + mainDir, + buildDir, + }); return { name: "lens-app-main", @@ -44,7 +48,7 @@ configs.push((): webpack.Configuration => { test: /\.node$/, use: "node-loader", }, - getTSLoader({}, /\.ts$/), + getTypeScriptLoader({}, /\.ts$/), ...iconsAndImagesWebpackRules(), ], }, @@ -54,8 +58,8 @@ configs.push((): webpack.Configuration => { cwd: __dirname, exclude: /node_modules/, failOnError: true, - }), - ].filter(Boolean), + }) as unknown as WebpackPluginInstance, + ], }; }); diff --git a/webpack.renderer.ts b/webpack/renderer.ts similarity index 84% rename from webpack.renderer.ts rename to webpack/renderer.ts index 7b21f9214e..bb38b284d4 100755 --- a/webpack.renderer.ts +++ b/webpack/renderer.ts @@ -3,25 +3,31 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import * as vars from "./src/common/vars"; import path from "path"; import type webpack from "webpack"; import HtmlWebpackPlugin from "html-webpack-plugin"; import MiniCssExtractPlugin from "mini-css-extract-plugin"; import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin"; import MonacoWebpackPlugin from "monaco-editor-webpack-plugin"; -import getTSLoader from "./src/common/getTSLoader"; import CircularDependencyPlugin from "circular-dependency-plugin"; import ReactRefreshWebpackPlugin from "@pmmmwh/react-refresh-webpack-plugin"; +import type { WebpackPluginInstance } from "webpack"; +import getTypescriptLoader from "./get-typescript-loader"; +import { assetsFolderName, isDevelopment, rendererDir, buildDir, appName, htmlTemplate, publicPath, sassCommonVars } from "./vars"; export function webpackLensRenderer({ showVars = true } = {}): webpack.Configuration { if (showVars) { - console.info("WEBPACK:renderer", { ...vars }); + console.info("WEBPACK:renderer", { + assetsFolderName, + isDevelopment, + rendererDir, + buildDir, + appName, + htmlTemplate, + publicPath, + }); } - const assetsFolderName = "assets"; - const { appName, buildDir, htmlTemplate, isDevelopment, publicPath, rendererDir } = vars; - return { target: "electron-renderer", name: "lens-app-renderer", @@ -67,7 +73,7 @@ export function webpackLensRenderer({ showVars = true } = {}): webpack.Configura test: /\.node$/, use: "node-loader", }, - getTSLoader({ + getTypescriptLoader({ getCustomTransformers: () => ({ before: isDevelopment ? [require("react-refresh-typescript")()] : [], }), @@ -103,14 +109,18 @@ export function webpackLensRenderer({ showVars = true } = {}): webpack.Configura cwd: __dirname, exclude: /node_modules/, failOnError: true, - }), + }) as unknown as WebpackPluginInstance, new MiniCssExtractPlugin({ filename: "[name].css", }), - isDevelopment && new ReactRefreshWebpackPlugin(), - ].filter(Boolean), + ...( + isDevelopment + ? [new ReactRefreshWebpackPlugin()] + : [] + ), + ], }; } @@ -143,15 +153,17 @@ export function fontsLoaderWebpackRules(): webpack.RuleSetRule[] { ]; } +export interface CssModulesWebpackRuleOptions { + styleLoader?: string; +} + /** * Import CSS or SASS styles with modules support (*.module.scss) - * @param {string} styleLoader */ -export function cssModulesWebpackRule( - { - styleLoader = vars.isDevelopment ? "style-loader" : MiniCssExtractPlugin.loader, - } = {}): webpack.RuleSetRule { - const { isDevelopment, sassCommonVars } = vars; +export function cssModulesWebpackRule({ styleLoader }: CssModulesWebpackRuleOptions = {}): webpack.RuleSetRule { + styleLoader ??= isDevelopment + ? "style-loader" + : MiniCssExtractPlugin.loader; return { test: /\.s?css$/, diff --git a/webpack/tsconfig.json b/webpack/tsconfig.json new file mode 100644 index 0000000000..3c43903cfd --- /dev/null +++ b/webpack/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "../tsconfig.json" +} diff --git a/webpack/vars.ts b/webpack/vars.ts new file mode 100644 index 0000000000..fd0b4bcee9 --- /dev/null +++ b/webpack/vars.ts @@ -0,0 +1,25 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import assert from "assert"; +import path from "path"; +import packageInfo from "../package.json"; + +export const isDevelopment = process.env.NODE_ENV !== "production"; +export const mainDir = path.join(process.cwd(), "src", "main"); +export const buildDir = path.join(process.cwd(), "static", "build"); +export const extensionEntry = path.join(process.cwd(), "src", "extensions", "extension-api.ts"); +export const extensionOutDir = path.join(process.cwd(), "src", "extensions", "npm", "extensions", "dist"); +export const assetsFolderName = "assets"; +export const rendererDir = path.join(process.cwd(), "src", "renderer"); +export const appName = isDevelopment + ? `${packageInfo.productName}Dev` + : packageInfo.productName; +export const htmlTemplate = path.resolve(rendererDir, "template.html"); +export const publicPath = "/build/"; +export const sassCommonVars = path.resolve(rendererDir, "components/vars.scss"); +export const webpackDevServerPort = Number(process.env.WEBPACK_DEV_SERVER_PORT) || 9191; + +assert(Number.isInteger(webpackDevServerPort), "WEBPACK_DEV_SERVER_PORT environment variable must only be an integer"); diff --git a/yarn.lock b/yarn.lock index ad5afc143d..972b23276a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,6 +7,17 @@ resolved "https://registry.yarnpkg.com/7zip-bin/-/7zip-bin-5.1.1.tgz#9274ec7460652f9c632c59addf24efb1684ef876" integrity sha512-sAP4LldeWNz0lNzmTird3uWfFDWWTeg6V/MsmyyLR9X1idwKBWIgt/ZvinqQldJm3LecKEs1emkbquO6PCiLVQ== +"@astronautlabs/jsonpath@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@astronautlabs/jsonpath/-/jsonpath-1.1.0.tgz#9b4b04603be2e858d0763619ab3f9d1050b52ef3" + integrity sha512-I4sckUQNYEeF4w6AkujiRblVzC0jo3ja+bxKHB1M2aFiaBjevSGlBdgZ80PgCX5sj65/AhKSFN9+cT908avBlQ== + dependencies: + "@types/esprima" "^4.0.2" + "@types/mkdirp" "^1.0.0" + esprima "1.2.2" + static-eval "2.0.2" + underscore "1.7.0" + "@async-fn/jest@1.5.3": version "1.5.3" resolved "https://registry.yarnpkg.com/@async-fn/jest/-/jest-1.5.3.tgz#42be6c0e8ba5ccd737e006ca600e7e319fe2a591" @@ -385,16 +396,18 @@ global-agent "^2.0.2" global-tunnel-ng "^2.7.1" -"@electron/universal@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.0.5.tgz#b812340e4ef21da2b3ee77b2b4d35c9b86defe37" - integrity sha512-zX9O6+jr2NMyAdSkwEUlyltiI4/EBLu2Ls/VD3pUQdi3cAYeYfdQnT2AJJ38HE4QxLccbU13LSpccw1IWlkyag== +"@electron/universal@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@electron/universal/-/universal-1.2.0.tgz#518cac72bccd79c00bf41345119e6fdbabdb871d" + integrity sha512-eu20BwNsrMPKoe2bZ3/l9c78LclDvxg3PlVXrQf3L50NaUuW5M59gbPytI+V4z7/QMrohUHetQaU0ou+p1UG9Q== dependencies: "@malept/cross-spawn-promise" "^1.1.0" - asar "^3.0.3" + asar "^3.1.0" debug "^4.3.1" dir-compare "^2.4.0" fs-extra "^9.0.1" + minimatch "^3.0.4" + plist "^3.0.4" "@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": version "10.0.29" @@ -990,10 +1003,10 @@ resolved "https://registry.yarnpkg.com/@panva/asn1.js/-/asn1.js-1.0.0.tgz#dd55ae7b8129e02049f009408b97c61ccf9032f6" integrity sha512-UdkG3mLEqXgnlKsWanWcgb6dOjUzJ+XC5f+aWw30qrtjxeNUSfKX1cd5FBzOaXQumoe9nIqeZUvrRJS03HCCtw== -"@pmmmwh/react-refresh-webpack-plugin@^0.5.4": - version "0.5.4" - resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.4.tgz#df0d0d855fc527db48aac93c218a0bf4ada41f99" - integrity sha512-zZbZeHQDnoTlt2AF+diQT0wsSXpvWiaIOZwBRdltNFhG1+I3ozyaw7U/nBiUwyJ0D+zwdXp0E3bWOl38Ag2BMw== +"@pmmmwh/react-refresh-webpack-plugin@^0.5.5": + version "0.5.5" + resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.5.tgz#e77aac783bd079f548daa0a7f080ab5b5a9741ca" + integrity sha512-RbG7h6TuP6nFFYKJwbcToA1rjC1FyPg25NR2noAZ0vKI+la01KTSRPkuVPE+U88jXv7javx2JHglUcL1MHcshQ== dependencies: ansi-html-community "^0.0.8" common-path-prefix "^3.0.0" @@ -1380,7 +1393,7 @@ dependencies: "@types/color-name" "*" -"@types/color-name@*", "@types/color-name@^1.1.1": +"@types/color-name@*": version "1.1.1" resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== @@ -1447,12 +1460,14 @@ "@types/estree" "*" "@types/json-schema" "*" -"@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== +"@types/esprima@^4.0.2": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@types/esprima/-/esprima-4.0.3.tgz#e9068297cc3dd75231fa5cdaa6d75c50d5fb632f" + integrity sha512-jo14dIWVVtF0iMsKkYek6++4cWJjwpvog+rchLulwgFJGTXqIeTdCOvY0B3yMLTaIwMcKCdJ6mQbSR6wYHy98A== + dependencies: + "@types/estree" "*" -"@types/estree@^0.0.51": +"@types/estree@*", "@types/estree@^0.0.51": version "0.0.51" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== @@ -1489,9 +1504,9 @@ integrity sha512-S0mIukll6fbF0tvrKic/jj+jI8SHoSvGU+Cs95b/jzZEnBYCbj+7aJtQ9yeABuK3xP1okwA3jEH9qIRayijnvQ== "@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== dependencies: "@types/minimatch" "*" "@types/node" "*" @@ -1510,10 +1525,10 @@ dependencies: "@types/node" "*" -"@types/history@*", "@types/history@^4.7.8": - version "4.7.8" - resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934" - integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA== +"@types/history@*", "@types/history@^4.7.11", "@types/history@^4.7.8": + version "4.7.11" + resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" + integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== "@types/hoist-non-react-statics@^3.3.0", "@types/hoist-non-react-statics@^3.3.1": version "3.3.1" @@ -1614,11 +1629,6 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/jsonpath@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@types/jsonpath/-/jsonpath-0.2.0.tgz#13c62db22a34d9c411364fac79fd374d63445aa1" - integrity sha512-v7qlPA0VpKUlEdhghbDqRoKMxFB3h3Ch688TApBJ6v+XLDdvWCGLJIYiPKGZnS6MAOie+IorCfNYVHOPIHSWwQ== - "@types/keyv@*": version "3.1.1" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" @@ -1654,9 +1664,9 @@ mini-css-extract-plugin "*" "@types/minimatch@*": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d" - integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/minipass@*": version "2.2.0" @@ -1665,6 +1675,13 @@ dependencies: "@types/node" "*" +"@types/mkdirp@^1.0.0": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/mkdirp/-/mkdirp-1.0.2.tgz#8d0bad7aa793abe551860be1f7ae7f3198c16666" + integrity sha512-o0K1tSO0Dx5X6xlU5F1D6625FawhC3dU3iqr25lluNv/+/QIVH8RLNEiVokgIZo+mz+87w/3Mkg/VvQS+J51fQ== + dependencies: + "@types/node" "*" + "@types/mock-fs@^4.13.1": version "4.13.1" resolved "https://registry.yarnpkg.com/@types/mock-fs/-/mock-fs-4.13.1.tgz#9201554ceb23671badbfa8ac3f1fa9e0706305be" @@ -1685,7 +1702,12 @@ "@types/node" "*" form-data "^3.0.0" -"@types/node@*", "@types/node@14.18.12", "@types/node@^14.6.2": +"@types/node@*": + version "17.0.24" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f" + integrity sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g== + +"@types/node@14.18.12", "@types/node@^14.6.2": version "14.18.12" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.12.tgz#0d4557fd3b94497d793efd4e7d92df2f83b4ef24" integrity sha512-q4jlIR71hUpWTnGhXWcakgkZeHa3CCjcQcnuzU8M891BAWA2jHiziiWEPEkdS5pFsz7H9HJiy8BrK7tBRNrY7A== @@ -1781,12 +1803,12 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-router-dom@^5.3.2": - version "5.3.2" - resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.2.tgz#ebd8e145cf056db5c66eb1dac63c72f52e8542ee" - integrity sha512-ELEYRUie2czuJzaZ5+ziIp9Hhw+juEw8b7C11YNA4QdLCVbQ3qLi2l4aq8XnlqM7V31LZX8dxUuFUCrzHm6sqQ== +"@types/react-router-dom@^5.3.3": + version "5.3.3" + resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" + integrity sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw== dependencies: - "@types/history" "*" + "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router" "*" @@ -2040,9 +2062,9 @@ integrity sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw== "@types/verror@^1.10.3": - version "1.10.4" - resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.4.tgz#805c0612b3a0c124cf99f517364142946b74ba3b" - integrity sha512-OjJdqx6QlbyZw9LShPwRW+Kmiegeg3eWNI41MQQKaG3vjdU2L9SRElntM51HmHBY1cu7izxQJ1lMYioQh3XMBg== + version "1.10.5" + resolved "https://registry.yarnpkg.com/@types/verror/-/verror-1.10.5.tgz#2a1413aded46e67a1fe2386800e291123ed75eb1" + integrity sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw== "@types/webpack-dev-server@^4.7.2": version "4.7.2" @@ -2109,9 +2131,9 @@ "@types/node" "*" "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "21.0.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^15.0.0": version "15.0.13" @@ -2128,9 +2150,9 @@ "@types/yargs-parser" "*" "@types/yargs@^17.0.1": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.2.tgz#8fb2e0f4cdc7ab2a1a570106e56533f31225b584" - integrity sha512-JhZ+pNdKMfB0rXauaDlrIvm+U7V4m03PPOSVoPS66z8gf+G4Z/UW8UlrVIj2MRQOBzuoEvYtjS0bqYwnpZaS9Q== + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" + integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== dependencies: "@types/yargs-parser" "*" @@ -2574,11 +2596,11 @@ ansi-align@^2.0.0: string-width "^2.0.0" ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - string-width "^3.0.0" + string-width "^4.1.0" ansi-escapes@^4.2.1: version "4.3.1" @@ -2598,14 +2620,14 @@ ansi-regex@^2.0.0: integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" + integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== ansi-regex@^5.0.0: version "5.0.0" @@ -2625,11 +2647,10 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" ansi-styles@^5.0.0: @@ -2668,29 +2689,29 @@ anymatch@^3.0.0, anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -app-builder-bin@3.7.1: - version "3.7.1" - resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-3.7.1.tgz#cb0825c5e12efc85b196ac3ed9c89f076c61040e" - integrity sha512-ql93vEUq6WsstGXD+SBLSIQw6SNnhbDEM0swzgugytMxLp3rT24Ag/jcC80ZHxiPRTdew1niuR7P3/FCrDqIjw== +app-builder-bin@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/app-builder-bin/-/app-builder-bin-4.0.0.tgz#1df8e654bd1395e4a319d82545c98667d7eed2f0" + integrity sha512-xwdG0FJPQMe0M0UA4Tz0zEB8rBJTRA5a476ZawAqiBkMv16GRK5xpXThOjMaEOFnZ6zabejjG4J3da0SXG63KA== -app-builder-lib@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-22.14.13.tgz#c1f5b6afc86596357598bb90b69eef06c7c2eeb3" - integrity sha512-SufmrtxU+D0Tn948fjEwAOlCN9757UXLkzzTWXMwZKR/5hisvgqeeBepWfphMIE6OkDGz0fbzEhL1P2Pty4XMg== +app-builder-lib@23.0.3: + version "23.0.3" + resolved "https://registry.yarnpkg.com/app-builder-lib/-/app-builder-lib-23.0.3.tgz#44c90237abdc4ad9b34a24658bee022828ad6205" + integrity sha512-1qrtXYHXJfXhzJnMtVGjIva3067F1qYQubl2oBjI61gCBoCHvhghdYJ57XxXTQQ0VxnUhg1/Iaez87uXp8mD8w== dependencies: "7zip-bin" "~5.1.1" "@develar/schema-utils" "~2.6.5" - "@electron/universal" "1.0.5" + "@electron/universal" "1.2.0" "@malept/flatpak-bundler" "^0.4.0" async-exit-hook "^2.0.1" bluebird-lst "^1.0.9" - builder-util "22.14.13" - builder-util-runtime "8.9.2" + builder-util "23.0.2" + builder-util-runtime "9.0.0" chromium-pickle-js "^0.2.0" debug "^4.3.2" ejs "^3.1.6" - electron-osx-sign "^0.5.0" - electron-publish "22.14.13" + electron-osx-sign "^0.6.0" + electron-publish "23.0.2" form-data "^4.0.0" fs-extra "^10.0.0" hosted-git-info "^4.0.2" @@ -2831,10 +2852,10 @@ asap@^2.0.0: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= -asar@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/asar/-/asar-3.0.3.tgz#1fef03c2d6d2de0cbad138788e4f7ae03b129c7b" - integrity sha512-k7zd+KoR+n8pl71PvgElcoKHrVNiSXtw7odKbyNpmgKe7EGRF9Pnu3uLOukD37EvavKwVFxOUpqXTIZC5B5Pmw== +asar@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/asar/-/asar-3.1.0.tgz#70b0509449fe3daccc63beb4d3c7d2e24d3c6473" + integrity sha512-vyxPxP5arcAqN4F/ebHd/HhwnAiZtwhglvdmc7BR2f0ywbVNTOpSeyhLDbGXtE/y58hv1oC75TaNIXutnsOZsQ== dependencies: chromium-pickle-js "^0.2.0" commander "^5.0.0" @@ -2860,6 +2881,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-exit-hook@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/async-exit-hook/-/async-exit-hook-2.0.1.tgz#8bd8b024b0ec9b1c01cccb9af9db29bd717dfaf3" @@ -3025,7 +3051,7 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.0.2, base64-js@^1.5.1: +base64-js@^1.0.2, base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -3153,15 +3179,15 @@ boxen@^1.2.1: widest-line "^2.0.0" boxen@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.0.1.tgz#657528bdd3f59a772b8279b831f27ec2c744664b" - integrity sha512-49VBlw+PrWEF51aCmy7QIteYPIFZxSpvqBdP/2itCPPlJ49kj9zg/XPRFrdkne2W+CfwXUls8exMvu1RysZpKA== + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" camelcase "^6.2.0" chalk "^4.1.0" cli-boxes "^2.2.1" - string-width "^4.2.0" + string-width "^4.2.2" type-fest "^0.20.2" widest-line "^3.1.0" wrap-ansi "^7.0.0" @@ -3269,12 +3295,25 @@ buffer-fill@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= -buffer-from@1.x, buffer-from@^1.0.0: +buffer-from@1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== -buffer@^5.1.0, buffer@^5.5.0: +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.1.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +buffer@^5.5.0: version "5.6.0" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== @@ -3290,17 +3329,25 @@ builder-util-runtime@8.9.2: debug "^4.3.2" sax "^1.2.4" -builder-util@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-22.14.13.tgz#41b5b7b4ee53aff4e09cc007fb144522598f3ce6" - integrity sha512-oePC/qrrUuerhmH5iaCJzPRAKlSBylrhzuAJmRQClTyWnZUv6jbaHh+VoHMbEiE661wrj2S2aV7/bQh12cj1OA== +builder-util-runtime@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/builder-util-runtime/-/builder-util-runtime-9.0.0.tgz#3a40ba7382712ccdb24471567f91d7c167e00830" + integrity sha512-SkpEtSmTkREDHRJnxKEv43aAYp8sYWY8fxYBhGLBLOBIRXeaIp6Kv3lBgSD7uR8jQtC7CA659sqJrpSV6zNvSA== + dependencies: + debug "^4.3.2" + sax "^1.2.4" + +builder-util@23.0.2: + version "23.0.2" + resolved "https://registry.yarnpkg.com/builder-util/-/builder-util-23.0.2.tgz#da84a971076397e3a671726f4bb96f0c2214fea7" + integrity sha512-HaNHL3axNW/Ms8O1mDx3I07G+ZnZ/TKSWWvorOAPau128cdt9S+lNx5ocbx8deSaHHX4WFXSZVHh3mxlaKJNgg== dependencies: "7zip-bin" "~5.1.1" "@types/debug" "^4.1.6" "@types/fs-extra" "^9.0.11" - app-builder-bin "3.7.1" + app-builder-bin "4.0.0" bluebird-lst "^1.0.9" - builder-util-runtime "8.9.2" + builder-util-runtime "9.0.0" chalk "^4.1.1" cross-spawn "^7.0.3" debug "^4.3.2" @@ -3460,9 +3507,9 @@ camelcase@^6.0.0: integrity sha512-8KMDF1Vz2gzOq54ONPJS65IvTUaB1cHJ2DMM7MbPmLZljDH1qpzzLsWdiN9pHh6qvkRVDTi/07+eNGch/oLU4w== camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== caniuse-lite@^1.0.30001286: version "1.0.30001304" @@ -3486,7 +3533,7 @@ caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -3503,7 +3550,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -3586,10 +3633,10 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ci-info@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" - integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== cidr-regex@^2.0.10: version "2.0.10" @@ -3665,13 +3712,13 @@ cli-table3@^0.5.0, cli-table3@^0.5.1: optionalDependencies: colors "^1.1.2" -cli-truncate@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-1.1.0.tgz#2b2dfd83c53cfd3572b87fc4d430a808afb04086" - integrity sha512-bAtZo0u82gCfaAGfSNxUdTI9mNyza7D8w4CVCcaOsy7sgwDzvx6ekr6cuWJqY3UGzgnQ1+4wgENup5eIhgxEYA== +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== dependencies: - slice-ansi "^1.0.0" - string-width "^2.0.0" + slice-ansi "^3.0.0" + string-width "^4.2.0" cliui@^3.2.0: version "3.2.0" @@ -4360,10 +4407,10 @@ debug@3.1.0, debug@~3.1.0: dependencies: ms "2.0.0" -debug@4, debug@4.3.3, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" @@ -4374,6 +4421,13 @@ debug@4.3.1: dependencies: ms "2.1.2" +debug@4.3.3, debug@^4.1.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== + dependencies: + ms "2.1.2" + debug@^3.1.0, debug@^3.1.1, debug@^3.2.6, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -4619,14 +4673,14 @@ dlv@^1.1.3: resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== -dmg-builder@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-22.14.13.tgz#cc613f3c18e889b8777d525991fd52f50a564f8c" - integrity sha512-xNOugB6AbIRETeU2uID15sUfjdZZcKdxK8xkFnwIggsM00PJ12JxpLNPTjcRoUnfwj3WrPjilrO64vRMwNItQg== +dmg-builder@23.0.3: + version "23.0.3" + resolved "https://registry.yarnpkg.com/dmg-builder/-/dmg-builder-23.0.3.tgz#ea94bc76fcd94612641580f3c6ae42c3f07f3fee" + integrity sha512-mBYrHHnSM5PC656TDE+xTGmXIuWHAGmmRfyM+dV0kP+AxtwPof4pAXNQ8COd0/exZQ4dqf72FiPS3B9G9aB5IA== dependencies: - app-builder-lib "22.14.13" - builder-util "22.14.13" - builder-util-runtime "8.9.2" + app-builder-lib "23.0.3" + builder-util "23.0.2" + builder-util-runtime "9.0.0" fs-extra "^10.0.0" iconv-lite "^0.6.2" js-yaml "^4.1.0" @@ -4634,17 +4688,16 @@ dmg-builder@22.14.13: dmg-license "^1.0.9" dmg-license@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.9.tgz#a2fb8d692af0e30b0730b5afc91ed9edc2d9cb4f" - integrity sha512-Rq6qMDaDou2+aPN2SYy0x7LDznoJ/XaG6oDcH5wXUp+WRWQMUYE6eM+F+nex+/LSXOp1uw4HLFoed0YbfU8R/Q== + version "1.0.11" + resolved "https://registry.yarnpkg.com/dmg-license/-/dmg-license-1.0.11.tgz#7b3bc3745d1b52be7506b4ee80cb61df6e4cd79a" + integrity sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q== dependencies: "@types/plist" "^3.0.1" "@types/verror" "^1.10.3" ajv "^6.10.0" - cli-truncate "^1.1.0" crc "^3.8.0" - iconv-corefoundation "^1.1.6" - plist "^3.0.1" + iconv-corefoundation "^1.1.7" + plist "^3.0.4" smart-buffer "^4.0.2" verror "^1.10.0" @@ -4762,9 +4815,9 @@ dot-prop@^4.2.1: is-obj "^1.0.0" dot-prop@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.2.0.tgz#c34ecc29556dc45f1f4c22697b6f4904e0cc4fcb" - integrity sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A== + version "5.3.0" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" @@ -4828,17 +4881,17 @@ ejs@^3.1.6: dependencies: jake "^10.6.1" -electron-builder@^22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-22.14.13.tgz#fd40564685cf5422a8f8d667940af3d3776f4fb8" - integrity sha512-3fgLxqF2TXVKiUPeg74O4V3l0l3j7ERLazo8sUbRkApw0+4iVAf2BJkHsHMaXiigsgCoEzK/F4/rB5rne/VAnw== +electron-builder@^23.0.3: + version "23.0.3" + resolved "https://registry.yarnpkg.com/electron-builder/-/electron-builder-23.0.3.tgz#16264a0d8e3d40da1467bcc8ef7917538b54a3bc" + integrity sha512-0lnTsljAgcOMuIiOjPcoFf+WxOOe/O04hZPgIvvUBXIbz3kolbNu0Xdch1f5WuQ40NdeZI7oqs8Eo395PcuGHQ== dependencies: "@types/yargs" "^17.0.1" - app-builder-lib "22.14.13" - builder-util "22.14.13" - builder-util-runtime "8.9.2" + app-builder-lib "23.0.3" + builder-util "23.0.2" + builder-util-runtime "9.0.0" chalk "^4.1.1" - dmg-builder "22.14.13" + dmg-builder "23.0.3" fs-extra "^10.0.0" is-ci "^3.0.0" lazy-val "^1.0.5" @@ -4864,10 +4917,10 @@ electron-notarize@^0.3.0: debug "^4.1.1" fs-extra "^8.1.0" -electron-osx-sign@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.5.0.tgz#fc258c5e896859904bbe3d01da06902c04b51c3a" - integrity sha512-icoRLHzFz/qxzDh/N4Pi2z4yVHurlsCAYQvsCSG7fCedJ4UJXBS6PoQyGH71IfcqKupcKeK7HX/NkyfG+v6vlQ== +electron-osx-sign@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/electron-osx-sign/-/electron-osx-sign-0.6.0.tgz#9b69c191d471d9458ef5b1e4fdd52baa059f1bb8" + integrity sha512-+hiIEb2Xxk6eDKJ2FFlpofCnemCbjbT5jz+BKGpVBrRNT3kWTGs4DfNX6IzGwgi33hUcXF+kFs9JW+r6Wc1LRg== dependencies: bluebird "^3.5.0" compare-version "^0.1.2" @@ -4876,14 +4929,14 @@ electron-osx-sign@^0.5.0: minimist "^1.2.0" plist "^3.0.1" -electron-publish@22.14.13: - version "22.14.13" - resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-22.14.13.tgz#8b71e6975af8cc6ac5b21f293ade23f8704047c7" - integrity sha512-0oP3QiNj3e8ewOaEpEJV/o6Zrmy2VarVvZ/bH7kyO/S/aJf9x8vQsKVWpsdmSiZ5DJEHgarFIXrnO0ZQf0P9iQ== +electron-publish@23.0.2: + version "23.0.2" + resolved "https://registry.yarnpkg.com/electron-publish/-/electron-publish-23.0.2.tgz#aa11419ae57b847df4beb63b95e2b2a43161957c" + integrity sha512-8gMYgWqv96lc83FCm85wd+tEyxNTJQK7WKyPkNkO8GxModZqt1GO8S+/vAnFGxilS/7vsrVRXFfqiCDUCSuxEg== dependencies: "@types/fs-extra" "^9.0.11" - builder-util "22.14.13" - builder-util-runtime "8.9.2" + builder-util "23.0.2" + builder-util-runtime "9.0.0" chalk "^4.1.1" fs-extra "^10.0.0" lazy-val "^1.0.5" @@ -5104,75 +5157,75 @@ es6-promisify@^5.0.0: dependencies: es6-promise "^4.0.3" -esbuild-android-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.34.tgz#46bc4327dd0809937912346244eaffdb9bfc980d" - integrity sha512-XfxcfJqmMYsT/LXqrptzFxmaR3GWzXHDLdFNIhm6S00zPaQF1TBBWm+9t0RZ6LRR7iwH57DPjaOeW20vMqI4Yw== +esbuild-android-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.38.tgz#5b94a1306df31d55055f64a62ff6b763a47b7f64" + integrity sha512-aRFxR3scRKkbmNuGAK+Gee3+yFxkTJO/cx83Dkyzo4CnQl/2zVSurtG6+G86EQIZ+w+VYngVyK7P3HyTBKu3nw== -esbuild-android-arm64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.34.tgz#a3f7e1ad84b8a7dcb39b5e132768b56ee7133656" - integrity sha512-T02+NXTmSRL1Mc6puz+R9CB54rSPICkXKq6+tw8B6vxZFnCPzbJxgwIX4kcluz9p8nYBjF3+lSilTGWb7+Xgew== +esbuild-android-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.38.tgz#78acc80773d16007de5219ccce544c036abd50b8" + integrity sha512-L2NgQRWuHFI89IIZIlpAcINy9FvBk6xFVZ7xGdOwIm8VyhX1vNCEqUJO3DPSSy945Gzdg98cxtNt8Grv1CsyhA== -esbuild-darwin-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.34.tgz#a0e4ab7a0cddf76761f1fb5d6bf552a376beb16e" - integrity sha512-pLRip2Bh4Ng7Bf6AMgCrSp3pPe/qZyf11h5Qo2mOfJqLWzSVjxrXW+CFRJfrOVP7TCnh/gmZSM2AFdCPB72vtw== +esbuild-darwin-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.38.tgz#e02b1291f629ebdc2aa46fabfacc9aa28ff6aa46" + integrity sha512-5JJvgXkX87Pd1Og0u/NJuO7TSqAikAcQQ74gyJ87bqWRVeouky84ICoV4sN6VV53aTW+NE87qLdGY4QA2S7KNA== -esbuild-darwin-arm64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.34.tgz#54c35461f82f83a7f5169d9a6a54201798977b07" - integrity sha512-vpidSJEBxx6lf1NWgXC+DCmGqesJuZ5Y8aQVVsaoO4i8tRXbXb0whChRvop/zd3nfNM4dIl5EXAky0knRX5I6w== +esbuild-darwin-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.38.tgz#01eb6650ec010b18c990e443a6abcca1d71290a9" + integrity sha512-eqF+OejMI3mC5Dlo9Kdq/Ilbki9sQBw3QlHW3wjLmsLh+quNfHmGMp3Ly1eWm981iGBMdbtSS9+LRvR2T8B3eQ== -esbuild-freebsd-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.34.tgz#aebb50248f5874d04ffeab2db8ee1ed6037e2654" - integrity sha512-m0HBjePhe0hAQJgtMRMNV9kMgIyV4/qSnzPx42kRMQBcPhgjAq1JRu4Il26czC+9FgpMbFkUktb07f/Lwnc6CA== +esbuild-freebsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.38.tgz#790b8786729d4aac7be17648f9ea8e0e16475b5e" + integrity sha512-epnPbhZUt93xV5cgeY36ZxPXDsQeO55DppzsIgWM8vgiG/Rz+qYDLmh5ts3e+Ln1wA9dQ+nZmVHw+RjaW3I5Ig== -esbuild-freebsd-arm64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.34.tgz#09bef288e29f18b38b0c70a9827b6ee718e36c7f" - integrity sha512-cpRc2B94L1KvMPPYB4D6G39jLqpKlD3noAMY4/e86iXXXkhUYJJEtTuyNFTa9JRpWM0xCAp4mxjHjoIiLuoCLA== +esbuild-freebsd-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.38.tgz#b66340ab28c09c1098e6d9d8ff656db47d7211e6" + integrity sha512-/9icXUYJWherhk+y5fjPI5yNUdFPtXHQlwP7/K/zg8t8lQdHVj20SqU9/udQmeUo5pDFHMYzcEFfJqgOVeKNNQ== -esbuild-linux-32@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.34.tgz#67790061758e008e919e65bbc34549f55dadaca7" - integrity sha512-8nQaEaoW7MH/K/RlozJa+lE1ejHIr8fuPIHhc513UebRav7HtXgQvxHQ6VZRUkWtep23M6dd7UqhwO1tMOfzQQ== +esbuild-linux-32@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.38.tgz#7927f950986fd39f0ff319e92839455912b67f70" + integrity sha512-QfgfeNHRFvr2XeHFzP8kOZVnal3QvST3A0cgq32ZrHjSMFTdgXhMhmWdKzRXP/PKcfv3e2OW9tT9PpcjNvaq6g== -esbuild-linux-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.34.tgz#b9b19d4ac07e37495dd2508ec843418aa71c98d6" - integrity sha512-Y3of4qQoLLlAgf042MlrY1P+7PnN9zWj8nVtw9XQG5hcLOZLz7IKpU35oeu7n4wvyaZHwvQqDJ93gRLqdJekcQ== +esbuild-linux-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.38.tgz#4893d07b229d9cfe34a2b3ce586399e73c3ac519" + integrity sha512-uuZHNmqcs+Bj1qiW9k/HZU3FtIHmYiuxZ/6Aa+/KHb/pFKr7R3aVqvxlAudYI9Fw3St0VCPfv7QBpUITSmBR1Q== -esbuild-linux-arm64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.34.tgz#fd84b11a6ccfe9e83e00d0c45890e9fb3a7248c1" - integrity sha512-IlWaGtj9ir7+Nrume1DGcyzBDlK8GcnJq0ANKwcI9pVw8tqr+6GD0eqyF9SF1mR8UmAp+odrx1H5NdR2cHdFHA== +esbuild-linux-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.38.tgz#8442402e37d0b8ae946ac616784d9c1a2041056a" + integrity sha512-HlMGZTEsBrXrivr64eZ/EO0NQM8H8DuSENRok9d+Jtvq8hOLzrxfsAT9U94K3KOGk2XgCmkaI2KD8hX7F97lvA== -esbuild-linux-arm@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.34.tgz#c89d4714b05265a315a97c8933508cc73950e683" - integrity sha512-9lpq1NcJqssAF7alCO6zL3gvBVVt/lKw4oetUM7OgNnRX0OWpB+ZIO9FwCrSj/dMdmgDhPLf+119zB8QxSMmAg== +esbuild-linux-arm@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.38.tgz#d5dbf32d38b7f79be0ec6b5fb2f9251fd9066986" + integrity sha512-FiFvQe8J3VKTDXG01JbvoVRXQ0x6UZwyrU4IaLBZeq39Bsbatd94Fuc3F1RGqPF5RbIWW7RvkVQjn79ejzysnA== -esbuild-linux-mips64le@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.34.tgz#d60752c3fb1260dd0737532af2de2a9521656456" - integrity sha512-k3or+01Rska1AjUyNjA4buEwB51eyN/xPQAoOx1CjzAQC3l8rpjUDw55kXyL63O/1MUi4ISvtNtl8gLwdyEcxw== +esbuild-linux-mips64le@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.38.tgz#95081e42f698bbe35d8ccee0e3a237594b337eb5" + integrity sha512-qd1dLf2v7QBiI5wwfil9j0HG/5YMFBAmMVmdeokbNAMbcg49p25t6IlJFXAeLzogv1AvgaXRXvgFNhScYEUXGQ== -esbuild-linux-ppc64le@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.34.tgz#f4c6229269956564f0c6f9825f5e717c2cfc22b3" - integrity sha512-+qxb8M9FfM2CJaVU7GgYpJOHM1ngQOx+/VrtBjb4C8oVqaPcESCeg2anjl+HRZy8VpYc71q/iBYausPPbJ+Keg== +esbuild-linux-ppc64le@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.38.tgz#dceb0a1b186f5df679618882a7990bd422089b47" + integrity sha512-mnbEm7o69gTl60jSuK+nn+pRsRHGtDPfzhrqEUXyCl7CTOCLtWN2bhK8bgsdp6J/2NyS/wHBjs1x8aBWwP2X9Q== -esbuild-linux-riscv64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.34.tgz#549bd18a9eba3135b67f7b742730b5343a1be35d" - integrity sha512-Y717ltBdQ5j5sZIHdy1DV9kieo0wMip0dCmVSTceowCPYSn1Cg33Kd6981+F/3b9FDMzNWldZFOBRILViENZSA== +esbuild-linux-riscv64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.38.tgz#61fb8edb75f475f9208c4a93ab2bfab63821afd2" + integrity sha512-+p6YKYbuV72uikChRk14FSyNJZ4WfYkffj6Af0/Tw63/6TJX6TnIKE+6D3xtEc7DeDth1fjUOEqm+ApKFXbbVQ== -esbuild-linux-s390x@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.34.tgz#2a6b577c437f94c2b37623c755ff5215a05c12bc" - integrity sha512-bDDgYO4LhL4+zPs+WcBkXph+AQoPcQRTv18FzZS0WhjfH8TZx2QqlVPGhmhZ6WidrY+jKthUqO6UhGyIb4MpmA== +esbuild-linux-s390x@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.38.tgz#34c7126a4937406bf6a5e69100185fd702d12fe0" + integrity sha512-0zUsiDkGJiMHxBQ7JDU8jbaanUY975CdOW1YDrurjrM0vWHfjv9tLQsW9GSyEb/heSK1L5gaweRjzfUVBFoybQ== esbuild-loader@^2.18.0: version "2.18.0" @@ -5186,61 +5239,61 @@ esbuild-loader@^2.18.0: tapable "^2.2.0" webpack-sources "^2.2.0" -esbuild-netbsd-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.34.tgz#7f0b73229157975eb35597207723df52ba21722a" - integrity sha512-cfaFGXdRt0+vHsjNPyF0POM4BVSHPSbhLPe8mppDc7GDDxjIl08mV1Zou14oDWMp/XZMjYN1kWYRSfftiD0vvQ== +esbuild-netbsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.38.tgz#322ea9937d9e529183ee281c7996b93eb38a5d95" + integrity sha512-cljBAApVwkpnJZfnRVThpRBGzCi+a+V9Ofb1fVkKhtrPLDYlHLrSYGtmnoTVWDQdU516qYI8+wOgcGZ4XIZh0Q== -esbuild-openbsd-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.34.tgz#b9bc44b4f70031fb01b173b279daeffc4d4f54b7" - integrity sha512-vmy9DxXVnRiI14s8GKuYBtess+EVcDALkbpTqd5jw4XITutIzyB7n4x0Tj5utAkKsgZJB22lLWGekr0ABnSLow== +esbuild-openbsd-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.38.tgz#1ca29bb7a2bf09592dcc26afdb45108f08a2cdbd" + integrity sha512-CDswYr2PWPGEPpLDUO50mL3WO/07EMjnZDNKpmaxUPsrW+kVM3LoAqr/CE8UbzugpEiflYqJsGPLirThRB18IQ== -esbuild-sunos-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.34.tgz#512dd6085ac1a0dccc20c5f932f16a618bea409c" - integrity sha512-eNPVatNET1F7tRMhii7goL/eptfxc0ALRjrj9SPFNqp0zmxrehBFD6BaP3R4LjMn6DbMO0jOAnTLFKr8NqcJAA== +esbuild-sunos-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.38.tgz#c9446f7d8ebf45093e7bb0e7045506a88540019b" + integrity sha512-2mfIoYW58gKcC3bck0j7lD3RZkqYA7MmujFYmSn9l6TiIcAMpuEvqksO+ntBgbLep/eyjpgdplF7b+4T9VJGOA== -esbuild-windows-32@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.34.tgz#3ff1afd5cac08050c7c7140a59e343b06f6b037c" - integrity sha512-EFhpXyHEcnqWYe2rAHFd8dRw8wkrd9U+9oqcyoEL84GbanAYjiiIjBZsnR8kl0sCQ5w6bLpk7vCEIA2VS32Vcg== +esbuild-windows-32@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.38.tgz#f8e9b4602fd0ccbd48e5c8d117ec0ba4040f2ad1" + integrity sha512-L2BmEeFZATAvU+FJzJiRLFUP+d9RHN+QXpgaOrs2klshoAm1AE6Us4X6fS9k33Uy5SzScn2TpcgecbqJza1Hjw== -esbuild-windows-64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.34.tgz#66f7b43d2a0b132f6748dfa3edac4fc939a99be0" - integrity sha512-a8fbl8Ky7PxNEjf1aJmtxdDZj32/hC7S1OcA2ckEpCJRTjiKslI9vAdPpSjrKIWhws4Galpaawy0nB7fjHYf5Q== +esbuild-windows-64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.38.tgz#280f58e69f78535f470905ce3e43db1746518107" + integrity sha512-Khy4wVmebnzue8aeSXLC+6clo/hRYeNIm0DyikoEqX+3w3rcvrhzpoix0S+MF9vzh6JFskkIGD7Zx47ODJNyCw== -esbuild-windows-arm64@0.14.34: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.34.tgz#b74a6395b7b7e53dba70b71b39542afd83352473" - integrity sha512-EYvmKbSa2B3sPnpC28UEu9jBK5atGV4BaVRE7CYGUci2Hlz4AvtV/LML+TcDMT6gBgibnN2gcltWclab3UutMg== +esbuild-windows-arm64@0.14.38: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.38.tgz#d97e9ac0f95a4c236d9173fa9f86c983d6a53f54" + integrity sha512-k3FGCNmHBkqdJXuJszdWciAH77PukEyDsdIryEHn9cKLQFxzhT39dSumeTuggaQcXY57UlmLGIkklWZo2qzHpw== -esbuild@^0.14.34, esbuild@^0.14.6: - version "0.14.34" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.34.tgz#3610056f0a57bcfd0b63ddaafdb2e3bef1cf96e4" - integrity sha512-QIWdPT/gFF6hCaf4m7kP0cJ+JIuFkdHibI7vVFvu3eJS1HpVmYHWDulyN5WXwbRA0SX/7ZDaJ/1DH8SdY9xOJg== +esbuild@^0.14.38, esbuild@^0.14.6: + version "0.14.38" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.38.tgz#99526b778cd9f35532955e26e1709a16cca2fb30" + integrity sha512-12fzJ0fsm7gVZX1YQ1InkOE5f9Tl7cgf6JPYXRJtPIoE0zkWAbHdPHVPPaLi9tYAcEBqheGzqLn/3RdTOyBfcA== optionalDependencies: - esbuild-android-64 "0.14.34" - esbuild-android-arm64 "0.14.34" - esbuild-darwin-64 "0.14.34" - esbuild-darwin-arm64 "0.14.34" - esbuild-freebsd-64 "0.14.34" - esbuild-freebsd-arm64 "0.14.34" - esbuild-linux-32 "0.14.34" - esbuild-linux-64 "0.14.34" - esbuild-linux-arm "0.14.34" - esbuild-linux-arm64 "0.14.34" - esbuild-linux-mips64le "0.14.34" - esbuild-linux-ppc64le "0.14.34" - esbuild-linux-riscv64 "0.14.34" - esbuild-linux-s390x "0.14.34" - esbuild-netbsd-64 "0.14.34" - esbuild-openbsd-64 "0.14.34" - esbuild-sunos-64 "0.14.34" - esbuild-windows-32 "0.14.34" - esbuild-windows-64 "0.14.34" - esbuild-windows-arm64 "0.14.34" + esbuild-android-64 "0.14.38" + esbuild-android-arm64 "0.14.38" + esbuild-darwin-64 "0.14.38" + esbuild-darwin-arm64 "0.14.38" + esbuild-freebsd-64 "0.14.38" + esbuild-freebsd-arm64 "0.14.38" + esbuild-linux-32 "0.14.38" + esbuild-linux-64 "0.14.38" + esbuild-linux-arm "0.14.38" + esbuild-linux-arm64 "0.14.38" + esbuild-linux-mips64le "0.14.38" + esbuild-linux-ppc64le "0.14.38" + esbuild-linux-riscv64 "0.14.38" + esbuild-linux-s390x "0.14.38" + esbuild-netbsd-64 "0.14.38" + esbuild-openbsd-64 "0.14.38" + esbuild-sunos-64 "0.14.38" + esbuild-windows-32 "0.14.38" + esbuild-windows-64 "0.14.38" + esbuild-windows-arm64 "0.14.38" escalade@^3.1.1: version "3.1.1" @@ -5336,10 +5389,10 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-react-hooks@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz#318dbf312e06fab1c835a4abef00121751ac1172" - integrity sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA== +eslint-plugin-react-hooks@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.4.0.tgz#71c39e528764c848d8253e1aa2c7024ed505f6c4" + integrity sha512-U3RVIfdzJaeKDQKEJbz5p3NW8/L80PCATJAfuojwbaEL+gBjfGdhUcGde+WGUW46Q5sr/NgxevsIiDtNXrvZaQ== eslint-plugin-react@^7.29.4: version "7.29.4" @@ -5723,9 +5776,9 @@ extsprintf@1.3.0: integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= extsprintf@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" - integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -5830,9 +5883,9 @@ filehound@^1.17.5: unit-compare "^1.0.1" filelist@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.1.tgz#f10d1a3ae86c1694808e8f20906f43d4c9132dbb" - integrity sha512-8zSK6Nu0DQIC08mUC46sWGXi+q3GGpKydAG36k+JDba6VRpkevvOWUW5a/PhShij4+vHT9M+ghgG7eM+a9JDUQ== + version "1.0.2" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" + integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== dependencies: minimatch "^3.0.4" @@ -6051,9 +6104,9 @@ fs-constants@^1.0.0: integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" jsonfile "^6.0.1" @@ -6234,13 +6287,20 @@ get-stream@^4.0.0, get-stream@^4.1.0: dependencies: pump "^3.0.0" -get-stream@^5.0.0, get-stream@^5.1.0: +get-stream@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== dependencies: pump "^3.0.0" +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + get-stream@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" @@ -6422,9 +6482,9 @@ got@^9.6.0: url-parse-lax "^3.0.0" graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: - version "4.2.9" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" - integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== "graceful-readlink@>= 1.0.0": version "1.0.1" @@ -6598,9 +6658,9 @@ hosted-git-info@^2.1.4, hosted-git-info@^2.7.1, hosted-git-info@^2.8.9: integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== hosted-git-info@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" - integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" + integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== dependencies: lru-cache "^6.0.0" @@ -6769,7 +6829,7 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" -https-proxy-agent@5.0.0, https-proxy-agent@^5.0.0: +https-proxy-agent@5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== @@ -6785,6 +6845,14 @@ https-proxy-agent@^2.2.3: agent-base "^4.3.0" debug "^3.1.0" +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -6807,12 +6875,12 @@ hyphenate-style-name@^1.0.3: resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.3.tgz#097bb7fa0b8f1a9cf0bd5c734cf95899981a9b48" integrity sha512-EcuixamT82oplpoJ2XU4pDtKGWQ7b00CD9f1ug9IaQ3p1bkHMiKCZ9ut9QDI6qsa6cpUuB+A/I+zLtdNK4n2DQ== -iconv-corefoundation@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.6.tgz#27c135470237f6f8d13462fa1f5eaf250523c29a" - integrity sha512-1NBe55C75bKGZaY9UHxvXG3G0gEp0ziht7quhuFrW3SPgZDw9HI6qvYXRSV5M/Eupyu8ljuJ6Cba+ec15PZ4Xw== +iconv-corefoundation@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/iconv-corefoundation/-/iconv-corefoundation-1.1.7.tgz#31065e6ab2c9272154c8b0821151e2c88f1b002a" + integrity sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ== dependencies: - cli-truncate "^1.1.0" + cli-truncate "^2.1.0" node-addon-api "^1.6.3" iconv-lite@0.4.24, iconv-lite@^0.4.4: @@ -6823,9 +6891,9 @@ iconv-lite@0.4.24, iconv-lite@^0.4.4: safer-buffer ">= 2.1.2 < 3" iconv-lite@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" - integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== dependencies: safer-buffer ">= 2.1.2 < 3.0.0" @@ -6848,10 +6916,10 @@ identity-obj-proxy@^3.0.0: dependencies: harmony-reflect "^1.4.6" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13, ieee754@^1.1.4: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== iferr@^0.1.5: version "0.1.5" @@ -7131,11 +7199,11 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-ci@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.0.tgz#c7e7be3c9d8eef7d0fa144390bd1e4b88dc4c994" - integrity sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ== + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - ci-info "^3.1.1" + ci-info "^3.2.0" is-cidr@^3.0.0: version "3.1.1" @@ -7488,9 +7556,9 @@ isbinaryfile@^3.0.2: buffer-alloc "^1.2.0" isbinaryfile@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" - integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== isexe@^2.0.0: version "2.0.0" @@ -7561,12 +7629,12 @@ istanbul-reports@^3.0.2: istanbul-lib-report "^3.0.0" jake@^10.6.1: - version "10.8.1" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.1.tgz#0f6f5ef13ebe014104527fb4b1b24f44cd1f04d6" - integrity sha512-eSp5h9S7UFzKdQERTyF+KuPLjDZa1Tbw8gCVUn98n4PbIkLEDGe4zl7vF4Qge9kQj06HcymnksPk8jznPZeKsA== + version "10.8.4" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.4.tgz#f6a8b7bf90c6306f768aa82bb7b98bf4ca15e84a" + integrity sha512-MtWeTkl1qGsWUtbl/Jsca/8xSoK3x0UmS82sNbjqxxG/de/M/3b1DntdjHgPMC50enlTNwXOCRqPXLLt5cCfZA== dependencies: async "0.9.x" - chalk "^2.4.2" + chalk "^4.0.2" filelist "^1.0.1" minimatch "^3.0.4" @@ -8116,7 +8184,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= -json5@2.x, json5@^2.1.2, json5@^2.2.0: +json5@2.x, json5@^2.1.2: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -8135,6 +8203,11 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +json5@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" + integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + jsonc-parser@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.0.0.tgz#abdd785701c7e7eaca8a9ec8cf070ca51a745a22" @@ -8166,15 +8239,6 @@ jsonpath-plus@^0.19.0: resolved "https://registry.yarnpkg.com/jsonpath-plus/-/jsonpath-plus-0.19.0.tgz#b901e57607055933dc9a8bef0cc25160ee9dd64c" integrity sha512-GSVwsrzW9LsA5lzsqe4CkuZ9wp+kxBb2GwNniaWzI2YFn5Ig42rSW8ZxVpWXaAfakXNrx5pgY5AbQq7kzX29kg== -jsonpath@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/jsonpath/-/jsonpath-1.1.1.tgz#0ca1ed8fb65bb3309248cc9d5466d12d5b0b9901" - integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w== - dependencies: - esprima "1.2.2" - static-eval "2.0.2" - underscore "1.12.1" - jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -8961,36 +9025,17 @@ micromatch@^4.0.0, micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.1" picomatch "^2.2.3" -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== - -mime-db@1.51.0, "mime-db@>= 1.43.0 < 2": - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== - mime-db@1.52.0: version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== - dependencies: - mime-db "1.48.0" +"mime-db@>= 1.43.0 < 2": + version "1.51.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== - dependencies: - mime-db "1.51.0" - -mime-types@~2.1.34: +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -9008,9 +9053,9 @@ mime@3.0.0: integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== mime@^2.5.2: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== mimic-fn@^1.0.0: version "1.2.0" @@ -9209,10 +9254,10 @@ moment-timezone@^0.5.34: dependencies: moment ">= 2.9.0" -"moment@>= 2.9.0", moment@^2.10.2, moment@^2.14.1, moment@^2.29.1: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +"moment@>= 2.9.0", moment@^2.10.2, moment@^2.14.1, moment@^2.29.1, moment@^2.29.3: + version "2.29.3" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.3.tgz#edd47411c322413999f7a5940d526de183c031f3" + integrity sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw== monaco-editor-webpack-plugin@^5.0.0: version "5.0.0" @@ -10457,7 +10502,7 @@ playwright@^1.20.2: dependencies: playwright-core "1.20.2" -plist@^3.0.1: +plist@^3.0.1, plist@^3.0.4: version "3.0.5" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA== @@ -10982,28 +11027,28 @@ react-refresh-typescript@^2.0.4: resolved "https://registry.yarnpkg.com/react-refresh-typescript/-/react-refresh-typescript-2.0.4.tgz#f20acdb3a538fc79da10c64fdd5560bea01309f1" integrity sha512-ySsBExEFik5Jjf7NoXtFbzUk2rYWM4gF5gg+wRTNmp9p7B2uMpAAa339FHWqmB8EAr0e6mzzskAXxc0Jd04fBw== -react-refresh@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" - integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A== +react-refresh@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.12.0.tgz#28ac0a2c30ef2bb3433d5fd0621e69a6d774c3a4" + integrity sha512-suLIhrU2IHKL5JEKR/fAwJv7bbeq4kJ+pJopf77jHwuR+HmJS/HbrPIGsTBUVfw7tXPOmYv7UJ7PCaN49e8x4A== -react-router-dom@^5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.0.tgz#da1bfb535a0e89a712a93b97dd76f47ad1f32363" - integrity sha512-ObVBLjUZsphUUMVycibxgMdh5jJ1e3o+KpAZBVeHcNQZ4W+uUGGWsokurzlF4YOldQYRQL4y6yFRWM4m3svmuQ== +react-router-dom@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-5.3.1.tgz#0151baf2365c5fcd8493f6ec9b9b31f34d0f8ae1" + integrity sha512-f0pj/gMAbv9e8gahTmCEY20oFhxhrmHwYeIwH5EO5xu0qme+wXtsdB8YfUOAZzUz4VaXmb58m3ceiLtjMhqYmQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" loose-envify "^1.3.1" prop-types "^15.6.2" - react-router "5.2.1" + react-router "5.3.1" tiny-invariant "^1.0.2" tiny-warning "^1.0.0" -react-router@5.2.1, react-router@^5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.2.1.tgz#4d2e4e9d5ae9425091845b8dbc6d9d276239774d" - integrity sha512-lIboRiOtDLFdg1VTemMwud9vRVuOCZmUIT/7lUoZiSpPODiiH1UQlfXy+vPLC/7IWdFYnhRwAyNqA/+I7wnvKQ== +react-router@5.3.1, react-router@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-5.3.1.tgz#b13e84a016c79b9e80dde123ca4112c4f117e3cf" + integrity sha512-v+zwjqb7bakqgF+wMVKlAPTca/cEmPOvQ9zt7gpSNyPXau1+0qvuYZ5BWzzNDP1y6s15zDwgb9rPN63+SIniRQ== dependencies: "@babel/runtime" "^7.12.13" history "^4.9.0" @@ -11285,9 +11330,9 @@ registry-auth-token@^3.0.1: safe-buffer "^5.0.1" registry-auth-token@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.1.1.tgz#40a33be1e82539460f94328b0f7f0f84c16d9479" - integrity sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA== + version "4.2.1" + resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: rc "^1.2.8" @@ -11705,10 +11750,10 @@ semver-diff@^3.1.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" @@ -11896,11 +11941,16 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== +signal-exit@^3.0.2: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + simple-concat@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" @@ -11932,19 +11982,26 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== -slice-ansi@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" - integrity sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== dependencies: - is-fullwidth-code-point "^2.0.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" slide@^1.1.6, slide@~1.1.3, slide@~1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= -smart-buffer@^4.0.2, smart-buffer@^4.1.0: +smart-buffer@^4.0.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +smart-buffer@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== @@ -12063,18 +12120,18 @@ source-map-resolve@^0.6.0: atob "^2.1.2" decode-uri-component "^0.2.0" -source-map-support@^0.5.19, source-map-support@^0.5.6: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== +source-map-support@^0.5.19, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== +source-map-support@^0.5.6: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -12323,14 +12380,14 @@ string-width@^3.0.0, string-width@^3.1.0: is-fullwidth-code-point "^2.0.0" strip-ansi "^5.1.0" -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" + strip-ansi "^6.0.1" string.prototype.matchall@^4.0.6: version "4.0.6" @@ -12518,13 +12575,20 @@ supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0: dependencies: has-flag "^3.0.0" -supports-color@^7.0.0, supports-color@^7.1.0: +supports-color@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== dependencies: has-flag "^4.0.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + supports-color@^8.0.0, supports-color@^8.1.0: version "8.1.1" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" @@ -12587,16 +12651,11 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.0.0, tapable@^2.1.1: +tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== -tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== - tar-fs@^2.0.0, tar-fs@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" @@ -12784,9 +12843,9 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.2, tiny-warning@^1.0.3: integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== tmp-promise@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.2.tgz#6e933782abff8b00c3119d63589ca1fb9caaa62a" - integrity sha512-OyCLAKU1HzBjL6Ev3gxUeraJNlbNingmi8IrHHEsYH8LTmEuhvYfqvhn2F/je+mjf4N58UmZ96OMEy1JanSCpA== + version "3.0.3" + resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7" + integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ== dependencies: tmp "^0.2.0" @@ -13154,7 +13213,12 @@ undefsafe@^2.0.5: resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -underscore@1.12.1, underscore@^1.9.1: +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.9.1: version "1.12.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.12.1.tgz#7bb8cc9b3d397e201cf8553336d262544ead829e" integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw== @@ -13407,7 +13471,7 @@ vary@~1.1.2: resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= -verror@1.10.0, verror@^1.10.0: +verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= @@ -13416,6 +13480,15 @@ verror@1.10.0, verror@^1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +verror@^1.10.0: + version "1.10.1" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.1.tgz#4bf09eeccf4563b109ed4b3d458380c972b0cdeb" + integrity sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + vscode-oniguruma@^1.6.1: version "1.6.2" resolved "https://registry.yarnpkg.com/vscode-oniguruma/-/vscode-oniguruma-1.6.2.tgz#aeb9771a2f1dbfc9083c8a7fdd9cccaa3f386607" @@ -13574,10 +13647,10 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5, webpack@^5.1.0, webpack@^5.69.0: - version "5.70.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.70.0.tgz#3461e6287a72b5e6e2f4872700bc8de0d7500e6d" - integrity sha512-ZMWWy8CeuTTjCxbeaQI21xSswseF2oNOwc70QSKNePvmxE7XW36i7vpBMYZFAUHPwQiEbNGCEYIOOlyRbdGmxw== +webpack@^5, webpack@^5.1.0, webpack@^5.72.0: + version "5.72.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.72.0.tgz#f8bc40d9c6bb489a4b7a8a685101d6022b8b6e28" + integrity sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^0.0.51" @@ -13947,6 +14020,11 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^21.0.0: + version "21.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" + integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== + yargs-parser@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" @@ -14002,17 +14080,17 @@ yargs@^16.2.0: yargs-parser "^20.2.2" yargs@^17.0.1: - version "17.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.1.1.tgz#c2a8091564bdb196f7c0a67c1d12e5b85b8067ba" - integrity sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ== + version "17.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.4.1.tgz#ebe23284207bb75cee7c408c33e722bfb27b5284" + integrity sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g== dependencies: cliui "^7.0.2" escalade "^3.1.1" get-caller-file "^2.0.5" require-directory "^2.1.1" - string-width "^4.2.0" + string-width "^4.2.3" y18n "^5.0.5" - yargs-parser "^20.2.2" + yargs-parser "^21.0.0" yargs@^8.0.2: version "8.0.2"