Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
40221d4
feat: add eslint 10 support
marufrasully Mar 19, 2026
22032ad
fix: add eslint 10 for rest of modules
marufrasully Mar 19, 2026
9e163b4
Merge remote-tracking branch 'origin/main' into feat/support-eslint-10
marufrasully Mar 19, 2026
c538935
fix: remove deprecated property
marufrasully Mar 19, 2026
1e75560
Merge remote-tracking branch 'origin/main' into feat/support-eslint-10
marufrasully Mar 19, 2026
54a0a83
fix: add change set
marufrasully Mar 19, 2026
8ca1b12
Linting auto fix commit
github-actions[bot] Mar 19, 2026
d415f65
fix Jest 30 Enzyme compatibility by resolving Cheerio exports and req…
marufrasully Mar 19, 2026
92692b4
fix: failing test
marufrasully Mar 19, 2026
41775f8
Merge remote-tracking branch 'origin/feat/support-eslint-10' into fea…
marufrasully Mar 19, 2026
d2b3f1f
fix: failing test and review comment
marufrasully Mar 20, 2026
f6dd86b
Merge remote-tracking branch 'origin/main' into feat/support-eslint-10
marufrasully Mar 20, 2026
5651d53
chore: merge main into feat/support-eslint-10 and resolve conflicts
longieirl Apr 15, 2026
148c96c
chore: merge origin/main into feat/support-eslint-10 (batch 2)
longieirl Apr 15, 2026
0007546
chore: merge origin/main into feat/support-eslint-10
longieirl Apr 15, 2026
f03c984
chore: update pnpm-lock.yaml after merging main into feat/support-esl…
longieirl Apr 15, 2026
e6a4b2e
chore: remove WIP files that don't belong on this branch
longieirl Apr 15, 2026
22965b4
chore: consolidate eslint-10 changesets
longieirl Apr 15, 2026
8b07afa
fix(ui-components): resolve cheerio/lib/utils to physical pnpm path f…
longieirl Apr 15, 2026
4149bc0
test: improve coverage for eslint-10 migration changes
longieirl Apr 15, 2026
0691ed9
Merge branch 'main' into feat/support-eslint-10
longieirl Apr 15, 2026
6e0fd08
Merge branch 'main' into feat/support-eslint-10
longieirl Apr 17, 2026
ccd9fab
Merge branch 'main' into feat/support-eslint-10
marufrasully Apr 20, 2026
a53feac
fix: adapte peerDependencies
marufrasully Apr 20, 2026
3619b7b
Merge branch 'main' into feat/support-eslint-10
marufrasully Apr 20, 2026
0acad1e
fix: add caret ragnes in dependencies
marufrasully Apr 22, 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
58 changes: 58 additions & 0 deletions .changeset/chore-relax-dependency-version-ranges.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
"@sap-ux/fe-fpm-cli": patch
"@sap-ux-private/ui-prompting-examples": patch
"@sap-ux/adp-flp-config-sub-generator": patch
"@sap-ux/adp-tooling": patch
"@sap-ux/annotation-generator": patch
"@sap-ux/btp-utils": patch
"@sap-ux/cf-deploy-config-sub-generator": patch
"@sap-ux/cf-deploy-config-writer": patch
"@sap-ux/deploy-config-generator-shared": patch
"@sap-ux/deploy-config-sub-generator": patch
"@sap-ux/eslint-plugin-fiori-tools": patch
"@sap-ux/fe-fpm-writer": patch
"@sap-ux/fiori-annotation-api": patch
"@sap-ux/fiori-app-sub-generator": patch
"@sap-ux/fiori-mcp-server": patch
"@sap-ux/fiori-tools-settings": patch
"@sap-ux/flp-config-sub-generator": patch
"@sap-ux/generator-adp": patch
"@sap-ux/i18n": patch
"@sap-ux/inquirer-common": patch
"@sap-ux/jest-file-matchers": patch
"@sap-ux/jest-runner-puppeteer": patch
"@sap-ux/logger": patch
"@sap-ux/mockserver-config-writer": patch
"@sap-ux/nodejs-utils": patch
"@sap-ux/odata-service-inquirer": patch
"@sap-ux/odata-service-writer": patch
"@sap-ux-private/playwright": patch
"@sap-ux/project-access": patch
"@sap-ux/project-input-validator": patch
"@sap-ux/project-integrity": patch
"@sap-ux/reload-middleware": patch
"@sap-ux/repo-app-import-sub-generator": patch
"@sap-ux/store": patch
"@sap-ux/text-document-utils": patch
"@sap-ux/ui-components": patch
"@sap-ux/ui-prompting": patch
"@sap-ux/ui-service-inquirer": patch
"@sap-ux/ui-service-sub-generator": patch
"@sap-ux/ui5-application-writer": patch
"@sap-ux/ui5-config": patch
"@sap-ux/ui5-info": patch
"@sap-ux/ui5-library-reference-inquirer": patch
"@sap-ux/ui5-library-reference-sub-generator": patch
"@sap-ux/ui5-library-reference-writer": patch
"@sap-ux/ui5-library-sub-generator": patch
"@sap-ux/ui5-library-writer": patch
"@sap-ux/ui5-proxy-middleware": patch
"@sap-ux/ui5-test-writer": patch
"@sap-ux/yaml": patch
---

