@ui5/mcp-server 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "name": "@ui5/mcp-server",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@ui5/mcp-server",
9
- "version": "0.1.4",
9
+ "version": "0.1.6",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
- "@modelcontextprotocol/sdk": "^1.20.2",
12
+ "@modelcontextprotocol/sdk": "^1.24.2",
13
13
  "@ui5/linter": "^1.20.5",
14
14
  "@ui5/logger": "^4.0.2",
15
- "@ui5/project": "^4.0.8",
15
+ "@ui5/project": "^4.0.9",
16
16
  "async-mutex": "^0.5.0",
17
17
  "ejs": "^3.1.10",
18
- "execa": "^9.6.0",
18
+ "execa": "^9.6.1",
19
19
  "fast-xml-parser": "^5.3.2",
20
20
  "globby": "^16.0.0",
21
21
  "lockfile": "^1.0.4",
22
22
  "make-fetch-happen": "^14.0.3",
23
23
  "semver": "^7.7.3",
24
- "zod": "^3.25.76"
24
+ "zod": "^4.1.13"
25
25
  },
26
26
  "bin": {
27
27
  "ui5mcp": "bin/ui5mcp.js"
@@ -129,12 +129,13 @@
129
129
  }
130
130
  },
131
131
  "node_modules/@modelcontextprotocol/sdk": {
132
- "version": "1.20.2",
133
- "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.20.2.tgz",
134
- "integrity": "sha512-6rqTdFt67AAAzln3NOKsXRmv5ZzPkgbfaebKBqUbts7vK1GZudqnrun5a8d3M/h955cam9RHZ6Jb4Y1XhnmFPg==",
132
+ "version": "1.24.2",
133
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.24.2.tgz",
134
+ "integrity": "sha512-hS/kzSfchqzvUeJUsdiDHi84/kNhLIZaZ6coGQVwbYIelOBbcAwUohUfaQTLa1MvFOK/jbTnGFzraHSFwB7pjQ==",
135
135
  "license": "MIT",
136
136
  "dependencies": {
137
- "ajv": "^6.12.6",
137
+ "ajv": "^8.17.1",
138
+ "ajv-formats": "^3.0.1",
138
139
  "content-type": "^1.0.5",
139
140
  "cors": "^2.8.5",
140
141
  "cross-spawn": "^7.0.5",
@@ -142,37 +143,28 @@
142
143
  "eventsource-parser": "^3.0.0",
143
144
  "express": "^5.0.1",
144
145
  "express-rate-limit": "^7.5.0",
146
+ "jose": "^6.1.1",
145
147
  "pkce-challenge": "^5.0.0",
146
148
  "raw-body": "^3.0.0",
147
- "zod": "^3.23.8",
148
- "zod-to-json-schema": "^3.24.1"
149
+ "zod": "^3.25 || ^4.0",
150
+ "zod-to-json-schema": "^3.25.0"
149
151
  },
150
152
  "engines": {
151
153
  "node": ">=18"
152
- }
153
- },
154
- "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": {
155
- "version": "6.12.6",
156
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
157
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
158
- "license": "MIT",
159
- "dependencies": {
160
- "fast-deep-equal": "^3.1.1",
161
- "fast-json-stable-stringify": "^2.0.0",
162
- "json-schema-traverse": "^0.4.1",
163
- "uri-js": "^4.2.2"
164
154
  },
165
- "funding": {
166
- "type": "github",
167
- "url": "https://github.com/sponsors/epoberezkin"
155
+ "peerDependencies": {
156
+ "@cfworker/json-schema": "^4.1.1",
157
+ "zod": "^3.25 || ^4.0"
158
+ },
159
+ "peerDependenciesMeta": {
160
+ "@cfworker/json-schema": {
161
+ "optional": true
162
+ },
163
+ "zod": {
164
+ "optional": false
165
+ }
168
166
  }
169
167
  },
170
- "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": {
171
- "version": "0.4.1",
172
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
173
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
174
- "license": "MIT"
175
- },
176
168
  "node_modules/@modelcontextprotocol/sdk/node_modules/pkce-challenge": {
177
169
  "version": "5.0.0",
178
170
  "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz",
@@ -4262,9 +4254,9 @@
4262
4254
  }
4263
4255
  },
