From 61eefc784b4c191bb14242dc3ecb9cd905ca346c Mon Sep 17 00:00:00 2001 From: Luca Stocchi <49404737+lstocchi@users.noreply.github.com> Date: Wed, 5 Jun 2024 10:24:14 +0200 Subject: [PATCH] fix: enable prefer-nullish-coalescing eslint rule (#7442) Signed-off-by: lstocchi --- .eslintrc.json | 1 + .../compose/src/compose-github-releases.ts | 2 +- extensions/kind/src/extension.ts | 2 +- .../src/kubectl-github-releases.ts | 2 +- extensions/lima/src/extension.ts | 6 +-- extensions/podman/src/extension.ts | 6 +-- packages/main/src/plugin/authentication.ts | 2 +- .../main/src/plugin/container-registry.ts | 6 +-- .../main/src/plugin/contribution-manager.ts | 8 +-- packages/main/src/plugin/directories.ts | 2 +- .../src/plugin/dockerode/libpod-dockerode.ts | 2 +- packages/main/src/plugin/events/emitter.ts | 6 +-- packages/main/src/plugin/extension-loader.ts | 12 ++--- packages/main/src/plugin/icon-registry.ts | 2 +- packages/main/src/plugin/image-registry.ts | 8 +-- packages/main/src/plugin/kubernetes-client.ts | 50 +++++++++---------- packages/main/src/plugin/provider-impl.ts | 8 +-- packages/main/src/plugin/proxy-resolver.ts | 2 +- packages/main/src/plugin/proxy.ts | 2 +- packages/main/src/plugin/task-manager.ts | 2 +- .../main/src/plugin/telemetry/telemetry.ts | 4 +- packages/main/src/plugin/util/exec.ts | 20 ++++---- packages/main/src/plugin/util/manifest.ts | 2 +- packages/main/src/plugin/view-registry.ts | 4 +- packages/main/src/tray-menu.ts | 8 +-- .../preload-docker-extension/src/index.ts | 10 ++-- .../src/lib/container/container-utils.ts | 8 +-- .../lib/dashboard/NotificationCardItem.svelte | 2 +- .../src/lib/deployments/deployment-utils.ts | 8 +-- .../src/lib/dialogs/CustomPick.svelte | 14 +++--- .../src/lib/dialogs/MessageBox.spec.ts | 6 +-- .../src/lib/dialogs/QuickPickInput.svelte | 16 +++--- ...sionCardLeftOnboardingAndProperties.svelte | 2 +- .../renderer/src/lib/image/RunImage.spec.ts | 2 +- .../renderer/src/lib/image/RunImage.svelte | 10 ++-- .../renderer/src/lib/image/image-utils.ts | 2 +- .../ingresses-routes/ingress-route-utils.ts | 8 +-- .../details/KubeIngressStatusArtifact.svelte | 2 +- .../details/KubeServiceStatusArtifact.svelte | 2 +- .../kube/details/KubeVolumeArtifact.svelte | 2 +- .../details/OpenshiftRouteArtifact.svelte | 4 +- .../markdown/micromark-warnings-directive.ts | 4 +- .../src/lib/onboarding/Onboarding.svelte | 4 +- .../lib/onboarding/OnboardingComponent.svelte | 4 +- .../src/lib/onboarding/onboarding-utils.ts | 2 +- .../lib/pod/KubernetesTerminalBrowser.svelte | 2 +- .../lib/pod/PodCreateFromContainers.svelte | 2 +- .../lib/preferences/PreferencesCliTool.svelte | 2 +- ...esConnectionCreationOrEditRendering.svelte | 8 +-- ...esContainerConnectionDetailsSummary.svelte | 4 +- .../PreferencesContainerConnectionEdit.svelte | 2 +- ...erencesContainerConnectionRendering.svelte | 6 +-- ...sKubernetesConnectionDetailsSummary.svelte | 4 +- ...rencesKubernetesConnectionRendering.svelte | 2 +- .../PreferencesProviderRendering.svelte | 4 +- .../PreferencesRegistriesEditing.svelte | 6 +-- .../preferences/PreferencesRendering.svelte | 4 +- .../PreferencesRenderingItem.svelte | 4 +- .../PreferencesRenderingItemFormat.svelte | 2 +- .../PreferencesResourcesRendering.svelte | 18 +++---- .../item-formats/BooleanItem.svelte | 2 +- .../item-formats/FloatNumberItem.svelte | 4 +- .../item-formats/NumberItem.svelte | 4 +- .../src/lib/statusbar/StatusBarItem.svelte | 2 +- .../lib/task-manager/TaskManagerItem.svelte | 2 +- .../src/lib/ui/ConnectionStatus.svelte | 2 +- .../src/lib/ui/ExtensionStatus.svelte | 2 +- .../src/lib/ui/ListItemButtonIcon.svelte | 2 +- .../renderer/src/lib/ui/ProviderStatus.svelte | 2 +- packages/renderer/src/stores/event-store.ts | 4 +- packages/renderer/src/stores/registries.ts | 24 ++++++--- packages/ui/src/lib/button/Button.svelte | 4 +- packages/ui/src/lib/inputs/Input.svelte | 2 +- 73 files changed, 208 insertions(+), 199 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index d4042849514ec..0e3fdfe2dcdf2 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -98,6 +98,7 @@ "@typescript-eslint/no-misused-promises": "error", "@typescript-eslint/prefer-optional-chain": "error", "no-null/no-null": "error", + "@typescript-eslint/prefer-nullish-coalescing": ["error", { "ignoreConditionalTests": true }], /** * Having a semicolon helps the optimizer interpret your code correctly. diff --git a/extensions/compose/src/compose-github-releases.ts b/extensions/compose/src/compose-github-releases.ts index d8cad1d9939a7..6744d90d355c4 100644 --- a/extensions/compose/src/compose-github-releases.ts +++ b/extensions/compose/src/compose-github-releases.ts @@ -52,7 +52,7 @@ export class ComposeGitHubReleases { return lastReleases.data.map(release => { return { - label: release.name || release.tag_name, + label: release.name ?? release.tag_name, tag: release.tag_name, id: release.id, }; diff --git a/extensions/kind/src/extension.ts b/extensions/kind/src/extension.ts index 85c3c5d1bdc9a..b03bc042aa4cc 100644 --- a/extensions/kind/src/extension.ts +++ b/extensions/kind/src/extension.ts @@ -114,7 +114,7 @@ async function updateClusters( return { name: clusterName, status, - apiPort: listeningPort?.PublicPort || 0, + apiPort: listeningPort?.PublicPort ?? 0, engineType: container.engineType, engineId: container.engineId, id: container.Id, diff --git a/extensions/kubectl-cli/src/kubectl-github-releases.ts b/extensions/kubectl-cli/src/kubectl-github-releases.ts index f3292178b4d72..26273bd8144d8 100644 --- a/extensions/kubectl-cli/src/kubectl-github-releases.ts +++ b/extensions/kubectl-cli/src/kubectl-github-releases.ts @@ -50,7 +50,7 @@ export class KubectlGitHubReleases { .filter(release => !release.prerelease) .map(release => { return { - label: release.name || release.tag_name, + label: release.name ?? release.tag_name, tag: release.tag_name, id: release.id, }; diff --git a/extensions/lima/src/extension.ts b/extensions/lima/src/extension.ts index 71c3aa648ed0a..6c444c32212e8 100644 --- a/extensions/lima/src/extension.ts +++ b/extensions/lima/src/extension.ts @@ -92,9 +92,9 @@ function registerProvider( } export async function activate(extensionContext: extensionApi.ExtensionContext): Promise { - const engineType: string = configuration.getConfiguration('lima').get('type') || 'podman'; - const instanceName: string = configuration.getConfiguration('lima').get('name') || engineType; - const socketName: string = configuration.getConfiguration('lima').get('socket') || engineType + '.sock'; + const engineType: string = configuration.getConfiguration('lima').get('type') ?? 'podman'; + const instanceName: string = configuration.getConfiguration('lima').get('name') ?? engineType; + const socketName: string = configuration.getConfiguration('lima').get('socket') ?? engineType + '.sock'; const limaHome = 'LIMA_HOME' in process.env ? process.env['LIMA_HOME'] : os.homedir() + '/.lima'; const socketPath = path.resolve(limaHome ?? '', instanceName + '/sock/' + socketName); diff --git a/extensions/podman/src/extension.ts b/extensions/podman/src/extension.ts index 02ae57f020dfa..64b71bb372357 100644 --- a/extensions/podman/src/extension.ts +++ b/extensions/podman/src/extension.ts @@ -1412,7 +1412,7 @@ export async function activate(extensionContext: extensionApi.ExtensionContext): extensionApi.context.setValue('podmanIsNotInstalled', !installed, 'onboarding'); telemetryLogger?.logUsage('podman.onboarding.checkInstalledCommand', { status: installed, - version: installation?.version || '', + version: installation?.version ?? '', }); }, ); @@ -1424,7 +1424,7 @@ export async function activate(extensionContext: extensionApi.ExtensionContext): const onboardingCheckReqsCommand = extensionApi.commands.registerCommand( 'podman.onboarding.checkRequirementsCommand', async () => { - const checks = podmanInstall.getInstallChecks() || []; + const checks = podmanInstall.getInstallChecks() ?? []; const result = []; let successful = true; for (const check of checks) { @@ -1494,7 +1494,7 @@ export async function activate(extensionContext: extensionApi.ExtensionContext): extensionApi.context.setValue('podmanIsNotInstalled', true, 'onboarding'); telemetryOptions.error = e; } finally { - telemetryOptions.version = installation?.version || ''; + telemetryOptions.version = installation?.version ?? ''; telemetryOptions.installed = installed; telemetryLogger?.logUsage('podman.onboarding.installPodman', telemetryOptions); } diff --git a/packages/main/src/plugin/authentication.ts b/packages/main/src/plugin/authentication.ts index 56aad4b9064a0..3c6ed2ff73ac3 100644 --- a/packages/main/src/plugin/authentication.ts +++ b/packages/main/src/plugin/authentication.ts @@ -271,7 +271,7 @@ export class AuthenticationImpl { // request was added already by this extension return; } - const requestId = `${providerId}:${requestingExtension.id}:signIn${Object.keys(providerRequests || []).length}`; + const requestId = `${providerId}:${requestingExtension.id}:signIn${Object.keys(providerRequests ?? []).length}`; this._signInRequestsData.set(requestId, { id: requestId, providerId, diff --git a/packages/main/src/plugin/container-registry.ts b/packages/main/src/plugin/container-registry.ts index 647f4bc5f82d7..409459de8c9f7 100644 --- a/packages/main/src/plugin/container-registry.ts +++ b/packages/main/src/plugin/container-registry.ts @@ -541,7 +541,7 @@ export class ContainerProviderRegistry { engineName: provider.name, engineId: provider.id, engineType: provider.connection.type, - StartedAt: container.StartedAt || '', + StartedAt: container.StartedAt ?? '', Status: container.Status, ImageBase64RepoTag: Buffer.from(container.Image, 'binary').toString('base64'), }; @@ -1094,7 +1094,7 @@ export class ContainerProviderRegistry { try { const engine = this.getMatchingEngine(engineId); const image = engine.getImage(imageTag); - const authconfig = authInfo || this.imageRegistry.getAuthconfigForImage(imageTag); + const authconfig = authInfo ?? this.imageRegistry.getAuthconfigForImage(imageTag); const pushStream = await image.push({ authconfig, abortSignal: abortController?.signal, @@ -1911,7 +1911,7 @@ export class ContainerProviderRegistry { const envFiles = options.EnvFiles || []; const envFileContent = await this.getEnvFileParser().parseEnvFiles(envFiles); - const env = options.Env || []; + const env = options.Env ?? []; env.push(...envFileContent); options.Env = env; // remove EnvFiles from options diff --git a/packages/main/src/plugin/contribution-manager.ts b/packages/main/src/plugin/contribution-manager.ts index c9b9f625819cd..cd5b11f01419e 100644 --- a/packages/main/src/plugin/contribution-manager.ts +++ b/packages/main/src/plugin/contribution-manager.ts @@ -585,7 +585,7 @@ export class ContributionManager { const service = services[serviceKey]; // add custom labels - service.labels = service.labels || {}; + service.labels = service.labels ?? {}; service.labels['io.podman_desktop.PodmanDesktop.extension'] = 'true'; service.labels['io.podman_desktop.PodmanDesktop.extensionName'] = extensionName; @@ -601,15 +601,15 @@ export class ContributionManager { } // apply restart policy if not specified - service.deploy = service.deploy || {}; - service.deploy.restart_policy = service.deploy.restart_policy || {}; + service.deploy = service.deploy ?? {}; + service.deploy.restart_policy = service.deploy.restart_policy ?? {}; if (!service.deploy.restart_policy.condition) { service.deploy.restart_policy.condition = 'always'; } // add the volume from the podman-desktop-socket (only if not inside the service itself) if (serviceKey !== PODMAN_DESKTOP_SOCKET_SERVICE) { - service.volumes_from = service.volumes_from || []; + service.volumes_from = service.volumes_from ?? []; service.volumes_from.push(PODMAN_DESKTOP_SOCKET_SERVICE); } } diff --git a/packages/main/src/plugin/directories.ts b/packages/main/src/plugin/directories.ts index 2c7b241071ce1..42e5681c8d00f 100644 --- a/packages/main/src/plugin/directories.ts +++ b/packages/main/src/plugin/directories.ts @@ -37,7 +37,7 @@ export class Directories { constructor() { // read ENV VAR to override the Desktop App Home Dir this.desktopAppHomeDir = - process.env[Directories.PODMAN_DESKTOP_HOME_DIR] || path.resolve(os.homedir(), Directories.XDG_DATA_DIRECTORY); + process.env[Directories.PODMAN_DESKTOP_HOME_DIR] ?? path.resolve(os.homedir(), Directories.XDG_DATA_DIRECTORY); // create the Desktop App Home Dir if it does not exist if (!fs.existsSync(this.desktopAppHomeDir)) { diff --git a/packages/main/src/plugin/dockerode/libpod-dockerode.ts b/packages/main/src/plugin/dockerode/libpod-dockerode.ts index 0c4a6a6a9ccfe..7045b3219d98b 100644 --- a/packages/main/src/plugin/dockerode/libpod-dockerode.ts +++ b/packages/main/src/plugin/dockerode/libpod-dockerode.ts @@ -690,7 +690,7 @@ export class LibpodDockerode { 404: 'no such pod', 500: 'server error', }, - options: options || {}, + options: options ?? {}, }; return new Promise((resolve, reject) => { diff --git a/packages/main/src/plugin/events/emitter.ts b/packages/main/src/plugin/events/emitter.ts index 4abe87c791b0e..c0f612715dab3 100644 --- a/packages/main/src/plugin/events/emitter.ts +++ b/packages/main/src/plugin/events/emitter.ts @@ -42,7 +42,7 @@ class CallbackList implements Iterable { private _contexts: any[] | undefined; get length(): number { - return this._callbacks?.length || 0; + return this._callbacks?.length ?? 0; } public add(callback: Function, context: any = undefined, bucket?: IDisposable[]): void { @@ -243,7 +243,7 @@ export class Emitter { } const stack = new Error().stack?.split('\n').slice(3).join('\n'); if (stack) { - const count = this._leakingStacks.get(stack) || 0; + const count = this._leakingStacks.get(stack) ?? 0; this._leakingStacks.set(stack, count + 1); return () => this.popLeakingStack(stack); } @@ -254,7 +254,7 @@ export class Emitter { if (!this._leakingStacks) { return; } - const count = this._leakingStacks.get(stack) || 0; + const count = this._leakingStacks.get(stack) ?? 0; this._leakingStacks.set(stack, count - 1); } diff --git a/packages/main/src/plugin/extension-loader.ts b/packages/main/src/plugin/extension-loader.ts index 3bd0013266684..bab5f2d3908b3 100644 --- a/packages/main/src/plugin/extension-loader.ts +++ b/packages/main/src/plugin/extension-loader.ts @@ -207,7 +207,7 @@ export class ExtensionLoader { description: extension.manifest.description, version: extension.manifest.version, publisher: extension.manifest.publisher, - state: this.extensionState.get(extension.id) || 'stopped', + state: this.extensionState.get(extension.id) ?? 'stopped', error: this.mapError(this.extensionStateErrors.get(extension.id)), id: extension.id, path: extension.path, @@ -915,8 +915,8 @@ export class ExtensionLoader { return this.notificationRegistry.addNotification({ ...notificationInfo, extensionId: extensionInfo.id, - type: notificationInfo.type || 'info', - title: notificationInfo.title || extensionInfo.name, + type: notificationInfo.type ?? 'info', + title: notificationInfo.title ?? extensionInfo.name, }); }, @@ -1167,7 +1167,7 @@ export class ExtensionLoader { const url = uri.toString(); try { const result = await securityRestrictionCurrentHandler.handler?.(url); - return result || false; + return !!result; } catch (error) { console.error(`Unable to open external link ${uri.toString()} from extension ${extensionInfo.id}`, error); return false; @@ -1346,7 +1346,7 @@ export class ExtensionLoader { } // remove children that are part of the plug-in - let i = mod?.children?.length || 0; + let i = mod?.children?.length ?? 0; while (i--) { const childMod: NodeJS.Module | undefined = mod?.children[i]; // ensure the child module is not null, is in the plug-in folder, and is not a native module (see above) @@ -1364,7 +1364,7 @@ export class ExtensionLoader { if (key.startsWith(extension.path)) { // delete the entry delete require.cache[key]; - const ix = mod?.parent?.children.indexOf(mod) || 0; + const ix = mod?.parent?.children.indexOf(mod) ?? 0; if (ix >= 0) { mod?.parent?.children.splice(ix, 1); } diff --git a/packages/main/src/plugin/icon-registry.ts b/packages/main/src/plugin/icon-registry.ts index 06bab57e8b75e..631a439dd0ac0 100644 --- a/packages/main/src/plugin/icon-registry.ts +++ b/packages/main/src/plugin/icon-registry.ts @@ -77,7 +77,7 @@ export class IconRegistry { } // get file extension of the font path - const format = defaultAttributes.fontPath.split('.').pop() || ''; + const format = defaultAttributes.fontPath.split('.').pop() ?? ''; if (format !== 'woff2') { console.warn( `Expected contributes.icons.default.fontPath to have file extension 'woff2' but found '${format}'."`, diff --git a/packages/main/src/plugin/image-registry.ts b/packages/main/src/plugin/image-registry.ts index cbc357275796f..0ea4b23618ad3 100644 --- a/packages/main/src/plugin/image-registry.ts +++ b/packages/main/src/plugin/image-registry.ts @@ -513,7 +513,7 @@ export class ImageRegistry { logger: (message: string) => void, ): Promise { const options = this.getOptions(); - options.headers = options.headers || {}; + options.headers = options.headers ?? {}; // add the Bearer token options.headers.Authorization = `Bearer ${token}`; @@ -548,7 +548,7 @@ export class ImageRegistry { // eslint-disable-next-line @typescript-eslint/no-explicit-any protected async fetchOciImageConfig(imageData: ImageRegistryNameTag, digest: string, token: string): Promise { const options = this.getOptions(); - options.headers = options.headers || {}; + options.headers = options.headers ?? {}; // add the Bearer token options.headers.Authorization = `Bearer ${token}`; @@ -579,7 +579,7 @@ export class ImageRegistry { // eslint-disable-next-line @typescript-eslint/no-explicit-any ): Promise { const options = this.getOptions(); - options.headers = options.headers || {}; + options.headers = options.headers ?? {}; // add the Bearer token options.headers.Authorization = `Bearer ${token}`; @@ -801,7 +801,7 @@ export class ImageRegistry { // if we have auth for this registry, add basic auth to the headers const authServer = this.getAuthconfigForServer(imageData.registry); if (authServer) { - options.headers = options.headers || {}; + options.headers = options.headers ?? {}; const loginAndPassWord = `${authServer.username}:${authServer.password}`; options.headers.Authorization = `Basic ${Buffer.from(loginAndPassWord).toString('base64')}`; } diff --git a/packages/main/src/plugin/kubernetes-client.ts b/packages/main/src/plugin/kubernetes-client.ts index 1a2d44e4aee0e..f9f87413ae4dc 100644 --- a/packages/main/src/plugin/kubernetes-client.ts +++ b/packages/main/src/plugin/kubernetes-client.ts @@ -92,22 +92,22 @@ function toPodInfo(pod: V1Pod, contextName?: string): PodInfo { const containers = pod.status?.containerStatuses?.map(status => { return { - Id: status.containerID || '', + Id: status.containerID ?? '', Names: status.name, Status: toContainerStatus(status.state), }; - }) || []; + }) ?? []; return { Cgroup: '', Containers: containers, - Created: (pod.metadata?.creationTimestamp || '').toString(), - Id: pod.metadata?.uid || '', + Created: (pod.metadata?.creationTimestamp ?? '').toString(), + Id: pod.metadata?.uid ?? '', InfraId: '', - Labels: pod.metadata?.labels || {}, - Name: pod.metadata?.name || '', - Namespace: pod.metadata?.namespace || '', + Labels: pod.metadata?.labels ?? {}, + Name: pod.metadata?.name ?? '', + Namespace: pod.metadata?.namespace ?? '', Networks: [], - Status: pod.metadata?.deletionTimestamp ? 'DELETING' : pod.status?.phase || '', + Status: pod.metadata?.deletionTimestamp ? 'DELETING' : pod.status?.phase ?? '', engineId: contextName ?? 'kubernetes', engineName: 'Kubernetes', kind: 'kubernetes', @@ -918,47 +918,47 @@ export class KubernetesClient { if (manifest.kind === 'Namespace') { return client.createNamespace(manifest); } else if (manifest.kind === 'Pod') { - return client.createNamespacedPod(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedPod(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'Service') { - return client.createNamespacedService(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedService(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'Binding') { - return client.createNamespacedBinding(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedBinding(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'Event') { - return client.createNamespacedEvent(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedEvent(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'Endpoints') { - return client.createNamespacedEndpoints(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedEndpoints(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'ConfigMap') { - return client.createNamespacedConfigMap(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedConfigMap(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'LimitRange') { - return client.createNamespacedLimitRange(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedLimitRange(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'PersistentVolumeClaim') { - return client.createNamespacedPersistentVolumeClaim(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedPersistentVolumeClaim(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'PodBinding') { return client.createNamespacedPodBinding( manifest.metadata.name, - optionalNamespace || manifest.metadata.namespace, + optionalNamespace ?? manifest.metadata.namespace, manifest, ); } else if (manifest.kind === 'PodEviction') { return client.createNamespacedPodEviction( manifest.metadata.name, - optionalNamespace || manifest.metadata.namespace, + optionalNamespace ?? manifest.metadata.namespace, manifest, ); } else if (manifest.kind === 'PodTemplate') { - return client.createNamespacedPodTemplate(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedPodTemplate(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'ReplicationController') { - return client.createNamespacedReplicationController(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedReplicationController(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'ResourceQuota') { - return client.createNamespacedResourceQuota(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedResourceQuota(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'Secret') { - return client.createNamespacedSecret(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedSecret(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'ServiceAccount') { - return client.createNamespacedServiceAccount(optionalNamespace || manifest.metadata.namespace, manifest); + return client.createNamespacedServiceAccount(optionalNamespace ?? manifest.metadata.namespace, manifest); } else if (manifest.kind === 'ServiceAccountToken') { return client.createNamespacedServiceAccountToken( manifest.metadata.name, - optionalNamespace || manifest.metadata.namespace, + optionalNamespace ?? manifest.metadata.namespace, manifest, ); } @@ -1164,7 +1164,7 @@ export class KubernetesClient { spec.metadata.annotations['kubectl.kubernetes.io/last-applied-configuration'] = JSON.stringify(spec); if (!spec.metadata.namespace) { - spec.metadata.namespace = namespace || DEFAULT_NAMESPACE; + spec.metadata.namespace = namespace ?? DEFAULT_NAMESPACE; } try { // try to get the resource, if it does not exist an error will be thrown and we will diff --git a/packages/main/src/plugin/provider-impl.ts b/packages/main/src/plugin/provider-impl.ts index c4df9bbcb14d6..0a17a70d2b544 100644 --- a/packages/main/src/plugin/provider-impl.ts +++ b/packages/main/src/plugin/provider-impl.ts @@ -88,10 +88,10 @@ export class ProviderImpl implements Provider, IDisposable { this._status = providerOptions.status; this._version = providerOptions.version; - this._links = providerOptions.links || []; - this._detectionChecks = providerOptions.detectionChecks || []; - this._images = providerOptions.images || {}; - this._warnings = providerOptions.warnings || []; + this._links = providerOptions.links ?? []; + this._detectionChecks = providerOptions.detectionChecks ?? []; + this._images = providerOptions.images ?? {}; + this._warnings = providerOptions.warnings ?? []; // monitor connection statuses setInterval(() => { diff --git a/packages/main/src/plugin/proxy-resolver.ts b/packages/main/src/plugin/proxy-resolver.ts index 4a101186fcca8..e76aff7d822c1 100644 --- a/packages/main/src/plugin/proxy-resolver.ts +++ b/packages/main/src/plugin/proxy-resolver.ts @@ -123,7 +123,7 @@ export function createHttpPatch(originals: typeof http | typeof https, proxy: Pr options = { ...options }; } - const host = options.hostname || options.host; + const host = options.hostname ?? options.host; const isLocalhost = !host || host === 'localhost' || host === '127.0.0.1'; if (!isLocalhost) { options = Object.assign({}, options, getOptions(proxy, options.protocol === 'https:')); diff --git a/packages/main/src/plugin/proxy.ts b/packages/main/src/plugin/proxy.ts index 30c965c5dce33..b579f2aa45257 100644 --- a/packages/main/src/plugin/proxy.ts +++ b/packages/main/src/plugin/proxy.ts @@ -115,7 +115,7 @@ export class Proxy { const httpProxy = proxyConfiguration.get('http'); const httpsProxy = proxyConfiguration.get('https'); const noProxy = proxyConfiguration.get('no'); - const isEnabled = proxyConfiguration.get('enabled') || false; + const isEnabled = proxyConfiguration.get('enabled') ?? false; this.proxySettings = { httpProxy: ensureURL(httpProxy), diff --git a/packages/main/src/plugin/task-manager.ts b/packages/main/src/plugin/task-manager.ts index 5b6906d28048f..ba9434809cbcc 100644 --- a/packages/main/src/plugin/task-manager.ts +++ b/packages/main/src/plugin/task-manager.ts @@ -83,7 +83,7 @@ export class TaskManager { id: `main-${this.taskId}`, name: notificationInfo.title, started: new Date().getTime(), - description: notificationInfo.body || '', + description: notificationInfo.body ?? '', markdownActions: notificationInfo.markdownActions, }; this.tasks.set(task.id, task); diff --git a/packages/main/src/plugin/telemetry/telemetry.ts b/packages/main/src/plugin/telemetry/telemetry.ts index f2b68fb3ae679..8e17b44bef8d2 100644 --- a/packages/main/src/plugin/telemetry/telemetry.ts +++ b/packages/main/src/plugin/telemetry/telemetry.ts @@ -170,7 +170,7 @@ export class Telemetry { }, // report using the id of the extension suffixed by error sendErrorData(error: Error, data?: Record): void { - data = data || {}; + data = data ?? {}; data.sourceError = error.message; thisArg.track.apply(thisArg, [`${extensionInfo.id}.error`, data]); }, @@ -418,7 +418,7 @@ export class TelemetryLoggerImpl implements TelemetryLogger { } setupData(data?: RecordInfo): RecordInfo { - data = data || {}; + data = data ?? {}; if (this.options?.additionalCommonProperties) { data = { ...this.options.additionalCommonProperties, ...data }; diff --git a/packages/main/src/plugin/util/exec.ts b/packages/main/src/plugin/util/exec.ts index ffdae1dc2ff8f..36816393025e7 100644 --- a/packages/main/src/plugin/util/exec.ts +++ b/packages/main/src/plugin/util/exec.ts @@ -93,7 +93,7 @@ export class Exec { name: 'Admin usage', env: sudoEnv, }; - const sudoCommand = `${command} ${args || [].join(' ')}`; + const sudoCommand = `${command} ${(args ?? []).join(' ')}`; const callback = (error?: Error, stdout?: string | Buffer, stderr?: string | Buffer): void => { if (error) { @@ -103,8 +103,8 @@ export class Exec { `Failed to execute command: ${error.message}`, 1, sudoCommand, - stdout?.toString() || '', - stderr?.toString() || '', + stdout?.toString() ?? '', + stderr?.toString() ?? '', false, false, ); @@ -113,8 +113,8 @@ export class Exec { } const result: RunResult = { command, - stdout: stdout?.toString() || '', - stderr: stderr?.toString() || '', + stdout: stdout?.toString() ?? '', + stderr: stderr?.toString() ?? '', }; // in case of success resolve(result); @@ -125,19 +125,19 @@ export class Exec { } else if (isMac()) { args = [ '-e', - `do shell script "${command} ${(args || []).join( + `do shell script "${command} ${(args ?? []).join( ' ', )}" with prompt "Podman Desktop requires admin privileges " with administrator privileges`, ]; command = 'osascript'; } else if (isLinux()) { - args = [command, ...(args || [])]; + args = [command, ...(args ?? [])]; command = 'pkexec'; } } if (env.FLATPAK_ID) { - args = ['--host', command, ...(args || [])]; + args = ['--host', command, ...(args ?? [])]; command = 'flatpak-spawn'; } @@ -223,7 +223,7 @@ export class Exec { const errResult: RunError = new RunErrorImpl( `Command execution failed with exit code ${exitCode}`, `Command execution failed with exit code ${exitCode}`, - exitCode || 1, + exitCode ?? 1, command, stdout.trim(), stderr.trim(), @@ -251,6 +251,6 @@ export function getInstallationPath(envPATH?: string): string { return envPATH.concat(':').concat(macosExtraPath); } } else { - return envPATH || ''; + return envPATH ?? ''; } } diff --git a/packages/main/src/plugin/util/manifest.ts b/packages/main/src/plugin/util/manifest.ts index 4a35c2cedc245..7bc98dc6eb631 100644 --- a/packages/main/src/plugin/util/manifest.ts +++ b/packages/main/src/plugin/util/manifest.ts @@ -53,7 +53,7 @@ export function guessIsManifest(image: ImageInfo, connectionType: string): boole if (image.RepoDigests) { for (const digest of image.RepoDigests) { const [repo, hash] = digest.split('@'); - const tagSet = digestMap.get(hash) || new Set(); + const tagSet = digestMap.get(hash) ?? new Set(); image?.RepoTags?.forEach(tag => { if (tag.includes(repo)) { // Ensuring only relevant tags are counted diff --git a/packages/main/src/plugin/view-registry.ts b/packages/main/src/plugin/view-registry.ts index 739282c0e1726..cdff9a26f9a33 100644 --- a/packages/main/src/plugin/view-registry.ts +++ b/packages/main/src/plugin/view-registry.ts @@ -27,8 +27,8 @@ export class ViewRegistry { } registerView(extensionId: string, viewId: string, contribution: ViewContribution): void { - const view = this.extViewContribution.get(extensionId) || new Map(); - const contributions = view.get(viewId) || []; + const view = this.extViewContribution.get(extensionId) ?? new Map(); + const contributions = view.get(viewId) ?? []; contributions.push(contribution); view.set(viewId, contributions); this.extViewContribution.set(extensionId, view); diff --git a/packages/main/src/tray-menu.ts b/packages/main/src/tray-menu.ts index 725d6495d5886..c246c693f09d5 100644 --- a/packages/main/src/tray-menu.ts +++ b/packages/main/src/tray-menu.ts @@ -115,7 +115,7 @@ export class TrayMenu { }; }); } - this.menuCustomItems.set(param.menuItem.id || 'default', param.menuItem); + this.menuCustomItems.set(param.menuItem.id ?? 'default', param.menuItem); // create menu first time this.updateMenu(); @@ -214,7 +214,7 @@ export class TrayMenu { public updateProvider(provider: ProviderInfo): void { const menuProviderItem = - this.menuProviderItems.get(provider.internalId) || + this.menuProviderItems.get(provider.internalId) ?? Array.from(this.menuProviderItems.values()).find(item => item.id === provider.id); if (menuProviderItem) { menuProviderItem.status = provider.status; @@ -276,7 +276,7 @@ export class TrayMenu { item => item.status === 'started', ); - const hasOneStarted = hasOneProviderBeingStarted || hasOneProviderConnectionBeingStarted; + const hasOneStarted = hasOneProviderBeingStarted ?? hasOneProviderConnectionBeingStarted; // is that one provider is being stopped or being started const hasOneProviderStartingOrStopping = Array.from(this.menuProviderItems.values()).find( item => item.status === 'starting' || item.status === 'stopping', @@ -284,7 +284,7 @@ export class TrayMenu { const hasOneProviderConnectionStartingOrStopping = Array.from( this.menuContainerProviderConnectionItems.values(), ).find(item => item.status === 'starting' || item.status === 'stopping'); - const hasOneStartingOrStopping = hasOneProviderStartingOrStopping || hasOneProviderConnectionStartingOrStopping; + const hasOneStartingOrStopping = hasOneProviderStartingOrStopping ?? hasOneProviderConnectionStartingOrStopping; if (hasOneStartingOrStopping !== undefined) { this.globalStatus = 'updating'; diff --git a/packages/preload-docker-extension/src/index.ts b/packages/preload-docker-extension/src/index.ts index 8a501200f0400..e84763dab20ae 100644 --- a/packages/preload-docker-extension/src/index.ts +++ b/packages/preload-docker-extension/src/index.ts @@ -156,7 +156,7 @@ export class DockerExtensionPreload { getExec(launcher: string | undefined): dockerDesktopAPI.Exec { const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); - const nameParam = urlParams.get('extensionName') || ''; + const nameParam = urlParams.get('extensionName') ?? ''; const execFunction: dockerDesktopAPI.Exec = ( cmd: string, @@ -282,9 +282,9 @@ export class DockerExtensionPreload { const desktopUI: dockerDesktopAPI.DesktopUI = { toast, dialog, navigate }; const queryString = window.location.search; const urlParams = new URLSearchParams(queryString); - const arch = urlParams.get('arch') || ''; - const hostname = urlParams.get('hostname') || ''; - const platform = urlParams.get('platform') || ''; + const arch = urlParams.get('arch') ?? ''; + const hostname = urlParams.get('hostname') ?? ''; + const platform = urlParams.get('platform') ?? ''; const host: dockerDesktopAPI.Host = { openExternal: (link: string) => { ipcInvoke('shell:openExternal', link).catch((err: unknown) => { @@ -296,7 +296,7 @@ export class DockerExtensionPreload { hostname, }; - const vmServicePort = urlParams.get('vmServicePort') || undefined; + const vmServicePort = urlParams.get('vmServicePort') ?? undefined; // do we have a service being exposed ? const doRequest = async (config: RequestConfig): Promise => { diff --git a/packages/renderer/src/lib/container/container-utils.ts b/packages/renderer/src/lib/container/container-utils.ts index 1d87e89db0aea..8c87a8f7fb532 100644 --- a/packages/renderer/src/lib/container/container-utils.ts +++ b/packages/renderer/src/lib/container/container-utils.ts @@ -47,7 +47,7 @@ export class ContainerUtils { } getState(containerInfo: ContainerInfo): string { - return (containerInfo.State || '').toUpperCase(); + return (containerInfo.State ?? '').toUpperCase(); } getUptime(containerInfo: ContainerInfo): string { @@ -156,7 +156,7 @@ export class ContainerUtils { selected: false, created: containerInfo.Created, labels: containerInfo.Labels, - icon: this.iconClass(containerInfo, context, viewContributions) || ContainerIcon, + icon: this.iconClass(containerInfo, context, viewContributions) ?? ContainerIcon, imageBase64RepoTag: containerInfo.ImageBase64RepoTag, imageHref: `/images/${containerInfo.ImageID.startsWith('sha256:') ? containerInfo.ImageID.slice(7) : containerInfo.ImageID}/${containerInfo.engineId}/${containerInfo.ImageBase64RepoTag}/summary`, }; @@ -181,7 +181,7 @@ export class ContainerUtils { name: podInfo.name, type: ContainerGroupInfoTypeUI.POD, id: podInfo.id, - status: (podInfo.status || '').toUpperCase(), + status: (podInfo.status ?? '').toUpperCase(), engineId: containerInfo.engineId, engineType: containerInfo.engineType, }; @@ -191,7 +191,7 @@ export class ContainerUtils { return { name: this.getName(containerInfo), type: ContainerGroupInfoTypeUI.STANDALONE, - status: (containerInfo.Status || '').toUpperCase(), + status: (containerInfo.Status ?? '').toUpperCase(), engineType: containerInfo.engineType, }; } diff --git a/packages/renderer/src/lib/dashboard/NotificationCardItem.svelte b/packages/renderer/src/lib/dashboard/NotificationCardItem.svelte index dc90b1a2ee3a3..4953cb549175a 100644 --- a/packages/renderer/src/lib/dashboard/NotificationCardItem.svelte +++ b/packages/renderer/src/lib/dashboard/NotificationCardItem.svelte @@ -22,7 +22,7 @@ async function removeNotification(id: number) {
{notification.title}
-
{notification.body || ''}
+
{notification.body ?? ''}
{#if notification.markdownActions} diff --git a/packages/renderer/src/lib/deployments/deployment-utils.ts b/packages/renderer/src/lib/deployments/deployment-utils.ts index a56fe7cff5390..63224c366e3f6 100644 --- a/packages/renderer/src/lib/deployments/deployment-utils.ts +++ b/packages/renderer/src/lib/deployments/deployment-utils.ts @@ -34,14 +34,14 @@ export class DeploymentUtils { } } return { - name: deployment.metadata?.name || '', + name: deployment.metadata?.name ?? '', status: status, - namespace: deployment.metadata?.namespace || '', + namespace: deployment.metadata?.namespace ?? '', created: deployment.metadata?.creationTimestamp, // number of replicas - replicas: deployment.status?.replicas || 0, + replicas: deployment.status?.replicas ?? 0, // ready pods - ready: deployment.status?.readyReplicas || 0, + ready: deployment.status?.readyReplicas ?? 0, selected: false, conditions: conditions, }; diff --git a/packages/renderer/src/lib/dialogs/CustomPick.svelte b/packages/renderer/src/lib/dialogs/CustomPick.svelte index 2a961052a7807..cdf409ea5b6ee 100644 --- a/packages/renderer/src/lib/dialogs/CustomPick.svelte +++ b/packages/renderer/src/lib/dialogs/CustomPick.svelte @@ -32,12 +32,12 @@ onMount(() => { function showCustomPickCallback(customQuickPickParameter: unknown) { const options: CustomPickOptions | undefined = customQuickPickParameter as CustomPickOptions; - id = options?.id || 0; - title = options?.title || ''; - description = options?.description || ''; - icon = options?.icon || ''; - items = options?.items || []; - canSelectMany = options?.canSelectMany || false; + id = options?.id ?? 0; + title = options?.title ?? ''; + description = options?.description ?? ''; + icon = options?.icon ?? ''; + items = options?.items ?? []; + canSelectMany = options?.canSelectMany ?? false; if (items.length > 2 && items.length % 3 !== 1) { colsPerRow = 3; @@ -46,7 +46,7 @@ function showCustomPickCallback(customQuickPickParameter: unknown) { usePopperForDetails = items.length > 3; hideItemSections = usePopperForDetails || options?.hideItemSections || false; - minHeight = options?.minHeight || ''; + minHeight = options?.minHeight ?? ''; items.forEach((_value, index) => { itemSectionHiddenStatus.set(index, hideItemSections); diff --git a/packages/renderer/src/lib/dialogs/MessageBox.spec.ts b/packages/renderer/src/lib/dialogs/MessageBox.spec.ts index 041cb6dff3b63..864de635c104b 100644 --- a/packages/renderer/src/lib/dialogs/MessageBox.spec.ts +++ b/packages/renderer/src/lib/dialogs/MessageBox.spec.ts @@ -64,11 +64,11 @@ describe('MessageBox', () => { expect(title).toBeInTheDocument(); const message = await screen.findByText(messageBoxOptions.message); expect(message).toBeInTheDocument(); - const detail = await screen.findByText(messageBoxOptions.detail || ''); + const detail = await screen.findByText(messageBoxOptions.detail ?? ''); expect(detail).toBeInTheDocument(); - const button1 = await screen.findByText(messageBoxOptions.buttons?.[0] || ''); + const button1 = await screen.findByText(messageBoxOptions.buttons?.[0] ?? ''); expect(button1).toBeInTheDocument(); - const button2 = await screen.findByText(messageBoxOptions.buttons?.[1] || ''); + const button2 = await screen.findByText(messageBoxOptions.buttons?.[1] ?? ''); expect(button2).toBeInTheDocument(); }); diff --git a/packages/renderer/src/lib/dialogs/QuickPickInput.svelte b/packages/renderer/src/lib/dialogs/QuickPickInput.svelte index 29b365034f26c..13e76f394af76 100644 --- a/packages/renderer/src/lib/dialogs/QuickPickInput.svelte +++ b/packages/renderer/src/lib/dialogs/QuickPickInput.svelte @@ -40,16 +40,16 @@ const showInputCallback = (inputCallpackParameter: unknown) => { inputValue = options?.value; placeHolder = options?.placeHolder; title = options?.title; - currentId = options?.id || 0; + currentId = options?.id ?? 0; if (options?.prompt) { prompt = `${options.prompt} (${DEFAULT_PROMPT})`; } else { prompt = DEFAULT_PROMPT; } markdownDescription = options?.markdownDescription; - multiline = options?.multiline || false; + multiline = options?.multiline ?? false; - validationEnabled = options?.validate || false; + validationEnabled = options?.validate ?? false; display = true; tick() .then(() => { @@ -70,19 +70,19 @@ const showQuickPickCallback = (quickpickParameter: unknown) => { mode = 'QuickPick'; placeHolder = options?.placeHolder; title = options?.title; - currentId = options?.id || 0; + currentId = options?.id ?? 0; if (options?.prompt) { prompt = options.prompt; } - quickPickItems = (options?.items || []).map(item => { + quickPickItems = (options?.items ?? []).map(item => { if (typeof item === 'string') { return { value: item, description: '', detail: '', checkbox: false }; } else { // if type is QuickPickItem use label field for the display return { - value: item.label || '', - description: item.description || '', - detail: item.detail || '', + value: item.label ?? '', + description: item.description ?? '', + detail: item.detail ?? '', checkbox: false, }; } diff --git a/packages/renderer/src/lib/extensions/InstalledExtensionCardLeftOnboardingAndProperties.svelte b/packages/renderer/src/lib/extensions/InstalledExtensionCardLeftOnboardingAndProperties.svelte index 95cdbafad75e6..87fcdd882836c 100644 --- a/packages/renderer/src/lib/extensions/InstalledExtensionCardLeftOnboardingAndProperties.svelte +++ b/packages/renderer/src/lib/extensions/InstalledExtensionCardLeftOnboardingAndProperties.svelte @@ -53,7 +53,7 @@ onMount(() => { const enablement = normalizeOnboardingWhenClause(matchingOnBoarding.enablement, extension.id); const whenDeserialized = ContextKeyExpr.deserialize(enablement); const isEnabled = whenDeserialized?.evaluate($context); - return isEnabled || false; + return !!isEnabled; } }); diff --git a/packages/renderer/src/lib/image/RunImage.spec.ts b/packages/renderer/src/lib/image/RunImage.spec.ts index e5c3d72eb68f0..040c00e1f9dfb 100644 --- a/packages/renderer/src/lib/image/RunImage.spec.ts +++ b/packages/renderer/src/lib/image/RunImage.spec.ts @@ -98,7 +98,7 @@ async function createRunImage(entrypoint?: string | string[], cmd?: string[]) { AttachStderr: false, AttachStdin: false, AttachStdout: false, - Cmd: cmd || [], + Cmd: cmd ?? [], Domainname: '', Entrypoint: entrypoint, Env: [], diff --git a/packages/renderer/src/lib/image/RunImage.svelte b/packages/renderer/src/lib/image/RunImage.svelte index 8510ac0f6b482..45b3c924affc8 100644 --- a/packages/renderer/src/lib/image/RunImage.svelte +++ b/packages/renderer/src/lib/image/RunImage.svelte @@ -113,9 +113,9 @@ onMount(async () => { containerPortMapping = []; imageInspectInfo = await window.getImageInspect(image.engineId, image.id); - exposedPorts = Array.from(Object.keys(imageInspectInfo?.Config?.ExposedPorts || {})); + exposedPorts = Array.from(Object.keys(imageInspectInfo?.Config?.ExposedPorts ?? {})); - command = array2String(imageInspectInfo.Config?.Cmd || []); + command = array2String(imageInspectInfo.Config?.Cmd ?? []); if (imageInspectInfo.Config?.Entrypoint) { if (typeof imageInspectInfo.Config.Entrypoint === 'string') { @@ -286,7 +286,7 @@ async function startContainer() { // filter variables withouts keys .filter(env => env.key) // no value, use empty string - .map(env => `${env.key}=${env.value || ''}`); + .map(env => `${env.key}=${env.value ?? ''}`); // filter empty files const EnvFiles = environmentFiles.filter(env => env); @@ -616,7 +616,7 @@ function onPortInput(event: Event, portInfo: PortInfo, updateUI: () => void) { async function assertAllPortAreValid(): Promise { const invalidHostPorts = hostContainerPortMappings.filter(pair => pair.hostPort.error); - const invalidContainerPortMapping = containerPortMapping?.filter(port => port.error) || []; + const invalidContainerPortMapping = containerPortMapping?.filter(port => port.error) ?? []; invalidPorts = invalidHostPorts.length > 0 || invalidContainerPortMapping.length > 0; } @@ -1027,7 +1027,7 @@ async function assertAllPortAreValid(): Promise { bind:value="{networkingModeUserNetwork}"> {#each engineNetworks as network} + >{network.Name} (used by {Object.keys(network.Containers ?? {}).length} containers) {/each} diff --git a/packages/renderer/src/lib/image/image-utils.ts b/packages/renderer/src/lib/image/image-utils.ts index a9f7b4d405580..66aeaf11e6246 100644 --- a/packages/renderer/src/lib/image/image-utils.ts +++ b/packages/renderer/src/lib/image/image-utils.ts @@ -170,7 +170,7 @@ export class ImageUtils { context?: ContextUI, viewContributions?: ViewInfoUI[], ): ImageInfoUI[] { - let icon = this.iconClass(imageInfo, context, viewContributions) || ImageIcon; + let icon = this.iconClass(imageInfo, context, viewContributions) ?? ImageIcon; const badges = this.computeBagdes(imageInfo, context, viewContributions); // Use the manifest icon if it's a manifest diff --git a/packages/renderer/src/lib/ingresses-routes/ingress-route-utils.ts b/packages/renderer/src/lib/ingresses-routes/ingress-route-utils.ts index 8c6dad98aac6a..a687c17e0670d 100644 --- a/packages/renderer/src/lib/ingresses-routes/ingress-route-utils.ts +++ b/packages/renderer/src/lib/ingresses-routes/ingress-route-utils.ts @@ -31,8 +31,8 @@ export interface HostPathObject { export class IngressRouteUtils { getIngressUI(ingress: V1Ingress): IngressUI { return { - name: ingress.metadata?.name || '', - namespace: ingress.metadata?.namespace || '', + name: ingress.metadata?.name ?? '', + namespace: ingress.metadata?.namespace ?? '', status: 'RUNNING', rules: ingress.spec?.rules, selected: false, @@ -41,8 +41,8 @@ export class IngressRouteUtils { } getRouteUI(route: V1Route): RouteUI { return { - name: route.metadata?.name || '', - namespace: route.metadata?.namespace || '', + name: route.metadata?.name ?? '', + namespace: route.metadata?.namespace ?? '', status: 'RUNNING', host: route.spec.host, port: route.spec.port?.targetPort, diff --git a/packages/renderer/src/lib/kube/details/KubeIngressStatusArtifact.svelte b/packages/renderer/src/lib/kube/details/KubeIngressStatusArtifact.svelte index 87a59aec617b2..adb3c839cfca5 100644 --- a/packages/renderer/src/lib/kube/details/KubeIngressStatusArtifact.svelte +++ b/packages/renderer/src/lib/kube/details/KubeIngressStatusArtifact.svelte @@ -17,7 +17,7 @@ export let artifact: V1IngressStatus | undefined; Load Balancer {#each artifact.loadBalancer?.ingress as ingress} -
{ingress.ip || ingress.hostname}
+
{ingress.ip ?? ingress.hostname}
{/each}
diff --git a/packages/renderer/src/lib/kube/details/KubeServiceStatusArtifact.svelte b/packages/renderer/src/lib/kube/details/KubeServiceStatusArtifact.svelte index 47819e690a22f..9b1c8afca7d8e 100644 --- a/packages/renderer/src/lib/kube/details/KubeServiceStatusArtifact.svelte +++ b/packages/renderer/src/lib/kube/details/KubeServiceStatusArtifact.svelte @@ -17,7 +17,7 @@ export let artifact: V1ServiceStatus | undefined; Load Balancer {#each artifact.loadBalancer?.ingress as ingress} -
{ingress.ip || ingress.hostname}
+
{ingress.ip ?? ingress.hostname}
{/each}
diff --git a/packages/renderer/src/lib/kube/details/KubeVolumeArtifact.svelte b/packages/renderer/src/lib/kube/details/KubeVolumeArtifact.svelte index 66a6ac2cba3ac..a21926a147129 100644 --- a/packages/renderer/src/lib/kube/details/KubeVolumeArtifact.svelte +++ b/packages/renderer/src/lib/kube/details/KubeVolumeArtifact.svelte @@ -101,7 +101,7 @@ export let artifact: V1Volume; Empty Directory Medium: {artifact.emptyDir.medium || 'Default'} + >Medium: {artifact.emptyDir.medium ?? 'Default'} {#if artifact.emptyDir.sizeLimit} • Size Limit: {artifact.emptyDir.sizeLimit} {/if} diff --git a/packages/renderer/src/lib/kube/details/OpenshiftRouteArtifact.svelte b/packages/renderer/src/lib/kube/details/OpenshiftRouteArtifact.svelte index 3861e26a4a109..57eb6b9baf32b 100644 --- a/packages/renderer/src/lib/kube/details/OpenshiftRouteArtifact.svelte +++ b/packages/renderer/src/lib/kube/details/OpenshiftRouteArtifact.svelte @@ -26,7 +26,7 @@ export let artifact: V1Route | undefined; Path - {artifact.spec.path || 'N/A'} + {artifact.spec.path ?? 'N/A'} {/if} @@ -67,7 +67,7 @@ export let artifact: V1Route | undefined; Link - {@const link = `${artifact.spec.tls ? 'https' : 'http'}://${artifact.spec.host}${artifact.spec.path || ''}`} + {@const link = `${artifact.spec.tls ? 'https' : 'http'}://${artifact.spec.host}${artifact.spec.path ?? ''}`} {link} diff --git a/packages/renderer/src/lib/markdown/micromark-warnings-directive.ts b/packages/renderer/src/lib/markdown/micromark-warnings-directive.ts index 12be1fec89e33..a48bd66d0b644 100644 --- a/packages/renderer/src/lib/markdown/micromark-warnings-directive.ts +++ b/packages/renderer/src/lib/markdown/micromark-warnings-directive.ts @@ -40,7 +40,7 @@ export function decode(value: string) { * @returns {string} */ function replace(value: string) { - return characterReferences.get(value) || ''; + return characterReferences.get(value) ?? ''; } } @@ -76,7 +76,7 @@ export function warnings(this: CompileContext, d: any) { // Add the div tag which depicts the wrapper list containing all items this.tag('
'); - const items = JSON.parse(decode(d.label) || ''); + const items = JSON.parse(decode(d.label) ?? ''); for (const item of items) { // start the div representing one row this.tag('
'); diff --git a/packages/renderer/src/lib/onboarding/Onboarding.svelte b/packages/renderer/src/lib/onboarding/Onboarding.svelte index b154d7905db99..d584fd481f0c6 100644 --- a/packages/renderer/src/lib/onboarding/Onboarding.svelte +++ b/packages/renderer/src/lib/onboarding/Onboarding.svelte @@ -95,7 +95,7 @@ onMount(async () => { return row.filter(item => { return evaluateWhen(item.when, activeStep.onboarding.extension); }); - }) || []; + }) ?? []; // when the context is updated it checks if the onboarding already started if (started) { @@ -154,7 +154,7 @@ async function setActiveStep() { return row.filter(item => { return evaluateWhen(item.when, onboarding.extension); }); - }) || []; + }) ?? []; if (step.command) { try { await doExecuteCommand(step.command); diff --git a/packages/renderer/src/lib/onboarding/OnboardingComponent.svelte b/packages/renderer/src/lib/onboarding/OnboardingComponent.svelte index 4c8af88202691..02e73229856a8 100644 --- a/packages/renderer/src/lib/onboarding/OnboardingComponent.svelte +++ b/packages/renderer/src/lib/onboarding/OnboardingComponent.svelte @@ -23,10 +23,10 @@ $: providerInfo; let providerDisplayName: string | undefined; $: providerDisplayName = (providerInfo?.containerProviderConnectionCreation - ? providerInfo?.containerProviderConnectionCreationDisplayName || undefined + ? providerInfo?.containerProviderConnectionCreationDisplayName ?? undefined : providerInfo?.kubernetesProviderConnectionCreation ? providerInfo?.kubernetesProviderConnectionCreationDisplayName - : undefined) || providerInfo?.name; + : undefined) ?? providerInfo?.name; onMount(() => { configurationProperties.subscribe(value => { diff --git a/packages/renderer/src/lib/onboarding/onboarding-utils.ts b/packages/renderer/src/lib/onboarding/onboarding-utils.ts index fee70707ba095..b0bbf1479bf8b 100644 --- a/packages/renderer/src/lib/onboarding/onboarding-utils.ts +++ b/packages/renderer/src/lib/onboarding/onboarding-utils.ts @@ -85,7 +85,7 @@ export function isStepCompleted( } return false; - }) || false + }) ?? false ); } diff --git a/packages/renderer/src/lib/pod/KubernetesTerminalBrowser.svelte b/packages/renderer/src/lib/pod/KubernetesTerminalBrowser.svelte index 9ff916c450a6b..ab579dbac439d 100644 --- a/packages/renderer/src/lib/pod/KubernetesTerminalBrowser.svelte +++ b/packages/renderer/src/lib/pod/KubernetesTerminalBrowser.svelte @@ -18,7 +18,7 @@ $: currentContainerStatus = ?.Containers.reduce((acc, c) => { acc.set(c.Names, c.Status); return acc; - }, new Map()) || new Map(); + }, new Map()) ?? new Map(); let currentContainerName = ''; diff --git a/packages/renderer/src/lib/pod/PodCreateFromContainers.svelte b/packages/renderer/src/lib/pod/PodCreateFromContainers.svelte index 2b471c05e5291..56aa0aec93576 100644 --- a/packages/renderer/src/lib/pod/PodCreateFromContainers.svelte +++ b/packages/renderer/src/lib/pod/PodCreateFromContainers.svelte @@ -137,7 +137,7 @@ onMount(() => { exposed: true, container: container.name, }); - mapPortPrivate.set(port.PrivatePort, [...(mapPortPrivate.get(port.PrivatePort) || []), container.name]); + mapPortPrivate.set(port.PrivatePort, [...(mapPortPrivate.get(port.PrivatePort) ?? []), container.name]); }); }); mapPortPrivate.forEach((value, key) => { diff --git a/packages/renderer/src/lib/preferences/PreferencesCliTool.svelte b/packages/renderer/src/lib/preferences/PreferencesCliTool.svelte index cb3aaaedb1195..65139617d72a8 100644 --- a/packages/renderer/src/lib/preferences/PreferencesCliTool.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesCliTool.svelte @@ -56,7 +56,7 @@ function getLoggerHandler(_cliToolId: string): ConnectionCallback {
- {#if cliTool?.images?.icon || cliTool?.extensionInfo.icon} + {#if cliTool?.images?.icon ?? cliTool?.extensionInfo.icon} {#if typeof cliTool.images?.icon === 'string'} - {#if connectionAuditResult && (connectionAuditResult.records?.length || 0) > 0} + {#if connectionAuditResult && (connectionAuditResult.records?.length ?? 0) > 0} {/if}
(tmpProviderContainerConfiguration = value.flat())); diff --git a/packages/renderer/src/lib/preferences/PreferencesContainerConnectionEdit.svelte b/packages/renderer/src/lib/preferences/PreferencesContainerConnectionEdit.svelte index fb9b42b6e39e3..cf2c06151c2c0 100644 --- a/packages/renderer/src/lib/preferences/PreferencesContainerConnectionEdit.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesContainerConnectionEdit.svelte @@ -29,7 +29,7 @@ let providersUnsubscribe: Unsubscriber; onMount(async () => { providersUnsubscribe = providerInfos.subscribe(providerInfosValue => { const providers = providerInfosValue; - const connectionName = Buffer.from(name || '', 'base64').toString(); + const connectionName = Buffer.from(name ?? '', 'base64').toString(); providerInfo = providers.filter(provider => provider.internalId === providerInternalId)[0]; connectionInfo = providerInfo.containerConnections.filter(connection => connection.name === connectionName)[0]; }); diff --git a/packages/renderer/src/lib/preferences/PreferencesContainerConnectionRendering.svelte b/packages/renderer/src/lib/preferences/PreferencesContainerConnectionRendering.svelte index 9b62390a1b7d9..1da189c3c14a3 100644 --- a/packages/renderer/src/lib/preferences/PreferencesContainerConnectionRendering.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesContainerConnectionRendering.svelte @@ -33,8 +33,8 @@ export let name: string | undefined = undefined; let detailsPage: DetailsPage; -const connectionName = Buffer.from(name || '', 'base64').toString(); -const socketPath: string = Buffer.from(connection || '', 'base64').toString(); +const connectionName = Buffer.from(name ?? '', 'base64').toString(); +const socketPath: string = Buffer.from(connection ?? '', 'base64').toString(); let connectionStatus: IConnectionStatus; let noLog = true; let connectionInfo: ProviderContainerConnectionInfo | undefined; @@ -43,7 +43,7 @@ let loggerHandlerKey: symbol | undefined; let configurationKeys: IConfigurationPropertyRecordedSchema[]; $: configurationKeys = properties .filter(property => property.scope === 'ContainerConnection') - .sort((a, b) => (a.id || '').localeCompare(b.id || '')); + .sort((a, b) => (a.id ?? '').localeCompare(b.id ?? '')); let providersUnsubscribe: Unsubscriber; onMount(async () => { diff --git a/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionDetailsSummary.svelte b/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionDetailsSummary.svelte index 185231b04b7a8..49d4bff366787 100644 --- a/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionDetailsSummary.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionDetailsSummary.svelte @@ -21,8 +21,8 @@ $: Promise.all( kubernetesConnectionInfo as unknown as KubernetesProviderConnection, ) : undefined, - connection: kubernetesConnectionInfo?.name || '', - providerId: providerInternalId || '', + connection: kubernetesConnectionInfo?.name ?? '', + providerId: providerInternalId ?? '', }; }), ).then(value => (tmpProviderContainerConfiguration = value.flat())); diff --git a/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionRendering.svelte b/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionRendering.svelte index ea7b32a6ece44..fed4a9b9b950f 100644 --- a/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionRendering.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesKubernetesConnectionRendering.svelte @@ -40,7 +40,7 @@ let loggerHandlerKey: symbol | undefined; let configurationKeys: IConfigurationPropertyRecordedSchema[]; $: configurationKeys = properties .filter(property => property.scope === 'KubernetesConnection') - .sort((a, b) => (a?.id || '').localeCompare(b?.id || '')); + .sort((a, b) => (a?.id ?? '').localeCompare(b?.id ?? '')); let detailsPage: DetailsPage; let providersUnsubscribe: Unsubscriber; diff --git a/packages/renderer/src/lib/preferences/PreferencesProviderRendering.svelte b/packages/renderer/src/lib/preferences/PreferencesProviderRendering.svelte index be8e335b2d30b..9496b7354f53a 100644 --- a/packages/renderer/src/lib/preferences/PreferencesProviderRendering.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesProviderRendering.svelte @@ -53,10 +53,10 @@ $: providerInfo = providers.filter(provider => provider.internalId === providerI let providerDisplayName: string; $: providerDisplayName = (providerInfo?.containerProviderConnectionCreation - ? providerInfo?.containerProviderConnectionCreationDisplayName || undefined + ? providerInfo?.containerProviderConnectionCreationDisplayName ?? undefined : providerInfo?.kubernetesProviderConnectionCreation ? providerInfo?.kubernetesProviderConnectionCreationDisplayName - : undefined) || providerInfo?.name; + : undefined) ?? providerInfo?.name; let title: string; $: title = connectionInfo ? `Update ${providerDisplayName} ${connectionInfo.name}` : `Create ${providerDisplayName}`; diff --git a/packages/renderer/src/lib/preferences/PreferencesRegistriesEditing.svelte b/packages/renderer/src/lib/preferences/PreferencesRegistriesEditing.svelte index 331a7128dc4dd..9c68dd577e148 100644 --- a/packages/renderer/src/lib/preferences/PreferencesRegistriesEditing.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesRegistriesEditing.svelte @@ -370,7 +370,7 @@ function removeExistingRegistry(registry: containerDesktopAPI.Registry) {
{#if originRegistries.some(r => r.serverUrl === registry.serverUrl)} - {errorResponses.find(o => o.serverUrl === registry.serverUrl)?.error || ''} + {errorResponses.find(o => o.serverUrl === registry.serverUrl)?.error ?? ''} {/if}
@@ -444,7 +444,7 @@ function removeExistingRegistry(registry: containerDesktopAPI.Registry) {
{#if listedSuggestedRegistries[i]} - {errorResponses.find(o => o.serverUrl === newRegistryRequest.serverUrl)?.error || ''} + {errorResponses.find(o => o.serverUrl === newRegistryRequest.serverUrl)?.error ?? ''} {/if}
@@ -484,7 +484,7 @@ function removeExistingRegistry(registry: containerDesktopAPI.Registry) {
- {errorResponses.find(o => o.serverUrl === newRegistryRequest.serverUrl)?.error || ''} + {errorResponses.find(o => o.serverUrl === newRegistryRequest.serverUrl)?.error ?? ''}
diff --git a/packages/renderer/src/lib/preferences/PreferencesRendering.svelte b/packages/renderer/src/lib/preferences/PreferencesRendering.svelte index e2f5aaf3a89b7..2d0bbfa9ddf12 100644 --- a/packages/renderer/src/lib/preferences/PreferencesRendering.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesRendering.svelte @@ -31,8 +31,8 @@ $: matchingRecords = properties property => !searchValue || matchValue(property.title, searchValue) || - (property.description && matchValue(property.description, searchValue)) || - (property.markdownDescription && matchValue(property.markdownDescription, searchValue)), + (!!property.description && matchValue(property.description, searchValue)) || + (!!property.markdownDescription && matchValue(property.markdownDescription, searchValue)), ) .reduce((map, property) => { if (!map.has(property.parentId)) { diff --git a/packages/renderer/src/lib/preferences/PreferencesRenderingItem.svelte b/packages/renderer/src/lib/preferences/PreferencesRenderingItem.svelte index eaf7bd7a8d5da..33f63c1b4017c 100644 --- a/packages/renderer/src/lib/preferences/PreferencesRenderingItem.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesRenderingItem.svelte @@ -30,10 +30,10 @@ function startCase(str: string): string { function update() { const id = record.id; // take string after the last dot - const key = id?.substring(id?.lastIndexOf('.') + 1) || ''; + const key = id?.substring(id?.lastIndexOf('.') + 1) ?? ''; // define bread crumb as first part before the last dot - const breadCrumb = id?.substring(0, id?.lastIndexOf('.')) || ''; + const breadCrumb = id?.substring(0, id?.lastIndexOf('.')) ?? ''; // and replace dot by > in breadcrumb const breadCrumbUI = breadCrumb.replace(/\./g, ' > ').concat(':'); diff --git a/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte b/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte index 854694ad6dd32..0085a3e7364d7 100644 --- a/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesRenderingItemFormat.svelte @@ -134,7 +134,7 @@ async function onChange(recordId: string, value: boolean | string | number): Pro {/if} {:else if record.type === 'string' && (typeof recordValue === 'string' || recordValue === undefined)} {#if record.format === 'file' || record.format === 'folder'} - + {:else if record.enum && record.enum.length > 0} {:else} diff --git a/packages/renderer/src/lib/preferences/PreferencesResourcesRendering.svelte b/packages/renderer/src/lib/preferences/PreferencesResourcesRendering.svelte index 916e8a882f25c..4fb4870ff473f 100644 --- a/packages/renderer/src/lib/preferences/PreferencesResourcesRendering.svelte +++ b/packages/renderer/src/lib/preferences/PreferencesResourcesRendering.svelte @@ -191,7 +191,7 @@ onDestroy(() => { $: configurationKeys = properties .filter(property => property.scope === 'ContainerConnection') - .sort((a, b) => (a?.id || '').localeCompare(b?.id || '')); + .sort((a, b) => (a?.id ?? '').localeCompare(b?.id ?? '')); let tmpProviderContainerConfiguration: IProviderConnectionConfigurationPropertyRecorded[] = []; $: Promise.all( @@ -222,7 +222,7 @@ $: Promise.all( $: providerContainerConfiguration = tmpProviderContainerConfiguration .filter(configurationKey => configurationKey.value !== undefined) .reduce((map, value) => { - const innerProviderContainerConfigurations = map.get(value.providerId) || []; + const innerProviderContainerConfigurations = map.get(value.providerId) ?? []; innerProviderContainerConfigurations.push(value); map.set(value.providerId, innerProviderContainerConfigurations); return map; @@ -247,7 +247,7 @@ function updateContainerStatus( } } else if (action) { containerConnectionStatus.set(containerConnectionName, { - inProgress: inProgress === undefined ? true : inProgress, + inProgress: inProgress ?? true, action: action, status: containerConnectionInfo.status, }); @@ -339,7 +339,7 @@ function isOnboardingEnabled(provider: ProviderInfo, globalContext: ContextUI): whenEnablement = normalizeOnboardingWhenClause(whenEnablement, provider.extensionId); const whenDeserialized = ContextKeyExpr.deserialize(whenEnablement); const isEnabled = whenDeserialized?.evaluate(globalContext); - return isEnabled || false; + return !!isEnabled; } function hasAnyConfiguration(provider: ProviderInfo) { @@ -404,16 +404,16 @@ function hasAnyConfiguration(provider: ProviderInfo) { {#if provider.containerProviderConnectionCreation || provider.kubernetesProviderConnectionCreation} {@const providerDisplayName = (provider.containerProviderConnectionCreation - ? provider.containerProviderConnectionCreationDisplayName || undefined + ? provider.containerProviderConnectionCreationDisplayName ?? undefined : provider.kubernetesProviderConnectionCreation ? provider.kubernetesProviderConnectionCreationDisplayName - : undefined) || provider.name} + : undefined) ?? provider.name} {@const buttonTitle = (provider.containerProviderConnectionCreation - ? provider.containerProviderConnectionCreationButtonTitle || undefined + ? provider.containerProviderConnectionCreationButtonTitle ?? undefined : provider.kubernetesProviderConnectionCreation ? provider.kubernetesProviderConnectionCreationButtonTitle - : undefined) || 'Create new'} + : undefined) ?? 'Create new'} @@ -506,7 +506,7 @@ function hasAnyConfiguration(provider: ProviderInfo) { class="{container.status !== 'started' ? 'text-gray-900' : ''}" path="{container.endpoint.socketPath}" /> {#if providerContainerConfiguration.has(provider.internalId)} - {@const providerConfiguration = providerContainerConfiguration.get(provider.internalId) || []} + {@const providerConfiguration = providerContainerConfiguration.get(provider.internalId) ?? []}
+ aria-label="{record.description ?? record.markdownDescription}"> {checked ? 'Enabled' : 'Disabled'} diff --git a/packages/renderer/src/lib/preferences/item-formats/FloatNumberItem.svelte b/packages/renderer/src/lib/preferences/item-formats/FloatNumberItem.svelte index 3a687b7ec5135..68895f0f1f784 100644 --- a/packages/renderer/src/lib/preferences/item-formats/FloatNumberItem.svelte +++ b/packages/renderer/src/lib/preferences/item-formats/FloatNumberItem.svelte @@ -12,7 +12,7 @@ export let onChange = (_id: string, _value: number) => {}; export let invalidRecord = (_error: string) => {}; let recordValue: string; -$: recordValue = value?.toString() || '0'; +$: recordValue = value?.toString() ?? '0'; let numberInputErrorMessage = ''; let numberInputInvalid = false; @@ -62,7 +62,7 @@ function onNumberInputKeyPress(event: any) { function assertNumericValueIsValid(value: number): boolean { const numericValue = checkNumericValueValid(record, value); numberInputInvalid = !numericValue.valid; - numberInputErrorMessage = numericValue.error || ''; + numberInputErrorMessage = numericValue.error ?? ''; return numericValue.valid; } diff --git a/packages/renderer/src/lib/preferences/item-formats/NumberItem.svelte b/packages/renderer/src/lib/preferences/item-formats/NumberItem.svelte index 595c0fd2e978c..0a204e2187e3a 100644 --- a/packages/renderer/src/lib/preferences/item-formats/NumberItem.svelte +++ b/packages/renderer/src/lib/preferences/item-formats/NumberItem.svelte @@ -11,11 +11,11 @@ export let invalidRecord = (_error: string) => {}; let valueUpdateTimeout: NodeJS.Timeout; -let recordValue: number = value || 0; +let recordValue: number = value ?? 0; let lastValue: number; let error: string | undefined = undefined; -$: recordValue = value || 0; +$: recordValue = value ?? 0; $: if (recordValue) { const newValue = Number(recordValue); diff --git a/packages/renderer/src/lib/statusbar/StatusBarItem.svelte b/packages/renderer/src/lib/statusbar/StatusBarItem.svelte index 4f240a411257f..ea785bc1b89d6 100644 --- a/packages/renderer/src/lib/statusbar/StatusBarItem.svelte +++ b/packages/renderer/src/lib/statusbar/StatusBarItem.svelte @@ -5,7 +5,7 @@ import { iconClass } from './StatusBarItem'; export let entry: StatusBarEntry; function tooltipText(entry: StatusBarEntry): string { - return entry.tooltip !== undefined ? entry.tooltip : ''; + return entry.tooltip ?? ''; } function opacity(entry: StatusBarEntry): string { diff --git a/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte b/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte index f91ba0c9c961f..7043ab05112b0 100644 --- a/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte +++ b/packages/renderer/src/lib/task-manager/TaskManagerItem.svelte @@ -100,7 +100,7 @@ function doExecuteAction(taskUI: StatefulTaskUI) { {#if isStatefulTask(taskUI) && taskUI.status === 'in-progress'}
- {#if (taskUI.progress || 0) >= 0} + {#if (taskUI.progress ?? 0) >= 0} {/if}
diff --git a/packages/renderer/src/lib/ui/ConnectionStatus.svelte b/packages/renderer/src/lib/ui/ConnectionStatus.svelte index 5fbdef1b43396..e263e341d20e7 100644 --- a/packages/renderer/src/lib/ui/ConnectionStatus.svelte +++ b/packages/renderer/src/lib/ui/ConnectionStatus.svelte @@ -51,7 +51,7 @@ const statusesStyle = new Map([ }, ], ]); -$: statusStyle = statusesStyle.get(status) || { +$: statusStyle = statusesStyle.get(status) ?? { bgColor: 'bg-gray-900', txtColor: 'text-gray-900', label: status.toUpperCase(), diff --git a/packages/renderer/src/lib/ui/ExtensionStatus.svelte b/packages/renderer/src/lib/ui/ExtensionStatus.svelte index abad0fd0fa02b..ede6ce302475c 100644 --- a/packages/renderer/src/lib/ui/ExtensionStatus.svelte +++ b/packages/renderer/src/lib/ui/ExtensionStatus.svelte @@ -58,7 +58,7 @@ const statusesStyle = new Map([ }, ], ]); -$: statusStyle = statusesStyle.get(status) || { +$: statusStyle = statusesStyle.get(status) ?? { bgColor: 'bg-gray-900', txtColor: 'text-gray-900', label: status.toUpperCase(), diff --git a/packages/renderer/src/lib/ui/ListItemButtonIcon.svelte b/packages/renderer/src/lib/ui/ListItemButtonIcon.svelte index ebde43837d213..abfbb6698ca95 100644 --- a/packages/renderer/src/lib/ui/ListItemButtonIcon.svelte +++ b/packages/renderer/src/lib/ui/ListItemButtonIcon.svelte @@ -57,7 +57,7 @@ function computeEnabled() { // Deserialize the `when` property const whenDeserialized = ContextKeyExpr.deserialize(disabledWhen); // if there is some error when evaluating the when expression, we use the default value enabled = true - const disabled = whenDeserialized?.evaluate(globalContext) || false; + const disabled = whenDeserialized?.evaluate(globalContext) ?? false; enabled = !disabled; } diff --git a/packages/renderer/src/lib/ui/ProviderStatus.svelte b/packages/renderer/src/lib/ui/ProviderStatus.svelte index 08384fbd22eb8..d95d34273ab82 100644 --- a/packages/renderer/src/lib/ui/ProviderStatus.svelte +++ b/packages/renderer/src/lib/ui/ProviderStatus.svelte @@ -79,7 +79,7 @@ const statusesStyle = new Map([ }, ], ]); -$: statusStyle = statusesStyle.get(status) || { +$: statusStyle = statusesStyle.get(status) ?? { bgColor: 'bg-gray-900', txtColor: 'text-gray-900', label: status.toUpperCase(), diff --git a/packages/renderer/src/stores/event-store.ts b/packages/renderer/src/stores/event-store.ts index a4ce770e503f2..5d3c9fcf491be 100644 --- a/packages/renderer/src/stores/event-store.ts +++ b/packages/renderer/src/stores/event-store.ts @@ -152,7 +152,7 @@ export class EventStore { } finally { this.updateEvent(eventStoreInfo, { name: eventName, - args: args || [], + args: args ?? [], date: Date.now(), skipped: !needUpdate, length: numberOfResults, @@ -216,7 +216,7 @@ export class EventStore { this.updateEvent(eventStoreInfo, { name: `debounce-${eventName}`, - args: args || [], + args: args ?? [], date: Date.now(), skipped: true, length: 0, diff --git a/packages/renderer/src/stores/registries.ts b/packages/renderer/src/stores/registries.ts index 6995451954e17..5c458cfc83fdd 100644 --- a/packages/renderer/src/stores/registries.ts +++ b/packages/renderer/src/stores/registries.ts @@ -56,16 +56,22 @@ export const registriesSuggestedInfos: Writable { - await fetchRegistries(); +window.events?.receive('registry-register', () => { + fetchRegistries().catch((error: unknown) => { + console.error('Failed to fetch registries entries', error); + }); }); -window.events?.receive('registry-unregister', async () => { - await fetchRegistries(); +window.events?.receive('registry-unregister', () => { + fetchRegistries().catch((error: unknown) => { + console.error('Failed to fetch registries entries', error); + }); }); -window.events?.receive('registry-update', async () => { - await fetchRegistries(); +window.events?.receive('registry-update', () => { + fetchRegistries().catch((error: unknown) => { + console.error('Failed to fetch registries entries', error); + }); }); window.addEventListener('system-ready', () => { @@ -74,6 +80,8 @@ window.addEventListener('system-ready', () => { }); }); -window.events?.receive('extensions-started', async () => { - await fetchRegistries(); +window.events?.receive('extensions-started', () => { + fetchRegistries().catch((error: unknown) => { + console.error('Failed to fetch registries entries', error); + }); }); diff --git a/packages/ui/src/lib/button/Button.svelte b/packages/ui/src/lib/button/Button.svelte index 5ba75018be546..3b0134aa80c16 100644 --- a/packages/ui/src/lib/button/Button.svelte +++ b/packages/ui/src/lib/button/Button.svelte @@ -70,10 +70,10 @@ $: {