@sap/ux-specification 1.136.2 → 1.136.4

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.
Files changed (84) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +2 -2
  3. package/dist/documentation/v2/v2-ApplicationV2.html +2 -2
  4. package/dist/documentation/v2/v2-ListReport.html +2 -2
  5. package/dist/documentation/v2/v2-ListReportNew.html +2 -2
  6. package/dist/documentation/v2/v2-ObjectPage.html +2 -2
  7. package/dist/documentation/v2/v2-OverviewPage.html +2 -2
  8. package/dist/documentation/v4/v4-ApplicationV4.html +2 -2
  9. package/dist/documentation/v4/v4-BuildingBlocks.html +2 -2
  10. package/dist/documentation/v4/v4-FreestylePage.html +2 -2
  11. package/dist/documentation/v4/v4-ListReport.html +2 -2
  12. package/dist/documentation/v4/v4-ObjectPage.html +2 -2
  13. package/dist/index-min.js +109 -109
  14. package/dist/index-min.js.map +4 -4
  15. package/dist/schemas/v2/ListReportNewConfig.json +42 -0
  16. package/dist/schemas/v4/BuildingBlocksConfig.json +200 -122
  17. package/dist/schemas/v4/ListReportConfig.json +136 -0
  18. package/dist/schemas/v4/ObjectPageConfig.json +136 -0
  19. package/dist/specification/package.json +9 -9
  20. package/dist/specification/scripts/extractDocu.js +65 -56
  21. package/dist/specification/scripts/extractDocu.js.map +1 -1
  22. package/dist/specification/scripts/schema/to-json-schema.d.ts.map +1 -1
  23. package/dist/specification/scripts/schema/to-json-schema.js +3 -2
  24. package/dist/specification/scripts/schema/to-json-schema.js.map +1 -1
  25. package/dist/specification/src/api.js +2 -2
  26. package/dist/specification/src/sync/v2/generate/listReport.js +1 -1
  27. package/dist/specification/src/sync/v2/generate/listReport.js.map +1 -1
  28. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts +1 -1
  29. package/dist/specification/src/sync/v2/generate/schemaAdaptation.d.ts.map +1 -1
  30. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js +1 -2
  31. package/dist/specification/src/sync/v2/generate/schemaAdaptation.js.map +1 -1
  32. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Action.d.ts +5 -0
  33. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Action.d.ts.map +1 -0
  34. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Action.js +24 -0
  35. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/Action.js.map +1 -0
  36. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/ListHeader.d.ts +12 -0
  37. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/ListHeader.d.ts.map +1 -0
  38. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/ListHeader.js +58 -0
  39. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/ListHeader.js.map +1 -0
  40. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.d.ts +7 -0
  41. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.d.ts.map +1 -0
  42. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.js +23 -0
  43. package/dist/specification/src/sync/v2/genericSchemaHandling/controls/index.js.map +1 -0
  44. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/ListReportNew.d.ts +2 -0
  45. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/ListReportNew.d.ts.map +1 -1
  46. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/ListReportNew.js +15 -2
  47. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/ListReportNew.js.map +1 -1
  48. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.d.ts +3 -3
  49. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.d.ts.map +1 -1
  50. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.js +10 -8
  51. package/dist/specification/src/sync/v2/genericSchemaHandling/pages/pageAccess.js.map +1 -1
  52. package/dist/specification/src/sync/v2/import/importPage.d.ts.map +1 -1
  53. package/dist/specification/src/sync/v2/import/importPage.js +1 -2
  54. package/dist/specification/src/sync/v2/import/importPage.js.map +1 -1
  55. package/dist/specification/src/sync/v2/utils.d.ts +5 -6
  56. package/dist/specification/src/sync/v2/utils.d.ts.map +1 -1
  57. package/dist/specification/src/sync/v2/utils.js +8 -17
  58. package/dist/specification/src/sync/v2/utils.js.map +1 -1
  59. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -0
  60. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.d.ts.map +1 -1
  61. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js +12 -0
  62. package/dist/specification/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  63. package/dist/specification/src/sync/v4/export/controls/Table.d.ts +20 -0
  64. package/dist/specification/src/sync/v4/export/controls/Table.d.ts.map +1 -1
  65. package/dist/specification/src/sync/v4/export/controls/Table.js +82 -0
  66. package/dist/specification/src/sync/v4/export/controls/Table.js.map +1 -1
  67. package/dist/specification/src/sync/v4/generate/listReport.d.ts.map +1 -1
  68. package/dist/specification/src/sync/v4/generate/listReport.js +8 -0
  69. package/dist/specification/src/sync/v4/generate/listReport.js.map +1 -1
  70. package/dist/specification/src/sync/v4/generate/objectPage.d.ts.map +1 -1
  71. package/dist/specification/src/sync/v4/generate/objectPage.js +5 -0
  72. package/dist/specification/src/sync/v4/generate/objectPage.js.map +1 -1
  73. package/dist/specification/src/sync/v4/utils/utils.d.ts +8 -0
  74. package/dist/specification/src/sync/v4/utils/utils.d.ts.map +1 -1
  75. package/dist/specification/src/sync/v4/utils/utils.js +36 -5
  76. package/dist/specification/src/sync/v4/utils/utils.js.map +1 -1
  77. package/dist/types/src/common/types.d.ts +1 -5
  78. package/dist/types/src/common/types.d.ts.map +1 -1
  79. package/dist/types/src/common/types.js.map +1 -1
  80. package/dist/types/src/v4/controls/ObjectPageTable.d.ts +5 -1
  81. package/dist/types/src/v4/controls/ObjectPageTable.d.ts.map +1 -1
  82. package/dist/types/src/v4/controls/Table.d.ts +29 -0
  83. package/dist/types/src/v4/controls/Table.d.ts.map +1 -1
  84. package/package.json +9 -9