4264
4256
  "node_modules/@ui5/project": {
4265
- "version": "4.0.8",
4266
- "resolved": "https://registry.npmjs.org/@ui5/project/-/project-4.0.8.tgz",
4267
- "integrity": "sha512-kv8tKiiwT175BvAfYdJJ8Fw038p5fNRqJNCDchipeTHMnVsvOdcyw8YVXGk8btngYEVfaX6v936RJAa2hlgf2g==",
4257
+ "version": "4.0.9",
4258
+ "resolved": "https://registry.npmjs.org/@ui5/project/-/project-4.0.9.tgz",
4259
+ "integrity": "sha512-H/dp1kBWPNGnvwbr5s/B+v/orv8Y/fFN/99RpGNZm9GYDpX+vmuZJueIRDA1s5MAmXjkudfYdCkrm86CifThrg==",
4268
4260
  "license": "Apache-2.0",
4269
4261
  "dependencies": {
4270
4262
  "@npmcli/config": "^9.0.0",
@@ -4276,7 +4268,7 @@
4276
4268
  "escape-string-regexp": "^5.0.0",
4277
4269
  "globby": "^14.1.0",
4278
4270
  "graceful-fs": "^4.2.11",
4279
- "js-yaml": "^4.1.0",
4271
+ "js-yaml": "^4.1.1",
4280
4272
  "lockfile": "^1.0.4",
4281
4273
  "make-fetch-happen": "^14.0.3",
4282
4274
  "node-stream-zip": "^1.15.0",
@@ -4294,7 +4286,7 @@
4294
4286
  "npm": ">= 8"
4295
4287
  },
4296
4288
  "peerDependencies": {
4297
- "@ui5/builder": "^4.1.0"
4289
+ "@ui5/builder": "^4.1.3"
4298
4290
  },
4299
4291
  "peerDependenciesMeta": {
4300
4292
  "@ui5/builder": {
@@ -4452,6 +4444,23 @@
4452
4444
  "ajv": ">=5.0.0"
4453
4445
  }
4454
4446
  },
4447
+ "node_modules/ajv-formats": {
4448
+ "version": "3.0.1",
4449
+ "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz",
4450
+ "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==",
4451
+ "license": "MIT",
4452
+ "dependencies": {
4453
+ "ajv": "^8.0.0"
4454
+ },
4455
+ "peerDependencies": {
4456
+ "ajv": "^8.0.0"
4457
+ },
4458
+ "peerDependenciesMeta": {
4459
+ "ajv": {
4460
+ "optional": true
4461
+ }
4462
+ }
4463
+ },
4455
4464
  "node_modules/ansi-regex": {
4456
4465
  "version": "6.2.0",
4457
4466
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
@@ -4498,23 +4507,43 @@
4498
4507
  "license": "MIT"
4499
4508
  },
4500
4509
  "node_modules/body-parser": {
4501
- "version": "2.2.0",
4502
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
4503
- "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==",
4510
+ "version": "2.2.1",
4511
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.1.tgz",
4512
+ "integrity": "sha512-nfDwkulwiZYQIGwxdy0RUmowMhKcFVcYXUU7m4QlKYim1rUtg83xm2yjZ40QjDuc291AJjjeSc9b++AWHSgSHw==",
4504
4513
  "license": "MIT",
4505
4514
  "dependencies": {
4506
4515
  "bytes": "^3.1.2",
4507
4516
  "content-type": "^1.0.5",
4508
- "debug": "^4.4.0",
4517
+ "debug": "^4.4.3",
4509
4518
  "http-errors": "^2.0.0",
4510
- "iconv-lite": "^0.6.3",
4519
+ "iconv-lite": "^0.7.0",
4511
4520
  "on-finished": "^2.4.1",
4512
4521
  "qs": "^6.14.0",
4513
- "raw-body": "^3.0.0",
4514
- "type-is": "^2.0.0"
4522
+ "raw-body": "^3.0.1",
4523
+ "type-is": "^2.0.1"
4515
4524
  },
4516
4525
  "engines": {
4517
4526
  "node": ">=18"
4527
+ },
4528
+ "funding": {
4529
+ "type": "opencollective",
4530
+ "url": "https://opencollective.com/express"
4531
+ }
4532
+ },
4533
+ "node_modules/body-parser/node_modules/iconv-lite": {
4534
+ "version": "0.7.0",
4535
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
4536
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
4537
+ "license": "MIT",
4538
+ "dependencies": {
4539
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
4540
+ },
4541
+ "engines": {
4542
+ "node": ">=0.10.0"
4543
+ },
4544
+ "funding": {
4545
+ "type": "opencollective",
4546
+ "url": "https://opencollective.com/express"
4518
4547
  }
4519
4548
  },
4520
4549
  "node_modules/brace-expansion": {
@@ -4739,9 +4768,9 @@
4739
4768
  }
4740
4769
  },
