diff --git a/.github/workflows/ShaCheck.yml b/.github/workflows/ShaCheck.yml index b3446feb..6d08dd1f 100644 --- a/.github/workflows/ShaCheck.yml +++ b/.github/workflows/ShaCheck.yml @@ -2,9 +2,13 @@ name: Ensure SHA pinned actions on: push: - branches: [master] + branches: + - 'master' + - 'version/*' pull_request: - branches: [master] + branches: + - 'master' + - 'version/*' jobs: harden_security: diff --git a/.github/workflows/TestPWTCommands.yml b/.github/workflows/TestPWTCommands.yml index 13deb0f1..6cedeb8a 100644 --- a/.github/workflows/TestPWTCommands.yml +++ b/.github/workflows/TestPWTCommands.yml @@ -3,7 +3,8 @@ name: Script tests on: push: branches: - - master + - 'master' + - 'version/*' paths: - 'pnpm-lock.yaml' - 'packages/generator-widget/**' @@ -11,7 +12,8 @@ on: - 'packages/command-tests/**' pull_request: branches: - - master + - 'master' + - 'version/*' paths: - 'pnpm-lock.yaml' - 'packages/generator-widget/**' diff --git a/.github/workflows/UnitTests.yml b/.github/workflows/UnitTests.yml index 094da009..bdd27d0c 100644 --- a/.github/workflows/UnitTests.yml +++ b/.github/workflows/UnitTests.yml @@ -2,12 +2,16 @@ name: Run unit tests on: push: - branches: [master] + branches: + - 'master' + - 'version/*' paths: - 'pnpm-lock.yaml' - 'packages/**' pull_request: - branches: [master] + branches: + - 'master' + - 'version/*' paths: - 'pnpm-lock.yaml' - 'packages/**' diff --git a/packages/command-tests/commands.js b/packages/command-tests/commands.js index adfeeeb0..a77f73df 100644 --- a/packages/command-tests/commands.js +++ b/packages/command-tests/commands.js @@ -193,9 +193,6 @@ async function main() { widgetPackageJson = await readJson(join(workDir, "package.json")); widgetPackageJson.devDependencies["@mendix/pluggable-widgets-tools"] = toolsPackagePath; - // Adds compatibility to new React 18 and React native 0.72 - fixPackageJson(widgetPackageJson); - await writeJson(join(workDir, "package.json"), widgetPackageJson); await execAsync("npm install --loglevel=error", workDir, logger); @@ -399,25 +396,3 @@ async function execFailedAsync(command, workDir) { } throw new Error(`Expected '${command}' to fail, but it didn't!`); } - -function fixPackageJson(json) { - const devDependencies = { - "@types/jest": "^29.0.0", - "@types/react": "^19.0.0", - "@types/react-native": "0.78.2", - "@types/react-dom": "^19.0.0", - "@types/react-test-renderer": "~18.0.0" - }; - const overrides = { - react: "^19.0.0", - "react-dom": "^19.0.0", - "react-native": "0.78.2" - }; - - Object.keys(devDependencies) - .filter(dep => !!json.devDependencies[dep]) - .forEach(dep => (json.devDependencies[dep] = devDependencies[dep])); - - json.overrides = overrides; - json.resolutions = overrides; -} diff --git a/packages/generator-widget/CHANGELOG.md b/packages/generator-widget/CHANGELOG.md index 2aa2b3cf..82dc781c 100644 --- a/packages/generator-widget/CHANGELOG.md +++ b/packages/generator-widget/CHANGELOG.md @@ -10,24 +10,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - We cleaned up a template with unused imports. -## [11.11.0] - 2026-06-04 - -### Changed - - We updated the version of cypress when e2e tests are generated. - We renamed the initial e2e tests so they match cypress' default specPattern. -## [11.6.0] - 2026-03-04 - -### Changed - -- We upgraded React to version 19 and React Native to version 0.78.2 for generated widgets. - -## [11.3.1] - 2026-02-04 - -### Changed - - We migrated the generated unit tests to use React Testing Library instead of enzyme. - We changed the copyright prompt to prefill the current year. diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json index 08cffe5c..bdfa90f2 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js-unit.json @@ -27,19 +27,19 @@ "output": "./dist/testresults/TESTS-Jest.xml" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0" + "@mendix/pluggable-widgets-tools": "^10.24.1" }, "dependencies": { }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-native": "~0.77.3" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-native": "~0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json index 4bd5d7b6..b355c02e 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-js.json @@ -22,19 +22,19 @@ "release": "pluggable-widgets-tools release:native" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0" + "@mendix/pluggable-widgets-tools": "^10.24.1" }, "dependencies": { }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-native": "~0.77.3" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-native": "~0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json index 3e038020..2655d006 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts-unit.json @@ -27,7 +27,7 @@ "output": "./dist/testresults/TESTS-Jest.xml" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "@types/big.js": "^6.0.2", "@types/jest": "^30.0.0" }, @@ -35,17 +35,17 @@ }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "react-native": "~0.77.3" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "react-native": "~0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json index 6155da66..e3acf7da 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_native.json-ts.json @@ -22,24 +22,24 @@ "release": "pluggable-widgets-tools release:native" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "@types/big.js": "^6.0.2" }, "dependencies": { }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "react-native": "~0.77.3" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "react-native": "~0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-e2e.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-e2e.json index 0a77cae6..41afc024 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-e2e.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-e2e.json @@ -26,18 +26,18 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "cypress": "^15.15.0" }, "dependencies": { "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit-e2e.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit-e2e.json index 49c37938..d941561f 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit-e2e.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit-e2e.json @@ -28,18 +28,18 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "cypress": "^15.15.0" }, "dependencies": { "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit.json index d1d80190..2ef05627 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js-unit.json @@ -27,17 +27,17 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0" + "@mendix/pluggable-widgets-tools": "^10.24.1" }, "dependencies": { "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js.json index 4b2b2132..f1e82cae 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-js.json @@ -25,17 +25,17 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0" + "@mendix/pluggable-widgets-tools": "^10.24.1" }, "dependencies": { "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-e2e.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-e2e.json index 761cf8d1..74ae1112 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-e2e.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-e2e.json @@ -26,7 +26,7 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "@types/big.js": "^6.0.2", "@types/jasmine": "^3.6.9", "cypress": "^15.15.0" @@ -35,15 +35,15 @@ "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit-e2e.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit-e2e.json index 22a6ff61..84236ea4 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit-e2e.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit-e2e.json @@ -28,7 +28,7 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "@types/big.js": "^6.0.2", "@types/jasmine": "^3.6.9", "@types/jest": "^30.0.0", @@ -38,15 +38,15 @@ "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit.json index b1d7c49f..c2f7fe8e 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts-unit.json @@ -27,7 +27,7 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "@types/big.js": "^6.0.2", "@types/jest": "^30.0.0" }, @@ -35,15 +35,15 @@ "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts.json b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts.json index f81db78d..7763a51a 100644 --- a/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts.json +++ b/packages/generator-widget/generators/app/templates/packages/__tests__/outputs/package_web.json-ts.json @@ -25,22 +25,22 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0", + "@mendix/pluggable-widgets-tools": "^10.24.1", "@types/big.js": "^6.0.2" }, "dependencies": { "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0" + "react": "^18.2.0", + "react-dom": "^18.2.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0" } } diff --git a/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs b/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs index d6e15df1..ffd79275 100644 --- a/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs +++ b/packages/generator-widget/generators/app/templates/packages/package_native.json.ejs @@ -27,7 +27,7 @@ "output": "./dist/testresults/TESTS-Jest.xml" },<% } %> "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0"<% if (isLanguageTS) { %>, + "@mendix/pluggable-widgets-tools": "^10.24.1"<% if (isLanguageTS) { %>, "@types/big.js": "^6.0.2"<% if (hasUnitTests) { %>, "@types/jest": "^30.0.0"<% } %><% } %> }, @@ -35,17 +35,17 @@ }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0",<% if (isLanguageTS) { %> - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0",<% } %> - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0",<% if (isLanguageTS) { %> + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0",<% } %> + "react-native": "~0.77.3" }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0",<% if (isLanguageTS) { %> - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0",<% } %> - "react-native": "~0.78.2" + "react": "^18.2.0", + "react-dom": "^18.2.0",<% if (isLanguageTS) { %> + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0",<% } %> + "react-native": "~0.77.3" } } diff --git a/packages/generator-widget/generators/app/templates/packages/package_web.json.ejs b/packages/generator-widget/generators/app/templates/packages/package_web.json.ejs index a303a1b3..3a2805f2 100644 --- a/packages/generator-widget/generators/app/templates/packages/package_web.json.ejs +++ b/packages/generator-widget/generators/app/templates/packages/package_web.json.ejs @@ -28,7 +28,7 @@ "release": "pluggable-widgets-tools release:web" }, "devDependencies": { - "@mendix/pluggable-widgets-tools": "^11.11.0"<% if (isLanguageTS) { %>, + "@mendix/pluggable-widgets-tools": "^10.24.1"<% if (isLanguageTS) { %>, "@types/big.js": "^6.0.2"<% if (hasE2eTests) { %>, "@types/jasmine": "^3.6.9"<% } %><% if (hasUnitTests) { %>, "@types/jest": "^30.0.0"<% } %><% } %><% if (hasE2eTests) { %>, @@ -38,15 +38,15 @@ "classnames": "^2.5.1" }, "resolutions": { - "react": "^19.0.0", - "react-dom": "^19.0.0"<% if (isLanguageTS) { %>, - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0"<% } %> + "react": "^18.2.0", + "react-dom": "^18.2.0"<% if (isLanguageTS) { %>, + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0"<% } %> }, "overrides": { - "react": "^19.0.0", - "react-dom": "^19.0.0"<% if (isLanguageTS) { %>, - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0"<% } %> + "react": "^18.2.0", + "react-dom": "^18.2.0"<% if (isLanguageTS) { %>, + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0"<% } %> } } diff --git a/packages/generator-widget/package.json b/packages/generator-widget/package.json index 13d09874..f205dd57 100644 --- a/packages/generator-widget/package.json +++ b/packages/generator-widget/package.json @@ -1,6 +1,6 @@ { "name": "@mendix/generator-widget", - "version": "11.11.0", + "version": "10.24.1", "description": "Mendix Pluggable Widgets Generator", "type": "module", "engines": { diff --git a/packages/pluggable-widgets-tools/CHANGELOG.md b/packages/pluggable-widgets-tools/CHANGELOG.md index f26e8e40..f260a03a 100644 --- a/packages/pluggable-widgets-tools/CHANGELOG.md +++ b/packages/pluggable-widgets-tools/CHANGELOG.md @@ -6,11 +6,13 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] +## [10.24.1] - 2026-07-29 + ### Added - We fixed an issue with the Jest configuration affecting unit tests for widgets importing enums from the mendix package (e.g. ValueStatus, FormatterType). It would cause tests to fail with the error "This package should not be used in the runtime". -## [11.12.0] - 2026-06-30 +- We added the `audit` command. It will scan the dependencies of pluggable-widgets-tools for vulnerable packages and suggest overrides. Currently only npm is supported. ### Changed @@ -20,73 +22,29 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), - **Breaking:** Consumers who extended the base config with `globals['ts-jest']` options must migrate those settings to the `@swc/jest` transform config. -### Fixed - -- We fixed an issue on Windows where the generated `.mpk` was missing the widget's `.xml` files and icon/tile PNGs. - -- We fixed an error thrown by the `audit` command on windows. It would fail when looking up available versions for vulnerable packages. - -- We updated the type generator to format types according to prettier. Inconsistencies would block the `release` command. - -## [11.11.0] - 2026-06-04 - -### Added - -- We added support for the `allowUpload` attribute on image properties in native widgets, generating `EditableImageValue` when enabled, introduced in Mendix 11.11. - -- We added support for single object datasource properties, introduced in Mendix 11.11. - -- We added the `audit` command. It will scan the dependencies of pluggable-widgets-tools for vulnerable packages and suggest overrides. Currently only npm is supported. - -### Changed - - We changed the order of imports in generated widget prop types to match that of the eslint sort-imports rule. - We silenced the Sass legacy JS API deprecation warning that appeared during widget bundling. - We updated outdated and vulnerable dependencies. This required major upgrades of several dependencies, including eslint@9, jest@30, and rollup@4. -## [11.8.1] - 2026-03-16 - -### Fixed - -- We fixed the bundling of Javascript widgets which broke in 11.6.0 after migrating to [React 17's JSX Transform](https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#how-to-upgrade-to-the-new-jsx-transform). (Ticket 270777) - -## [11.8.0] - 2026-03-06 - -### Added - -- We added support for editable image and file properties, introduced in Mendix 11.8. - -### Changed +- **Breaking:** We removed Enzyme testing library and associated dependencies from pluggable-widgets-tools. Tests using Enzyme should be updated to use React Testing Library. See the [migration guide](https://testing-library.com/docs/react-testing-library/migrate-from-enzyme) for more information. The `test:unit:web:enzyme-free` command has been removed; use `test:unit:web` instead. -- We updated the Mendix package to 11.8. - -## [11.6.0] - 2026-03-04 - -### Changed - -- We upgraded the Pluggable Widgets Tools to React 19 and React Native 0.78.2. After installation upgrade all dependencies by running `npm run build`. - -- We updated the Mendix package to 11.6. - -## [11.3.1] - 2026-02-04 - -### Breaking changes +- We fixed an issue where `require` was not transformed to `import` for the `es` output format which could result in an error when the widget was used in a project with React client enabled. -- We removed Enzyme testing library and associated dependencies from pluggable-widgets-tools. Tests using Enzyme should be updated to use React Testing Library. See the [migration guide](https://testing-library.com/docs/react-testing-library/migrate-from-enzyme) for more information. The `test:unit:web:enzyme-free` command has been removed; use `test:unit:web` instead. +- We now enforce the same validation for the `widgetName` in the widget bundler as we do in the generator. Validation is now also enforced for the organization name (`packagePath`). -### Changed +- We added @d11/react-native-fast-image as an external native dependency in rollup config. -- We fixed an issue where `require` was not transformed to `import` for the `es` output format which could result in an error when the widget was used in a project with React client enabled. +### Fixed -- We now enforce the same validation for the `widgetName` in the widget bundler as we do in the generator. Validation is now also enforced for the organization name (`packagePath`). +- We fixed an issue on Windows where the generated `.mpk` was missing the widget's `.xml` files and icon/tile PNGs. -## [11.3.0] - 2025-11-12 +- We fixed an error thrown by the `audit` command on windows. It would fail when looking up available versions for vulnerable packages. -### Changed +- We updated the type generator to format types according to prettier. Inconsistencies would block the `release` command. -- We added @d11/react-native-fast-image as an external native dependency in rollup config. +- We fixed the bundling of Javascript widgets which broke in 11.6.0 after migrating to [React 17's JSX Transform](https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html#how-to-upgrade-to-the-new-jsx-transform). (Ticket 270777) ## [10.24.0] - 2025-09-24 diff --git a/packages/pluggable-widgets-tools/package.json b/packages/pluggable-widgets-tools/package.json index 7e54af75..b6fc1d09 100644 --- a/packages/pluggable-widgets-tools/package.json +++ b/packages/pluggable-widgets-tools/package.json @@ -1,6 +1,6 @@ { "name": "@mendix/pluggable-widgets-tools", - "version": "11.12.0", + "version": "10.24.1", "description": "Mendix Pluggable Widgets Tools", "engines": { "node": ">=20" @@ -50,8 +50,8 @@ "@testing-library/react": "^16.3.2", "@testing-library/react-native": "^13.3.3", "@testing-library/user-event": "^14.6.1", - "@types/react": "^19.0.0", - "@types/react-dom": "^19.0.0", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", "@types/semver": "^7.7.1", "@types/testing-library__jest-dom": "^5.14.5", "@typescript-eslint/eslint-plugin": "^8.59.0", @@ -78,13 +78,13 @@ "jest-jasmine2": "~30.3.0", "jest-junit": "^17.0.0", "make-dir": "^5.1.0", - "mendix": "^11.8.0", + "mendix": "^10.24.73019", "mime": "^4.1.0", "postcss": "^8.5.10", "postcss-import": "^14.0.2", "postcss-url": "^10.1.4", "prettier": "^2.5.1", - "react-test-renderer": "^19.2.5", + "react-test-renderer": "^18.3.1", "recursive-copy": "^2.0.11", "resolve": "^1.22.12", "rollup": "^4.60.2", @@ -109,10 +109,12 @@ "devDependencies": { "@types/jest": "^30.0.0", "@types/node": "^16.18.126", - "@types/xml2js": "^0.4.5", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "react-native": "~0.78.2" + "@types/xml2js": "^0.4.5" + }, + "peerDependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-native": "~0.77.3" }, "keywords": [ "typings", diff --git a/packages/pluggable-widgets-tools/src/typings-generator/WidgetXml.ts b/packages/pluggable-widgets-tools/src/typings-generator/WidgetXml.ts index f6220ef6..99656baa 100644 --- a/packages/pluggable-widgets-tools/src/typings-generator/WidgetXml.ts +++ b/packages/pluggable-widgets-tools/src/typings-generator/WidgetXml.ts @@ -51,7 +51,6 @@ export interface Property { isDefault?: string; dataSource?: string; onChange?: string; - allowUpload?: string; }; caption?: string[]; category?: string[]; diff --git a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/index.spec.ts b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/index.spec.ts index f624b586..bd1ee166 100644 --- a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/index.spec.ts +++ b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/index.spec.ts @@ -50,11 +50,6 @@ import { } from "./outputs/list-action-with-variables"; import { imageWebInput, imageNativeInput } from "./inputs/image"; import { imageWebOutput, imageNativeOutput } from "./outputs/image"; -import { singleObjectDatasourceInput, singleObjectDatasourceInputNative } from "./inputs/single-object-datasource"; -import { - singleObjectDatasourceNativeOutput, - singleObjectDatasourceWebOutput -} from "./outputs/single-object-datasource"; describe("Generating tests", () => { it("Generates a parsed typing from XML for native", () => { @@ -256,16 +251,6 @@ describe("Generating tests", () => { const newContent = generateNativeTypesFor(imageNativeInput); expect(newContent).toBe(imageNativeOutput); }); - - it("Generates a parsed typing from XML for web using single object datasource", () => { - const newContent = generateFullTypesFor(singleObjectDatasourceInput); - expect(newContent).toBe(singleObjectDatasourceWebOutput); - }); - - it("Generates a parsed typing from XML for native using single object datasource", () => { - const newContent = generateNativeTypesFor(singleObjectDatasourceInputNative); - expect(newContent).toBe(singleObjectDatasourceNativeOutput); - }); }); function generateFullTypesFor(xml: string) { diff --git a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/file.ts b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/file.ts index e341da70..c922bd4e 100644 --- a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/file.ts +++ b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/file.ts @@ -1,7 +1,8 @@ export const fileInput = ` - + @@ -12,22 +13,14 @@ export const fileInput = ` File 2 - - File 3 - - - - File 4 - - Action - - + + Action @@ -42,13 +35,13 @@ export const fileInput = ` `; - export const fileInputNative = ` - + - + File @@ -57,22 +50,14 @@ export const fileInputNative = ` File 2 - - File 3 - - - - File 4 - - Action - - + + Action diff --git a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/image.ts b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/image.ts index d649f924..b6268172 100644 --- a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/image.ts +++ b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/image.ts @@ -1,7 +1,8 @@ export const imageWebInput = ` - + @@ -12,18 +13,14 @@ export const imageWebInput = ` Image 2 - - Image 3 - - Action - - + + Action @@ -38,13 +35,13 @@ export const imageWebInput = ` `; - export const imageNativeInput = ` - + - + Image @@ -53,18 +50,14 @@ export const imageNativeInput = ` Image 2 - - Image 3 - - Action - - + + Action diff --git a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/single-object-datasource.ts b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/single-object-datasource.ts deleted file mode 100644 index 97850552..00000000 --- a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/inputs/single-object-datasource.ts +++ /dev/null @@ -1,136 +0,0 @@ -export const singleObjectDatasourceInput = ` - - - - - Single object data source - - - - Optional single object data source - - - - List data source - - - - Single Content - - - - Single Attribute - - - - - - - - - Single Action - - - - Single Text Template - - - - Single Expression - - - - - Optional Single Attribute - - - - - - - Optional Single Action - - - - List Content - - - - List Attribute - - - - - - - List Action - - - - - - - - -`; - -export const singleObjectDatasourceInputNative = ` - - - - - Single object data source - - - - List data source - - - - Single Content - - - - Single Attribute - - - - - - - - - Single Action - - - - Single Text Template - - - - Single Expression - - - - - List Content - - - - List Attribute - - - - - - - List Action - - - - -`; diff --git a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/outputs/file.ts b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/outputs/file.ts index 65c66083..8be35660 100644 --- a/packages/pluggable-widgets-tools/src/typings-generator/__tests__/outputs/file.ts +++ b/packages/pluggable-widgets-tools/src/typings-generator/__tests__/outputs/file.ts @@ -3,7 +3,7 @@ export const fileWebOutput = `/** * WARNING: All changes made to this file will be overwritten * @author Mendix Widgets Framework Team */ -import { ActionValue, DynamicValue, EditableFileValue, EditableValue, FileValue } from "mendix"; +import { ActionValue, DynamicValue, EditableValue, FileValue } from "mendix"; export interface MyWidgetContainerProps { name: string; @@ -11,8 +11,6 @@ export interface MyWidgetContainerProps { id: string; file: DynamicValue; file2?: DynamicValue; - file3: EditableFileValue; - file4?: EditableFileValue; description: EditableValue; action?: ActionValue; } @@ -23,8 +21,6 @@ export interface MyWidgetPreviewProps { translate: (text: string) => string; file: string; file2: string; - file3: string; - file4: string; description: string; action: {} | null; } @@ -34,8 +30,6 @@ export const fileNativeOutput = `export interface MyWidgetProps