@@ -603,6 +603,40 @@
603
603
  "type": "boolean",
604
604
  "artifactType": "Manifest",
605
605
  "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412"
606
+ },
607
+ "enableMassEdit": {
608
+ "artifactType": "Manifest",
609
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
610
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
611
+ "anyOf": [
612
+ {
613
+ "type": "object",
614
+ "properties": {
615
+ "visibleFields": {
616
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
617
+ "artifactType": "Manifest",
618
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
619
+ "type": "array",
620
+ "items": {
621
+ "type": "string"
622
+ }
623
+ },
624
+ "ignoredFields": {
625
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
626
+ "artifactType": "Manifest",
627
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
628
+ "type": "array",
629
+ "items": {
630
+ "type": "string"
631
+ }
632
+ }
633
+ },
634
+ "additionalProperties": false
635
+ },
636
+ {
637
+ "type": "boolean"
638
+ }
639
+ ]
606
640
  }
607
641
  },
608
642
  "additionalProperties": false,
@@ -1097,6 +1131,40 @@
1097
1131
  "type": "boolean",
1098
1132
  "artifactType": "Manifest",
1099
1133
  "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412"
1134
+ },
1135
+ "enableMassEdit": {
1136
+ "artifactType": "Manifest",
1137
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1138
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
1139
+ "anyOf": [
1140
+ {
1141
+ "type": "object",
1142
+ "properties": {
1143
+ "visibleFields": {
1144
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
1145
+ "artifactType": "Manifest",
1146
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1147
+ "type": "array",
1148
+ "items": {
1149
+ "type": "string"
1150
+ }
1151
+ },
1152
+ "ignoredFields": {
1153
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
1154
+ "artifactType": "Manifest",
1155
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1156
+ "type": "array",
1157
+ "items": {
1158
+ "type": "string"
1159
+ }
1160
+ }
1161
+ },
1162
+ "additionalProperties": false
1163
+ },
1164
+ {
1165
+ "type": "boolean"
1166
+ }
1167
+ ]
1100
1168
  }
1101
1169
  },
1102
1170
  "additionalProperties": false
@@ -1264,6 +1332,40 @@
1264
1332
  "type": "boolean",
1265
1333
  "artifactType": "Manifest",
