Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
71077ac
Security: update vulnerable dependencies and align overrides with 26_1
aleksei-semikozov Apr 3, 2026
70fba2d
Fix devextreme-react tests: pin @types/react to 18.0.38
aleksei-semikozov Apr 3, 2026
29e1a99
Angular - Stabilize memory leak test T1307313: raise threshold to 100…
aleksei-semikozov Apr 4, 2026
93a8ce5
Security: sync overrides with 26_1 (rollup, vite, minimatch, basic-ftp)
aleksei-semikozov Apr 12, 2026
71bd704
Security: remove 22 unnecessary overrides (26_1 already on safe versi…
aleksei-semikozov Apr 12, 2026
56623ce
Security: regenerate pnpm-lock.yaml after overrides update
aleksei-semikozov Apr 12, 2026
cca4c29
Security: bump 16 patch-level dependencies to match 26_1
aleksei-semikozov Apr 12, 2026
8f8d692
Security: upgrade eslint-config-devextreme to 1.1.9 with dependency a…
aleksei-semikozov Apr 14, 2026
71d72e1
Merge upstream/25_1 and resolve conflicts
aleksei-semikozov Apr 14, 2026
821e3a0
Security: fix d.ts lint errors from @stylistic 5.x upgrade
aleksei-semikozov Apr 14, 2026
405e6e1
Security: fix wrapper eslint configs for eslint-config-devextreme 1.1.9
aleksei-semikozov Apr 14, 2026
4f85167
Security: fix remaining lint errors in wrappers and testcafe
aleksei-semikozov Apr 14, 2026
6ec3390
Security: fix React and Testcafe eslint for eslint-config-devextreme …
aleksei-semikozov Apr 14, 2026
0a57af7
Security: fix testcafe lint script for flat config (remove --ext)
aleksei-semikozov Apr 14, 2026
fc633e7
Security: fix testcafe lint errors (spellcheck, max-len, init-declara…
aleksei-semikozov Apr 14, 2026
716e053
Security: revert testcafe to eslint8 catalog (fix TypeScript compilat…
aleksei-semikozov Apr 14, 2026
2b41c81
Security: pin testcafe eslint-config-devextreme to 1.1.6 (eslint8 com…
aleksei-semikozov Apr 14, 2026
9c06b9b
Security: remove explicit eslint-config-devextreme from testcafe (let…
aleksei-semikozov Apr 14, 2026
e20f947
Security: fix testcafe lint errors (indent auto-fix, restrict-plus-op…
aleksei-semikozov Apr 14, 2026
87f02ab
Security: pin eslint-config-devextreme 1.1.6 in testcafe for eslint8 …
aleksei-semikozov Apr 14, 2026
d04cc23
Security: fix testcafe TypeScript compilation (append return type)
aleksei-semikozov Apr 14, 2026
f3da053
Security: bump yaml 2.5.0 → 2.8.3
aleksei-semikozov Apr 14, 2026
bdabb0e
Security: bump webpack to 5.105.4 across all packages
aleksei-semikozov Apr 14, 2026
d66c7f6
Security: bump csstype 3.1.3 → 3.2.3
aleksei-semikozov Apr 14, 2026
3b790d7
Security: bump jspdf 4.0.0 → 4.2.1
aleksei-semikozov Apr 14, 2026
b9e25bb
Security: bump @testing-library/jest-dom 6.9.1 and user-event 14.6.1
aleksei-semikozov Apr 14, 2026
71350f9
Security: bump eslint-plugin-jest 29.0.1 → 29.15.0
aleksei-semikozov Apr 14, 2026
bf4e3c1
Security: bump @babel/* 7.23.x → 7.29.0
aleksei-semikozov Apr 14, 2026
e302ae1
Security: bump sass-embedded 1.59.2 → 1.93.3
aleksei-semikozov Apr 15, 2026
26a8232
Security: pin @parcel/watcher to 2.5.0 (fix CI runner binary)
aleksei-semikozov Apr 15, 2026
820ac35
Security: add @parcel/watcher-linux-x64-glibc explicit dep (fix CI)
aleksei-semikozov Apr 15, 2026
2243ab8
Security: bump glob 10.4.5 → 11.1.0
aleksei-semikozov Apr 15, 2026
e74a508
Security: bump gulp-sass 5.1.0 → 6.0.1
aleksei-semikozov Apr 15, 2026
df3b9f7
Security: bump @babel/eslint-parser 7.28.6, @eslint/eslintrc 3.3.5, @…
aleksei-semikozov Apr 15, 2026
3ca3885
Security: fix comma-dangle and no-floating-promises lint after @styli…
aleksei-semikozov Apr 15, 2026
d7d1efe
Security: regenerate dx.all.d.ts after comma-dangle fixes
aleksei-semikozov Apr 15, 2026
7f4d688
Security: bump @babel/core and preset-env in demos to 7.29.0
aleksei-semikozov Apr 16, 2026
94169c4
Revert "Security: bump @babel/core and preset-env in demos to 7.29.0"
aleksei-semikozov Apr 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions apps/demos/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,10 @@
"eslint-plugin-import": "catalog:eslint8",
"eslint-plugin-no-only-tests": "catalog:eslint8",
"eslint-plugin-react": "7.33.2",
"eslint-plugin-react-perf": "3.3.2",
"eslint-plugin-react-perf": "3.3.3",
"eslint-plugin-vue": "catalog:",
"express": "4.21.2",
"glob": "10.4.5",
"glob": "11.1.0",
"gulp": "4.0.2",
"gulp-clean": "0.4.0",
"gulp-minify": "3.1.0",
Expand All @@ -147,6 +148,7 @@
"testcafe-reporter-spec-time": "4.0.0",
"ts-node": "10.9.2",
"@types/file-saver-es": "^2.0.3",
"vue-eslint-parser": "catalog:",
"vue-tsc": "^3.0.6"
},
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion apps/react/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"style-loader": "3.3.4",
"ts-loader": "9.5.1",
"tsconfig-paths-webpack-plugin": "4.1.0",
"webpack": "5.94.0",
"webpack": "5.105.4",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.2.1"
},
Expand Down
2 changes: 1 addition & 1 deletion apps/vue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"url-loader": "1.1.2",
"vue-loader": "17.4.2",
"vue-router": "4.2.5",
"webpack": "5.94.0",
"webpack": "5.105.4",
"webpack-cli": "5.1.4",
"webpack-dev-server": "5.2.1"
},
Expand Down
3 changes: 2 additions & 1 deletion e2e/bundlers/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,12 @@
"cldrjs": "0.5.5",
"jquery": "3.7.1",
"minimist": "1.2.8",
"@parcel/watcher-linux-x64-glibc": "2.5.0",
"parcel": "2.16.1",
"rimraf": "3.0.2",
"rollup": "4.22.4",
"vite": "5.4.19",
"webpack": "5.94.0",
"webpack": "5.105.4",
"webpack-cli": "4.10.0",
"devextreme": "workspace:*"
},
Expand Down
10 changes: 6 additions & 4 deletions e2e/testcafe-devextreme/docker/run-testcafe.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
/* eslint-disable keyword-spacing */

const { spawnSync } = require('child_process');
const parseArgs = require('minimist');

Expand Down Expand Up @@ -26,24 +28,24 @@ const matrix = [
{ componentFolder: 'renovation', name: 'renovation (jquery)', platform: 'jquery' },
{ componentFolder: 'renovation', name: 'renovation (react)', platform: 'react' },
];

(async() => {

// eslint-disable-next-line no-undef
const parsedArgs = parseArgs(process.argv);
const componentFolderName = parsedArgs.componentFolder;
let testParts = matrix;

if(componentFolderName != null) {
if (componentFolderName != null) {
testParts = testParts.filter(({ componentFolder }) => componentFolder === componentFolderName);
}

if(testParts.length === 0) {
if (testParts.length === 0) {
const variants = [...new Set(matrix.map(({ componentFolder }) => componentFolder))];
throw new Error(`componentFolder "${componentFolderName}" was not found. Use one of next variants: ${variants}`);
}

// eslint-disable-next-line no-restricted-syntax
for(const { name, ...args } of testParts) {
for (const { name, ...args } of testParts) {
// eslint-disable-next-line no-console,no-undef
console.log(`Started test: ${name}`);

Expand Down
15 changes: 7 additions & 8 deletions e2e/testcafe-devextreme/helpers/callbackTestHelper.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
import { ClientFunction } from 'testcafe';

type WindowCallbackExtended =
Window
& typeof globalThis
& {
clientTesting?: {
data: Record<string, any>;
addCallbackResult: <T>(key: string, result: T) => void;
};
type WindowCallbackExtended = Window
& typeof globalThis
& {
clientTesting?: {
data: Record<string, any>;
addCallbackResult: <T>(key: string, result: T) => void;
};
};

const initClientTesting = async (keyArray: string[]): Promise<void> => {
await ClientFunction(
Expand Down
4 changes: 2 additions & 2 deletions e2e/testcafe-devextreme/helpers/createWidget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ export const createWidget = async<TWidgetName extends WidgetName>(
widgetName: TWidgetName,
widgetOptions: TWidgetName extends keyof WidgetOptions
? (
WidgetOptions[TWidgetName] |
WidgetOptions[TWidgetName]
// NOTE: Promise is only for ClientFunction typing
(() => (WidgetOptions[TWidgetName]) | Promise<WidgetOptions[TWidgetName]>)
| (() => (WidgetOptions[TWidgetName]) | Promise<WidgetOptions[TWidgetName]>)
) : unknown,
selector = DEFAULT_SELECTOR,
{ disableFxAnimation } = DEFAULT_OPTIONS,
Expand Down
109 changes: 54 additions & 55 deletions e2e/testcafe-devextreme/helpers/widgetTypings.ts
Original file line number Diff line number Diff line change
@@ -1,61 +1,60 @@
import type { Properties as DataGridProperties } from 'devextreme/ui/data_grid';
import type { Properties as FilterBuilderProperties } from 'devextreme/ui/filter_builder';

export type WidgetName =
'dxAccordion'
| 'dxAutocomplete'
| 'dxGallery'
| 'dxButtonGroup'
| 'dxCalendar'
| 'dxCalendarView'
| 'dxCheckBox'
| 'dxColorBox'
| 'dxDropDownButton'
| 'dxDraggable'
| 'dxTabPanel'
| 'dxForm'
| 'dxFilterBuilder'
| 'dxSelectBox'
| 'dxScrollable'
| 'dxScrollView'
| 'dxMultiView'
| 'dxPivotGrid'
| 'dxPivotGridFieldChooser'
| 'dxDataGrid'
| 'dxTreeList'
| 'dxPagination'
| 'dxRadioGroup'
| 'dxScheduler'
| 'dxTabs'
| 'dxTagBox'
| 'dxContextMenu'
| 'dxDropDownMenu'
| 'dxChart'
| 'dxMenu'
| 'dxPopup'
| 'dxPopover'
| 'dxSpeedDialAction'
| 'dxSortable'
| 'dxSplitter'
| 'dxButton'
| 'dxTextBox'
| 'dxTextArea'
| 'dxToolbar'
| 'dxTileView'
| 'dxTreeView'
| 'dxDateBox'
| 'dxDateRangeBox'
| 'dxLookup'
| 'dxOverlay'
| 'dxList'
| 'dxHtmlEditor'
| 'dxNumberBox'
| 'dxValidator'
| 'dxFileUploader'
| 'dxSlider'
| 'dxDropDownBox'
| 'dxFileManager'
| 'dxSwitch';
export type WidgetName = 'dxAccordion'
| 'dxAutocomplete'
| 'dxGallery'
| 'dxButtonGroup'
| 'dxCalendar'
| 'dxCalendarView'
| 'dxCheckBox'
| 'dxColorBox'
| 'dxDropDownButton'
| 'dxDraggable'
| 'dxTabPanel'
| 'dxForm'
| 'dxFilterBuilder'
| 'dxSelectBox'
| 'dxScrollable'
| 'dxScrollView'
| 'dxMultiView'
| 'dxPivotGrid'
| 'dxPivotGridFieldChooser'
| 'dxDataGrid'
| 'dxTreeList'
| 'dxPagination'
| 'dxRadioGroup'
| 'dxScheduler'
| 'dxTabs'
| 'dxTagBox'
| 'dxContextMenu'
| 'dxDropDownMenu'
| 'dxChart'
| 'dxMenu'
| 'dxPopup'
| 'dxPopover'
| 'dxSpeedDialAction'
| 'dxSortable'
| 'dxSplitter'
| 'dxButton'
| 'dxTextBox'
| 'dxTextArea'
| 'dxToolbar'
| 'dxTileView'
| 'dxTreeView'
| 'dxDateBox'
| 'dxDateRangeBox'
| 'dxLookup'
| 'dxOverlay'
| 'dxList'
| 'dxHtmlEditor'
| 'dxNumberBox'
| 'dxValidator'
| 'dxFileUploader'
| 'dxSlider'
| 'dxDropDownBox'
| 'dxFileManager'
| 'dxSwitch';

export interface WidgetOptions {
dxDataGrid: DataGridProperties;
Expand Down
5 changes: 3 additions & 2 deletions e2e/testcafe-devextreme/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
"@babel/plugin-transform-runtime": "7.19.6",
"@testcafe-community/axe": "3.5.0",
"@types/jquery": "3.5.29",
"@typescript-eslint/eslint-plugin": "catalog:eslint8",
"@typescript-eslint/eslint-plugin": "catalog:eslint8",
"@typescript-eslint/parser": "catalog:eslint8",
"eslint-config-devextreme": "1.1.6",
"axe-core": "catalog:",
"devextreme": "workspace:*",
"devextreme-screenshot-comparer": "2.0.17",
Expand All @@ -23,7 +24,7 @@
"eslint-plugin-import": "catalog:eslint8",
"eslint-plugin-no-only-tests": "catalog:eslint8",
"eslint-plugin-qunit": "catalog:eslint8",
"glob": "10.4.5",
"glob": "11.1.0",
"minimist": "1.2.8",
"mockdate": "3.0.5",
"nconf": "0.12.1",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import { CallbackTestHelper, WindowCallbackExtended } from '../../../../../helpe
fixture`Focused row - new rows T1162227`
.page(url(__dirname, '../../../../container.html'));

type FocusCellChangingData =
[[prevRowIdx: number, prevColumnIdx: number], [rowIdx: number, columnIdx: number]];
type FocusCellChangingData = [
[prevRowIdx: number, prevColumnIdx: number],
[rowIdx: number, columnIdx: number],
];
type FocusCellChangedData = [rowIdx: number, columnIdx: number];
type FocusRowChangingData = [prevRowIdx: number, rowIdx: number];
type FocusRowChangedData = [rowIdx: number];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ test('Changing keyboardNavigation options should not invalidate the entire conte
allowUpdating: true,
},
onFocusedRowChanging(e) {
if ((e.newRowIndex + 1) % 2 === 0) {
if ((Number(e.newRowIndex) + 1) % 2 === 0) {
e.component.option('keyboardNavigation.enterKeyAction', 'moveFocus');
} else {
e.component.option('keyboardNavigation.enterKeyAction', 'startEdit');
Expand Down
3 changes: 1 addition & 2 deletions e2e/testcafe-devextreme/tests/editors/overlays/popup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,8 +113,7 @@ test('Popup should be centered regarding the window after position.boundary is s
const initialRect: { bottom: number;
top: number;
left: number;
right: number;
} = {
right: number; } = {
bottom: 0,
top: 0,
left: 0,
Expand Down
8 changes: 4 additions & 4 deletions e2e/testcafe-devextreme/update_failed_etalons.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ function processEtalonFolder(etalonFolderPath, allEtalons) {
const hasFile = allEtalons.has(currentFileName);

if (hasFile) {
const dstFileName = join(etalonFolderPath, currentFileName);
const destFileName = join(etalonFolderPath, currentFileName);
const srcFileName = join(PATH_TO_CURRENT_ETALONS, currentFileName);

copyFileSync(srcFileName, dstFileName);
copyFileSync(srcFileName, destFileName);
allEtalons.delete(currentFileName);

if (allEtalons.size === 0) {
Expand All @@ -53,9 +53,9 @@ function processEtalonFolder(etalonFolderPath, allEtalons) {
}

function processFolder(currentDir, allEtalons) {
const currentDirrectoryFolders = getAllDirs(currentDir);
const currentDirectoryFolders = getAllDirs(currentDir);

for (let dir of currentDirrectoryFolders) {
for (let dir of currentDirectoryFolders) {
const folderName = basename(dir);
const continueProcessFolders = folderName === ETALONS_FOLDER_NAME
? processEtalonFolder(dir, allEtalons)
Expand Down
61 changes: 54 additions & 7 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,18 +66,65 @@
],
"pnpm": {
"overrides": {
"@devexpress/callsite-record@^4.1.6": "4.1.6",
"@parcel/watcher": "2.5.0",
"@angular/common@>=19.0.0 <19.2.16": "^19.2.20",
"@angular/compiler@>=19.0.0-next.0 <19.2.20": "^19.2.20",
"@angular/core@>=19.0.0-next.0 <19.2.20": "^19.2.20",
"@angular/platform-server@>=19.0.0-next.0 <19.2.20": "^19.2.20",
"@devexpress/callsite-record@^4.1.6": "4.1.7",
"@hono/node-server@<1.19.10": "^1.19.10",
"@isaacs/brace-expansion@<=5.0.0": "^5.0.1",
"@modelcontextprotocol/sdk@>=1.10.0 <=1.25.3": "^1.26.0",
"@tootallnate/once@<3.0.1": "^3.0.1",
"ajv@>=7.0.0-alpha.0 <8.18.0": "^8.18.0",
"axios@<=1.13.4": "^1.13.5",
"basic-ftp@<5.2.1": "~5.2.1",
"bn.js@<4.12.3": "4.12.3",
"bn.js@>=5.0.0 <5.2.3": "5.2.3",
"brace-expansion@<1.1.13": "1.1.13",
"brace-expansion@>=2.0.0 <2.0.3": "2.0.3",
"braces@<3.0.3": "^3.0.3",
"cookie@<0.7.0": "^0.7.0",
"diff@>=4.0.0 <4.0.4": "4.0.4",
"diff@>=5.0.0 <5.2.2": "5.2.2",
"dompurify@<=3.3.1": "^3.3.2",
"express-rate-limit@>=8.2.0 <8.2.2": "^8.2.2",
"flatted@<3.4.0": "^3.4.0",
"form-data@<2.5.4": "2.5.5",
"form-data@>=4.0.0 <4.0.4": "^4.0.5",
"glob@>=10.2.0 <10.5.0": "^10.5.0",
"hono@<4.12.4": "^4.12.4",
"immutable@>=4.0.0-rc.1 <4.3.8": "^4.3.8",
"immutable@>=5.0.0 <5.1.5": "^5.1.5",
"json5@<1.0.2": "^2.2.3",
"lodash.template@<4.18.1": "4.18.1",
"lodash@<4.18.1": "4.18.1",
"micromatch@<4.0.8": "^4.0.8",
"minimatch@<3.1.5": "3.1.5",
"minimatch@>=10.0.0 < 10.2.4": "10.2.4",
"minimatch@>=5.0.0 <5.1.8": "5.1.8",
"minimatch@>=9.0.0 < 9.0.7": "9.0.9",
"node-forge@<1.4.0": "1.4.0",
"path-to-regexp@0.1.12": "0.1.13",
"path-to-regexp@>=8.0.0 <8.4.0": "8.4.0",
"pbkdf2@<=3.1.2": "^3.1.3",
"sha.js@<=2.4.11": "^2.4.12",
"picomatch@>=2.0.0 <2.3.2": "2.3.2",
"picomatch@>=4.0.0 <4.0.4": "4.0.4",
"qs": ">=6.14.1",
"rollup@< 4.59.0": "^4.59.0",
"rollup@<2.79.2": "^4.53.3",
"json5@<1.0.2": "^2.2.3",
"axios@<1.8.2": "^1.13.2",
"braces@<3.0.3": "^3.0.3",
"semver@<5.7.2": "^5.7.2",
"glob@>=10.2.0 <10.5.0": "^10.5.0",
"node-forge@<1.3.2": "^1.3.2"
"serialize-javascript@<=7.0.2": "7.0.5",
"sha.js@<=2.4.11": "^2.4.12",
"socket.io-parser@>=4.0.0 <4.2.6": "^4.2.6",
"tar@<=7.5.9": "^7.5.10",
"tmp@<=0.2.3": "^0.2.4",
"tough-cookie@<4.1.3": "^4.1.3",
"underscore@<=1.13.7": "^1.13.8",
"undici@<7.24.0": "^7.24.0",
"vite@>=5.0.0 <=5.4.20": "^5.4.21",
"vite@>=6.0.0 <6.4.1": "^7.3.2",
"vite@>=7.0.0 <=7.3.1": "^7.3.2"
}
},
"packageManager": "pnpm@9.15.4"
Expand Down
Loading
Loading