diff --git a/apps/meteor/app/api/server/v1/settings.ts b/apps/meteor/app/api/server/v1/settings.ts index 011988f5ba2e6..bccfc8d91fc7b 100644 --- a/apps/meteor/app/api/server/v1/settings.ts +++ b/apps/meteor/app/api/server/v1/settings.ts @@ -106,7 +106,7 @@ API.v1.addRoute( { authRequired: true, twoFactorRequired: true }, { async post() { - if (!this.bodyParams.name || !this.bodyParams.name.trim()) { + if (!this.bodyParams.name?.trim()) { throw new Meteor.Error('error-name-param-not-provided', 'The parameter "name" is required'); } diff --git a/apps/meteor/app/apps/server/bridges/listeners.js b/apps/meteor/app/apps/server/bridges/listeners.js index b1ee4fd145211..ab2632c912b0d 100644 --- a/apps/meteor/app/apps/server/bridges/listeners.js +++ b/apps/meteor/app/apps/server/bridges/listeners.js @@ -7,6 +7,7 @@ export class AppListenerBridge { } async handleEvent(event, ...payload) { + // eslint-disable-next-line complexity const method = (() => { switch (event) { case AppInterface.IPreMessageSentPrevent: diff --git a/apps/meteor/app/authorization/lib/AuthorizationUtils.ts b/apps/meteor/app/authorization/lib/AuthorizationUtils.ts index 41c96bd6fd3ae..6ad5cab047209 100644 --- a/apps/meteor/app/authorization/lib/AuthorizationUtils.ts +++ b/apps/meteor/app/authorization/lib/AuthorizationUtils.ts @@ -31,7 +31,7 @@ export const AuthorizationUtils = class { } const rules = restrictedRolePermissions.get(roleId); - if (!rules || !rules.size) { + if (!rules?.size) { return false; } diff --git a/apps/meteor/app/cors/server/cors.ts b/apps/meteor/app/cors/server/cors.ts index b4936d1456bc5..3090530140168 100644 --- a/apps/meteor/app/cors/server/cors.ts +++ b/apps/meteor/app/cors/server/cors.ts @@ -7,7 +7,6 @@ import { Logger } from '@rocket.chat/logger'; import { Meteor } from 'meteor/meteor'; import type { StaticFiles } from 'meteor/webapp'; import { WebApp, WebAppInternals } from 'meteor/webapp'; -import _ from 'underscore'; import { settings } from '../../settings/server'; @@ -174,7 +173,7 @@ WebApp.httpServer.addListener('request', (req, res, ...args) => { const isLocal = localhostRegexp.test(remoteAddress) && - (!req.headers['x-forwarded-for'] || _.all((req.headers['x-forwarded-for'] as string).split(','), localhostTest)); + (!req.headers['x-forwarded-for'] || (req.headers['x-forwarded-for'] as string).split(',').every(localhostTest)); // @ts-expect-error - `pair` is valid, but doesnt exists on types const isSsl = req.connection.pair || (req.headers['x-forwarded-proto'] && req.headers['x-forwarded-proto'].indexOf('https') !== -1); diff --git a/apps/meteor/app/lib/server/functions/getAvatarSuggestionForUser.ts b/apps/meteor/app/lib/server/functions/getAvatarSuggestionForUser.ts index a54704cf8862b..2560d2f08b7de 100644 --- a/apps/meteor/app/lib/server/functions/getAvatarSuggestionForUser.ts +++ b/apps/meteor/app/lib/server/functions/getAvatarSuggestionForUser.ts @@ -167,7 +167,7 @@ export async function getAvatarSuggestionForUser( let blob = `data:${response.headers.get('content-type')};base64,`; blob += Buffer.from(await response.arrayBuffer()).toString('base64'); newAvatar.blob = blob; - newAvatar.contentType = response.headers.get('content-type')!; + newAvatar.contentType = response.headers.get('content-type') as string; validAvatars[avatar.service] = newAvatar; } } catch (error) { diff --git a/packages/gazzodown/src/elements/Timestamp/ErrorBoundary.tsx b/packages/gazzodown/src/elements/Timestamp/ErrorBoundary.tsx index 55ef57ad1deef..453853275f8ad 100644 --- a/packages/gazzodown/src/elements/Timestamp/ErrorBoundary.tsx +++ b/packages/gazzodown/src/elements/Timestamp/ErrorBoundary.tsx @@ -1,4 +1,4 @@ -import { Component } from 'react'; +import React, { Component, ReactNode } from 'react'; export class ErrorBoundary extends Component<{ fallback: React.ReactNode }, { hasError: boolean }> { constructor(props: { fallback: React.ReactNode }) { @@ -6,11 +6,11 @@ export class ErrorBoundary extends Component<{ fallback: React.ReactNode }, { ha this.state = { hasError: false }; } - static getDerivedStateFromError() { + static getDerivedStateFromError(): { hasError: boolean } { return { hasError: true }; } - render() { + render(): ReactNode { if (this.state.hasError) { // You can render any custom fallback UI return this.props.fallback; diff --git a/packages/livechat/src/components/Composer/index.tsx b/packages/livechat/src/components/Composer/index.tsx index 2562a40debdc1..1f1ce3b7369d9 100644 --- a/packages/livechat/src/components/Composer/index.tsx +++ b/packages/livechat/src/components/Composer/index.tsx @@ -6,9 +6,9 @@ import { createClassName } from '../../helpers/createClassName'; import { parse } from '../../helpers/parse'; import styles from './styles.scss'; -const findLastTextNode = (node: Node): Text | null => { +const findLastTextNode = (node: Node): Node | null => { if (node.nodeType === Node.TEXT_NODE) { - return node as Text; + return node; } const children = node.childNodes; for (let i = children.length - 1; i >= 0; i--) { @@ -26,7 +26,7 @@ const replaceCaret = (el: Element) => { const target = findLastTextNode(el); // do not move caret if element was not focused const isTargetFocused = document.activeElement === el; - if (target !== null && target.nodeValue !== null && isTargetFocused) { + if (!!target?.nodeValue && isTargetFocused) { const range = document.createRange(); const sel = window.getSelection(); range.setStart(target, target.nodeValue.length); @@ -241,7 +241,7 @@ export class Composer extends Component { } if (typeof win.getSelection !== 'undefined' && (win.getSelection()?.rangeCount ?? 0) > 0) { - const range = win.getSelection()!.getRangeAt(0); + const range = win.getSelection()?.getRangeAt(0) as Range; const preCaretRange = range.cloneRange(); preCaretRange.selectNodeContents(element); preCaretRange.setEnd(range.endContainer, range.endOffset); @@ -249,10 +249,10 @@ export class Composer extends Component { } if (doc.selection && doc.selection.type !== 'Control') { - const textRange = doc.selection.createRange!(); + const textRange = doc.selection.createRange?.(); const preCaretTextRange = doc.body.createTextRange?.(); preCaretTextRange?.moveToElementText?.(element); - preCaretTextRange?.setEndPoint?.('EndToEnd', textRange); + preCaretTextRange?.setEndPoint?.('EndToEnd', textRange as Range); return preCaretTextRange?.text?.length ?? 0; }