1266
1334
  "descriptionSrcURL": "https://ui5.sap.com/#/topic/c0f6592a592e47f9bb6d09900de47412"
1335
+ },
1336
+ "enableMassEdit": {
1337
+ "artifactType": "Manifest",
1338
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1339
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
1340
+ "anyOf": [
1341
+ {
1342
+ "type": "object",
1343
+ "properties": {
1344
+ "visibleFields": {
1345
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
1346
+ "artifactType": "Manifest",
1347
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1348
+ "type": "array",
1349
+ "items": {
1350
+ "type": "string"
1351
+ }
1352
+ },
1353
+ "ignoredFields": {
1354
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
1355
+ "artifactType": "Manifest",
1356
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1357
+ "type": "array",
1358
+ "items": {
1359
+ "type": "string"
1360
+ }
1361
+ }
1362
+ },
1363
+ "additionalProperties": false
1364
+ },
1365
+ {
1366
+ "type": "boolean"
1367
+ }
1368
+ ]
1267
1369
  }
1268
1370
  },
1269
1371
  "additionalProperties": false,
@@ -1318,6 +1420,40 @@
1318
1420
  "description": "Each chart can be based on a different entitySet.",
1319
1421
  "type": "string",
1320
1422
  "artifactType": "Manifest"
1423
+ },
1424
+ "enableMassEdit": {
1425
+ "artifactType": "Manifest",
1426
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1427
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
1428
+ "anyOf": [
1429
+ {
1430
+ "type": "object",
1431
+ "properties": {
1432
+ "visibleFields": {
1433
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
1434
+ "artifactType": "Manifest",
1435
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1436
+ "type": "array",
1437
+ "items": {
1438
+ "type": "string"
1439
+ }
1440
+ },
1441
+ "ignoredFields": {
1442
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
1443
+ "artifactType": "Manifest",
1444
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1445
+ "type": "array",
1446
+ "items": {
1447
+ "type": "string"
1448
+ }
1449
+ }
1450
+ },
1451
+ "additionalProperties": false
1452
+ },
1453
+ {
1454
+ "type": "boolean"
1455
+ }
1456
+ ]
1321
1457
  }
1322
1458
  },
1323
1459
  "additionalProperties": false,
@@ -627,6 +627,40 @@
627
627
  "columns": {
628
628
  "$ref": "#/definitions/GenericColumnsOP"
629
629
  },