4741
4770
  "node_modules/debug": {
4742
- "version": "4.4.1",
4743
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
4744
- "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
4771
+ "version": "4.4.3",
4772
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
4773
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
4745
4774
  "license": "MIT",
4746
4775
  "dependencies": {
4747
4776
  "ms": "^2.1.3"
@@ -4924,9 +4953,9 @@
4924
4953
  }
4925
4954
  },
4926
4955
  "node_modules/execa": {
4927
- "version": "9.6.0",
4928
- "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.0.tgz",
4929
- "integrity": "sha512-jpWzZ1ZhwUmeWRhS7Qv3mhpOhLfwI+uAX4e5fOcXqwMR7EcJ0pj2kV1CVzHVMX/LphnKWD3LObjZCoJ71lKpHw==",
4956
+ "version": "9.6.1",
4957
+ "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz",
4958
+ "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==",
4930
4959
  "license": "MIT",
4931
4960
  "dependencies": {
4932
4961
  "@sindresorhus/merge-streams": "^4.0.0",
@@ -5426,28 +5455,23 @@
5426
5455
  "license": "BSD-2-Clause"
5427
5456
  },
5428
5457
  "node_modules/http-errors": {
5429
- "version": "2.0.0",
5430
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
5431
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
5458
+ "version": "2.0.1",
5459
+ "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz",
5460
+ "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==",
5432
5461
  "license": "MIT",
5433
5462
  "dependencies": {
5434
- "depd": "2.0.0",
5435
- "inherits": "2.0.4",
5436
- "setprototypeof": "1.2.0",
5437
- "statuses": "2.0.1",
5438
- "toidentifier": "1.0.1"
5463
+ "depd": "~2.0.0",
5464
+ "inherits": "~2.0.4",
5465
+ "setprototypeof": "~1.2.0",
5466
+ "statuses": "~2.0.2",
5467
+ "toidentifier": "~1.0.1"
5439
5468
  },
5440
5469
  "engines": {
5441
5470
  "node": ">= 0.8"
5442
- }
5443
- },
5444
- "node_modules/http-errors/node_modules/statuses": {
5445
- "version": "2.0.1",
5446
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
5447
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
5448
- "license": "MIT",
5449
- "engines": {
5450
- "node": ">= 0.8"
5471
+ },
5472
+ "funding": {
5473
+ "type": "opencollective",
5474
+ "url": "https://opencollective.com/express"
5451
5475
  }
5452
5476
  },
5453
5477
  "node_modules/http-proxy-agent": {
@@ -5490,6 +5514,7 @@
5490
5514
  "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
5491
5515
  "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
5492
5516
  "license": "MIT",
5517
+ "optional": true,
5493
5518
  "dependencies": {
5494
5519
  "safer-buffer": ">= 2.1.2 < 3.0.0"
5495
5520
  },
@@ -5703,6 +5728,15 @@
5703
5728
  "node": ">=10"
5704
5729
  }
5705
5730
  },
5731
+ "node_modules/jose": {
5732
+ "version": "6.1.3",
5733
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.1.3.tgz",
5734
+ "integrity": "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==",
5735
+ "license": "MIT",
5736
+ "funding": {
5737
+ "url": "https://github.com/sponsors/panva"
5738
+ }
5739
+ },
5706
5740
  "node_modules/js-tokens": {
5707
5741
  "version": "4.0.0",
5708
5742
  "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -6973,18 +7007,34 @@
6973
7007
  }
6974
7008
  },
