@sap/cds-dk 8.9.11 → 8.9.13

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.
package/CHANGELOG.md CHANGED
@@ -7,6 +7,19 @@ This project adheres to [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  The format is based on [Keep a Changelog](https://keepachangelog.com/).
9
9
 
10
+ ## Version 8.9.13 - 2029-01-09
11
+
12
+ ### Fixed
13
+
14
+ - CVE-2025-15284: update `express` to fix vulnerability with `qs` <6.14.1
15
+
16
+ ## Version 8.9.12 - 2025-12-16
17
+
18
+ ### Fixed
19
+
20
+ - `cds import` generates the on condition for a composition when the corresponding OData navigation property targets a collection, is contained (`$ContainsTarget` in OData EDM) and has a backlink (`$Partner` in OData EDM).
21
+ - `cds import` now considers OData contained navigation properties as compositions instead of associations.
22
+
10
23
  ## Version 8.9.11 - 2025-11-21
11
24
 
12
25
  ### Fixed
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "deploy",
3
3
  "dependencies": {
4
- "hdb": "^0",
4
+ "hdb": "^2.0.0",
5
5
  "@sap/hdi-deploy": "^5"
6
6
  },
7
7
  "engines": {
@@ -38,6 +38,7 @@ module.exports = class ParserContext {
38
38
  this.schemaAliasToNamespace = {};
39
39
  this.schemaToSchemaDataIndex = {};
40
40
  this.schemaToPrimarySchema = {};
41
+ this.schemaDetails = {};
41
42
  this.vocabNamespaceToAlias = {};
42
43
  this.entityToBoundActions = {};
43
44
  this.entityToBoundFunctions = {};
@@ -615,7 +615,7 @@ function _generateStructuredDataTypeCsn(dataType, propertyObject, isPrimaryKey,
615
615
 
616
616
  function _parseAssociationProperty(foreignReference, associationNode, parserContext) {
617
617
  const associationProperty = {};
618
- associationProperty.type = (associationNode.$OnDelete === 'Cascade') ? 'cds.Composition' : 'cds.Association';
618
+ associationProperty.type = (associationNode.$OnDelete === 'Cascade' || associationNode.$ContainsTarget) ? 'cds.Composition' : 'cds.Association';
619
619
 
620
620
  let schemaName = associationNode.$Type.substring(0, associationNode.$Type.lastIndexOf('.'));
621
621
 
@@ -623,6 +623,11 @@ function _parseAssociationProperty(foreignReference, associationNode, parserCont
623
623
  schemaName = parserContext.schemaAliasToNamespace[schemaName];
624
624
  }
625
625
 
626
+ if (associationNode.$ContainsTarget) {
627
+ parserContext.schemaDetails[schemaName] ??= {}
628
+ parserContext.schemaDetails[schemaName].containment = true
629
+ }
630
+
626
631
  let resolvedEntityName;
627
632
  let entityTypeMapping = (
628
633
  parserContext.entityToEntitySetMap?.get(associationNode.$Type) ||
@@ -657,9 +662,18 @@ function _parseAssociationProperty(foreignReference, associationNode, parserCont
657
662
  } else {
658
663
  associationProperty.cardinality.max = 1;
659
664
  }
660
- // Convert managed associations and compositions in unmanaged with empty key to avoid
665
+
666
+ // Generate on condition in case $Partner exists, as that indicates a backlink with which the
667
+ // condition can be generated.
668
+ // If not given convert managed associations and compositions in unmanaged with empty key to avoid
661
669
  // "generation" of keys, that do not exist in the external service.
662
- if (common.checkForEmptyKeys(associationProperty, "V4")) {
670
+ if (associationNode.$Partner && associationProperty.type === 'cds.Composition') {
671
+ associationProperty.on = [
672
+ {ref: [foreignReference, associationNode.$Partner]},
673
+ '=',
674
+ {ref: ['$self']}
675
+ ]
676
+ } else if (common.checkForEmptyKeys(associationProperty, "V4")) {
663
677
  associationProperty.keys = [];
664
678
  }
665
679
  _captureAnnotationWithinElement(associationNode, associationProperty, parserContext);
@@ -1634,12 +1648,43 @@ function _generateCSN(edmxAsJson, ignorePersistenceSkip, parserContext, importer
1634
1648
  csn.definitions[parserContext.primarySchema].kind = 'service';
1635
1649
  csn.definitions[parserContext.primarySchema]['@cds.external'] = true;
1636
1650
 
1651
+ if (parserContext.schemaDetails[parserContext.primarySchema]?.containment) {
1652
+ csn.definitions[parserContext.primarySchema]['@odata.containment'] = true;
1653
+ }
1654
+
1637
1655
  // Step 8: parse entity container contents and their annotations
1638
1656
  let schemaData = schemaDataList[parserContext.schemaToSchemaDataIndex[parserContext.primarySchema]];
1639
1657
  let entityContainerElements = schemaData[parserContext.entityContainerName];
1640
1658
  csn.definitions = Object.assign(_parseEntityContainer(csn.definitions, entityContainerElements, parserContext), csn.definitions);
1641
1659
  }
1642
1660
 
1661
+
1662
+ // Step 9: 2. Step for generating $ContainsTarget & $Partner links
1663
+ // The containing composition is already generated. Now the Keys: [] has to be removed
1664
+ // on the backlink association because per OData spec, OData does not expose the foreign key fields
1665
+ // used by the backlink and thus it is save to assume they must be generated for proper mocking
1666
+ //
1667
+ // This happens after Step 8 because that adjusts the names of entity container entities where
1668
+ // entity type and entity set differ in naming
1669
+ for (const entity in csn.definitions) {
1670
+ if (entity.type !== 'entity') continue;
1671
+
1672
+ const containingCompositions = Object.keys(csn.definitions[entity].elements).filter(e =>
1673
+ csn.definitions[entity].elements[e].type === 'cds.Composition' &&
1674
+ csn.definitions[entity].elements[e].on
1675
+ );
1676
+ for (const comp of containingCompositions) {
1677
+ const compTarget = csn.definitions[csn.definitions[entity].elements[comp].target];
1678
+ const backLink = Object.keys(compTarget.elements).find(e =>
1679
+ compTarget.elements[e].type === 'cds.Association' &&
1680
+ compTarget.elements[e].target === entity
1681
+ )
1682
+ if (compTarget.elements[backLink].keys) {
1683
+ delete compTarget.elements[backLink].keys
1684
+ }
1685
+ }
1686
+ }
1687
+
1643
1688
  return JSON.stringify(csn, null, 4);
1644
1689
  }
1645
1690
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "deploy",
3
3
  "dependencies": {
4
- "hdb": "^0",
4
+ "hdb": "^2.0.0",
5
5
  "@sap/hdi-deploy": "^5"
6
6
  },
7
7
  "engines": {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "8.9.11",
3
+ "version": "8.9.13",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sap/cds-dk",
9
- "version": "8.9.11",
9
+ "version": "8.9.13",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@cap-js/asyncapi": "^1.0.0",
@@ -18,8 +18,8 @@
18
18
  "@sap/hdi-deploy": "^5",
19
19
  "axios": "^1",
20
20
  "eslint": "^9",
21
- "express": "^4.17.3",
22
- "hdb": "^0",
21
+ "express": "^4.22.1",
22
+ "hdb": "^0 || ^2",
23
23
  "livereload-js": "^4.0.1",
24
24
  "mustache": "^4.0.1",
25
25
  "node-watch": ">=0.7",
@@ -54,7 +54,7 @@
54
54
  }
55
55
  },
56
56
  "node_modules/@cap-js/openapi": {
57
- "version": "1.2.3",
57
+ "version": "1.3.1",
58
58
  "license": "Apache-2.0",
59
59
  "dependencies": {
60
60
  "pluralize": "^8.0.0"
@@ -76,7 +76,7 @@
76
76
  }
77
77
  },
78
78
  "node_modules/@eslint-community/eslint-utils": {
79
- "version": "4.9.0",
79
+ "version": "4.9.1",
80
80
  "license": "MIT",
81
81
  "dependencies": {
82
82
  "eslint-visitor-keys": "^3.4.3"
@@ -141,7 +141,7 @@
141
141
  }
142
142
  },
143
143
  "node_modules/@eslint/eslintrc": {
144
- "version": "3.3.1",
144
+ "version": "3.3.3",
145
145
  "license": "MIT",
146
146
  "dependencies": {
147
147
  "ajv": "^6.12.4",
@@ -150,7 +150,7 @@
150
150
  "globals": "^14.0.0",
151
151
  "ignore": "^5.2.0",
152
152
  "import-fresh": "^3.2.1",
153
- "js-yaml": "^4.1.0",
153
+ "js-yaml": "^4.1.1",
154
154
  "minimatch": "^3.1.2",
155
155
  "strip-json-comments": "^3.1.1"
156
156
  },
@@ -162,7 +162,7 @@
162
162
  }
163
163
  },
164
164
  "node_modules/@eslint/js": {
165
- "version": "9.39.1",
165
+ "version": "9.39.2",
166
166
  "license": "MIT",
167
167
  "engines": {
168
168
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -230,7 +230,7 @@
230
230
  }
231
231
  },
232
232
  "node_modules/@sap/cds": {
233
- "version": "8.9.7",
233
+ "version": "8.9.8",
234
234
  "license": "SEE LICENSE IN LICENSE",
235
235
  "dependencies": {
236
236
  "@sap/cds-compiler": "^5",
@@ -260,7 +260,7 @@
260
260
  }
261
261
  },
262
262
  "node_modules/@sap/cds-compiler": {
263
- "version": "5.9.12",
263
+ "version": "5.9.14",
264
264
  "license": "SEE LICENSE IN LICENSE",
265
265
  "dependencies": {
266
266
  "antlr4": "4.9.3"
@@ -344,11 +344,11 @@
344
344
  }
345
345
  },
346
346
  "node_modules/@sap/hdi-deploy": {
347
- "version": "5.5.1",
347
+ "version": "5.6.0",
348
348
  "license": "See LICENSE file",
349
349
  "dependencies": {
350
350
  "@sap/hdi": "^4.8.0",
351
- "@sap/xsenv": "^5.2.0",
351
+ "@sap/xsenv": "^6.0.0",
352
352
  "async": "^3.2.6",
353
353
  "dotenv": "^16.4.5",
354
354
  "handlebars": "^4.7.8",
@@ -371,15 +371,15 @@
371
371
  }
372
372
  },
373
373
  "node_modules/@sap/xsenv": {
374
- "version": "5.6.1",
374
+ "version": "6.0.0",
375
375
  "license": "SEE LICENSE IN LICENSE file",
376
376
  "dependencies": {
377
- "debug": "4.4.0",
377
+ "debug": "4.4.1",
378
378
  "node-cache": "^5.1.2",
379
379
  "verror": "1.10.1"
380
380
  },
381
381
  "engines": {
382
- "node": "^18.0.0 || ^20.0.0 || ^22.0.0"
382
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
383
383
  }
384
384
  },
385
385
  "node_modules/@types/estree": {
@@ -547,21 +547,21 @@
547
547
  }
548
548
  },
549
549
  "node_modules/body-parser": {
550
- "version": "1.20.3",
550
+ "version": "1.20.4",
551
551
  "license": "MIT",
552
552
  "dependencies": {
553
- "bytes": "3.1.2",
553
+ "bytes": "~3.1.2",
554
554
  "content-type": "~1.0.5",
555
555
  "debug": "2.6.9",
556
556
  "depd": "2.0.0",
557
- "destroy": "1.2.0",
558
- "http-errors": "2.0.0",
559
- "iconv-lite": "0.4.24",
560
- "on-finished": "2.4.1",
561
- "qs": "6.13.0",
562
- "raw-body": "2.5.2",
557
+ "destroy": "~1.2.0",
558
+ "http-errors": "~2.0.1",
559
+ "iconv-lite": "~0.4.24",
560
+ "on-finished": "~2.4.1",
561
+ "qs": "~6.14.0",
562
+ "raw-body": "~2.5.3",
563
563
  "type-is": "~1.6.18",
564
- "unpipe": "1.0.0"
564
+ "unpipe": "~1.0.0"
565
565
  },
566
566
  "engines": {
567
567
  "node": ">= 0.8",
@@ -731,14 +731,14 @@
731
731
  }
732
732
  },
733
733
  "node_modules/cookie": {
734
- "version": "0.7.1",
734
+ "version": "0.7.2",
735
735
  "license": "MIT",
736
736
  "engines": {
737
737
  "node": ">= 0.6"
738
738
  }
739
739
  },
740
740
  "node_modules/cookie-signature": {
741
- "version": "1.0.6",
741
+ "version": "1.0.7",
742
742
  "license": "MIT"
743
743
  },
744
744
  "node_modules/core-util-is": {
@@ -758,7 +758,7 @@
758
758
  }
759
759
  },
760
760
  "node_modules/debug": {
761
- "version": "4.4.0",
761
+ "version": "4.4.1",
762
762
  "license": "MIT",
763
763
  "dependencies": {
764
764
  "ms": "^2.1.3"
@@ -921,7 +921,7 @@
921
921
  }
922
922
  },
923
923
  "node_modules/eslint": {
924
- "version": "9.39.1",
924
+ "version": "9.39.2",
925
925
  "license": "MIT",
926
926
  "dependencies": {
927
927
  "@eslint-community/eslint-utils": "^4.8.0",
@@ -930,7 +930,7 @@
930
930
  "@eslint/config-helpers": "^0.4.2",
931
931
  "@eslint/core": "^0.17.0",
932
932
  "@eslint/eslintrc": "^3.3.1",
933
- "@eslint/js": "9.39.1",
933
+ "@eslint/js": "9.39.2",
934
934
  "@eslint/plugin-kit": "^0.4.1",
935
935
  "@humanfs/node": "^0.16.6",
936
936
  "@humanwhocodes/module-importer": "^1.0.1",
@@ -1017,7 +1017,7 @@
1017
1017
  }
1018
1018
  },
1019
1019
  "node_modules/esquery": {
1020
- "version": "1.6.0",
1020
+ "version": "1.7.0",
1021
1021
  "license": "BSD-3-Clause",
1022
1022
  "dependencies": {
1023
1023
  "estraverse": "^5.1.0"
@@ -1066,37 +1066,37 @@
1066
1066
  }
1067
1067
  },
1068
1068
  "node_modules/express": {
1069
- "version": "4.21.2",
1069
+ "version": "4.22.1",
1070
1070
  "license": "MIT",
1071
1071
  "dependencies": {
1072
1072
  "accepts": "~1.3.8",
1073
1073
  "array-flatten": "1.1.1",
1074
- "body-parser": "1.20.3",
1075
- "content-disposition": "0.5.4",
1074
+ "body-parser": "~1.20.3",
1075
+ "content-disposition": "~0.5.4",
1076
1076
  "content-type": "~1.0.4",
1077
- "cookie": "0.7.1",
1078
- "cookie-signature": "1.0.6",
1077
+ "cookie": "~0.7.1",
1078
+ "cookie-signature": "~1.0.6",
1079
1079
  "debug": "2.6.9",
1080
1080
  "depd": "2.0.0",
1081
1081
  "encodeurl": "~2.0.0",
1082
1082
  "escape-html": "~1.0.3",
1083
1083
  "etag": "~1.8.1",
1084
- "finalhandler": "1.3.1",
1085
- "fresh": "0.5.2",
1086
- "http-errors": "2.0.0",
1084
+ "finalhandler": "~1.3.1",
1085
+ "fresh": "~0.5.2",
1086
+ "http-errors": "~2.0.0",
1087
1087
  "merge-descriptors": "1.0.3",
1088
1088
  "methods": "~1.1.2",
1089
- "on-finished": "2.4.1",
1089
+ "on-finished": "~2.4.1",
1090
1090
  "parseurl": "~1.3.3",
1091
- "path-to-regexp": "0.1.12",
1091
+ "path-to-regexp": "~0.1.12",
1092
1092
  "proxy-addr": "~2.0.7",
1093
- "qs": "6.13.0",
1093
+ "qs": "~6.14.0",
1094
1094
  "range-parser": "~1.2.1",
1095
1095
  "safe-buffer": "5.2.1",
1096
- "send": "0.19.0",
1097
- "serve-static": "1.16.2",
1096
+ "send": "~0.19.0",
1097
+ "serve-static": "~1.16.2",
1098
1098
  "setprototypeof": "1.2.0",
1099
- "statuses": "2.0.1",
1099
+ "statuses": "~2.0.1",
1100
1100
  "type-is": "~1.6.18",
1101
1101
  "utils-merge": "1.0.1",
1102
1102
  "vary": "~1.1.2"
@@ -1165,15 +1165,15 @@
1165
1165
  }
1166
1166
  },
1167
1167
  "node_modules/finalhandler": {
1168
- "version": "1.3.1",
1168
+ "version": "1.3.2",
1169
1169
  "license": "MIT",
1170
1170
  "dependencies": {
1171
1171
  "debug": "2.6.9",
1172
1172
  "encodeurl": "~2.0.0",
1173
1173
  "escape-html": "~1.0.3",
1174
- "on-finished": "2.4.1",
1174
+ "on-finished": "~2.4.1",
1175
1175
  "parseurl": "~1.3.3",
1176
- "statuses": "2.0.1",
1176
+ "statuses": "~2.0.2",
1177
1177
  "unpipe": "~1.0.0"
1178
1178
  },
1179
1179
  "engines": {
@@ -1413,27 +1413,48 @@
1413
1413
  }
1414
1414
  },
1415
1415
  "node_modules/hdb": {
1416
- "version": "0.19.12",
1416
+ "version": "2.26.4",
1417
1417
  "license": "Apache-2.0",
1418
1418
  "dependencies": {
1419
- "iconv-lite": "^0.4.18"
1419
+ "iconv-lite": "0.7.0"
1420
+ },
1421
+ "engines": {
1422
+ "node": ">= 18"
1423
+ },
1424
+ "optionalDependencies": {
1425
+ "lz4-wasm-nodejs": "0.9.2"
1426
+ }
1427
+ },
1428
+ "node_modules/hdb/node_modules/iconv-lite": {
1429
+ "version": "0.7.0",
1430
+ "license": "MIT",
1431
+ "dependencies": {
1432
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
1420
1433
  },
1421
1434
  "engines": {
1422
- "node": ">= 0.12"
1435
+ "node": ">=0.10.0"
1436
+ },
1437
+ "funding": {
1438
+ "type": "opencollective",
1439
+ "url": "https://opencollective.com/express"
1423
1440
  }
1424
1441
  },
1425
1442
  "node_modules/http-errors": {
1426
- "version": "2.0.0",
1443
+ "version": "2.0.1",
1427
1444
  "license": "MIT",
1428
1445
  "dependencies": {
1429
- "depd": "2.0.0",
1430
- "inherits": "2.0.4",
1431
- "setprototypeof": "1.2.0",
1432
- "statuses": "2.0.1",
1433
- "toidentifier": "1.0.1"
1446
+ "depd": "~2.0.0",
1447
+ "inherits": "~2.0.4",
1448
+ "setprototypeof": "~1.2.0",
1449
+ "statuses": "~2.0.2",
1450
+ "toidentifier": "~1.0.1"
1434
1451
  },
1435
1452
  "engines": {
1436
1453
  "node": ">= 0.8"
1454
+ },
1455
+ "funding": {
1456
+ "type": "opencollective",
1457
+ "url": "https://opencollective.com/express"
1437
1458
  }
1438
1459
  },
1439
1460
  "node_modules/iconv-lite": {
@@ -1598,6 +1619,11 @@
1598
1619
  "version": "4.6.2",
1599
1620
  "license": "MIT"
1600
1621
  },
1622
+ "node_modules/lz4-wasm-nodejs": {
1623
+ "version": "0.9.2",
1624
+ "license": "MIT",
1625
+ "optional": true
1626
+ },
1601
1627
  "node_modules/math-intrinsics": {
1602
1628
  "version": "1.1.0",
1603
1629
  "license": "MIT",
@@ -1941,10 +1967,10 @@
1941
1967
  }
1942
1968
  },
1943
1969
  "node_modules/qs": {
1944
- "version": "6.13.0",
1970
+ "version": "6.14.1",
1945
1971
  "license": "BSD-3-Clause",
1946
1972
  "dependencies": {
1947
- "side-channel": "^1.0.6"
1973
+ "side-channel": "^1.1.0"
1948
1974
  },
1949
1975
  "engines": {
1950
1976
  "node": ">=0.6"
@@ -1961,13 +1987,13 @@
1961
1987
  }
1962
1988
  },
1963
1989
  "node_modules/raw-body": {
1964
- "version": "2.5.2",
1990
+ "version": "2.5.3",
1965
1991
  "license": "MIT",
1966
1992
  "dependencies": {
1967
- "bytes": "3.1.2",
1968
- "http-errors": "2.0.0",
1969
- "iconv-lite": "0.4.24",
1970
- "unpipe": "1.0.0"
1993
+ "bytes": "~3.1.2",
1994
+ "http-errors": "~2.0.1",
1995
+ "iconv-lite": "~0.4.24",
1996
+ "unpipe": "~1.0.0"
1971
1997
  },
1972
1998
  "engines": {
1973
1999
  "node": ">= 0.8"
@@ -2038,8 +2064,11 @@
2038
2064
  "license": "MIT"
2039
2065
  },
2040
2066
  "node_modules/sax": {
2041
- "version": "1.4.3",
2042
- "license": "BlueOak-1.0.0"
2067
+ "version": "1.4.4",
2068
+ "license": "BlueOak-1.0.0",
2069
+ "engines": {
2070
+ "node": ">=11.0.0"
2071
+ }
2043
2072
  },
2044
2073
  "node_modules/semver": {
2045
2074
  "version": "7.7.3",
@@ -2052,22 +2081,22 @@
2052
2081
  }
2053
2082
  },
2054
2083
  "node_modules/send": {
2055
- "version": "0.19.0",
2084
+ "version": "0.19.2",
2056
2085
  "license": "MIT",
2057
2086
  "dependencies": {
2058
2087
  "debug": "2.6.9",
2059
2088
  "depd": "2.0.0",
2060
2089
  "destroy": "1.2.0",
2061
- "encodeurl": "~1.0.2",
2090
+ "encodeurl": "~2.0.0",
2062
2091
  "escape-html": "~1.0.3",
2063
2092
  "etag": "~1.8.1",
2064
- "fresh": "0.5.2",
2065
- "http-errors": "2.0.0",
2093
+ "fresh": "~0.5.2",
2094
+ "http-errors": "~2.0.1",
2066
2095
  "mime": "1.6.0",
2067
2096
  "ms": "2.1.3",
2068
- "on-finished": "2.4.1",
2097
+ "on-finished": "~2.4.1",
2069
2098
  "range-parser": "~1.2.1",
2070
- "statuses": "2.0.1"
2099
+ "statuses": "~2.0.2"
2071
2100
  },
2072
2101
  "engines": {
2073
2102
  "node": ">= 0.8.0"
@@ -2084,21 +2113,14 @@
2084
2113
  "version": "2.0.0",
2085
2114
  "license": "MIT"
2086
2115
  },
2087
- "node_modules/send/node_modules/encodeurl": {
2088
- "version": "1.0.2",
2089
- "license": "MIT",
2090
- "engines": {
2091
- "node": ">= 0.8"
2092
- }
2093
- },
2094
2116
  "node_modules/serve-static": {
2095
- "version": "1.16.2",
2117
+ "version": "1.16.3",
2096
2118
  "license": "MIT",
2097
2119
  "dependencies": {
2098
2120
  "encodeurl": "~2.0.0",
2099
2121
  "escape-html": "~1.0.3",
2100
2122
  "parseurl": "~1.3.3",
2101
- "send": "0.19.0"
2123
+ "send": "~0.19.1"
2102
2124
  },
2103
2125
  "engines": {
2104
2126
  "node": ">= 0.8.0"
@@ -2240,7 +2262,7 @@
2240
2262
  }
2241
2263
  },
2242
2264
  "node_modules/statuses": {
2243
- "version": "2.0.1",
2265
+ "version": "2.0.2",
2244
2266
  "license": "MIT",
2245
2267
  "engines": {
2246
2268
  "node": ">= 0.8"
@@ -2435,7 +2457,7 @@
2435
2457
  "optional": true
2436
2458
  },
2437
2459
  "node_modules/ws": {
2438
- "version": "8.18.3",
2460
+ "version": "8.19.0",
2439
2461
  "license": "MIT",
2440
2462
  "engines": {
2441
2463
  "node": ">=10.0.0"
@@ -2471,13 +2493,16 @@
2471
2493
  }
2472
2494
  },
2473
2495
  "node_modules/yaml": {
2474
- "version": "2.8.1",
2496
+ "version": "2.8.2",
2475
2497
  "license": "ISC",
2476
2498
  "bin": {
2477
2499
  "yaml": "bin.mjs"
2478
2500
  },
2479
2501
  "engines": {
2480
2502
  "node": ">= 14.6"
2503
+ },
2504
+ "funding": {
2505
+ "url": "https://github.com/sponsors/eemeli"
2481
2506
  }
2482
2507
  },
2483
2508
  "node_modules/yocto-queue": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "8.9.11",
3
+ "version": "8.9.13",
4
4
  "description": "Command line client and development toolkit for the SAP Cloud Application Programming Model",
5
5
  "homepage": "https://cap.cloud.sap/",
6
6
  "keywords": [
@@ -26,8 +26,8 @@
26
26
  "@sap/hdi-deploy": "^5",
27
27
  "axios": "^1",
28
28
  "eslint": "^9",
29
- "express": "^4.17.3",
30
- "hdb": "^0",
29
+ "express": "^4.22.1",
30
+ "hdb": "^0 || ^2",
31
31
  "livereload-js": "^4.0.1",
32
32
  "mustache": "^4.0.1",
33
33
  "node-watch": ">=0.7",