630
+ "enableMassEdit": {
631
+ "artifactType": "Manifest",
632
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
633
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
634
+ "anyOf": [
635
+ {
636
+ "type": "object",
637
+ "properties": {
638
+ "visibleFields": {
639
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
640
+ "artifactType": "Manifest",
641
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
642
+ "type": "array",
643
+ "items": {
644
+ "type": "string"
645
+ }
646
+ },
647
+ "ignoredFields": {
648
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
649
+ "artifactType": "Manifest",
650
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
651
+ "type": "array",
652
+ "items": {
653
+ "type": "string"
654
+ }
655
+ }
656
+ },
657
+ "additionalProperties": false
658
+ },
659
+ {
660
+ "type": "boolean"
661
+ }
662
+ ]
663
+ },
630
664
  "selectionMode": {
631
665
  "$ref": "#/definitions/SelectionMode",
632
666
  "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.",
@@ -1137,6 +1171,40 @@
1137
1171
  "columns": {
1138
1172
  "$ref": "#/definitions/GenericColumnsOP"
1139
1173
  },
1174
+ "enableMassEdit": {
1175
+ "artifactType": "Manifest",
1176
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1177
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
1178
+ "anyOf": [
1179
+ {
1180
+ "type": "object",
1181
+ "properties": {
1182
+ "visibleFields": {
1183
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
1184
+ "artifactType": "Manifest",
1185
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1186
+ "type": "array",
1187
+ "items": {
1188
+ "type": "string"
1189
+ }
1190
+ },
1191
+ "ignoredFields": {
1192
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
1193
+ "artifactType": "Manifest",
1194
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1195
+ "type": "array",
1196
+ "items": {
1197
+ "type": "string"
1198
+ }
1199
+ }
1200
+ },
1201
+ "additionalProperties": false
1202
+ },
1203
+ {
1204
+ "type": "boolean"
1205
+ }
1206
+ ]
1207
+ },
1140
1208
  "selectionMode": {
1141
1209
  "$ref": "#/definitions/SelectionMode",
1142
1210
  "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.",
@@ -1241,6 +1309,40 @@
1241
1309
  "columns": {
1242
1310
  "$ref": "#/definitions/GenericColumnsOP"
1243
1311
  },
1312
+ "enableMassEdit": {
1313
+ "artifactType": "Manifest",
1314
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1315
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
1316
+ "anyOf": [
1317
+ {
1318
+ "type": "object",
1319
+ "properties": {
1320
+ "visibleFields": {
1321
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
1322
+ "artifactType": "Manifest",
1323
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1324
+ "type": "array",
1325
+ "items": {
1326
+ "type": "string"
1327
+ }
1328
+ },
1329
+ "ignoredFields": {
1330
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
1331
+ "artifactType": "Manifest",
1332
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1333
+ "type": "array",
1334
+ "items": {
1335
+ "type": "string"
1336
+ }
1337
+ }
1338
+ },
1339
+ "additionalProperties": false
1340
+ },
1341
+ {
1342
+ "type": "boolean"
1343
+ }
1344
+ ]
1345
+ },
1244
1346
  "selectionMode": {
1245
1347
  "$ref": "#/definitions/SelectionMode",
1246
1348
  "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.",
@@ -1333,6 +1435,40 @@
1333
1435
  "columns": {
1334
1436
  "$ref": "#/definitions/GenericColumnsOP"
1335
1437
  },
1438
+ "enableMassEdit": {
1439
+ "artifactType": "Manifest",
1440
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1441
+ "description": "Mass editing allows end users to simultaneously change multiple objects that share the same editable properties.",
1442
+ "anyOf": [
1443
+ {
1444
+ "type": "object",
1445
+ "properties": {
1446
+ "visibleFields": {
1447
+ "description": "The 'visibleFields' property lets you specify which fields are available in the mass edit dialog.",
1448
+ "artifactType": "Manifest",
1449
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1450
+ "type": "array",
1451
+ "items": {
1452
+ "type": "string"
1453
+ }
1454
+ },
1455
+ "ignoredFields": {
1456
+ "description": "The 'ignoredFields' property lets you hide specific fields from the mass edit dialog, even if these fields are displayed in the table.",
1457
+ "artifactType": "Manifest",
1458
+ "descriptionSrcURL": "https://ui5.sap.com/sdk/#/topic/965ef5b2895641bc9b6cd44f1bd0eb4d",
1459
+ "type": "array",
1460
+ "items": {
1461
+ "type": "string"
1462
+ }
1463
+ }
1464
+ },
1465
+ "additionalProperties": false
1466
+ },
1467
+ {
1468
+ "type": "boolean"
1469
+ }
1470
+ ]
1471
+ },
1336
1472
  "selectionMode": {
1337
1473
  "$ref": "#/definitions/SelectionMode",
1338
1474
  "description": "Allows you to enable or disable row selection and choose between single or multiple row selection.\n- Auto: This type is deprecated. Choose any of the following modes:\n- Multi (default): This type allows multiple table selections if relevant actions are available in the toolbar.\n- Single: This type allows single table selection if relevant actions are available in the toolbar.\n- None: No table selection is possible in display mode.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sap/ux-specification",
3
- "version": "1.136.2",
3
+ "version": "1.136.4",
4
4
  "displayName": "SAP Fiori tools - Specification",
5
5
  "description": "SAP Fiori tools - Specification",
6
6
  "files": [
@@ -21,9 +21,9 @@
21
21
  "bundle": "node esbuild",
22
22
  "bundle:dev": "node esbuild --minify=false",
23
23
  "bundle:watch": "node esbuild --watch --stats --minify=false",
24
- "build": "npm-run-all -l -s clean:before -s compile -p create-json-schemas macros copy-templates -p copy-json-schemas htmlV2 htmlV4 -s bundle",
24
+ "build": "npm-run-all -l -s clean:before -s compile -p create-json-schemas macros copy-templates -p copy-json-schemas -s htmlV2 htmlV4 -s bundle",
25
25
  "build:dev": "npm-run-all -l -s clean:before -s compile -p create-json-schemas copy-templates -s copy-json-schemas bundle:dev",
26
- "build:doc": "npm-run-all -l -s clean:doc -s compile -p htmlV2 htmlV4 -s bundle",
26
+ "build:doc": "npm-run-all -l -s clean:doc -s compile -s htmlV2 htmlV4 -s bundle",
27
27
  "build:schemas": "npm-run-all -l -s create-json-schemas copy-json-schemas",
28
28
  "build:snap": "yarn build:dev && yarn update-snapshots",
29
29
  "create-json-schemas": "ts-node ./scripts/schema/index.ts ",
@@ -44,18 +44,18 @@
44
44
  "test:ci": "jest --ci --forceExit --detectOpenHandles && node ../../scripts/scov.js reports/test/unit/coverage/lcov.info",
45
45
  "update-snapshots": "jest --updateSnapshot",
46
46
  "watch": "npm-run-all -l -s clean:before -p compile create-json-schemas macros copy-templates -p copy-json-schemas -s bundle:watch",
47
- "watch:doc": "npm-run-all -l -s clean:doc -s compile -p htmlV2 htmlV4 -s bundle:watch"
47
+ "watch:doc": "npm-run-all -l -s clean:doc -s compile -s htmlV2 htmlV4 -s bundle:watch"
48
48
  },
49
49
  "publisher": "SAPSE",
50
50
  "license": "SEE LICENSE IN LICENSE",
51
51
  "dependencies": {
52
- "@sap-ux/fe-fpm-writer": "0.35.5",
52
+ "@sap-ux/fe-fpm-writer": "0.36.0",
53
53
  "@sap-ux/vocabularies-types": "0.13.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@sap-ux/annotation-converter": "0.10.3",
57
57
  "@sap-ux/edmx-parser": "0.8.2",
58
- "@sap/ux-specification-types": "1.136.2",
58
+ "@sap/ux-specification-types": "1.136.4",
59
59
  "@sapui5/types": "latest-1.136",
60
60
  "@types/d3": "7.4.3",
61
61
  "@types/jquery": "3.5.32",
@@ -63,13 +63,13 @@
63
63
  "@ui5/flexibility-utils": "0.1.3",
64
64
  "@xml-tools/ast": "5.0.5",
65
65
  "@xml-tools/parser": "1.0.11",
66
- "axios": "1.10.0",
66
+ "axios": "1.11.0",
67
67
  "copyfiles": "2.4.1",
68
68
  "d3": "7.9.0",
69
69
  "deepmerge": "4.3.1",
70
70
  "ejs": "3.1.10",
71
71
  "excel4node": "1.8.2",
72
- "i18next": "23.16.8",
72
+ "i18next": "25.3.0",
73
73
  "jquery": "3.7.1",
74
74
  "jsdom": "25.0.1",
75
75
  "lodash.unset": "4.5.2",
@@ -77,7 +77,7 @@
77
77
  "path": "0.12.7",
78
78
  "reflect-metadata": "0.2.2",
79
79
  "semver": "7.7.2",
80
- "typescript-json-schema": "0.57.0",
80
+ "typescript-json-schema": "0.65.1",
81
81
  "xml-js": "1.6.11"
82
82
  },
83
83
  "husky": {
@@ -43,7 +43,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
43
43
  */
44
44
  const ux_specification_types_1 = require("@sap/ux-specification-types");
45
45
  const path_1 = require("path");
46
- const fs = __importStar(require("fs"));
46
+ const fs_1 = require("fs");
47
47
  const excel = __importStar(require("excel4node"));
48
48
  /**
49
49
  * Handles reference ($ref) within the schema, finds the corresponding definition.
@@ -458,13 +458,13 @@ function createSVGIcon(floorPlan) {
458
458
  * @param file - The name of the file being processed.
459
459
  * @param odataVersion - The OData version (e.g., "v2" or "v4").
460
460
  */
461
- function generateHTMLFormat(output, file, odataVersion) {
461
+ async function generateHTMLFormat(output, file, odataVersion) {
462
462
  //filter output to remove duplicated lines due to different table types (anyOf)
463
463
  output = output.filter((e, i, a) => a.indexOf(e) === i);
464
464
  output.shift();
465
465
  const nameFloorPlan = file.split('.')[0].replace(/Config/g, '');
466
466
  const rootName = __dirname.slice(0, __dirname.lastIndexOf('specification') + 13);
467
- const packageJson = JSON.parse(fs.readFileSync((0, path_1.join)(rootName, 'package.json'), 'utf8'));
467
+ const packageJson = JSON.parse(await fs_1.promises.readFile((0, path_1.join)(rootName, 'package.json'), 'utf8'));
468
468
  //shortens spec version
469
469
  const specVersion = packageJson.version.includes('+') ? packageJson.version.split('+')[0] : packageJson.version;
470
470
  const svgIcon = createSVGIcon(nameFloorPlan);
@@ -473,12 +473,12 @@ function generateHTMLFormat(output, file, odataVersion) {
473
473
  //only create html if porperties exist
474
474
  if (treeData.children.length > 0) {
475
475
  let template;
476
- let outDir;
477
476
  try {
478
- template = fs.readFileSync(templateFilePath, 'utf8');
477
+ template = await fs_1.promises.readFile(templateFilePath, 'utf8');
479
478
  }
480
479
  catch (e) {
481
480
  console.log(`Error: ${e.message}`);
481
+ return;
482
482
  }
483
483
  template = template.replace(`'placeholderTreeData'`, JSON.stringify(treeData));
484
484
  template = template.replace(`OData_version`, odataVersion.toUpperCase());
@@ -486,37 +486,35 @@ function generateHTMLFormat(output, file, odataVersion) {
486
486
  if (svgIcon !== undefined) {
487
487
  template = template.replace(`floorPlanIcon`, 'floorPlanIcon = `' + svgIcon + '`');
488
488
  }
489
- if (odataVersion === 'v2') {
490
- outDir = (0, path_1.join)('dist', 'documentation', 'v2');
491
- }
492
- else {
493
- outDir = (0, path_1.join)('dist', 'documentation', 'v4');
489
+ const outDir = odataVersion === 'v2' ? (0, path_1.join)('dist', 'documentation', 'v2') : (0, path_1.join)('dist', 'documentation', 'v4');
490
+ try {
491
+ await fs_1.promises.mkdir(outDir, { recursive: true });
494
492
  }
495
- if (!fs.existsSync(outDir)) {
496
- fs.mkdirSync(outDir, { recursive: true });
493
+ catch (e) {
494
+ // in case rare errors occur
495
+ console.log(`Error: ${e.message}`);
496
+ return;
497
497
  }
498
498
  const outFile = (0, path_1.join)(outDir, odataVersion + '-' + nameFloorPlan + '.html');
499
- fs.writeFile(outFile, template, (err) => {
500
- if (err) {
501
- throw err;
502
- }
503
- console.log(`${outFile} was successfully saved!`);
504
- });
499
+ await fs_1.promises.writeFile(outFile, template);
500
+ console.log(`${outFile} was successfully saved!`);
505
501
  }
506
502
  }
507
- function copyFileToFolder() {
503
+ async function copyStyleSheetToDocFolder() {
508
504
  const file = 'styleDocu.css';
509
505
  const src = (0, path_1.join)(__dirname, '..', 'scripts', 'documentation', file);
510
- const dest = (0, path_1.join)('dist', 'documentation', file);
511
- if (!fs.existsSync(dest)) {
512
- fs.copyFile(src, dest, (err) => {
513
- if (err) {
514
- throw err;
515
- }
516
- if (!err) {
517
- console.log(file + ' has been copied!');
518
- }
519
- });
506
+ const outDir = (0, path_1.join)('dist', 'documentation');
507
+ const dest = (0, path_1.join)(outDir, file);
508
+ await fs_1.promises.mkdir(outDir, { recursive: true });
509
+ try {
510
+ // avoids EBUSY errors due to concurrent access
511
+ await fs_1.promises.access(dest);
512
+ console.log(file + ' already exists, skipping copy.');
513
+ }
514
+ catch {
515
+ // file does not exist, proceed to copy
516
+ await fs_1.promises.copyFile(src, dest);
517
+ console.log(file + ' has been copied!');
520
518
  }
521
519
  }
522
520
  /**
@@ -525,16 +523,29 @@ function copyFileToFolder() {
525
523
  * @param workbook - Excel workbook (excel4node format)
526
524
  * @param version - OData version
527
525
  */
528
- function writeToFile(workbook, version) {
526
+ async function writeToFile(workbook, version) {
529
527
  const outDir = (0, path_1.join)('dist', 'documentation');
530
- if (!fs.existsSync(outDir)) {
531
- fs.mkdirSync(outDir);
532
- }
528
+ await fs_1.promises.mkdir(outDir, { recursive: true });
533
529
  const outFile = (0, path_1.join)(outDir, 'Specification' + version + '.xlsx');
534
530
  workbook.write(outFile);
535
531
  }
532
+ /**
533
+ * Reads a schema file, parses its contents, and builds the output array.
534
+ *
535
+ * @param directoryPath - The directory containing the schema files.
536
+ * @param file - The name of the schema file to process.
537
+ * @returns An object containing the parsed output array and the file name.
538
+ */
539
+ async function getParsedOutput(directoryPath, file) {
540
+ const filePath = (0, path_1.join)(directoryPath, file);
541
+ const output = [filePath];
542
+ const data = await fs_1.promises.readFile(filePath, 'utf8');
543
+ const schema = JSON.parse(data);
544
+ parseSchema(schema, schema, output);
545
+ return { output, file };
546
+ }
536
547
  /********************** Main ***************************/
537
- function generateDocmentation() {
548
+ async function generateDocumentation() {
538
549
  const myArgs = process.argv.slice(2);
539
550
  let version;
540
551
  let format;
@@ -561,31 +572,29 @@ function generateDocmentation() {
561
572
  }
562
573
  if (directoryPath.length > 0) {
563
574
  const workbook = new excel.Workbook();
564
- fs.readdir(directoryPath, function (err, files) {
565
- if (err) {
566
- return console.log(err);
567
- }
568
- files.forEach((file) => {
569
- const filePath = (0, path_1.join)(directoryPath, file);
570
- const output = [filePath];
571
- const data = fs.readFileSync(filePath, 'utf8');
572
- const schema = JSON.parse(data);
573
- parseSchema(schema, schema, output);
574
- if (format === 'excel') {
575
- writeToExcel(workbook, output, file);
576
- }
577
- if (format === 'html') {
578
- generateHTMLFormat(output, file, version);
579
- }
580
- });
575
+ try {
576
+ const files = await fs_1.promises.readdir(directoryPath);
581
577
  if (format === 'excel') {
582
- writeToFile(workbook, version);
578
+ for (const file of files) {
579
+ const { output, file: fileName } = await getParsedOutput(directoryPath, file);
580
+ writeToExcel(workbook, output, fileName);
581
+ }
582
+ await writeToFile(workbook, version);
583
583
  }
584
- if (format === 'html') {
585
- copyFileToFolder();
584
+ else if (format === 'html') {
585
+ await Promise.all(files.map(async (file) => {
586
+ const { output, file: fileName } = await getParsedOutput(directoryPath, file);
587
+ await generateHTMLFormat(output, fileName, version);
588
+ }));
589
+ await copyStyleSheetToDocFolder();
586
590
  }
587
- });
591
+ }
592
+ catch (err) {
593
+ console.log(err);
594
+ }
588
595
  }
589
596
  }
590
- generateDocmentation();
597
+ (async () => {
598
+ await generateDocumentation();
599
+ })();
591
600
  //# sourceMappingURL=extractDocu.js.map