@sap/cds-dk 8.9.10 → 8.9.12

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.12 - 2025-12-16
11
+
12
+ ### Fixed
13
+
14
+ - `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).
15
+ - `cds import` now considers OData contained navigation properties as compositions instead of associations.
16
+
17
+ ## Version 8.9.11 - 2025-11-21
18
+
19
+ ### Fixed
20
+
21
+ - Bump dependencies in shrinkwrap.
22
+
10
23
  ## Version 8.9.10 - 2025-09-19
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.9",
3
+ "version": "8.9.12",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@sap/cds-dk",
9
- "version": "8.9.9",
9
+ "version": "8.9.12",
10
10
  "license": "SEE LICENSE IN LICENSE",
11
11
  "dependencies": {
12
12
  "@cap-js/asyncapi": "^1.0.0",
@@ -19,7 +19,7 @@
19
19
  "axios": "^1",
20
20
  "eslint": "^9",
21
21
  "express": "^4.17.3",
22
- "hdb": "^0",
22
+ "hdb": "^0 || ^2",
23
23
  "livereload-js": "^4.0.1",
24
24
  "mustache": "^4.0.1",
25
25
  "node-watch": ">=0.7",
@@ -102,17 +102,17 @@
102
102
  }
103
103
  },
104
104
  "node_modules/@eslint-community/regexpp": {
105
- "version": "4.12.1",
105
+ "version": "4.12.2",
106
106
  "license": "MIT",
107
107
  "engines": {
108
108
  "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
109
109
  }
110
110
  },
111
111
  "node_modules/@eslint/config-array": {
112
- "version": "0.21.0",
112
+ "version": "0.21.1",
113
113
  "license": "Apache-2.0",
114
114
  "dependencies": {
115
- "@eslint/object-schema": "^2.1.6",
115
+ "@eslint/object-schema": "^2.1.7",
116
116
  "debug": "^4.3.1",
117
117
  "minimatch": "^3.1.2"
118
118
  },
@@ -121,14 +121,17 @@
121
121
  }
122
122
  },
123
123
  "node_modules/@eslint/config-helpers": {
124
- "version": "0.3.1",
124
+ "version": "0.4.2",
125
125
  "license": "Apache-2.0",
126
+ "dependencies": {
127
+ "@eslint/core": "^0.17.0"
128
+ },
126
129
  "engines": {
127
130
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
128
131
  }
129
132
  },
130
133
  "node_modules/@eslint/core": {
131
- "version": "0.15.2",
134
+ "version": "0.17.0",
132
135
  "license": "Apache-2.0",
133
136
  "dependencies": {
134
137
  "@types/json-schema": "^7.0.15"
@@ -138,7 +141,7 @@
138
141
  }
139
142
  },
140
143
  "node_modules/@eslint/eslintrc": {
141
- "version": "3.3.1",
144
+ "version": "3.3.3",
142
145
  "license": "MIT",
143
146
  "dependencies": {
144
147
  "ajv": "^6.12.4",
@@ -147,7 +150,7 @@
147
150
  "globals": "^14.0.0",
148
151
  "ignore": "^5.2.0",
149
152
  "import-fresh": "^3.2.1",
150
- "js-yaml": "^4.1.0",
153
+ "js-yaml": "^4.1.1",
151
154
  "minimatch": "^3.1.2",
152
155
  "strip-json-comments": "^3.1.1"
153
156
  },
@@ -159,7 +162,7 @@
159
162
  }
160
163
  },
161
164
  "node_modules/@eslint/js": {
162
- "version": "9.35.0",
165
+ "version": "9.39.2",
163
166
  "license": "MIT",
164
167
  "engines": {
165
168
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
@@ -169,17 +172,17 @@
169
172
  }
170
173
  },
171
174
  "node_modules/@eslint/object-schema": {
172
- "version": "2.1.6",
175
+ "version": "2.1.7",
173
176
  "license": "Apache-2.0",
174
177
  "engines": {
175
178
  "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
176
179
  }
177
180
  },
178
181
  "node_modules/@eslint/plugin-kit": {
179
- "version": "0.3.5",
182
+ "version": "0.4.1",
180
183
  "license": "Apache-2.0",
181
184
  "dependencies": {
182
- "@eslint/core": "^0.15.2",
185
+ "@eslint/core": "^0.17.0",
183
186
  "levn": "^0.4.1"
184
187
  },
185
188
  "engines": {
@@ -227,7 +230,7 @@
227
230
  }
228
231
  },
229
232
  "node_modules/@sap/cds": {
230
- "version": "8.9.6",
233
+ "version": "8.9.7",
231
234
  "license": "SEE LICENSE IN LICENSE",
232
235
  "dependencies": {
233
236
  "@sap/cds-compiler": "^5",
@@ -341,11 +344,11 @@
341
344
  }
342
345
  },
343
346
  "node_modules/@sap/hdi-deploy": {
344
- "version": "5.5.0",
347
+ "version": "5.6.0",
345
348
  "license": "See LICENSE file",
346
349
  "dependencies": {
347
350
  "@sap/hdi": "^4.8.0",
348
- "@sap/xsenv": "^5.2.0",
351
+ "@sap/xsenv": "^6.0.0",
349
352
  "async": "^3.2.6",
350
353
  "dotenv": "^16.4.5",
351
354
  "handlebars": "^4.7.8",
@@ -368,15 +371,15 @@
368
371
  }
369
372
  },
370
373
  "node_modules/@sap/xsenv": {
371
- "version": "5.6.1",
374
+ "version": "6.0.0",
372
375
  "license": "SEE LICENSE IN LICENSE file",
373
376
  "dependencies": {
374
- "debug": "4.4.0",
377
+ "debug": "4.4.1",
375
378
  "node-cache": "^5.1.2",
376
379
  "verror": "1.10.1"
377
380
  },
378
381
  "engines": {
379
- "node": "^18.0.0 || ^20.0.0 || ^22.0.0"
382
+ "node": "^20.0.0 || ^22.0.0 || ^24.0.0"
380
383
  }
381
384
  },
382
385
  "node_modules/@types/estree": {
@@ -473,7 +476,7 @@
473
476
  "license": "MIT"
474
477
  },
475
478
  "node_modules/axios": {
476
- "version": "1.12.2",
479
+ "version": "1.13.2",
477
480
  "license": "MIT",
478
481
  "dependencies": {
479
482
  "follow-redirects": "^1.15.6",
@@ -544,21 +547,21 @@
544
547
  }
545
548
  },
546
549
  "node_modules/body-parser": {
547
- "version": "1.20.3",
550
+ "version": "1.20.4",
548
551
  "license": "MIT",
549
552
  "dependencies": {
550
- "bytes": "3.1.2",
553
+ "bytes": "~3.1.2",
551
554
  "content-type": "~1.0.5",
552
555
  "debug": "2.6.9",
553
556
  "depd": "2.0.0",
554
- "destroy": "1.2.0",
555
- "http-errors": "2.0.0",
556
- "iconv-lite": "0.4.24",
557
- "on-finished": "2.4.1",
558
- "qs": "6.13.0",
559
- "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",
560
563
  "type-is": "~1.6.18",
561
- "unpipe": "1.0.0"
564
+ "unpipe": "~1.0.0"
562
565
  },
563
566
  "engines": {
564
567
  "node": ">= 0.8",
@@ -728,14 +731,14 @@
728
731
  }
729
732
  },
730
733
  "node_modules/cookie": {
731
- "version": "0.7.1",
734
+ "version": "0.7.2",
732
735
  "license": "MIT",
733
736
  "engines": {
734
737
  "node": ">= 0.6"
735
738
  }
736
739
  },
737
740
  "node_modules/cookie-signature": {
738
- "version": "1.0.6",
741
+ "version": "1.0.7",
739
742
  "license": "MIT"
740
743
  },
741
744
  "node_modules/core-util-is": {
@@ -755,7 +758,7 @@
755
758
  }
756
759
  },
757
760
  "node_modules/debug": {
758
- "version": "4.4.0",
761
+ "version": "4.4.1",
759
762
  "license": "MIT",
760
763
  "dependencies": {
761
764
  "ms": "^2.1.3"
@@ -818,7 +821,7 @@
818
821
  }
819
822
  },
820
823
  "node_modules/detect-libc": {
821
- "version": "2.1.0",
824
+ "version": "2.1.2",
822
825
  "license": "Apache-2.0",
823
826
  "optional": true,
824
827
  "engines": {
@@ -918,22 +921,21 @@
918
921
  }
919
922
  },
920
923
  "node_modules/eslint": {
921
- "version": "9.35.0",
924
+ "version": "9.39.2",
922
925
  "license": "MIT",
923
926
  "dependencies": {
924
927
  "@eslint-community/eslint-utils": "^4.8.0",
925
928
  "@eslint-community/regexpp": "^4.12.1",
926
- "@eslint/config-array": "^0.21.0",
927
- "@eslint/config-helpers": "^0.3.1",
928
- "@eslint/core": "^0.15.2",
929
+ "@eslint/config-array": "^0.21.1",
930
+ "@eslint/config-helpers": "^0.4.2",
931
+ "@eslint/core": "^0.17.0",
929
932
  "@eslint/eslintrc": "^3.3.1",
930
- "@eslint/js": "9.35.0",
931
- "@eslint/plugin-kit": "^0.3.5",
933
+ "@eslint/js": "9.39.2",
934
+ "@eslint/plugin-kit": "^0.4.1",
932
935
  "@humanfs/node": "^0.16.6",
933
936
  "@humanwhocodes/module-importer": "^1.0.1",
934
937
  "@humanwhocodes/retry": "^0.4.2",
935
938
  "@types/estree": "^1.0.6",
936
- "@types/json-schema": "^7.0.15",
937
939
  "ajv": "^6.12.4",
938
940
  "chalk": "^4.0.0",
939
941
  "cross-spawn": "^7.0.6",
@@ -1064,37 +1066,37 @@
1064
1066
  }
1065
1067
  },
1066
1068
  "node_modules/express": {
1067
- "version": "4.21.2",
1069
+ "version": "4.22.1",
1068
1070
  "license": "MIT",
1069
1071
  "dependencies": {
1070
1072
  "accepts": "~1.3.8",
1071
1073
  "array-flatten": "1.1.1",
1072
- "body-parser": "1.20.3",
1073
- "content-disposition": "0.5.4",
1074
+ "body-parser": "~1.20.3",
1075
+ "content-disposition": "~0.5.4",
1074
1076
  "content-type": "~1.0.4",
1075
- "cookie": "0.7.1",
1076
- "cookie-signature": "1.0.6",
1077
+ "cookie": "~0.7.1",
1078
+ "cookie-signature": "~1.0.6",
1077
1079
  "debug": "2.6.9",
1078
1080
  "depd": "2.0.0",
1079
1081
  "encodeurl": "~2.0.0",
1080
1082
  "escape-html": "~1.0.3",
1081
1083
  "etag": "~1.8.1",
1082
- "finalhandler": "1.3.1",
1083
- "fresh": "0.5.2",
1084
- "http-errors": "2.0.0",
1084
+ "finalhandler": "~1.3.1",
1085
+ "fresh": "~0.5.2",
1086
+ "http-errors": "~2.0.0",
1085
1087
  "merge-descriptors": "1.0.3",
1086
1088
  "methods": "~1.1.2",
1087
- "on-finished": "2.4.1",
1089
+ "on-finished": "~2.4.1",
1088
1090
  "parseurl": "~1.3.3",
1089
- "path-to-regexp": "0.1.12",
1091
+ "path-to-regexp": "~0.1.12",
1090
1092
  "proxy-addr": "~2.0.7",
1091
- "qs": "6.13.0",
1093
+ "qs": "~6.14.0",
1092
1094
  "range-parser": "~1.2.1",
1093
1095
  "safe-buffer": "5.2.1",
1094
- "send": "0.19.0",
1095
- "serve-static": "1.16.2",
1096
+ "send": "~0.19.0",
1097
+ "serve-static": "~1.16.2",
1096
1098
  "setprototypeof": "1.2.0",
1097
- "statuses": "2.0.1",
1099
+ "statuses": "~2.0.1",
1098
1100
  "type-is": "~1.6.18",
1099
1101
  "utils-merge": "1.0.1",
1100
1102
  "vary": "~1.1.2"
@@ -1163,15 +1165,15 @@
1163
1165
  }
1164
1166
  },
1165
1167
  "node_modules/finalhandler": {
1166
- "version": "1.3.1",
1168
+ "version": "1.3.2",
1167
1169
  "license": "MIT",
1168
1170
  "dependencies": {
1169
1171
  "debug": "2.6.9",
1170
1172
  "encodeurl": "~2.0.0",
1171
1173
  "escape-html": "~1.0.3",
1172
- "on-finished": "2.4.1",
1174
+ "on-finished": "~2.4.1",
1173
1175
  "parseurl": "~1.3.3",
1174
- "statuses": "2.0.1",
1176
+ "statuses": "~2.0.2",
1175
1177
  "unpipe": "~1.0.0"
1176
1178
  },
1177
1179
  "engines": {
@@ -1237,7 +1239,7 @@
1237
1239
  }
1238
1240
  },
1239
1241
  "node_modules/form-data": {
1240
- "version": "4.0.4",
1242
+ "version": "4.0.5",
1241
1243
  "license": "MIT",
1242
1244
  "dependencies": {
1243
1245
  "asynckit": "^0.4.0",
@@ -1411,27 +1413,48 @@
1411
1413
  }
1412
1414
  },
1413
1415
  "node_modules/hdb": {
1414
- "version": "0.19.12",
1416
+ "version": "2.26.3",
1415
1417
  "license": "Apache-2.0",
1416
1418
  "dependencies": {
1417
- "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"
1418
1433
  },
1419
1434
  "engines": {
1420
- "node": ">= 0.12"
1435
+ "node": ">=0.10.0"
1436
+ },
1437
+ "funding": {
1438
+ "type": "opencollective",
1439
+ "url": "https://opencollective.com/express"
1421
1440
  }
1422
1441
  },
1423
1442
  "node_modules/http-errors": {
1424
- "version": "2.0.0",
1443
+ "version": "2.0.1",
1425
1444
  "license": "MIT",
1426
1445
  "dependencies": {
1427
- "depd": "2.0.0",
1428
- "inherits": "2.0.4",
1429
- "setprototypeof": "1.2.0",
1430
- "statuses": "2.0.1",
1431
- "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"
1432
1451
  },
1433
1452
  "engines": {
1434
1453
  "node": ">= 0.8"
1454
+ },
1455
+ "funding": {
1456
+ "type": "opencollective",
1457
+ "url": "https://opencollective.com/express"
1435
1458
  }
1436
1459
  },
1437
1460
  "node_modules/iconv-lite": {
@@ -1536,7 +1559,7 @@
1536
1559
  "license": "ISC"
1537
1560
  },
1538
1561
  "node_modules/js-yaml": {
1539
- "version": "4.1.0",
1562
+ "version": "4.1.1",
1540
1563
  "license": "MIT",
1541
1564
  "dependencies": {
1542
1565
  "argparse": "^2.0.1"
@@ -1596,6 +1619,11 @@
1596
1619
  "version": "4.6.2",
1597
1620
  "license": "MIT"
1598
1621
  },
1622
+ "node_modules/lz4-wasm-nodejs": {
1623
+ "version": "0.9.2",
1624
+ "license": "MIT",
1625
+ "optional": true
1626
+ },
1599
1627
  "node_modules/math-intrinsics": {
1600
1628
  "version": "1.1.0",
1601
1629
  "license": "MIT",
@@ -1727,7 +1755,7 @@
1727
1755
  "license": "MIT"
1728
1756
  },
1729
1757
  "node_modules/node-abi": {
1730
- "version": "3.77.0",
1758
+ "version": "3.85.0",
1731
1759
  "license": "MIT",
1732
1760
  "optional": true,
1733
1761
  "dependencies": {
@@ -1939,10 +1967,10 @@
1939
1967
  }
1940
1968
  },
1941
1969
  "node_modules/qs": {
1942
- "version": "6.13.0",
1970
+ "version": "6.14.0",
1943
1971
  "license": "BSD-3-Clause",
1944
1972
  "dependencies": {
1945
- "side-channel": "^1.0.6"
1973
+ "side-channel": "^1.1.0"
1946
1974
  },
1947
1975
  "engines": {
1948
1976
  "node": ">=0.6"
@@ -1959,13 +1987,13 @@
1959
1987
  }
1960
1988
  },
1961
1989
  "node_modules/raw-body": {
1962
- "version": "2.5.2",
1990
+ "version": "2.5.3",
1963
1991
  "license": "MIT",
1964
1992
  "dependencies": {
1965
- "bytes": "3.1.2",
1966
- "http-errors": "2.0.0",
1967
- "iconv-lite": "0.4.24",
1968
- "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"
1969
1997
  },
1970
1998
  "engines": {
1971
1999
  "node": ">= 0.8"
@@ -2036,11 +2064,11 @@
2036
2064
  "license": "MIT"
2037
2065
  },
2038
2066
  "node_modules/sax": {
2039
- "version": "1.4.1",
2040
- "license": "ISC"
2067
+ "version": "1.4.3",
2068
+ "license": "BlueOak-1.0.0"
2041
2069
  },
2042
2070
  "node_modules/semver": {
2043
- "version": "7.7.2",
2071
+ "version": "7.7.3",
2044
2072
  "license": "ISC",
2045
2073
  "bin": {
2046
2074
  "semver": "bin/semver.js"
@@ -2050,13 +2078,13 @@
2050
2078
  }
2051
2079
  },
2052
2080
  "node_modules/send": {
2053
- "version": "0.19.0",
2081
+ "version": "0.19.1",
2054
2082
  "license": "MIT",
2055
2083
  "dependencies": {
2056
2084
  "debug": "2.6.9",
2057
2085
  "depd": "2.0.0",
2058
2086
  "destroy": "1.2.0",
2059
- "encodeurl": "~1.0.2",
2087
+ "encodeurl": "~2.0.0",
2060
2088
  "escape-html": "~1.0.3",
2061
2089
  "etag": "~1.8.1",
2062
2090
  "fresh": "0.5.2",
@@ -2082,8 +2110,22 @@
2082
2110
  "version": "2.0.0",
2083
2111
  "license": "MIT"
2084
2112
  },
2085
- "node_modules/send/node_modules/encodeurl": {
2086
- "version": "1.0.2",
2113
+ "node_modules/send/node_modules/http-errors": {
2114
+ "version": "2.0.0",
2115
+ "license": "MIT",
2116
+ "dependencies": {
2117
+ "depd": "2.0.0",
2118
+ "inherits": "2.0.4",
2119
+ "setprototypeof": "1.2.0",
2120
+ "statuses": "2.0.1",
2121
+ "toidentifier": "1.0.1"
2122
+ },
2123
+ "engines": {
2124
+ "node": ">= 0.8"
2125
+ }
2126
+ },
2127
+ "node_modules/send/node_modules/statuses": {
2128
+ "version": "2.0.1",
2087
2129
  "license": "MIT",
2088
2130
  "engines": {
2089
2131
  "node": ">= 0.8"
@@ -2102,6 +2144,67 @@
2102
2144
  "node": ">= 0.8.0"
2103
2145
  }
2104
2146
  },
2147
+ "node_modules/serve-static/node_modules/debug": {
2148
+ "version": "2.6.9",
2149
+ "license": "MIT",
2150
+ "dependencies": {
2151
+ "ms": "2.0.0"
2152
+ }
2153
+ },
2154
+ "node_modules/serve-static/node_modules/debug/node_modules/ms": {
2155
+ "version": "2.0.0",
2156
+ "license": "MIT"
2157
+ },
2158
+ "node_modules/serve-static/node_modules/http-errors": {
2159
+ "version": "2.0.0",
2160
+ "license": "MIT",
2161
+ "dependencies": {
2162
+ "depd": "2.0.0",
2163
+ "inherits": "2.0.4",
2164
+ "setprototypeof": "1.2.0",
2165
+ "statuses": "2.0.1",
2166
+ "toidentifier": "1.0.1"
2167
+ },
2168
+ "engines": {
2169
+ "node": ">= 0.8"
2170
+ }
2171
+ },
2172
+ "node_modules/serve-static/node_modules/send": {
2173
+ "version": "0.19.0",
2174
+ "license": "MIT",
2175
+ "dependencies": {
2176
+ "debug": "2.6.9",
2177
+ "depd": "2.0.0",
2178
+ "destroy": "1.2.0",
2179
+ "encodeurl": "~1.0.2",
2180
+ "escape-html": "~1.0.3",
2181
+ "etag": "~1.8.1",
2182
+ "fresh": "0.5.2",
2183
+ "http-errors": "2.0.0",
2184
+ "mime": "1.6.0",
2185
+ "ms": "2.1.3",
2186
+ "on-finished": "2.4.1",
2187
+ "range-parser": "~1.2.1",
2188
+ "statuses": "2.0.1"
2189
+ },
2190
+ "engines": {
2191
+ "node": ">= 0.8.0"
2192
+ }
2193
+ },
2194
+ "node_modules/serve-static/node_modules/send/node_modules/encodeurl": {
2195
+ "version": "1.0.2",
2196
+ "license": "MIT",
2197
+ "engines": {
2198
+ "node": ">= 0.8"
2199
+ }
2200
+ },
2201
+ "node_modules/serve-static/node_modules/statuses": {
2202
+ "version": "2.0.1",
2203
+ "license": "MIT",
2204
+ "engines": {
2205
+ "node": ">= 0.8"
2206
+ }
2207
+ },
2105
2208
  "node_modules/setprototypeof": {
2106
2209
  "version": "1.2.0",
2107
2210
  "license": "ISC"
@@ -2238,7 +2341,7 @@
2238
2341
  }
2239
2342
  },
2240
2343
  "node_modules/statuses": {
2241
- "version": "2.0.1",
2344
+ "version": "2.0.2",
2242
2345
  "license": "MIT",
2243
2346
  "engines": {
2244
2347
  "node": ">= 0.8"
@@ -2469,13 +2572,16 @@
2469
2572
  }
2470
2573
  },
2471
2574
  "node_modules/yaml": {
2472
- "version": "2.8.1",
2575
+ "version": "2.8.2",
2473
2576
  "license": "ISC",
2474
2577
  "bin": {
2475
2578
  "yaml": "bin.mjs"
2476
2579
  },
2477
2580
  "engines": {
2478
2581
  "node": ">= 14.6"
2582
+ },
2583
+ "funding": {
2584
+ "url": "https://github.com/sponsors/eemeli"
2479
2585
  }
2480
2586
  },
2481
2587
  "node_modules/yocto-queue": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/cds-dk",
3
- "version": "8.9.10",
3
+ "version": "8.9.12",
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": [
@@ -27,7 +27,7 @@
27
27
  "axios": "^1",
28
28
  "eslint": "^9",
29
29
  "express": "^4.17.3",
30
- "hdb": "^0",
30
+ "hdb": "^0 || ^2",
31
31
  "livereload-js": "^4.0.1",
32
32
  "mustache": "^4.0.1",
33
33
  "node-watch": ">=0.7",