6975
7009
  "node_modules/raw-body": {
6976
- "version": "3.0.0",
6977
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz",
6978
- "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==",
7010
+ "version": "3.0.2",
7011
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz",
7012
+ "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==",
6979
7013
  "license": "MIT",
6980
7014
  "dependencies": {
6981
- "bytes": "3.1.2",
6982
- "http-errors": "2.0.0",
6983
- "iconv-lite": "0.6.3",
6984
- "unpipe": "1.0.0"
7015
+ "bytes": "~3.1.2",
7016
+ "http-errors": "~2.0.1",
7017
+ "iconv-lite": "~0.7.0",
7018
+ "unpipe": "~1.0.0"
6985
7019
  },
6986
7020
  "engines": {
6987
- "node": ">= 0.8"
7021
+ "node": ">= 0.10"
7022
+ }
7023
+ },
7024
+ "node_modules/raw-body/node_modules/iconv-lite": {
7025
+ "version": "0.7.0",
7026
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.0.tgz",
7027
+ "integrity": "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==",
7028
+ "license": "MIT",
7029
+ "dependencies": {
7030
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
7031
+ },
7032
+ "engines": {
7033
+ "node": ">=0.10.0"
7034
+ },
7035
+ "funding": {
7036
+ "type": "opencollective",
7037
+ "url": "https://opencollective.com/express"
6988
7038
  }
6989
7039
  },
6990
7040
  "node_modules/read-package-up": {
@@ -7640,13 +7690,13 @@
7640
7690
  }
7641
7691
  },
7642
7692
  "node_modules/tinyglobby": {
7643
- "version": "0.2.14",
7644
- "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz",
7645
- "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
7693
+ "version": "0.2.15",
7694
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz",
7695
+ "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
7646
7696
  "license": "MIT",
7647
7697
  "dependencies": {
7648
- "fdir": "^6.4.4",
7649
- "picomatch": "^4.0.2"
7698
+ "fdir": "^6.5.0",
7699
+ "picomatch": "^4.0.3"
7650
7700
  },
7651
7701
  "engines": {
7652
7702
  "node": ">=12.0.0"
@@ -7931,9 +7981,9 @@
7931
7981
  }
7932
7982
  },
7933
7983
  "node_modules/zod": {
7934
- "version": "3.25.76",
7935
- "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz",
7936
- "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
7984
+ "version": "4.1.13",
7985
+ "resolved": "https://registry.npmjs.org/zod/-/zod-4.1.13.tgz",
7986
+ "integrity": "sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==",
7937
7987
  "license": "MIT",
7938
7988
  "peer": true,
7939
7989
  "funding": {
@@ -7941,12 +7991,12 @@
7941
7991
  }
7942
7992
  },
7943
7993
  "node_modules/zod-to-json-schema": {
7944
- "version": "3.24.6",
7945
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz",
7946
- "integrity": "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg==",
7994
+ "version": "3.25.0",
7995
+ "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
7996
+ "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
7947
7997
  "license": "ISC",
7948
7998
  "peerDependencies": {
7949
- "zod": "^3.24.1"
7999
+ "zod": "^3.25 || ^4"
7950
8000
  }
7951
8001
  }
7952
8002
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/mcp-server",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "description": "MCP server for UI5 application development",
5
5
  "author": {
6
6
  "name": "SAP SE",
@@ -75,19 +75,19 @@
75
75
  }
76
76
  },
77
77
  "dependencies": {
78
- "@modelcontextprotocol/sdk": "^1.20.2",
78
+ "@modelcontextprotocol/sdk": "^1.24.2",
79
79
  "@ui5/linter": "^1.20.5",
80
80
  "@ui5/logger": "^4.0.2",
81
- "@ui5/project": "^4.0.8",
81
+ "@ui5/project": "^4.0.9",
82
82
  "async-mutex": "^0.5.0",
83
83
  "ejs": "^3.1.10",
84
- "execa": "^9.6.0",
84
+ "execa": "^9.6.1",
85
85
  "fast-xml-parser": "^5.3.2",
86
86
  "globby": "^16.0.0",
87
87
  "lockfile": "^1.0.4",
88
88
  "make-fetch-happen": "^14.0.3",
89
89
  "semver": "^7.7.3",
90
- "zod": "^3.25.76"
90
+ "zod": "^4.1.13"
91
91
  },