chore: relax exact version pins in runtime `dependencies` to caret ranges (`^`)

Converts all exact-pinned versions in `dependencies` sections across the monorepo to caret ranges (e.g. `"2.1.0"` → `"^2.1.0"`). This follows npm best practice: exact pins in published packages unnecessarily restrict consumers and can cause duplicate installs or version conflicts. The pnpm lockfile continues to guarantee reproducible installs.

Also aligns several pre-existing version mismatches (`portfinder`, `dotenv`, `@types/vscode`, `@types/yeoman-environment`, `@types/yeoman-generator`, `@ui5/cli`) across workspace packages.
9 changes: 9 additions & 0 deletions .changeset/fair-adults-cheat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
'@sap-ux/eslint-plugin-fiori-tools': major
'@sap-ux/app-config-writer': patch
'@sap-ux/ui5-application-writer': patch
'@sap-ux/ui5-library-writer': patch
'@sap-ux-private/preview-middleware-client': patch
---

feat: support ESLint 10
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
20.20.0
25 changes: 25 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,30 @@ This uses `check-dependency-version-consistency` to validate that all packages u
}
```

**Runtime dependencies (`dependencies`) must use caret ranges:**

Runtime `dependencies` are resolved by the consumer's package manager and installed alongside the consumer's own dependencies. Exact pins here force a specific version on every downstream user, increasing the risk of version conflicts and duplicate installs.

```jsonc
// ✅ Correct — allow compatible patch and minor updates
"dependencies": {
"@typescript-eslint/parser": "^8.57.2"
}

