chore: Upgrade packages to resolve Dependabot issues (#39710)

## Description
- Fix XSS issue by upgrading packages such that the
`serialize-javascript` dependency resolves to `v6.0.2`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/376

- Fix XSS issue by upgrading `esbuild` to `v0.25.1`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/367

- Fix vite vulnerability by upgrading `vite` to `v6.2.1` (this is a
major version upgrade and effects the `storybook` package)
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/364
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/334
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/336


- Fixes TinyMCE XSS vulnerabilities by upgrading `tinymce` to `v7.7.1`
and `tinymce-react` to `v6.0.0` (Major version upgrade)
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/347
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/348
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/290

- Fix vulnerability in `webpack` by upgrading to `v5.98.0`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/324

- Fix vulnerability in `@sentry/browser` by upgrading `@sentry/react` to
`v7.120.3` (Major version upgrade)
_Note: [`Severity` enum has been
deprecated](https://docs.sentry.io/platforms/javascript/migration/v7-to-v8/#removal-of-severity-enum)_
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/345

- Fix vulnerability in `axios` by upgrading to `v1.8.3`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/391

- Fix vulnerability in `@babel/runtime` by upgrading to `v7.26.10`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/393

- Fix vulnerability in `@babel/helper` by upgrading `@babel/core` to
`v7.26.10`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/392

- Fix vulnerability in `prismjs` by upgrading to `v1.30.0`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/390

- Fix vulnerability in `cookie` by upgrading to `v0.7.0`
Fixes https://github.com/appsmithorg/appsmith/security/dependabot/346

## Automation

/ok-to-test tags="@tag.All"

### 🔍 Cypress test results
<!-- This is an auto-generated comment: Cypress test results  -->
> [!TIP]
> 🟢 🟢 🟢 All cypress tests have passed! 🎉 🎉 🎉
> Workflow run:
<https://github.com/appsmithorg/appsmith/actions/runs/13967528524>
> Commit: 6a36c9755e7df9e22c1c109876c127b963127a71
> <a
href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=13967528524&attempt=1"
target="_blank">Cypress dashboard</a>.
> Tags: `@tag.All`
> Spec:
> <hr>Thu, 20 Mar 2025 12:03:08 UTC
<!-- end of auto-generated comment: Cypress test results  -->


## Communication
Should the DevRel and Marketing teams inform users about this change?
- [ ] Yes
- [x] No


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

## Summary by CodeRabbit

- **New Features**
- Enhanced the text editor experience by introducing quick
markdown-style shortcuts for headings, lists, and quotes.
- **Chores**
- Upgraded numerous underlying libraries and tools for improved
performance and stability.
- Streamlined error logging by refining how errors are categorized and
reported.
- Improved accessibility by updating element selectors to use
`aria-label` attributes.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
Abhinav Jha 2025-03-20 17:39:13 +05:30 committed by GitHub
parent 81c263a2d5
commit 9de62e0d0f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
19 changed files with 820 additions and 1171 deletions

View File

@ -315,11 +315,11 @@ export class CommonLocators {
_fileUploadAddMore = ".uppy-DashboardContent-addMore";
_buttonText = ".bp3-button-text";
_richText_TitleBlock = "[aria-label='Block Paragraph']";
_richText_Heading = "[title='Heading 1']";
_richText_Heading = "[aria-label='Heading 1']";
_richText_Label_Text = ".tox-tbtn__select-label";
_richText_Text_Color = (color: string) =>
`[aria-label="Text color ${color}"] .tox-split-button__chevron`;
_richText_color = (value: string) => `[title="${value}"]`;
_richText_color = (value: string) => `[aria-label="${value}"]`;
_richText_line = "#tinymce p span";
_treeSelectedContent = ".rc-tree-select-selection-item-content";
_switcherIcon = ".switcher-icon";

View File

@ -81,12 +81,13 @@
"@redux-saga/types": "1.2.1",
"@reduxjs/toolkit": "^2.4.0",
"@segment/analytics-next": "^1.76.0",
"@sentry/react": "^6.2.4",
"@sentry/react": "^7.120.3",
"@sentry/utils": "^7.120.3",
"@shared/ast": "workspace:^",
"@shared/dsl": "workspace:^",
"@svgr/webpack": "^5.5.0",
"@tanstack/virtual-core": "^3.0.0-beta.18",
"@tinymce/tinymce-react": "^5.1.1",
"@tinymce/tinymce-react": "^6.0.0",
"@types/babel__standalone": "^7.1.7",
"@types/d3-geo": "^3.1.0",
"@types/google.maps": "^3.51.0",
@ -109,7 +110,7 @@
"assert-never": "^1.2.1",
"astring": "^1.7.5",
"async-mutex": "^0.5.0",
"axios": "^1.7.4",
"axios": "^1.8.3",
"bfj": "^7.0.2",
"camelcase": "^6.2.1",
"classnames": "^2.3.1",
@ -163,7 +164,7 @@
"path-to-regexp": "^6.3.0",
"pluralize": "^8.0.0",
"popper.js": "^1.15.0",
"prismjs": "^1.27.0",
"prismjs": "^1.30.0",
"prompts": "^2.4.2",
"proxy-memoize": "^1.2.0",
"rc-pagination": "^3.1.3",
@ -225,7 +226,7 @@
"tailwindcss": "^3.3.3",
"tern": "^0.21.0",
"tinycolor2": "^1.4.2",
"tinymce": "6.8.3",
"tinymce": "7.7.1",
"toposort": "^2.0.2",
"tslib": "^2.3.1",
"typescript": "^5.5.4",
@ -246,11 +247,11 @@
],
"devDependencies": {
"@appsmith/eslint-plugin": "workspace:^",
"@babel/core": "^7.16.0",
"@babel/standalone": "^7.23.6",
"@babel/core": "^7.26.10",
"@babel/standalone": "^7.26.10",
"@cypress/grep": "^4.0.1",
"@faker-js/faker": "^7.4.0",
"@grafana/faro-webpack-plugin": "^0.1.1",
"@grafana/faro-webpack-plugin": "^0.2.1",
"@octokit/rest": "^20.0.1",
"@peculiar/webcrypto": "^1.4.3",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.3",
@ -309,7 +310,7 @@
"browserslist": "^4.24.4",
"case-sensitive-paths-webpack-plugin": "^2.4.0",
"chalk": "^4.1.1",
"compression-webpack-plugin": "^10.0.0",
"compression-webpack-plugin": "^11.1.0",
"css-loader": "^6.5.1",
"css-minimizer-webpack-plugin": "^3.2.0",
"cy-verify-downloads": "^0.0.5",
@ -390,14 +391,15 @@
"ts-jest": "^29.1.0",
"ts-jest-mock-import-meta": "^0.12.0",
"ts-node": "^10.9.1",
"webpack": "^5.64.4",
"webpack": "^5.98.0",
"webpack-dev-server": "^4.6.0",
"webpack-manifest-plugin": "^4.0.2",
"webpack-retry-chunk-load-plugin": "^3.1.1",
"workbox-webpack-plugin": "^6.4.1",
"workbox-webpack-plugin": "^7.3.0",
"xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz"
},
"resolutions": {
"cookie": "0.7.0",
"browserslist": "4.24.4",
"chokidar": "3.5.3",
"css-select": "4.1.3",
@ -415,12 +417,14 @@
"tabbable": "5.2.1",
"trim-newlines": "3.0.1",
"trim": "0.0.3",
"webpack": "5.76.0",
"webpack": "5.98.0",
"@blueprintjs/core@^3.43.0": "patch:@blueprintjs/core@npm%3A3.47.0#./.yarn/patches/@blueprintjs-core-npm-3.47.0-a5bc1ea927.patch",
"@blueprintjs/core@^3.33.0": "patch:@blueprintjs/core@npm%3A3.47.0#./.yarn/patches/@blueprintjs-core-npm-3.47.0-a5bc1ea927.patch",
"@blueprintjs/core@^3.47.0": "patch:@blueprintjs/core@npm%3A3.47.0#./.yarn/patches/@blueprintjs-core-npm-3.47.0-a5bc1ea927.patch",
"@blueprintjs/icons": "3.22.0",
"@types/react": "^17.0.2",
"postcss": "8.4.31"
"postcss": "8.4.31",
"axios": "^1.8.3",
"esbuild": "^0.25.1"
}
}

View File

@ -21,11 +21,8 @@ const meta: Meta<typeof Popover> = {
component: Popover,
title: "WDS/Headless/Popover",
subcomponents: {
//@ts-expect-error: don't need props to pass here
PopoverTrigger,
//@ts-expect-error: don't need props to pass here
PopoverContent,
//@ts-expect-error: don't need props to pass here
PopoverModalContent,
},
render: (args) => (

View File

@ -39,12 +39,12 @@
"usehooks-ts": "*"
},
"devDependencies": {
"@babel/core": "^7.26.9",
"@babel/core": "^7.26.10",
"@babel/helper-compilation-targets": "^7.26.5",
"@babel/preset-env": "^7.26.9",
"@babel/preset-react": "^7.26.3",
"@babel/preset-typescript": "^7.26.0",
"@babel/runtime": "^7.26.9",
"@babel/runtime": "^7.26.10",
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^28.0.2",
"@rollup/plugin-image": "^3.0.3",

View File

@ -15,11 +15,8 @@ const meta: Meta<typeof Modal> = {
component: Modal,
title: "WDS/Widgets/Modal",
subcomponents: {
//@ts-expect-error: don't need props to pass here
ModalHeader,
//@ts-expect-error: don't need props to pass here
ModalFooter,
//@ts-expect-error: don't need props to pass here
ModalContent,
},
render: () => <SimpleModal />,

View File

@ -23,7 +23,7 @@
"@opentelemetry/sdk-trace-node": "^1.27.0",
"@opentelemetry/semantic-conventions": "^1.27.0",
"@shared/ast": "workspace:^",
"axios": "^1.7.4",
"axios": "^1.8.3",
"dotenv": "10.0.0",
"express": "^4.20.0",
"express-validator": "^6.14.2",

View File

@ -31,8 +31,8 @@
"@storybook/theming": "^8.2.7",
"@vitejs/plugin-react": "^4.3.1",
"chromatic": "^11.3.0",
"storybook": "^8.2.7",
"vite": "^5.3.5",
"storybook": "^8.6.4",
"vite": "^6.2.1",
"vite-plugin-svgr": "^4.2.0"
},
"dependencies": {

View File

@ -96,7 +96,9 @@ export const Visualization = (props: VisualizationProps) => {
<Flex flexDirection="column" flexGrow={1} position="relative">
{generateVisualization.elements ? (
<ErrorBoundary fallback="Visualization failed. Please try again.">
<ErrorBoundary
fallback={<>Visualization failed. Please try again.</>}
>
<Result data={response} elements={generateVisualization.elements} />
</ErrorBoundary>
) : (

View File

@ -33,8 +33,11 @@ import { FirstTimeUserOnboardingChecklist } from "pages/Editor/FirstTimeUserOnbo
import DataSourceEditor from "pages/Editor/DataSourceEditor";
import DatasourceBlankState from "pages/Editor/DataSourceEditor/DatasourceBlankState";
import DatasourceForm from "pages/Editor/SaaSEditor/DatasourceForm";
import type { RouteProps } from "react-router";
export const MainPaneRoutes = (path: string) => [
export const MainPaneRoutes = (
path: string,
): Array<RouteProps & { key: string }> => [
{
key: "Canvas",
component: WidgetsEditor,

View File

@ -15,7 +15,6 @@ import { UNDEFINED_VALIDATION } from "utils/validation/common";
import copy from "copy-to-clipboard";
import * as Sentry from "@sentry/react";
import { Severity } from "@sentry/react";
import type { CodeEditorExpected } from "components/editorComponents/CodeEditor/index";
import type { Indices } from "constants/Layers";
import { Layers } from "constants/Layers";
@ -292,7 +291,7 @@ export function PreparedStatementViewer(props: {
if (!value) {
Sentry.captureException("Prepared statement got no value", {
level: Severity.Debug,
level: "debug",
extra: { props },
});

View File

@ -9,7 +9,6 @@ import type { FormConfigType, HiddenType } from "./BaseControl";
import type { Diff } from "deep-diff";
import { diff } from "deep-diff";
import { MongoDefaultActionConfig } from "constants/DatasourceEditorConstants";
import type { Action } from "@sentry/react/dist/types";
import { klona } from "klona/full";
import type { FeatureFlags } from "ee/entities/FeatureFlag";
import _ from "lodash";
@ -749,8 +748,8 @@ export const updateEvaluatedSectionConfig = (
};
export function fixActionPayloadForMongoQuery(
action?: Action,
): Action | undefined {
action?: unknown,
): unknown | undefined {
if (!action) return action;
/* eslint-disable */
@ -782,7 +781,6 @@ export function fixActionPayloadForMongoQuery(
}
// @ts-expect-error: Types are not available
value = actionObjectDiff[i]?.rhs;
// @ts-expect-error: Types are not available
set(action, path, value);
}
}

View File

@ -1,5 +1,5 @@
import React from "react";
import { Switch, useRouteMatch } from "react-router";
import { Switch, useRouteMatch, type RouteProps } from "react-router";
import { MainPaneRoutes } from "ee/pages/AppIDE/layouts/routers/MainPane/constants";
import { useSelector } from "react-redux";
import { selectCombinedPreviewMode } from "selectors/gitModSelectors";
@ -9,7 +9,7 @@ import { SentryRoute } from "components/SentryRoute";
export const MainPane = (props: { id: string }) => {
const { path } = useRouteMatch();
const routes = MainPaneRoutes(path);
const routes: Array<RouteProps & { key: string }> = MainPaneRoutes(path);
useWidgetSelectionBlockListener();

View File

@ -52,7 +52,6 @@ import { useFeatureFlag } from "utils/hooks/useFeatureFlag";
import { FEATURE_FLAG } from "ee/entities/FeatureFlag";
import { getHTMLPageTitle } from "ee/utils/BusinessFeatures/brandingPageHelpers";
import * as Sentry from "@sentry/react";
import { Severity } from "@sentry/react";
import CsrfTokenInput from "pages/UserAuth/CsrfTokenInput";
const validate = (values: LoginFormValues, props: ValidateProps) => {
@ -117,7 +116,7 @@ export function Login(props: LoginFormProps) {
errorMessage = queryParams.get("message") || queryParams.get("error") || "";
showError = true;
Sentry.captureException("Login failed", {
level: Severity.Error,
level: "error",
extra: {
error: new Error(errorMessage),
},

View File

@ -58,7 +58,6 @@ import { getHTMLPageTitle } from "ee/utils/BusinessFeatures/brandingPageHelpers"
import log from "loglevel";
import { SELF_HOSTING_DOC } from "constants/ThirdPartyConstants";
import * as Sentry from "@sentry/react";
import { Severity } from "@sentry/react";
import CsrfTokenInput from "pages/UserAuth/CsrfTokenInput";
declare global {
@ -137,7 +136,7 @@ export function SignUp(props: SignUpFormProps) {
errorMessage = queryParams.get("error") || "";
showError = true;
Sentry.captureException("Sign up failed", {
level: Severity.Error,
level: "error",
extra: {
error: new Error(errorMessage),
},

View File

@ -521,8 +521,7 @@ export function* updateActionSaga(actionPayload: ReduxAction<{ id: string }>) {
const plugin: Plugin | undefined = yield select(getPlugin, action.pluginId);
if (action && plugin && plugin.packageName === PluginPackageName.MONGO) {
// @ts-expect-error: Types are not available
action = fixActionPayloadForMongoQuery(action);
action = fixActionPayloadForMongoQuery(action) as Action;
}
const response: ApiResponse<Action> = yield call(

View File

@ -45,7 +45,6 @@ import {
} from "selectors/editorSelectors";
import { find } from "lodash";
import * as Sentry from "@sentry/react";
import { Severity } from "@sentry/react";
import { getAllPageIdentities } from "./selectors";
import type { SagaIterator } from "@redux-saga/types";
import type { AxiosPromise } from "axios";
@ -128,7 +127,7 @@ export function* fetchAppSelectedTheme(
});
} else {
Sentry.captureException("Unable to fetch the selected theme", {
level: Severity.Critical,
level: "fatal",
extra: {
pageIdentities,
applicationId,

View File

@ -242,7 +242,7 @@ export function* evalErrorHandler(
diffs,
},
// Level is warning because it could be a user error
level: Sentry.Severity.Warning,
level: "warning",
});
}
@ -251,7 +251,7 @@ export function* evalErrorHandler(
node,
entityType,
// Level is warning because it could be a user error
level: Sentry.Severity.Warning,
level: "warning",
});
}

View File

@ -442,7 +442,7 @@ function RichtextEditorComponent(props: RichtextEditorComponentProps) {
plugins: [
"advlist",
"autolink",
"lists",
"lists", // Required for InsertOrderedList and InsertUnorderedList commands
"link",
"image",
"charmap",
@ -452,13 +452,21 @@ function RichtextEditorComponent(props: RichtextEditorComponentProps) {
"visualblocks",
"code",
"fullscreen",
"insertdatetime ",
"media ",
"insertdatetime",
"media",
"table",
"code ",
"help",
"emoticons",
"code",
],
// Configure text patterns to use space key trigger for markdown-style formatting
text_patterns: [
{ start: "#", format: "h1", trigger: "space" },
{ start: "##", format: "h2", trigger: "space" },
{ start: "###", format: "h3", trigger: "space" },
{ start: "1.", cmd: "InsertOrderedList", trigger: "space" },
{ start: "*", cmd: "InsertUnorderedList", trigger: "space" },
{ start: "-", cmd: "InsertUnorderedList", trigger: "space" },
{ start: ">", cmd: "mceBlockQuote", trigger: "space" },
],
contextmenu: "link useBrowserSpellcheck image table",
setup: function (editor) {

File diff suppressed because it is too large Load Diff