92
92
  "devDependencies": {
93
93
  "@commitlint/cli": "^20.1.0",
@@ -96,7 +96,7 @@
96
96
  "@istanbuljs/esm-loader-hook": "^0.3.0",
97
97
  "@istanbuljs/nyc-config-typescript": "^1.0.2",
98
98
  "@modelcontextprotocol/inspector": "^0.17.2",
99
- "@stylistic/eslint-plugin": "^5.6.0",
99
+ "@stylistic/eslint-plugin": "^5.6.1",
100
100
  "@types/ejs": "^3.1.5",
101
101
  "@types/make-fetch-happen": "^10.0.4",
102
102
  "@types/node": "20.16.15",
@@ -112,11 +112,11 @@
112
112
  "husky": "^9.1.7",
113
113
  "licensee": "^11.1.1",
114
114
  "nyc": "^17.1.0",
115
- "rimraf": "^6.1.0",
115
+ "rimraf": "^6.1.2",
116
116
  "sinon": "^21.0.0",
117
- "tsx": "^4.20.6",
117
+ "tsx": "^4.21.0",
118
118
  "typescript": "^5.9.3",
119
- "typescript-eslint": "^8.47.0",
119
+ "typescript-eslint": "^8.48.1",
120
120
  "yauzl-promise": "^4.0.0"
121
121
  }
122
122
  }
@@ -44,7 +44,11 @@
44
44
  ```
45
45
  - Find more information on the UI5 documentation page "Declarative API for Initial Components"
46
46
  - **ALWAYS** use data binding in views to connect UI controls to data or i18n models.
47
- - When binding data from OData services, **NEVER** use custom formatters for standard data types (e.g., dates, numbers, currencies). The built-in types handle these cases automatically.
47
+ - **ALWAYS** prefer built-in data types with format options for formatting in data binding:
48
+ - Use OData types from the `sap.ui.model.odata.type` namespace for example `sap.ui.model.odata.type.Decimal`, `sap.ui.model.odata.type.String`, `sap.ui.model.odata.type.DateTime`). These work with all model types, not just OData models.
49
+ - Use standard simple types from `sap.ui.model.type` namespace only when no equivalent OData type exists (e.g., `sap.ui.model.type.DateInterval`, `sap.ui.model.type.FileSize`).
50
+ - Write **custom formatter functions** only for unique business logic that cannot be handled by any built-in data type with format options.
51
+ - Example: For number formatting with a thousands separator, prefer `sap.ui.model.odata.type.Decimal` with `formatOptions: {groupingEnabled: true}` over `sap.ui.model.type.Integer` or even a custom formatter function.
48
52
  - When making changes to `*.properties` files, **ALWAYS** apply the changes to all relevant locales. This ensures consistency across different language versions of the application.
49
53
  - **Example:** If you add a new key to `i18n.properties`, also add it to existing translation files like e.g `i18n_en.properties`, `i18n_de.properties`, etc.
50
54
  - **NEVER** use inline script in HTML
@@ -24,7 +24,7 @@
24
24
  <Button
25
25
  id="helloButton"
26
26
  text="{formatter: 'formatter.formatValue', path: 'i18n>btnText'}"
27
- press="sayHello" />
27
+ press=".sayHello" />
28
28
  </additionalContent>
29
29
  </IllustratedMessage>
30
30
  </content>
@@ -40,7 +40,7 @@
40
40
  <Button
41
41
  id="helloButton"
42
42
  text="{formatter: 'formatter.formatValue', path: 'i18n>btnText'}"
43
- press="sayHello" />
43
+ press=".sayHello" />
44
44
  </buttons>
45
45
  </MessagePage>
46
46
  <% } %><% } else { %>
@@ -24,7 +24,7 @@
24
24
  <Button
25
25
  id="helloButton"
26
26
  text="{formatter: 'formatter.formatValue', path: 'i18n>btnText'}"
27
- press="sayHello" />
27
+ press=".sayHello" />
28
28
  </additionalContent>
29
29
  </IllustratedMessage>
30
30
  </content>
@@ -40,7 +40,7 @@
40
40
  <Button
41
41
  id="helloButton"
42
42
  text="{formatter: 'formatter.formatValue', path: 'i18n>btnText'}"
43
- press="sayHello" />
43
+ press=".sayHello" />
44
44
  </buttons>
45
45
  </MessagePage>
46
46
  <% } %><% } else { %>