// ❌ Wrong — unnecessarily strict, can cause conflicts for consumers
"dependencies": {
"@typescript-eslint/parser": "8.57.2"
}
```

**Summary of version range rules by section:**

| Section | Range style | Rationale |
|---|---|---|
| `dependencies` | `^major.minor.patch` | Allow compatible updates; avoid forcing exact version on consumers |
| `devDependencies` | Exact pin OK | Reproducible local/CI builds; never shipped to consumers |
| `peerDependencies` | `^major` or `^major.minor` | Consumer must be free to choose any compatible release |

### 2. Dependency Version Freshness

Dependencies should **not be older than 6 months** to ensure security, bug fixes, and compatibility with the ecosystem.
Expand Down Expand Up @@ -726,6 +750,7 @@ pnpm outdated
13. ❌ **Don't run all tests when working on a single package** - Use `pnpm --filter @sap-ux/[package-name] test` instead of `pnpm test` at root
14. ❌ **Don't hardcode version numbers in documentation** - Reference source files (like package.json) instead, as versions change frequently
15. ❌ **Don't pin peerDependencies to exact versions** - Use open semver ranges (e.g., `^9` not `9.39.1`) so consumers can use any compatible release
16. ❌ **Don't pin runtime `dependencies` to exact versions** - Use caret ranges (e.g., `^8.57.2` not `8.57.2`); exact pins cause version conflicts for consumers. Exact pinning is only acceptable in `devDependencies`.

## Summary Checklist

Expand Down
16 changes: 8 additions & 8 deletions examples/fe-fpm-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,16 @@
},
"dependencies": {
"@sap-ux/fe-fpm-writer": "workspace:*",
"inquirer": "8.2.7",
"mem-fs": "2.1.0",
"mem-fs-editor": "9.4.0"
"inquirer": "^8.2.7",
"mem-fs": "^2.1.0",
"mem-fs-editor": "^9.4.0"
},
"devDependencies": {
"@types/inquirer": "8.2.6",
"@types/mem-fs": "1.1.2",
"@types/mem-fs-editor": "7.0.1",
"@types/vinyl": "2.0.12",
"typescript-eslint": "8.57.2"
"@types/inquirer": "^8.2.6",
"@types/mem-fs": "^1.1.2",
"@types/mem-fs-editor": "^7.0.1",
"@types/vinyl": "^2.0.12",
"typescript-eslint": "^8.57.2"
},
"files": [
"dist",
Expand Down
4 changes: 2 additions & 2 deletions examples/odata-cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
"@sap-ux/axios-extension": "workspace:*",
"@sap-ux/btp-utils": "workspace:*",
"@sap-ux/logger": "workspace:*",
"dotenv": "17.4.2",
"fast-xml-parser": "5.5.9"
"dotenv": "^17.4.2",
"fast-xml-parser": "^5.5.9"
},
"files": [
"dist",
Expand Down
8 changes: 4 additions & 4 deletions examples/simple-generator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@
"@sap-ux/btp-utils": "workspace:*",
"@sap-ux/axios-extension": "workspace:*",
"@sap-ux/system-access": "workspace:*",
"yeoman-generator": "5.10.0"
"yeoman-generator": "^5.10.0"
},
"devDependencies": {
"@sap-ux/store": "workspace:*",
"@types/yeoman-environment": "2.10.8",
"@types/yeoman-generator": "5.2.11",
"@types/yeoman-environment": "^2.10.11",
"@types/yeoman-generator": "^5.2.14",
"@sap-ux/ui5-application-writer": "workspace:*",
"@sap-ux/odata-service-writer": "workspace:*",
"axios": "1.15.0"
"axios": "^1.15.0"
},
"files": [
"generators",
Expand Down
77 changes: 39 additions & 38 deletions examples/ui-prompting-examples/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,52 +22,53 @@
"dependencies": {
"@sap-ux/ui-components": "workspace:*",
"@sap-ux/ui-prompting": "workspace:*",
"react-markdown": "5.0.3",
"sanitize-html": "2.17.2"
"react-markdown": "^5.0.3",
"sanitize-html": "^2.17.2"
},
"peerDependencies": {
"react": ">=16.14.0",
"react-dom": ">=16.14.0"
},
"devDependencies": {
"@babel/core": "7.29.0",
"@babel/helper-define-map": "7.18.6",
"@babel/preset-env": "7.29.2",
"@babel/preset-react": "7.28.5",
"@babel/preset-typescript": "7.28.5",
"@babel/core": "^7.29.0",
"@babel/helper-define-map": "^7.18.6",
"@babel/preset-env": "^7.29.2",
"@babel/preset-react": "^7.28.5",
"@babel/preset-typescript": "^7.28.5",
"@sap-ux/fe-fpm-writer": "workspace:*",
"@sap-ux/i18n": "workspace:*",
"@sap-ux/project-access": "workspace:*",
"@storybook/components": "8.6.14",
"@storybook/manager-api": "8.6.17",
"@storybook/react": "8.6.17",
"@storybook/react-webpack5": "8.6.17",
"@types/inquirer": "8.2.6",
"@types/mem-fs": "1.1.2",
"@types/mem-fs-editor": "7.0.1",
"@types/react": "16.14.69",
"@types/react-dom": "16.9.25",
"@types/sanitize-html": "2.16.1",
"@types/uuid": "11.0.0",
"@types/ws": "8.18.1",
"babel-loader": "10.1.1",
"copyfiles": "2.4.1",
"css-loader": "7.1.4",
"eslint-plugin-react": "7.37.5",
"eslint-plugin-storybook": "0.6.15",
"mem-fs": "2.1.0",
"mem-fs-editor": "9.4.0",
"npm-run-all2": "8.0.4",
"react": "16.14.0",
"react-dom": "16.14.0",
"sass": "1.98.0",
"sass-loader": "16.0.7",
"storybook": "8.6.17",
"storybook-addon-turbo-build": "2.0.1",
"style-loader": "4.0.0",
"ts-loader": "9.5.4",
"ts-node": "10.9.2",
"typescript": "5.9.3",
"ws": "8.20.0"
"@storybook/components": "^8.6.14",
"@storybook/manager-api": "^8.6.17",
"@storybook/react": "^8.6.17",
"@storybook/react-webpack5": "^8.6.17",
"@types/inquirer": "^8.2.6",
"@types/mem-fs": "^1.1.2",
"@types/mem-fs-editor": "^7.0.1",
"@types/react": "^16.14.69",
"@types/react-dom": "^16.9.25",
"@types/sanitize-html": "^2.16.1",
"@types/uuid": "^11.0.0",
"@types/ws": "^8.18.1",
"babel-loader": "^10.1.1",
"copyfiles": "^2.4.1",
"css-loader": "^7.1.4",
"eslint": "^9.39.1",
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-storybook": "^0.6.15",
"mem-fs": "^2.1.0",
"mem-fs-editor": "^9.4.0",
"npm-run-all2": "^8.0.4",
"react": "^16.14.0",
"react-dom": "^16.14.0",
"sass": "^1.98.0",
"sass-loader": "^16.0.7",
"storybook": "^8.6.17",
"storybook-addon-turbo-build": "^2.0.1",
"style-loader": "^4.0.0",
"ts-loader": "^9.5.4",
"ts-node": "^10.9.2",
"typescript": "^5.9.3",
"ws": "^8.20.0"
}
}
72 changes: 36 additions & 36 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,43 @@
"author": "@SAP/ux-tools-team",
"private": true,
"devDependencies": {
"@changesets/cli": "2.30.0",
"@eslint/eslintrc": "3.3.5",
"@eslint/js": "9.22.0",
"@playwright/test": "1.58.2",
"@types/jest": "30.0.0",
"@types/node": "20.19.37",
"autoprefixer": "10.4.27",
"check-dependency-version-consistency": "6.0.0",
"esbuild": "0.27.4",
"esbuild-sass-plugin": "3.7.0",
"eslint": "9.39.1",
"eslint-config-prettier": "10.1.8",
"eslint-import-resolver-typescript": "4.4.4",
"eslint-plugin-import": "2.32.0",
"eslint-plugin-jsdoc": "62.8.1",
"eslint-plugin-prettier": "5.5.5",
"eslint-plugin-promise": "7.2.1",
"eslint-plugin-sonarjs": "4.0.2",
"globals": "17.4.0",
"husky": "8.0.3",
"jest": "30.3.0",
"jest-sonar": "0.2.16",
"npm-run-all2": "8.0.4",
"nx": "22.6.1",
"postcss": "8.5.8",
"@changesets/cli": "^2.30.0",
"@eslint/eslintrc": "^3.3.5",
"@eslint/js": "^10.0.1",
"@playwright/test": "^1.58.2",
"@types/jest": "^30.0.0",
"@types/node": "^20.19.37",
"autoprefixer": "^10.4.27",
"check-dependency-version-consistency": "^6.0.0",
"esbuild": "^0.27.4",
"esbuild-sass-plugin": "^3.7.0",
"eslint": "^10.0.3",
"eslint-config-prettier": "^10.1.8",
"eslint-import-resolver-typescript": "^4.4.4",
"eslint-plugin-import": "^2.32.0",
"eslint-plugin-jsdoc": "^62.8.1",
"eslint-plugin-prettier": "^5.5.5",
"eslint-plugin-promise": "^7.2.1",
"eslint-plugin-sonarjs": "^4.0.2",
"globals": "^17.4.0",
"husky": "^8.0.3",
"jest": "^30.3.0",
"jest-sonar": "^0.2.16",
"npm-run-all2": "^8.0.4",
"nx": "^22.6.1",
"postcss": "^8.5.8",
"prebuild-install": "^7.1.3",
"prettier": "3.8.1",
"pretty-quick": "4.2.2",
"react-select": "5.10.2",
"react-virtualized": "9.22.6",
"rimraf": "6.1.3",
"ts-jest": "29.4.9",
"typescript": "5.9.3",
"typescript-eslint": "8.57.2",
"update-ts-references": "4.0.0",
"yaml": "2.8.3",
"yargs-parser": "21.1.1"
"prettier": "^3.8.1",
"pretty-quick": "^4.2.2",
"react-select": "^5.10.2",
"react-virtualized": "^9.22.6",
"rimraf": "^6.1.3",
"ts-jest": "^29.4.9",
"typescript": "^5.9.3",
"typescript-eslint": "^8.57.2",
"update-ts-references": "^4.0.0",
"yaml": "^2.8.3",
"yargs-parser": "^21.1.1"
},
"scripts": {
"update-ts-references": "update-ts-references",
Expand Down
12 changes: 6 additions & 6 deletions packages/abap-deploy-config-inquirer/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@
"@sap-ux/store": "workspace:*",
"@sap-ux/system-access": "workspace:*",
"@sap-ux/ui5-config": "workspace:*",
"i18next": "25.10.10",
"@sap-devx/yeoman-ui-types": "1.23.0",
"inquirer-autocomplete-prompt": "2.0.1"
"i18next": "^25.10.10",
"@sap-devx/yeoman-ui-types": "^1.23.0",
"inquirer-autocomplete-prompt": "^2.0.1"
},
"devDependencies": {
"axios": "1.15.0",
"@types/inquirer": "8.2.6",
"@types/inquirer-autocomplete-prompt": "2.0.2"
"axios": "^1.15.0",
"@types/inquirer": "^8.2.6",
"@types/inquirer-autocomplete-prompt": "^2.0.2"
}
}
18 changes: 9 additions & 9 deletions packages/abap-deploy-config-sub-generator/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,19 +42,19 @@
"@sap-ux/ui5-config": "workspace:*",
"@sap-ux/adp-tooling": "workspace:*",
"@sap-ux/axios-extension": "workspace:*",
"i18next": "25.10.10",
"@sap-devx/yeoman-ui-types": "1.23.0"
"i18next": "^25.10.10",
"@sap-devx/yeoman-ui-types": "^1.23.0"
},
"devDependencies": {
"@types/mem-fs": "1.1.2",
"@types/mem-fs-editor": "7.0.1",
"@types/yeoman-test": "4.0.6",
"@types/mem-fs": "^1.1.2",
"@types/mem-fs-editor": "^7.0.1",
"@types/yeoman-test": "^4.0.6",
"@sap-ux/store": "workspace:*",
"@sap-ux/system-access": "workspace:*",
"@sap-ux/telemetry": "workspace:*",
"memfs": "3.4.13",
"mem-fs-editor": "9.4.0",
"unionfs": "4.6.0",
"yeoman-test": "6.3.0"
"memfs": "^3.4.13",
"mem-fs-editor": "^9.4.0",
"unionfs": "^4.6.0",
"yeoman-test": "^6.3.0"
}
}
Loading
Loading