From 75fb95a8bf70f3ae28f72efed05fc81a231b883b Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Thu, 15 Feb 2024 10:21:29 +0200 Subject: [PATCH 1/9] fix: missing crds folder runtime error --- src/redux/appConfig/appConfig.listeners.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/redux/appConfig/appConfig.listeners.ts b/src/redux/appConfig/appConfig.listeners.ts index ddef4f305f..b0194e0caa 100644 --- a/src/redux/appConfig/appConfig.listeners.ts +++ b/src/redux/appConfig/appConfig.listeners.ts @@ -1,7 +1,12 @@ +import {pathExists} from 'fs-extra'; +import log from 'loglevel'; + import {AppListenerFn} from '@redux/listeners/base'; import {readSavedCrdKindHandlers} from '@src/kindhandlers'; +import {createFolder} from '@shared/utils'; + import {setUserDirs} from './appConfig.slice'; const crdsPathChangedListener: AppListenerFn = listen => { @@ -11,6 +16,15 @@ const crdsPathChangedListener: AppListenerFn = listen => { const crdsDir = getState().config.userCrdsDir; if (crdsDir) { + if (!(await pathExists(crdsDir))) { + try { + log.info(`Creating CRDs directory at ${crdsDir}.`); + await createFolder(crdsDir); + } catch { + log.warn(`Failed to create CRDs directory at ${crdsDir}.`); + } + } + // TODO: can we avoid having this property on the window object? (window as any).monokleUserCrdsDir = crdsDir; readSavedCrdKindHandlers(crdsDir); From a05348d37afbde808ea46ee9d2dcbac7580aaca3 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Wed, 21 Feb 2024 15:41:51 +0200 Subject: [PATCH 2/9] fix: access debug logs for failed proxy setups --- electron/app/services/cluster/handlers/debugProxy.ts | 3 +++ electron/kubernetes/ProxyService.ts | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/electron/app/services/cluster/handlers/debugProxy.ts b/electron/app/services/cluster/handlers/debugProxy.ts index c689509e0e..462391805d 100644 --- a/electron/app/services/cluster/handlers/debugProxy.ts +++ b/electron/app/services/cluster/handlers/debugProxy.ts @@ -16,6 +16,9 @@ export async function debugProxy({context, kubeconfig}: DebugProxyArgs): Promise return proxy.debugInfo; } + const proxy = await PROXY_SERVICE.getLast(); + if (proxy) return proxy.debugInfo; + return { cmd: 'kubectl proxy exited', logs: [ diff --git a/electron/kubernetes/ProxyService.ts b/electron/kubernetes/ProxyService.ts index 2acd9ed1bd..875aac044a 100644 --- a/electron/kubernetes/ProxyService.ts +++ b/electron/kubernetes/ProxyService.ts @@ -5,6 +5,7 @@ const PROXY_MAX_ATTEMPTS = 25; export class ProxyService { private nextPort = 30001; private proxies: ProxyInstance[] = []; + private last: ProxyInstance | undefined; get(context: string, kubeconfig?: string): Promise { const proxy = this.proxies.find(p => p.context === context && p.kubeconfig === kubeconfig); @@ -21,6 +22,10 @@ export class ProxyService { return this.start(context, kubeconfig); } + async getLast(): Promise { + return this.last; + } + find(context: string) { return this.proxies.find(p => p.context === context); } @@ -34,6 +39,7 @@ export class ProxyService { this.nextPort += 1; const proxy = new ProxyInstance({context, kubeconfig, port, verbosity: undefined}); + this.last = proxy; await proxy.start(); proxy.onDelete = () => { From 93e665267b061efecc5d61702e6ef63b605747ed Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Wed, 21 Feb 2024 17:05:36 +0200 Subject: [PATCH 3/9] fix: stringify the `context` and `kubeconfig` cli arguments prevents issues related to empty spaces, line breaks, existing quotes etc. --- electron/kubernetes/ProxyInstance.ts | 4 ++-- src/redux/cluster/service/kube-control.ts | 4 ++-- src/redux/thunks/applyResource.ts | 2 +- src/shared/utils/commands/kubectl.ts | 2 +- src/utils/cluster.ts | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/electron/kubernetes/ProxyInstance.ts b/electron/kubernetes/ProxyInstance.ts index f15b8a3617..9681ab28a4 100644 --- a/electron/kubernetes/ProxyInstance.ts +++ b/electron/kubernetes/ProxyInstance.ts @@ -51,8 +51,8 @@ export class ProxyInstance { throw new Error('MONOKLE_PROXY_EMPTY_CONTEXT'); } - const globalOptions = [`--context=${this.context}`]; - if (this.kubeconfig) globalOptions.push(`--kubeconfig=${this.kubeconfig}`); + const globalOptions = [`--context=${JSON.stringify(this.context)}`]; + if (this.kubeconfig) globalOptions.push(`--kubeconfig=${JSON.stringify(this.kubeconfig)}`); if (this.verbosity) globalOptions.push(`-v=${this.verbosity}`); const proxyOptions = [`--port=${this.port}`]; diff --git a/src/redux/cluster/service/kube-control.ts b/src/redux/cluster/service/kube-control.ts index 452758d895..95f3dc110c 100644 --- a/src/redux/cluster/service/kube-control.ts +++ b/src/redux/cluster/service/kube-control.ts @@ -44,7 +44,7 @@ export const KUBECTL = { function createGlobalArgs(globals: KubectlGlobal) { const globalArgs = []; - if (globals.kubeconfig) globalArgs.push(`--kubeconfig=${globals.kubeconfig}`); - if (globals.context) globalArgs.push(`--context=${globals.context}`); + if (globals.kubeconfig) globalArgs.push(`--kubeconfig=${JSON.stringify(globals.kubeconfig)}`); + if (globals.context) globalArgs.push(`--context=${JSON.stringify(globals.context)}`); return globalArgs; } diff --git a/src/redux/thunks/applyResource.ts b/src/redux/thunks/applyResource.ts index 8c22820603..eb2a8c8bc0 100644 --- a/src/redux/thunks/applyResource.ts +++ b/src/redux/thunks/applyResource.ts @@ -69,7 +69,7 @@ function applyKustomization( ) { const folder = getAbsoluteResourceFolder(resourceMeta, fileMap); - const args: string[] = ['--context', context]; + const args: string[] = ['--context', JSON.stringify(context)]; if (namespace) { args.push(...['--namespace', namespace.name]); } diff --git a/src/shared/utils/commands/kubectl.ts b/src/shared/utils/commands/kubectl.ts index 6403d681f7..f6e89fbec7 100644 --- a/src/shared/utils/commands/kubectl.ts +++ b/src/shared/utils/commands/kubectl.ts @@ -6,7 +6,7 @@ export function createKubectlApplyCommand( {context, namespace, input}: KubectlApplyArgs, env?: KubectlEnv ): CommandOptions { - const args = ['--context', context, 'apply', '-f', '-']; + const args = ['--context', JSON.stringify(context), 'apply', '-f', '-']; if (namespace) { args.unshift('--namespace', namespace); diff --git a/src/utils/cluster.ts b/src/utils/cluster.ts index 66183794ec..a6b11f44c7 100644 --- a/src/utils/cluster.ts +++ b/src/utils/cluster.ts @@ -9,9 +9,9 @@ export function getHelmClusterArgs(): string[] { const args = [ '--kubeconfig', - kubeconfigPath, + JSON.stringify(kubeconfigPath), '--kube-context', - context, + JSON.stringify(context), '--kube-apiserver', `http://127.0.0.1:${proxyPort}`, ]; From ed6a4120fe35cc9e90dab762ec4a87b61610eb33 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Wed, 21 Feb 2024 17:47:07 +0200 Subject: [PATCH 4/9] fix: preserve \n\t\r control characters when displaying logs --- .../organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx | 3 ++- src/utils/preserveControlCharacters.ts | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 src/utils/preserveControlCharacters.ts diff --git a/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx b/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx index c83b027ab2..228bbd83d0 100644 --- a/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx +++ b/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx @@ -8,6 +8,7 @@ import styled from 'styled-components'; import {Tooltip} from '@components/atoms/Tooltip/Tooltip'; import {useMainPaneDimensions} from '@utils/hooks'; +import {preserveControlCharacters} from '@utils/preserveControlCharacters'; import {ContextId} from '@shared/ipc'; import {Colors} from '@shared/styles'; @@ -82,7 +83,7 @@ export function DebugClusterDrawer({contextId, open, onClose}: Props) { [{DateTime.fromMillis(l.timestamp).toFormat('HH:MM:ss')} - {l.type}] - {l.content} + {preserveControlCharacters(l.content)} ))} diff --git a/src/utils/preserveControlCharacters.ts b/src/utils/preserveControlCharacters.ts new file mode 100644 index 0000000000..7663a94967 --- /dev/null +++ b/src/utils/preserveControlCharacters.ts @@ -0,0 +1,5 @@ +export function preserveControlCharacters(str: string) { + return str.replace(/[\n\r\t]/g, cc => { + return `\\${cc === '\n' ? 'n' : cc === '\r' ? 'r' : 't'}`; + }); +} From 54c0b741e626e87b92e291eaa903a52f0649cc52 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Wed, 21 Feb 2024 17:59:46 +0200 Subject: [PATCH 5/9] refactor: show the used `kubectl` command with the logs --- .../Disconnected/DebugClusterDrawer.tsx | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx b/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx index 228bbd83d0..af86705c72 100644 --- a/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx +++ b/src/components/organisms/Dashboard/Disconnected/DebugClusterDrawer.tsx @@ -78,6 +78,11 @@ export function DebugClusterDrawer({contextId, open, onClose}: Props) {
+ {Boolean(data?.cmd) && ( + +
{data?.cmd}
+
+ )} {logs.map(l => ( @@ -136,3 +141,17 @@ const ButtonBox = styled.div<{$wrap: boolean}>` color: ${Colors.lightSeaGreen}; } `; + +const CodeBlock = styled.code` + > pre { + width: min-content; + max-width: 100%; + overflow: auto; + display: block; + white-space: no-wrap; + padding: 8px; + border-radius: 4px; + background: ${Colors.grey3b}; + color: ${Colors.grey8}; + } +`; From b981d5d1891835c961f687d0af62c96bc4324de2 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Thu, 22 Feb 2024 10:31:13 +0200 Subject: [PATCH 6/9] refactor(proxy): add friendly error messages for missing context or invalid cli flags --- electron/app/services/cluster/errors.ts | 8 ++++++++ electron/app/services/cluster/handlers/setup.ts | 6 ++++++ electron/kubernetes/ProxyInstance.ts | 4 ++++ 3 files changed, 18 insertions(+) diff --git a/electron/app/services/cluster/errors.ts b/electron/app/services/cluster/errors.ts index edb2b16908..7109bc57b1 100644 --- a/electron/app/services/cluster/errors.ts +++ b/electron/app/services/cluster/errors.ts @@ -14,6 +14,14 @@ const errors = createErrors({ title: 'Cannot connect to the cluster', description: 'There is no current context selected.', }, + 'proxy-missing-context': { + title: 'Cannot connect to the cluster', + description: 'The specified context does not exist. Please check your kubeconfig file.', + }, + 'proxy-invalid-config': { + title: 'Cannot connect to the cluster', + description: 'The proxy connection arguments were invalid.', + }, 'local-connection-refused': { title: 'Cannot connect to the cluster', description: 'The connection was refused - is your Docker Engine or VM running?', diff --git a/electron/app/services/cluster/handlers/setup.ts b/electron/app/services/cluster/handlers/setup.ts index af1c0a84e6..b6a4c26cc3 100644 --- a/electron/app/services/cluster/handlers/setup.ts +++ b/electron/app/services/cluster/handlers/setup.ts @@ -48,6 +48,12 @@ function determineError(reason: string, contextId: ContextId): MonokleClusterErr if (reason === 'MONOKLE_PROXY_EMPTY_CONTEXT') { return getMonokleClusterError('proxy-empty-context', contextId); } + if (reason === 'MONOKLE_PROXY_MISSING_CONTEXT') { + return getMonokleClusterError('proxy-missing-context', contextId); + } + if (reason === 'MONOKLE_PROXY_INVALID_CONFIG') { + return getMonokleClusterError('proxy-invalid-config', contextId); + } // Kubectl user authentication error. // These happen within the local kube-proxy. diff --git a/electron/kubernetes/ProxyInstance.ts b/electron/kubernetes/ProxyInstance.ts index 9681ab28a4..08970bbc4c 100644 --- a/electron/kubernetes/ProxyInstance.ts +++ b/electron/kubernetes/ProxyInstance.ts @@ -113,6 +113,10 @@ export class ProxyInstance { proxySignal.reject(new Error('EADDRINUSE')); } else if (msg.includes('error: The gcp auth plugin has been removed')) { proxySignal.reject(new Error('MONOKLE_PROXY_GCP_LEGACY_PLUGIN')); + } else if (/^error: flags cannot be placed before/i.test(msg)) { + proxySignal.reject(new Error('MONOKLE_PROXY_INVALID_CONFIG')); + } else if (/^(error: context).*(does not exist)/i.test(msg)) { + proxySignal.reject(new Error('MONOKLE_PROXY_MISSING_CONTEXT')); } else { // do nothing and let the timeout reject eventually. // For instance, high verbosity logs plenty of details From 9aa95c4417423c12b7afdf6a527862e4b74cb291 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Tue, 27 Feb 2024 10:23:30 +0200 Subject: [PATCH 7/9] ci: add `publish` step to check for macos certificate expiration --- .github/workflows/monokle-publish.yml | 8 +++++++ .../workflows/scripts/check-osx-cert-exp.sh | 22 +++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 .github/workflows/scripts/check-osx-cert-exp.sh diff --git a/.github/workflows/monokle-publish.yml b/.github/workflows/monokle-publish.yml index eecf325db3..6a69addf0d 100644 --- a/.github/workflows/monokle-publish.yml +++ b/.github/workflows/monokle-publish.yml @@ -36,6 +36,14 @@ jobs: run: | brew install jq + - name: Check MacOS certs expiration + run: | + ls -la + chmod +x .github/workflows/scripts/check-osx-cert-exp.sh && .github/workflows/scripts/check-osx-cert-exp.sh + env: + CERTIFICATE_OSX_APPLICATION: ${{ secrets.MONOKLE_MACOS_CERTS }} + CERTIFICATE_PASSWORD: ${{ secrets.MONOKLE_MACOS_CERTS_PASSWORD }} + - name: Add MacOS certs run: | ls -la diff --git a/.github/workflows/scripts/check-osx-cert-exp.sh b/.github/workflows/scripts/check-osx-cert-exp.sh new file mode 100644 index 0000000000..88d0f10855 --- /dev/null +++ b/.github/workflows/scripts/check-osx-cert-exp.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env sh + +KEY_CHAIN=build.keychain +CERTIFICATE_P12=certificate.p12 + +# Recreate the certificate from the secure environment variable +echo $CERTIFICATE_OSX_APPLICATION | base64 --decode > $CERTIFICATE_P12 + +# Get expiration date of the certificate +CERT_EXPIRATION_DATE=$(openssl pkcs12 -in certificate.p12 -passin pass:$CERTIFICATE_PASSWORD -nokeys | openssl x509 -noout -enddate | cut -d= -f2) +echo "Certificate expires on: $CERT_EXPIRATION_DATE" + +# Compare the expiration date with the current date +CERT_EXPIRATION_DATE=$(date -j -f "%b %d %T %Y %Z" "$CERT_EXPIRATION_DATE" +"%Y-%m-%d") +CURRENT_DATE=$(date +"%Y-%m-%d") + +if [[ "$CURRENT_DATE" > "$CERT_EXPIRATION_DATE" ]]; then + echo "The certificate has expired." + exit 1 +else + echo "The certificate is valid." +fi From 4607a9d80834481bf35722e9212c5fd54dd9e661 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Wed, 28 Feb 2024 17:31:15 +0200 Subject: [PATCH 8/9] chore: upgrade `electron`, `electron-builder` and `electron-updater` --- package-lock.json | 537 +++++++++++++++++++++++++++++++++++++++++----- package.json | 6 +- 2 files changed, 488 insertions(+), 55 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d066f5408..666480fef1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,7 @@ "electron-devtools-installer": "3.2.0", "electron-log": "4.4.8", "electron-store": "8.1.0", - "electron-updater": "6.1.4", + "electron-updater": "6.1.8", "elkjs": "0.8.2", "execa": "5.1.1", "fast-json-stable-stringify": "2.1.0", @@ -135,8 +135,8 @@ "concurrently": "8.0.1", "craco-less": "2.0.0", "cross-env": "7.0.3", - "electron": "27.1.3", - "electron-builder": "24.9.1", + "electron": "28.2.4", + "electron-builder": "24.12.0", "electron-reload": "2.0.0-alpha.1", "eslint-config-airbnb": "19.0.4", "eslint-config-prettier": "8.8.0", @@ -3883,6 +3883,96 @@ "node": ">=6.9.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -5743,6 +5833,16 @@ "node": ">= 6" } }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@pkgr/utils": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", @@ -8661,9 +8761,9 @@ "dev": true }, "node_modules/app-builder-lib": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.9.1.tgz", - "integrity": "sha512-Q1nYxZcio4r+W72cnIRVYofEAyjBd3mG47o+zms8HlD51zWtA/YxJb01Jei5F+jkWhge/PTQK+uldsPh6d0/4g==", + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.12.0.tgz", + "integrity": "sha512-t/xinVrMbsEhwljLDoFOtGkiZlaxY1aceZbHERGAS02EkUHJp9lgs/+L8okXLlYCaDSqYdB05Yb8Co+krvguXA==", "dev": true, "dependencies": { "@develar/schema-utils": "~2.6.5", @@ -8672,15 +8772,14 @@ "@electron/universal": "1.4.1", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", - "7zip-bin": "~5.2.0", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.9", - "builder-util": "24.8.1", + "builder-util": "24.9.4", "builder-util-runtime": "9.2.3", "chromium-pickle-js": "^0.2.0", "debug": "^4.3.4", "ejs": "^3.1.8", - "electron-publish": "24.8.1", + "electron-publish": "24.9.4", "form-data": "^4.0.0", "fs-extra": "^10.1.0", "hosted-git-info": "^4.1.0", @@ -9995,9 +10094,9 @@ "dev": true }, "node_modules/builder-util": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.8.1.tgz", - "integrity": "sha512-ibmQ4BnnqCnJTNrdmdNlnhF48kfqhNzSeqFMXHLIl+o9/yhn6QfOaVrloZ9YUu3m0k3rexvlT5wcki6LWpjTZw==", + "version": "24.9.4", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-24.9.4.tgz", + "integrity": "sha512-YNon3rYjPSm4XDDho9wD6jq7vLRJZUy9FR+yFZnHoWvvdVCnZakL4BctTlPABP41MvIH5yk2cTZ2YfkOhGistQ==", "dev": true, "dependencies": { "@types/debug": "^4.1.6", @@ -10022,6 +10121,7 @@ "version": "9.2.1", "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.1.tgz", "integrity": "sha512-2rLv/uQD2x+dJ0J3xtsmI12AlRyk7p45TEbE/6o/fbb633e/S3pPgm+ct+JHsoY7r39dKHnGEFk/AASRFdnXmA==", + "dev": true, "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" @@ -11076,26 +11176,109 @@ } }, "node_modules/config-file-ts": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.4.tgz", - "integrity": "sha512-cKSW0BfrSaAUnxpgvpXPLaaW/umg4bqg4k3GO1JqlRfpx+d5W0GDXznCMkWotJQek5Mmz1MJVChQnz3IVaeMZQ==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/config-file-ts/-/config-file-ts-0.2.6.tgz", + "integrity": "sha512-6boGVaglwblBgJqGyxm4+xCmEGcWgnWHSWHY5jad58awQhB6gftq0G8HbzU39YqCIYHMLAiL1yjwiZ36m/CL8w==", "dev": true, "dependencies": { - "glob": "^7.1.6", - "typescript": "^4.0.2" + "glob": "^10.3.10", + "typescript": "^5.3.3" + } + }, + "node_modules/config-file-ts/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/config-file-ts/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/config-file-ts/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/config-file-ts/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/config-file-ts/node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/confusing-browser-globals": { @@ -12900,13 +13083,13 @@ "dev": true }, "node_modules/dmg-builder": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.9.1.tgz", - "integrity": "sha512-huC+O6hvHd24Ubj3cy2GMiGLe2xGFKN3klqVMLAdcbB6SWMd1yPSdZvV8W1O01ICzCCRlZDHiv4VrNUgnPUfbQ==", + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.12.0.tgz", + "integrity": "sha512-nS22OyHUIYcK40UnILOtqC5Qffd1SN1Ljqy/6e+QR2H1wM3iNBrKJoEbDRfEmYYaALKNFRkKPqSbZKRsGUBdPw==", "dev": true, "dependencies": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", + "app-builder-lib": "24.12.0", + "builder-util": "24.9.4", "builder-util-runtime": "9.2.3", "fs-extra": "^10.1.0", "iconv-lite": "^0.6.2", @@ -13283,9 +13466,9 @@ } }, "node_modules/electron": { - "version": "27.1.3", - "resolved": "https://registry.npmjs.org/electron/-/electron-27.1.3.tgz", - "integrity": "sha512-7eD8VMhhlL5J531OOawn00eMthUkX1e3qN5Nqd7eMK8bg5HxQBrn8bdPlvUEnCano9KhrVwaDnGeuzWoDOGpjQ==", + "version": "28.2.4", + "resolved": "https://registry.npmjs.org/electron/-/electron-28.2.4.tgz", + "integrity": "sha512-XrSsqKCmpGwz1pqzmdLhdGonYvatDXor60rBd+TfURMQQRSxyTaSwrds9kV0aab9YRpeYUH6NJDAOwBhQYDDkA==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -13301,16 +13484,16 @@ } }, "node_modules/electron-builder": { - "version": "24.9.1", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.9.1.tgz", - "integrity": "sha512-v7BuakDuY6sKMUYM8mfQGrwyjBpZ/ObaqnenU0H+igEL10nc6ht049rsCw2HghRBdEwJxGIBuzs3jbEhNaMDmg==", + "version": "24.12.0", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.12.0.tgz", + "integrity": "sha512-dH4O9zkxFxFbBVFobIR5FA71yJ1TZSCvjZ2maCskpg7CWjBF+SNRSQAThlDyUfRuB+jBTMwEMzwARywmap0CSw==", "dev": true, "dependencies": { - "app-builder-lib": "24.9.1", - "builder-util": "24.8.1", + "app-builder-lib": "24.12.0", + "builder-util": "24.9.4", "builder-util-runtime": "9.2.3", "chalk": "^4.1.2", - "dmg-builder": "24.9.1", + "dmg-builder": "24.12.0", "fs-extra": "^10.1.0", "is-ci": "^3.0.0", "lazy-val": "^1.0.5", @@ -13440,13 +13623,13 @@ "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" }, "node_modules/electron-publish": { - "version": "24.8.1", - "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.8.1.tgz", - "integrity": "sha512-IFNXkdxMVzUdweoLJNXSupXkqnvgbrn3J4vognuOY06LaS/m0xvfFYIf+o1CM8if6DuWYWoQFKPcWZt/FUjZPw==", + "version": "24.9.4", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.9.4.tgz", + "integrity": "sha512-FghbeVMfxHneHjsG2xUSC0NMZYWOOWhBxfZKPTbibcJ0CjPH0Ph8yb5CUO62nqywXfA5u1Otq6K8eOdOixxmNg==", "dev": true, "dependencies": { "@types/fs-extra": "^9.0.11", - "builder-util": "24.8.1", + "builder-util": "24.9.4", "builder-util-runtime": "9.2.3", "chalk": "^4.1.2", "fs-extra": "^10.1.0", @@ -13599,11 +13782,11 @@ "dev": true }, "node_modules/electron-updater": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.4.tgz", - "integrity": "sha512-yYAJc6RQjjV4WtInZVn+ZcLyXRhbVXoomKEfUUwDqIk5s2wxzLhWaor7lrNgxODyODhipjg4SVPMhJHi5EnsCA==", + "version": "6.1.8", + "resolved": "https://registry.npmjs.org/electron-updater/-/electron-updater-6.1.8.tgz", + "integrity": "sha512-hhOTfaFAd6wRHAfUaBhnAOYc+ymSGCWJLtFkw4xJqOvtpHmIdNHnXDV9m1MHC+A6q08Abx4Ykgyz/R5DGKNAMQ==", "dependencies": { - "builder-util-runtime": "9.2.1", + "builder-util-runtime": "9.2.3", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", @@ -13613,6 +13796,18 @@ "tiny-typed-emitter": "^2.1.0" } }, + "node_modules/electron-updater/node_modules/builder-util-runtime": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/builder-util-runtime/-/builder-util-runtime-9.2.3.tgz", + "integrity": "sha512-FGhkqXdFFZ5dNC4C+yuQB9ak311rpGAw+/ASz8ZdxwODCv1GGMWgLDeofRkdi0F3VCHQEWy/aXcJQozx2nOPiw==", + "dependencies": { + "debug": "^4.3.4", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/electron-updater/node_modules/fs-extra": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", @@ -17848,12 +18043,12 @@ "dev": true }, "node_modules/isbinaryfile": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", - "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.2.tgz", + "integrity": "sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg==", "dev": true, "engines": { - "node": ">= 14.0.0" + "node": ">= 18.0.0" }, "funding": { "url": "https://github.com/sponsors/gjtorikian/" @@ -18079,6 +18274,24 @@ "node": ">=8" } }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jake": { "version": "10.8.7", "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.7.tgz", @@ -25776,6 +25989,40 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", @@ -31031,6 +31278,27 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -31142,6 +31410,19 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -32458,16 +32739,117 @@ "tmp": "^0.2.0" } }, + "node_modules/tmp-promise/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/tmp-promise/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tmp-promise/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tmp-promise/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tmp-promise/node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/tmp-promise/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tmp-promise/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/tmp-promise/node_modules/tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.2.tgz", + "integrity": "sha512-ETcvHhaIc9J2MDEAH6N67j9bvBvu/3Gb764qaGhwtFvjtvhegqoqSpofgeyq1Sc24mW5pdyUDs9HP5j3ehkxRw==", "dev": true, "dependencies": { - "rimraf": "^3.0.0" + "rimraf": "^5.0.5" }, "engines": { - "node": ">=8.17.0" + "node": ">=14" } }, "node_modules/tmpl": { @@ -34452,6 +34834,57 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", diff --git a/package.json b/package.json index 35a2d37a59..bb19ed8950 100644 --- a/package.json +++ b/package.json @@ -63,8 +63,8 @@ "concurrently": "8.0.1", "craco-less": "2.0.0", "cross-env": "7.0.3", - "electron": "27.1.3", - "electron-builder": "24.9.1", + "electron": "28.2.4", + "electron-builder": "24.12.0", "electron-reload": "2.0.0-alpha.1", "eslint-config-airbnb": "19.0.4", "eslint-config-prettier": "8.8.0", @@ -123,7 +123,7 @@ "electron-devtools-installer": "3.2.0", "electron-log": "4.4.8", "electron-store": "8.1.0", - "electron-updater": "6.1.4", + "electron-updater": "6.1.8", "elkjs": "0.8.2", "execa": "5.1.1", "fast-json-stable-stringify": "2.1.0", From 6293976cc02763e67116f3fbac1b5d66aefd91c1 Mon Sep 17 00:00:00 2001 From: Ionut Achim Date: Wed, 28 Feb 2024 17:31:29 +0200 Subject: [PATCH 9/9] chore(release): 2.4.5 --- CHANGELOG.md | 10 ++++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44d422407d..14fe29e6c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,16 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +### [2.4.5](https://github.com/kubeshop/monokle/compare/v2.4.4...v2.4.5) (2024-02-28) + + +### Bug Fixes + +* access debug logs for failed proxy setups ([a05348d](https://github.com/kubeshop/monokle/commit/a05348d37afbde808ea46ee9d2dcbac7580aaca3)) +* missing crds folder runtime error ([75fb95a](https://github.com/kubeshop/monokle/commit/75fb95a8bf70f3ae28f72efed05fc81a231b883b)) +* preserve \n\t\r control characters when displaying logs ([ed6a412](https://github.com/kubeshop/monokle/commit/ed6a4120fe35cc9e90dab762ec4a87b61610eb33)) +* stringify the `context` and `kubeconfig` cli arguments ([93e6652](https://github.com/kubeshop/monokle/commit/93e665267b061efecc5d61702e6ef63b605747ed)) + ### [2.4.4](https://github.com/kubeshop/monokle/compare/v2.4.3...v2.4.4) (2024-01-04) diff --git a/package-lock.json b/package-lock.json index 666480fef1..9a56a24a0d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "monokle", - "version": "2.4.4", + "version": "2.4.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "monokle", - "version": "2.4.4", + "version": "2.4.5", "hasInstallScript": true, "dependencies": { "@ant-design/icons": "4.8.0", diff --git a/package.json b/package.json index bb19ed8950..50d2cc196f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "monokle", - "version": "2.4.4", + "version": "2.4.5", "author": "Kubeshop", "description": "Desktop IDE for working with Kubernetes Clusters and YAML configurations", "homepage": "./",