@sap/ux-specification 1.90.21 → 1.90.26

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 (301) hide show
  1. package/CHANGELOG.md +97 -1
  2. package/dist/documentation/v2/v2-AnalyticalListPage.html +1 -1
  3. package/dist/documentation/v2/v2-ApplicationV2.html +1 -1
  4. package/dist/documentation/v2/v2-ListReport.html +1 -1
  5. package/dist/documentation/v2/v2-ObjectPage.html +1 -1
  6. package/dist/documentation/v2/v2-OverviewPage.html +1 -1
  7. package/dist/documentation/v4/v4-ApplicationV4.html +1 -1
  8. package/dist/documentation/v4/v4-ListReport.html +1 -1
  9. package/dist/documentation/v4/v4-ObjectPage.html +1 -1
  10. package/dist/index-min.js +1 -1
  11. package/dist/schemas/v2/ApplicationV2.json +11 -11
  12. package/dist/schemas/v4/ApplicationV4.json +9 -5
  13. package/dist/schemas/v4/ListReportConfig.json +629 -183
  14. package/dist/schemas/v4/ObjectPageConfig.json +36 -0
  15. package/dist/scripts/extractDocu.js.map +1 -1
  16. package/dist/scripts/runDocu.js +10 -40
  17. package/dist/scripts/runDocu.js.map +1 -1
  18. package/dist/scripts/spec.js.map +1 -1
  19. package/dist/scripts/to-json-schema.js.map +1 -1
  20. package/dist/specification/v2/index-min.js +1 -1
  21. package/dist/specification/v4/index-min.js +1 -1
  22. package/dist/src/api.d.ts +2 -2
  23. package/dist/src/api.js +11 -11
  24. package/dist/src/api.js.map +1 -1
  25. package/dist/src/apiTypes.d.ts +16 -19
  26. package/dist/src/apiTypes.js +0 -2
  27. package/dist/src/apiTypes.js.map +1 -1
  28. package/dist/src/extensionLogger.d.ts +1 -1
  29. package/dist/src/project.d.ts +1 -1
  30. package/dist/src/project.js +11 -3
  31. package/dist/src/project.js.map +1 -1
  32. package/dist/src/specification/common/Application.d.ts +24 -4
  33. package/dist/src/specification/common/page.d.ts +1 -1
  34. package/dist/src/specification/common/webapp/manifest/Manifest.d.ts +6 -6
  35. package/dist/src/specification/common/webapp/manifest/sapUi5.d.ts +1 -1
  36. package/dist/src/specification/schemaAccess.d.ts +1 -1
  37. package/dist/src/specification/schemaAccess.js +1 -2
  38. package/dist/src/specification/schemaAccess.js.map +1 -1
  39. package/dist/src/specification/v2/ApplicationV2.d.ts +3 -17
  40. package/dist/src/specification/v2/controls/Facets.d.ts +1 -1
  41. package/dist/src/specification/v2/controls/Footer.d.ts +2 -2
  42. package/dist/src/specification/v2/controls/ObjectPageForm.d.ts +1 -1
  43. package/dist/src/specification/v2/controls/ObjectPageHeader.d.ts +1 -1
  44. package/dist/src/specification/v2/controls/ObjectPageSection.d.ts +2 -2
  45. package/dist/src/specification/v2/controls/ObjectPageTable.d.ts +2 -2
  46. package/dist/src/specification/v2/controls/ObjectPageToolBar.d.ts +1 -1
  47. package/dist/src/specification/v2/controls/Table.d.ts +3 -3
  48. package/dist/src/specification/v2/controls/ToolBar.d.ts +1 -1
  49. package/dist/src/specification/v2/page.d.ts +1 -1
  50. package/dist/src/specification/v2/pages/AnalyticalListPageConfig.d.ts +4 -4
  51. package/dist/src/specification/v2/pages/ListReportConfig.d.ts +2 -2
  52. package/dist/src/specification/v2/pages/ObjectPageConfig.d.ts +3 -3
  53. package/dist/src/specification/v2/pages/OverviewPageConfig.d.ts +3 -3
  54. package/dist/src/specification/v2/webapp/manifest/sapUi5.d.ts +2 -2
  55. package/dist/src/specification/v2/webapp/manifest/sapUi5.js +0 -1
  56. package/dist/src/specification/v2/webapp/manifest/sapUi5.js.map +1 -1
  57. package/dist/src/specification/v2/webapp/manifest/sapUiPageV2.d.ts +2 -2
  58. package/dist/src/specification/v4/ApplicationV4.d.ts +4 -14
  59. package/dist/src/specification/v4/controls/ObjectPageHeader.d.ts +1 -1
  60. package/dist/src/specification/v4/controls/ObjectPageSection.d.ts +24 -3
  61. package/dist/src/specification/v4/controls/ObjectPageSection.js.map +1 -1
  62. package/dist/src/specification/v4/controls/ObjectPageTable.d.ts +3 -3
  63. package/dist/src/specification/v4/controls/ObjectPageToolBar.d.ts +1 -1
  64. package/dist/src/specification/v4/controls/Table.d.ts +170 -25
  65. package/dist/src/specification/v4/controls/Table.js +6 -0
  66. package/dist/src/specification/v4/controls/Table.js.map +1 -1
  67. package/dist/src/specification/v4/controls/ToolBar.d.ts +26 -1
  68. package/dist/src/specification/v4/page.d.ts +2 -2
  69. package/dist/src/specification/v4/pages/ListReportConfig.d.ts +22 -3
  70. package/dist/src/specification/v4/pages/ObjectPageConfig.d.ts +2 -2
  71. package/dist/src/specification/v4/pages/ObjectPageConfig.js.map +1 -1
  72. package/dist/src/specification/v4/pages/index.d.ts +0 -1
  73. package/dist/src/specification/v4/webapp/manifest/ManifestSettings.d.ts +77 -0
  74. package/dist/src/specification/v4/webapp/manifest/ManifestSettings.js.map +1 -1
  75. package/dist/src/specification/v4/webapp/manifest/sapUi5.d.ts +12 -3
  76. package/dist/src/specification/v4/webapp/manifest/sapUi5.js.map +1 -1
  77. package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.d.ts +21 -1
  78. package/dist/src/specification/v4/webapp/manifest/sapUiPageV4.js.map +1 -1
  79. package/dist/src/sync/common/appProvider.d.ts +6 -5
  80. package/dist/src/sync/common/appProvider.js.map +1 -1
  81. package/dist/src/sync/common/decoration/control.d.ts +1 -1
  82. package/dist/src/sync/common/decoration/control.js +27 -22
  83. package/dist/src/sync/common/decoration/control.js.map +1 -1
  84. package/dist/src/sync/common/decoration/decorators.d.ts +1 -1
  85. package/dist/src/sync/common/decoration/decorators.js.map +1 -1
  86. package/dist/src/sync/common/decoration/factory.d.ts +3 -3
  87. package/dist/src/sync/common/decoration/flex.d.ts +3 -3
  88. package/dist/src/sync/common/flexUtils.d.ts +4 -4
  89. package/dist/src/sync/common/flexUtils.js.map +1 -1
  90. package/dist/src/sync/common/generate/objectPage.d.ts +9 -7
  91. package/dist/src/sync/common/generate/objectPage.js +69 -73
  92. package/dist/src/sync/common/generate/objectPage.js.map +1 -1
  93. package/dist/src/sync/common/generate/utils.d.ts +52 -19
  94. package/dist/src/sync/common/generate/utils.js +127 -70
  95. package/dist/src/sync/common/generate/utils.js.map +1 -1
  96. package/dist/src/sync/common/import/utils.d.ts +4 -3
  97. package/dist/src/sync/common/import/utils.js +3 -2
  98. package/dist/src/sync/common/import/utils.js.map +1 -1
  99. package/dist/src/sync/common/importProject.d.ts +4 -4
  100. package/dist/src/sync/common/importProject.js +33 -41
  101. package/dist/src/sync/common/importProject.js.map +1 -1
  102. package/dist/src/sync/common/types.d.ts +110 -13
  103. package/dist/src/sync/common/types.js +107 -7
  104. package/dist/src/sync/common/types.js.map +1 -1
  105. package/dist/src/sync/common/utils.d.ts +23 -15
  106. package/dist/src/sync/common/utils.js +138 -72
  107. package/dist/src/sync/common/utils.js.map +1 -1
  108. package/dist/src/sync/i18n.d.ts +1 -1
  109. package/dist/src/sync/v2/application.d.ts +2 -2
  110. package/dist/src/sync/v2/application.js.map +1 -1
  111. package/dist/src/sync/v2/export/controls/Action.d.ts +1 -1
  112. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.d.ts +1 -1
  113. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js +1 -1
  114. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js.map +1 -1
  115. package/dist/src/sync/v2/export/controls/AnalyticalListPageKPI.d.ts +1 -1
  116. package/dist/src/sync/v2/export/controls/Card.d.ts +1 -1
  117. package/dist/src/sync/v2/export/controls/Field.d.ts +1 -1
  118. package/dist/src/sync/v2/export/controls/FilterBar.d.ts +2 -1
  119. package/dist/src/sync/v2/export/controls/FormAction.d.ts +1 -1
  120. package/dist/src/sync/v2/export/controls/FormAction.js.map +1 -1
  121. package/dist/src/sync/v2/export/controls/Fragment.d.ts +5 -11
  122. package/dist/src/sync/v2/export/controls/Fragment.js +110 -34
  123. package/dist/src/sync/v2/export/controls/Fragment.js.map +1 -1
  124. package/dist/src/sync/v2/export/controls/ObjectPageChart.d.ts +1 -1
  125. package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.d.ts +3 -3
  126. package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js.map +1 -1
  127. package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.d.ts +1 -1
  128. package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.js.map +1 -1
  129. package/dist/src/sync/v2/export/controls/ObjectPageHeader.d.ts +1 -1
  130. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.d.ts +1 -1
  131. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js.map +1 -1
  132. package/dist/src/sync/v2/export/controls/ObjectPageLayout.d.ts +1 -1
  133. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.d.ts +2 -2
  134. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js +1 -1
  135. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js.map +1 -1
  136. package/dist/src/sync/v2/export/controls/ObjectPageTable.d.ts +3 -3
  137. package/dist/src/sync/v2/export/controls/ObjectPageTable.js +1 -1
  138. package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +1 -1
  139. package/dist/src/sync/v2/export/controls/ObjectPageToolBarAction.d.ts +1 -1
  140. package/dist/src/sync/v2/export/controls/Table.d.ts +4 -2
  141. package/dist/src/sync/v2/export/controls/Table.js +89 -47
  142. package/dist/src/sync/v2/export/controls/Table.js.map +1 -1
  143. package/dist/src/sync/v2/export/controls/TableColumn.d.ts +2 -2
  144. package/dist/src/sync/v2/export/controls/ToolBar.d.ts +1 -1
  145. package/dist/src/sync/v2/export/export.d.ts +3 -4
  146. package/dist/src/sync/v2/export/export.js +222 -160
  147. package/dist/src/sync/v2/export/export.js.map +1 -1
  148. package/dist/src/sync/v2/export/exportPage.d.ts +2 -2
  149. package/dist/src/sync/v2/export/exportPage.js +4 -11
  150. package/dist/src/sync/v2/export/exportPage.js.map +1 -1
  151. package/dist/src/sync/v2/export/factory.d.ts +2 -1
  152. package/dist/src/sync/v2/export/factory.js.map +1 -1
  153. package/dist/src/sync/v2/export/manifest.d.ts +23 -1
  154. package/dist/src/sync/v2/export/manifest.js +77 -35
  155. package/dist/src/sync/v2/export/manifest.js.map +1 -1
  156. package/dist/src/sync/v2/export/pages/AnalyticalListPage.d.ts +4 -4
  157. package/dist/src/sync/v2/export/pages/AnalyticalListPage.js.map +1 -1
  158. package/dist/src/sync/v2/export/pages/ListReport.d.ts +2 -2
  159. package/dist/src/sync/v2/export/pages/ListReport.js.map +1 -1
  160. package/dist/src/sync/v2/export/pages/ObjectPage.d.ts +3 -3
  161. package/dist/src/sync/v2/export/pages/OverviewPage.d.ts +3 -3
  162. package/dist/src/sync/v2/export/pages/OverviewPage.js +20 -15
  163. package/dist/src/sync/v2/export/pages/OverviewPage.js.map +1 -1
  164. package/dist/src/sync/v2/export/view-controller-generator.d.ts +2 -2
  165. package/dist/src/sync/v2/export/view-controller-generator.js.map +1 -1
  166. package/dist/src/sync/v2/generate/analyticalListReport.d.ts +1 -1
  167. package/dist/src/sync/v2/generate/analyticalListReport.js +27 -36
  168. package/dist/src/sync/v2/generate/analyticalListReport.js.map +1 -1
  169. package/dist/src/sync/v2/generate/generate.d.ts +2 -2
  170. package/dist/src/sync/v2/generate/generate.js +3 -0
  171. package/dist/src/sync/v2/generate/generate.js.map +1 -1
  172. package/dist/src/sync/v2/generate/listReport.d.ts +7 -4
  173. package/dist/src/sync/v2/generate/listReport.js +38 -36
  174. package/dist/src/sync/v2/generate/listReport.js.map +1 -1
  175. package/dist/src/sync/v2/generate/objectPage.d.ts +1 -1
  176. package/dist/src/sync/v2/generate/objectPage.js +102 -100
  177. package/dist/src/sync/v2/generate/objectPage.js.map +1 -1
  178. package/dist/src/sync/v2/generate/overviewPage.d.ts +1 -1
  179. package/dist/src/sync/v2/generate/overviewPage.js.map +1 -1
  180. package/dist/src/sync/v2/generate/utils.d.ts +8 -7
  181. package/dist/src/sync/v2/generate/utils.js +73 -69
  182. package/dist/src/sync/v2/generate/utils.js.map +1 -1
  183. package/dist/src/sync/v2/import/app/appProvider.d.ts +13 -4
  184. package/dist/src/sync/v2/import/app/appProvider.js +36 -13
  185. package/dist/src/sync/v2/import/app/appProvider.js.map +1 -1
  186. package/dist/src/sync/v2/import/app/ovpProvider.d.ts +3 -3
  187. package/dist/src/sync/v2/import/app/ovpProvider.js +1 -1
  188. package/dist/src/sync/v2/import/app/ovpProvider.js.map +1 -1
  189. package/dist/src/sync/v2/import/common/index.d.ts +6 -5
  190. package/dist/src/sync/v2/import/common/index.js +9 -22
  191. package/dist/src/sync/v2/import/common/index.js.map +1 -1
  192. package/dist/src/sync/v2/import/controls/table.d.ts +1 -1
  193. package/dist/src/sync/v2/import/controls/table.js +1 -1
  194. package/dist/src/sync/v2/import/controls/table.js.map +1 -1
  195. package/dist/src/sync/v2/import/pages/analyticalListPage.d.ts +2 -2
  196. package/dist/src/sync/v2/import/pages/analyticalListPage.js +1 -9
  197. package/dist/src/sync/v2/import/pages/analyticalListPage.js.map +1 -1
  198. package/dist/src/sync/v2/import/pages/listReport.d.ts +2 -2
  199. package/dist/src/sync/v2/import/pages/objectPage.d.ts +1 -1
  200. package/dist/src/sync/v2/import/pages/objectPage.js +36 -44
  201. package/dist/src/sync/v2/import/pages/objectPage.js.map +1 -1
  202. package/dist/src/sync/v2/import/pages/overviewPage.d.ts +2 -2
  203. package/dist/src/sync/v2/import/pages/overviewPage.js +1 -1
  204. package/dist/src/sync/v2/import/pages/overviewPage.js.map +1 -1
  205. package/dist/src/sync/v2/import/utils.d.ts +3 -2
  206. package/dist/src/sync/v2/import/utils.js +16 -2
  207. package/dist/src/sync/v2/import/utils.js.map +1 -1
  208. package/dist/src/sync/v2/types.d.ts +7 -7
  209. package/dist/src/sync/v4/application.d.ts +28 -12
  210. package/dist/src/sync/v4/application.js +85 -15
  211. package/dist/src/sync/v4/application.js.map +1 -1
  212. package/dist/src/sync/v4/export/controls/FilterBar.d.ts +1 -1
  213. package/dist/src/sync/v4/export/controls/ObjectPageCustomSection.d.ts +2 -1
  214. package/dist/src/sync/v4/export/controls/ObjectPageCustomSection.js.map +1 -1
  215. package/dist/src/sync/v4/export/controls/ObjectPageHeader.d.ts +1 -1
  216. package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.d.ts +1 -1
  217. package/dist/src/sync/v4/export/controls/ObjectPageHeaderSection.js.map +1 -1
  218. package/dist/src/sync/v4/export/controls/ObjectPageLayout.d.ts +1 -1
  219. package/dist/src/sync/v4/export/controls/ObjectPageTable.d.ts +1 -1
  220. package/dist/src/sync/v4/export/controls/ObjectPageTable.js +6 -18
  221. package/dist/src/sync/v4/export/controls/ObjectPageTable.js.map +1 -1
  222. package/dist/src/sync/v4/export/controls/ObjectPageTableColumn.d.ts +1 -1
  223. package/dist/src/sync/v4/export/controls/ObjectPageToolBarAction.d.ts +1 -1
  224. package/dist/src/sync/v4/export/controls/Table.d.ts +131 -10
  225. package/dist/src/sync/v4/export/controls/Table.js +477 -75
  226. package/dist/src/sync/v4/export/controls/Table.js.map +1 -1
  227. package/dist/src/sync/v4/export/controls/TableColumn.d.ts +52 -1
  228. package/dist/src/sync/v4/export/controls/TableColumn.js +248 -2
  229. package/dist/src/sync/v4/export/controls/TableColumn.js.map +1 -1
  230. package/dist/src/sync/v4/export/controls/ToolBar.d.ts +1 -1
  231. package/dist/src/sync/v4/export/controls/ToolBarAction.d.ts +4 -1
  232. package/dist/src/sync/v4/export/controls/ToolBarAction.js +10 -0
  233. package/dist/src/sync/v4/export/controls/ToolBarAction.js.map +1 -1
  234. package/dist/src/sync/v4/export/export.d.ts +2 -2
  235. package/dist/src/sync/v4/export/export.js +465 -96
  236. package/dist/src/sync/v4/export/export.js.map +1 -1
  237. package/dist/src/sync/v4/export/factory.d.ts +2 -1
  238. package/dist/src/sync/v4/export/factory.js.map +1 -1
  239. package/dist/src/sync/v4/export/flexibleColumnLayout.d.ts +1 -1
  240. package/dist/src/sync/v4/export/flexibleColumnLayout.js.map +1 -1
  241. package/dist/src/sync/v4/export/manifest.d.ts +1 -1
  242. package/dist/src/sync/v4/export/manifest.js.map +1 -1
  243. package/dist/src/sync/v4/export/pages/ListReport.d.ts +9 -3
  244. package/dist/src/sync/v4/export/pages/ListReport.js +49 -0
  245. package/dist/src/sync/v4/export/pages/ListReport.js.map +1 -1
  246. package/dist/src/sync/v4/export/pages/ObjectPage.d.ts +2 -2
  247. package/dist/src/sync/v4/export/pages/ObjectPage.js +3 -2
  248. package/dist/src/sync/v4/export/pages/ObjectPage.js.map +1 -1
  249. package/dist/src/sync/v4/export/pages/index.d.ts +0 -1
  250. package/dist/src/sync/v4/export/pages/index.js +0 -1
  251. package/dist/src/sync/v4/export/pages/index.js.map +1 -1
  252. package/dist/src/sync/v4/export/types.d.ts +8 -6
  253. package/dist/src/sync/v4/export/utils.d.ts +1 -1
  254. package/dist/src/sync/v4/generate/generate.d.ts +5 -4
  255. package/dist/src/sync/v4/generate/generate.js +6 -3
  256. package/dist/src/sync/v4/generate/generate.js.map +1 -1
  257. package/dist/src/sync/v4/generate/listReport.d.ts +2 -4
  258. package/dist/src/sync/v4/generate/listReport.js +450 -36
  259. package/dist/src/sync/v4/generate/listReport.js.map +1 -1
  260. package/dist/src/sync/v4/generate/objectPage.d.ts +1 -1
  261. package/dist/src/sync/v4/generate/objectPage.js +302 -144
  262. package/dist/src/sync/v4/generate/objectPage.js.map +1 -1
  263. package/dist/src/sync/v4/import/app/appProvider.d.ts +6 -5
  264. package/dist/src/sync/v4/import/app/appProvider.js +78 -56
  265. package/dist/src/sync/v4/import/app/appProvider.js.map +1 -1
  266. package/dist/src/sync/v4/import/fragment.d.ts +2 -2
  267. package/dist/src/sync/v4/import/fragment.js.map +1 -1
  268. package/dist/src/sync/v4/import/index.d.ts +0 -1
  269. package/dist/src/sync/v4/import/index.js +0 -1
  270. package/dist/src/sync/v4/import/index.js.map +1 -1
  271. package/dist/src/sync/v4/import/pages/listReport.d.ts +8 -7
  272. package/dist/src/sync/v4/import/pages/listReport.js +120 -29
  273. package/dist/src/sync/v4/import/pages/listReport.js.map +1 -1
  274. package/dist/src/sync/v4/import/pages/objectPage.d.ts +15 -2
  275. package/dist/src/sync/v4/import/pages/objectPage.js +69 -40
  276. package/dist/src/sync/v4/import/pages/objectPage.js.map +1 -1
  277. package/dist/src/sync/v4/import/utils.d.ts +4 -3
  278. package/dist/src/sync/v4/import/utils.js +2 -2
  279. package/dist/src/sync/v4/import/utils.js.map +1 -1
  280. package/dist/src/sync/v4/types.d.ts +4 -2
  281. package/dist/src/sync/v4/utils/StableIdHelper.js +13 -10
  282. package/dist/src/sync/v4/utils/StableIdHelper.js.map +1 -1
  283. package/dist/src/sync/v4/utils/utils.d.ts +18 -12
  284. package/dist/src/sync/v4/utils/utils.js +77 -30
  285. package/dist/src/sync/v4/utils/utils.js.map +1 -1
  286. package/dist/test/test-data/flexChange/v2/stta.prod.man/index.d.ts +1 -1
  287. package/dist/test/test-projects/index.d.ts +1 -1
  288. package/dist/test/test-utils/utils.d.ts +5 -4
  289. package/dist/test/unit/export/manifest.test.d.ts +1 -0
  290. package/package.json +13 -10
  291. package/dist/documentation/v4/v4-AnalyticalListPage.html +0 -49
  292. package/dist/schemas/v4/AnalyticalListPageConfig.json +0 -392
  293. package/dist/src/specification/v4/pages/AnalyticalListPageConfig.d.ts +0 -13
  294. package/dist/src/specification/v4/pages/AnalyticalListPageConfig.js +0 -3
  295. package/dist/src/specification/v4/pages/AnalyticalListPageConfig.js.map +0 -1
  296. package/dist/src/sync/v4/export/pages/AnalyticalListPage.d.ts +0 -8
  297. package/dist/src/sync/v4/export/pages/AnalyticalListPage.js +0 -38
  298. package/dist/src/sync/v4/export/pages/AnalyticalListPage.js.map +0 -1
  299. package/dist/src/sync/v4/import/pages/analyticalListPage.d.ts +0 -11
  300. package/dist/src/sync/v4/import/pages/analyticalListPage.js +0 -60
  301. package/dist/src/sync/v4/import/pages/analyticalListPage.js.map +0 -1
@@ -67,7 +67,6 @@ function transferManifestEntriesOVP(configObject, exportResults, jsonSchema, tar
67
67
  exports.transferManifestEntriesOVP = transferManifestEntriesOVP;
68
68
  /**
69
69
  * Assign sync rules to {currentObject}
70
- *
71
70
  * @param {string} structureName - name of the complex structure in schema
72
71
  * @param {object} currentObject - the given part of the configuration
73
72
  * @param {string} defaultTypeName - name of the default type that shall be taken if no class is registered for structureName
@@ -76,40 +75,52 @@ function assignReflectMetadataRules(factory, structureName, currentObject, defau
76
75
  return factory.createInstance(v2_1.PageType.OverviewPage, defaultTypeName, currentObject, structureName);
77
76
  }
78
77
  exports.assignReflectMetadataRules = assignReflectMetadataRules;
79
- function processAnyOfDefinitionsOfOVP(pathHierarchy, propertyList, jsonSchema, currentObject, configObject, factory, exportResults) {
80
- pathHierarchy.pop();
81
- let newConfigObject = currentObject;
82
- for (const anyOfKey in propertyList['anyOf']) {
83
- if (propertyList['anyOf'][anyOfKey].$ref) {
84
- const definitionArray = propertyList['anyOf'][anyOfKey].$ref.split(common_1.DEFINITION_LINK_PREFIX);
85
- const nextTargetDefinition = jsonSchema['definitions'][definitionArray[definitionArray.length - 1]];
86
- const cardSettingsType = pathHierarchy[1];
87
- currentObject = configObject[cardSettingsType];
88
- newConfigObject = assignReflectMetadataRules(factory, cardSettingsType, currentObject, 'CustomCard');
89
- transferManifestEntriesOVP(newConfigObject, exportResults, jsonSchema, nextTargetDefinition, factory, [
90
- ...pathHierarchy
91
- ]);
92
- }
93
- else if (typeof propertyList['anyOf'][anyOfKey] === 'object') {
78
+ function processAnyOfDefinitionsOfOVP(params) {
79
+ params.pathHierarchy.pop();
80
+ let newConfigObject = params.currentObject;
81
+ for (const anyOfKey in params.propertyList['anyOf']) {
82
+ if (params.propertyList['anyOf'][anyOfKey].$ref) {
83
+ const definitionArray = params.propertyList['anyOf'][anyOfKey].$ref.split(common_1.DEFINITION_LINK_PREFIX);
84
+ const nextTargetDefinition = params.appSchema['definitions'][definitionArray[definitionArray.length - 1]];
85
+ const cardSettingsType = params.pathHierarchy[1];
86
+ params.currentObject = params.configObject[cardSettingsType];
87
+ newConfigObject = assignReflectMetadataRules(params.factory, cardSettingsType, params.currentObject, 'CustomCard');
88
+ transferManifestEntriesOVP(newConfigObject, params.exportResults, params.appSchema, nextTargetDefinition, params.factory, [...params.pathHierarchy]);
89
+ }
90
+ else if (typeof params.propertyList['anyOf'][anyOfKey] === 'object') {
94
91
  // eslint-disable-next-line @typescript-eslint/no-use-before-define
95
- processProperties(configObject, exportResults, jsonSchema, propertyList['anyOf'][anyOfKey].properties, factory, [...pathHierarchy, 'anyOfObject']);
92
+ processProperties(params.configObject, params.exportResults, params.appSchema, params.propertyList['anyOf'][anyOfKey].properties, params.factory, [...params.pathHierarchy, 'anyOfObject']);
96
93
  }
97
94
  }
98
95
  return newConfigObject;
99
96
  }
97
+ function checkSyncRuleForExport(exportHandler, manifestSection, configObject, key, currentObject, exceptionList) {
98
+ if (exportHandler && typeof exportHandler === 'function') {
99
+ exportHandler(manifestSection, configObject, key);
100
+ }
101
+ else if (typeof currentObject === 'object' && !exceptionList.includes(key)) {
102
+ // colorPalette is an exception as it can contain anything as per our schema, so just replace the object
103
+ manifestSection[key] = deepmerge_1.default(manifestSection[key] || {}, currentObject || {}, {
104
+ arrayMerge: common_1.arrayCombineMerge
105
+ });
106
+ }
107
+ else {
108
+ manifestSection[key] = currentObject;
109
+ }
110
+ }
100
111
  /**
101
112
  * Transfer manifest settings from config to manifest
102
- * @param syncRule
103
- * @param pathHierarchy
113
+ * @param syncRule - metadata rule used for import and export
114
+ * @param pathHierarchy - elements of the path indicating the hierarchical level
104
115
  * @param key
105
- * @param exportResults
116
+ * @param exportResults - overall result list, to be updated
106
117
  * @param currentObject
107
118
  * @param configObject
108
- * @param exceptionList
109
119
  */
110
- function transferToManifest(syncRule, pathHierarchy, key, exportResults, currentObject, configObject, exceptionList) {
120
+ function transferToManifest(syncRule, pathHierarchy, key, exportResults, currentObject, configObject) {
121
+ const exceptionList = ['colorPalette', 'tabs'];
111
122
  const path = syncRule.manifest.path([...pathHierarchy, key]);
112
- const manifestSection = manifest_1.getManifestSectionByPathV2(exportResults.manifest, path);
123
+ const manifestSection = manifest_1.ensureManifestSectionByPathV2(exportResults.manifest, path);
113
124
  if (key in v2_1.CardSettingsType || key === 'settings') {
114
125
  manifestSection['settings'] = deepmerge_1.default(manifestSection['settings'] || {}, currentObject || {}, {
115
126
  arrayMerge: common_1.arrayCombineMerge
@@ -118,25 +129,14 @@ function transferToManifest(syncRule, pathHierarchy, key, exportResults, current
118
129
  else if (currentObject !== undefined) {
119
130
  const exportHandler = syncRule.manifest.export;
120
131
  if (exportHandler !== false) {
121
- if (exportHandler && typeof exportHandler === 'function') {
122
- exportHandler(manifestSection, configObject, key);
123
- }
124
- else if (typeof currentObject === 'object' && !exceptionList.includes(key)) {
125
- // colorPalette is an exception as it can contain anything as per our schema, so just replace the object
126
- manifestSection[key] = deepmerge_1.default(manifestSection[key] || {}, currentObject || {}, {
127
- arrayMerge: common_1.arrayCombineMerge
128
- });
129
- }
130
- else {
131
- manifestSection[key] = currentObject;
132
- }
132
+ checkSyncRuleForExport(exportHandler, manifestSection, configObject, key, currentObject, exceptionList);
133
133
  }
134
134
  }
135
135
  else if (manifestSection[key] !== undefined) {
136
136
  delete manifestSection[key];
137
137
  }
138
138
  }
139
- function transferCards(currentObject, jsonSchema, factory, exportResults) {
139
+ function transferCards(currentObject, appSchema, factory, exportResults) {
140
140
  Object.keys(currentObject).forEach((cardKey) => {
141
141
  const cardType = currentObject[cardKey].template;
142
142
  //Determine target defintion
@@ -145,15 +145,15 @@ function transferCards(currentObject, jsonSchema, factory, exportResults) {
145
145
  targetDefinition = ['CustomCard'];
146
146
  }
147
147
  else {
148
- targetDefinition = Object.keys(jsonSchema['definitions']).filter((definition) => {
148
+ targetDefinition = Object.keys(appSchema.definitions).filter((definition) => {
149
149
  var _a, _b, _c;
150
- return ((_c = (_b = (_a = jsonSchema['definitions'][definition].properties) === null || _a === void 0 ? void 0 : _a.template) === null || _b === void 0 ? void 0 : _b.enum) === null || _c === void 0 ? void 0 : _c.indexOf(currentObject[cardKey].template)) > -1;
150
+ return ((_c = (_b = (_a = appSchema.definitions[definition].properties) === null || _a === void 0 ? void 0 : _a.template) === null || _b === void 0 ? void 0 : _b.enum) === null || _c === void 0 ? void 0 : _c.indexOf(currentObject[cardKey].template)) > -1;
151
151
  });
152
152
  }
153
153
  //Get metadata
154
154
  currentObject[cardKey] = assignReflectMetadataRules(factory, targetDefinition[0], currentObject[cardKey], 'CustomCard');
155
155
  createCard(cardKey, exportResults['manifest'][v2_1.ManifestSection.ovp]);
156
- transferManifestEntriesOVP(currentObject[cardKey], exportResults, jsonSchema, jsonSchema['definitions'][targetDefinition[0]], factory, [cardKey]);
156
+ transferManifestEntriesOVP(currentObject[cardKey], exportResults, appSchema, appSchema.definitions[targetDefinition[0]], factory, [cardKey]);
157
157
  });
158
158
  //check for deletions:
159
159
  Object.keys(exportResults.manifest[v2_1.ManifestSection.ovp].cards).forEach((manifestCard) => {
@@ -162,22 +162,40 @@ function transferCards(currentObject, jsonSchema, factory, exportResults) {
162
162
  }
163
163
  });
164
164
  }
165
+ function exportOfObject(params, key, factory) {
166
+ if (key === 'cards') {
167
+ //inserts and updates:
168
+ transferCards(params.currentObject, params.appSchema, factory, params.exportResults);
169
+ }
170
+ else if (params.propertyList[key].$ref) {
171
+ const definitionArray = params.propertyList[key].$ref.split(common_1.DEFINITION_LINK_PREFIX);
172
+ const nextTargetDefinition = params.appSchema.definitions[definitionArray[definitionArray.length - 1]];
173
+ params.currentObject = assignReflectMetadataRules(params.factory, key, params.currentObject, key === 'settings' ? 'CustomCard' : '');
174
+ transferManifestEntriesOVP(params.currentObject, params.exportResults, params.appSchema, nextTargetDefinition, factory, [...params.pathHierarchy, key]);
175
+ }
176
+ else if (params.propertyList[key].anyOf) {
177
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
178
+ processProperties(params.configObject, params.exportResults, params.appSchema, params.propertyList[key], factory, [...params.pathHierarchy, key, 'anyOf']);
179
+ }
180
+ else if (params.propertyList[key]['properties'] !== undefined) {
181
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
182
+ processProperties(params.configObject, params.exportResults, params.appSchema, params.propertyList[key].properties, params.factory, [...params.pathHierarchy, key, 'objectProperties']);
183
+ }
184
+ }
165
185
  /**
166
186
  * Recursive function that transfers the content of a list of properties of a configuration to the overall exportResults
167
187
  * @param configObject - the given part of the configuration
168
188
  * @param exportResults - overall result list, to be updated
169
- * @param jsonSchema - app-specific JSOn schema
189
+ * @param appSchema - app-specific JSON schema
170
190
  * @param propertyList - current property list of the config (properties or additional properties)
171
191
  * @param {MetadataInstanceInterface} factory - factory for creating metadata instances
172
192
  * @param pathHierarchy - elements of the path indicating the hierarchical level
173
193
  */
174
- function processProperties(configObject, exportResults, jsonSchema, propertyList, factory, pathHierarchy) {
175
- let currentObject;
194
+ function processProperties(configObject, exportResults, appSchema, propertyList, factory, pathHierarchy) {
176
195
  let isAnyOfObject = false;
177
196
  let isObjectProperty = false;
178
- const exceptionList = ['colorPalette', 'tabs'];
179
197
  for (const key in propertyList) {
180
- currentObject = configObject[key];
198
+ let currentObject = configObject[key];
181
199
  let syncRule = common_1.getReflectMetadata(configObject, key);
182
200
  if (pathHierarchy[pathHierarchy.length - 1] === 'anyOfObject') {
183
201
  isAnyOfObject = true;
@@ -195,40 +213,23 @@ function processProperties(configObject, exportResults, jsonSchema, propertyList
195
213
  currentObject = configObject[pathHierarchy[pathHierarchy.length - 1]][key];
196
214
  syncRule = common_1.getReflectMetadata(configObject, pathHierarchy[pathHierarchy.length - 1]);
197
215
  }
216
+ const processDefinitionParams = {
217
+ pathHierarchy,
218
+ propertyList,
219
+ appSchema,
220
+ currentObject,
221
+ configObject,
222
+ factory,
223
+ exportResults
224
+ };
198
225
  if (pathHierarchy[pathHierarchy.length - 1] === 'anyOf') {
199
- currentObject = processAnyOfDefinitionsOfOVP(pathHierarchy, propertyList, jsonSchema, currentObject, configObject, factory, exportResults);
226
+ currentObject = processAnyOfDefinitionsOfOVP(processDefinitionParams);
200
227
  }
201
228
  if (syncRule === null || syncRule === void 0 ? void 0 : syncRule.manifest) {
202
- transferToManifest(syncRule, pathHierarchy, key, exportResults, currentObject, configObject, exceptionList);
229
+ transferToManifest(syncRule, pathHierarchy, key, exportResults, currentObject, configObject);
203
230
  }
204
231
  if (currentObject && typeof currentObject === 'object' && propertyList[key]) {
205
- if (key === 'cards') {
206
- //inserts and updates:
207
- transferCards(currentObject, jsonSchema, factory, exportResults);
208
- }
209
- else if (propertyList[key].$ref) {
210
- const definitionArray = propertyList[key].$ref.split(common_1.DEFINITION_LINK_PREFIX);
211
- const nextTargetDefinition = jsonSchema['definitions'][definitionArray[definitionArray.length - 1]];
212
- currentObject = assignReflectMetadataRules(factory, key, currentObject, key === 'settings' ? 'CustomCard' : '');
213
- transferManifestEntriesOVP(currentObject, exportResults, jsonSchema, nextTargetDefinition, factory, [
214
- ...pathHierarchy,
215
- key
216
- ]);
217
- }
218
- else if (propertyList[key].anyOf) {
219
- processProperties(configObject, exportResults, jsonSchema, propertyList[key], factory, [
220
- ...pathHierarchy,
221
- key,
222
- 'anyOf'
223
- ]);
224
- }
225
- else if (propertyList[key]['properties'] !== undefined) {
226
- processProperties(configObject, exportResults, jsonSchema, propertyList[key].properties, factory, [
227
- ...pathHierarchy,
228
- key,
229
- 'objectProperties'
230
- ]);
231
- }
232
+ exportOfObject(processDefinitionParams, key, factory);
232
233
  }
233
234
  }
234
235
  }
@@ -276,6 +277,35 @@ function evaluateFlexRule(transferParameters, breadcrumbs, syncRule, ids, title,
276
277
  transferParameters.exportResults.flexChanges.push(completeFlexChange);
277
278
  }
278
279
  }
280
+ /**
281
+ * Exports a given config property value to manifest
282
+ * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call
283
+ * @param syncRule - export rule from the object classes decorator
284
+ * @param manifestSection - current section in manifest.json
285
+ * @param configObject - current (sub)object of the configuration file
286
+ * @param key - key of the given property in the config
287
+ * @param manifestKey - key of the given property in manifest
288
+ */
289
+ function exportConfigValue(transferParameters, syncRule, manifestSection, configObject, key, manifestKey) {
290
+ if (
291
+ // In case of arrays we take over complete array
292
+ !(transferParameters.propertyDefinition['type'] !== 'array' &&
293
+ transferParameters.nextDefinition &&
294
+ transferParameters.nextDefinition['targetDefinition'].type === 'object' &&
295
+ transferParameters.nextDefinition['targetDefinition'].properties)) {
296
+ const exportHandler = syncRule.manifest.export;
297
+ if (exportHandler && typeof exportHandler === 'function') {
298
+ exportHandler(manifestSection, configObject, key, manifestKey);
299
+ }
300
+ else if (exportHandler !== false) {
301
+ manifestSection[manifestKey] = configObject[key];
302
+ }
303
+ }
304
+ else if (transferParameters.propertyDefinition['type'] !== 'array' &&
305
+ manifestSection[manifestKey] === undefined) {
306
+ manifestSection[manifestKey] = {};
307
+ }
308
+ }
279
309
  /**
280
310
  * Evaluates an export rule for a property, transfers to manifest setting
281
311
  * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call
@@ -286,34 +316,42 @@ function evaluateFlexRule(transferParameters, breadcrumbs, syncRule, ids, title,
286
316
  * @param key - key of the given property
287
317
  */
288
318
  function evaluateManifestRule(transferParameters, path, syncRule, key, configObject) {
289
- const manifestSection = manifest_1.getManifestSectionByPathV2(transferParameters.exportResults.manifest, path);
319
+ const manifestSection = manifest_1.ensureManifestSectionByPathV2(transferParameters.exportResults.manifest, path);
290
320
  const manifestKey = syncRule.manifest.key || key;
291
321
  if (configObject[key] !== undefined) {
292
- // In case of arrays we take over complete array
293
- if (!(transferParameters.propertyDefinition['type'] !== 'array' &&
294
- transferParameters.nextDefinition &&
295
- transferParameters.nextDefinition['targetDefinition'].type === 'object' &&
296
- transferParameters.nextDefinition['targetDefinition'].properties)) {
297
- const exportHandler = syncRule.manifest.export;
298
- if (exportHandler && typeof exportHandler === 'function') {
299
- exportHandler(manifestSection, configObject, key, manifestKey);
300
- }
301
- else if (exportHandler !== false) {
302
- manifestSection[manifestKey] = configObject[key];
303
- }
304
- }
305
- else if (transferParameters.propertyDefinition['type'] !== 'array' &&
306
- manifestSection[manifestKey] === undefined) {
307
- manifestSection[manifestKey] = {};
308
- }
322
+ exportConfigValue(transferParameters, syncRule, manifestSection, configObject, key, manifestKey);
309
323
  }
310
324
  else {
311
- if (Object.prototype.hasOwnProperty.call(manifestSection, manifestKey)) {
325
+ //delete value
326
+ const deleteHandler = syncRule.manifest.delete;
327
+ if (deleteHandler && typeof deleteHandler === 'function') {
328
+ deleteHandler(manifestSection, configObject, key, manifestKey);
329
+ }
330
+ else if (Object.prototype.hasOwnProperty.call(manifestSection, manifestKey)) {
312
331
  delete manifestSection[manifestKey];
313
332
  }
314
333
  }
315
334
  common_1.deleteEmptyStructure(transferParameters.exportResults.manifest, path);
316
335
  }
336
+ function getManifestPathOfSections(breadcrumbs, path, syncRule, transferParameters, title) {
337
+ if (breadcrumbs[1] === 'custom') {
338
+ path = syncRule.manifest.path(transferParameters.pageKeys, {}, breadcrumbs[2]);
339
+ }
340
+ else {
341
+ path = syncRule.manifest.path(transferParameters.pageKeys, {}, (title === null || title === void 0 ? void 0 : title.startsWith(common_1.FacetTitlePrefix)) ? title.split(common_1.FacetTitlePrefix)[1] : breadcrumbs[1], breadcrumbs[breadcrumbs.length - 1]);
342
+ path = path.replace('/@', '::').replace(/VOCWITHCOLONS/g, '::com.sap.vocabularies');
343
+ }
344
+ return path;
345
+ }
346
+ function getManifestPathOfTable(breadcrumbs, path, syncRule, transferParameters, configObject) {
347
+ if (breadcrumbs[1] === 'columns' && breadcrumbs[2] === 'custom') {
348
+ path = syncRule.manifest.path(transferParameters.pageKeys, transferParameters.exportResults.manifest, configObject['tabKey']);
349
+ }
350
+ else {
351
+ path = syncRule.manifest.path(transferParameters.pageKeys, {}, breadcrumbs[breadcrumbs.length - 1]);
352
+ }
353
+ return path;
354
+ }
317
355
  /**
318
356
  * Determines the path to a manifest setting, based on the syncRule
319
357
  * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call
@@ -325,22 +363,11 @@ function evaluateManifestRule(transferParameters, path, syncRule, key, configObj
325
363
  */
326
364
  function getManifestPath(transferParameters, breadcrumbs, syncRule, configObject, title) {
327
365
  let path;
328
- if (breadcrumbs[0] === 'sections') {
329
- if (breadcrumbs[1] === 'custom') {
330
- path = syncRule.manifest.path(transferParameters.pageKeys, {}, breadcrumbs[2]);
331
- }
332
- else {
333
- path = syncRule.manifest.path(transferParameters.pageKeys, {}, (title === null || title === void 0 ? void 0 : title.startsWith(common_1.FacetTitlePrefix)) ? title.split(common_1.FacetTitlePrefix)[1] : breadcrumbs[1], breadcrumbs[breadcrumbs.length - 1]);
334
- path = path.replace('/@', '::').replace(/VOCWITHCOLONS/g, '::com.sap.vocabularies');
335
- }
366
+ if (breadcrumbs[0] === v2_1.PropertyName.sections) {
367
+ path = getManifestPathOfSections(breadcrumbs, path, syncRule, transferParameters, title);
336
368
  }
337
- else if (breadcrumbs[0] === 'table') {
338
- if (breadcrumbs[1] === 'columns' && breadcrumbs[2] === 'custom') {
339
- path = syncRule.manifest.path(transferParameters.pageKeys, transferParameters.exportResults.manifest, configObject['tabKey']);
340
- }
341
- else {
342
- path = syncRule.manifest.path(transferParameters.pageKeys, {}, breadcrumbs[breadcrumbs.length - 1]);
343
- }
369
+ else if (breadcrumbs[0] === v2_1.PropertyName.table) {
370
+ path = getManifestPathOfTable(breadcrumbs, path, syncRule, transferParameters, configObject);
344
371
  }
345
372
  else if (breadcrumbs[0] === 'keyPerformanceIndicators') {
346
373
  path = syncRule.manifest.path(transferParameters.pageKeys, transferParameters.exportResults.manifest, title);
@@ -381,6 +408,34 @@ function evaluateExportRule(transferParameters, syncRule, configObject, breadcru
381
408
  evaluateManifestRule(transferParameters, path, syncRule, key, configObject);
382
409
  }
383
410
  }
411
+ /**
412
+ * Deletes an obsolete custom column from manifest
413
+ */
414
+ function deleteObsoleteColumn(key, columnParams, manifestSection) {
415
+ var _a;
416
+ const keyParts = key.split('|');
417
+ const keyEntitySet = keyParts[1];
418
+ const keyTab = keyParts[2];
419
+ if (keyEntitySet === columnParams.entitySet) {
420
+ //relevant extension. still present in config?
421
+ const existingConfigEntries = (_a = columnParams.config) === null || _a === void 0 ? void 0 : _a.filter((column) => (column.tabKey === keyTab ||
422
+ (keyTab === undefined && column.tabKey === '') ||
423
+ (keyTab && columnParams.sectionKey === keyTab)) &&
424
+ column.extensionType === columnParams.extensionType);
425
+ if (!existingConfigEntries || existingConfigEntries.length === 0) {
426
+ controls_1.deleteColumnFromFragment(manifestSection, key, columnParams.appId, columnParams.exportResults.fragments);
427
+ // delete from manifest
428
+ delete manifestSection[key];
429
+ // delete cells entry
430
+ if (key.startsWith(common_1.ViewTemplateType.ResponsiveTableColumnsExtension)) {
431
+ const cellsPattern = key.replace(common_1.ViewTemplateType.ResponsiveTableColumnsExtension, common_1.ViewTemplateType.ResponsiveTableCellsExtension);
432
+ controls_1.deleteColumnFromFragment(manifestSection, cellsPattern, columnParams.appId, columnParams.exportResults.fragments);
433
+ // delete from manifest
434
+ delete manifestSection[cellsPattern];
435
+ }
436
+ }
437
+ }
438
+ }
384
439
  /**
385
440
  * Walks through the extensions registered in manifest and compares the columns of the fragment with the ones present in config.
386
441
  * If not present anymore, the extension column gets deleted from fragment.
@@ -392,34 +447,13 @@ function evaluateExportRule(transferParameters, syncRule, configObject, breadcru
392
447
  * @param extensionType - extensionType
393
448
  * @param appId - application ID
394
449
  */
395
- function deleteObsoleteColumnsFromFragment(path, exportResults, entitySet, config, sectionKey, extensionType, appId) {
396
- const folderPath = path.substr(0, path.lastIndexOf('/'));
397
- const manifestSection = manifest_1.getManifestSectionByPathV2(exportResults.manifest, folderPath);
398
- const extensionPattern = path.substr(path.lastIndexOf('/') + 1);
450
+ function deleteObsoleteColumnsFromFragment(columnParams) {
451
+ const folderPath = columnParams.path.substring(0, columnParams.path.lastIndexOf('/'));
452
+ const manifestSection = manifest_1.getManifestSectionByPathV2(columnParams.exportResults.manifest, folderPath);
453
+ const extensionPattern = columnParams.path.substring(columnParams.path.lastIndexOf('/') + 1);
399
454
  for (const key in manifestSection) {
400
455
  if (key.startsWith(extensionPattern)) {
401
- const keyParts = key.split('|');
402
- const keyEntitySet = keyParts[1];
403
- const keyTab = keyParts[2];
404
- if (keyEntitySet === entitySet) {
405
- //relevant extension. still present in config?
406
- const existingConfigEntries = config === null || config === void 0 ? void 0 : config.filter((column) => (column.tabKey === keyTab ||
407
- (keyTab === undefined && column.tabKey === '') ||
408
- (keyTab && sectionKey === keyTab)) &&
409
- column.extensionType === extensionType);
410
- if (!existingConfigEntries || existingConfigEntries.length === 0) {
411
- controls_1.deleteColumnFromFragment(manifestSection, key, appId, exportResults.fragments);
412
- // delete from manifest
413
- delete manifestSection[key];
414
- // delete cells entry
415
- if (key.startsWith(common_1.ViewTemplateType.ResponsiveTableColumnsExtension)) {
416
- const cellsPattern = key.replace(common_1.ViewTemplateType.ResponsiveTableColumnsExtension, common_1.ViewTemplateType.ResponsiveTableCellsExtension);
417
- controls_1.deleteColumnFromFragment(manifestSection, cellsPattern, appId, exportResults.fragments);
418
- // delete from manifest
419
- delete manifestSection[cellsPattern];
420
- }
421
- }
422
- }
456
+ deleteObsoleteColumn(key, columnParams, manifestSection);
423
457
  }
424
458
  }
425
459
  }
@@ -476,7 +510,16 @@ function transferColumnExtensions(transferParameters, customColumnsInConfig, sch
476
510
  if (!path) {
477
511
  continue;
478
512
  }
479
- deleteObsoleteColumnsFromFragment(path, transferParameters.exportResults, entitySet, customColumnsInConfig, sectionKey, extensionType, transferParameters.appId);
513
+ const columParams = {
514
+ path,
515
+ exportResults: transferParameters.exportResults,
516
+ entitySet,
517
+ config: customColumnsInConfig,
518
+ sectionKey,
519
+ extensionType,
520
+ appId: transferParameters.appId
521
+ };
522
+ deleteObsoleteColumnsFromFragment(columParams);
480
523
  }
481
524
  if (customColumnsInConfig) {
482
525
  //cluster existing custom columns by manifest path (or tab key)
@@ -514,7 +557,7 @@ function transferManifestExtensions(transferParameters, configSections, pageKey,
514
557
  transferManifestEntriesAndFlexChange(transferParameters, configSections[index], parentIds, [...breadcrumbs, sectionIds[index]], nextTargetDefinition);
515
558
  }
516
559
  // Delete removed manifest entries
517
- const manifestSections = manifest_1.getManifestSectionByPathV2(transferParameters.exportResults.manifest, application_1.getViewExtensionsPath());
560
+ const manifestSections = manifest_1.ensureManifestSectionByPathV2(transferParameters.exportResults.manifest, application_1.getViewExtensionsPath());
518
561
  for (const key in manifestSections) {
519
562
  if (utils_1.isAssociatedCustomSection(key, entity) && !sectionIds.includes(key)) {
520
563
  delete manifestSections[key];
@@ -530,14 +573,18 @@ function transferManifestExtensions(transferParameters, configSections, pageKey,
530
573
  function getSectionId(breadcrumbs, title) {
531
574
  let sectionId = undefined;
532
575
  for (let i = breadcrumbs.length - 1; i >= 0; i--) {
533
- if (breadcrumbs[i] === 'table') {
576
+ if (breadcrumbs[i] === v2_1.PropertyName.table) {
534
577
  sectionId = breadcrumbs[i - 1];
535
578
  break;
536
579
  }
537
580
  }
538
581
  return common_1.convertSectionId(sectionId, title);
539
582
  }
540
- function transferIndexTable(currentConfigObject, transferParameters, title, propertyDefinition, key, ids, breadcrumbs) {
583
+ /**
584
+ * Processes index tables in schema
585
+ */
586
+ function transferIndexTable(currentConfigObject, transferParameters, title, key, ids, breadcrumbs) {
587
+ const propertyDefinition = transferParameters.propertyDefinition;
541
588
  if (!currentConfigObject || !(propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.additionalProperties)) {
542
589
  return;
543
590
  }
@@ -547,6 +594,9 @@ function transferIndexTable(currentConfigObject, transferParameters, title, prop
547
594
  transferManifestEntriesAndFlexChange(transferParameters, nextDefinition.configObject, ids, [...breadcrumbs, key], nextDefinition.targetDefinition, newKey);
548
595
  });
549
596
  }
597
+ /**
598
+ * Transfers custom columns of schema
599
+ */
550
600
  function transferCustomColumns(propertyDefinition, breadcrumbs, title, transferParameters, configObject, nextDefinition) {
551
601
  let objectPageSectionData;
552
602
  const target = common_1.getTargetFromCustomColumnRef(propertyDefinition.$ref);
@@ -558,6 +608,9 @@ function transferCustomColumns(propertyDefinition, breadcrumbs, title, transferP
558
608
  }
559
609
  transferColumnExtensions(transferParameters, configObject === null || configObject === void 0 ? void 0 : configObject.custom, nextDefinition.targetDefinition, objectPageSectionData);
560
610
  }
611
+ /**
612
+ * Processes anyOf definitions of schema
613
+ */
561
614
  function handleAnyOfDefinitions(propertyDefinition, transferParameters, title, currentConfigObject, key, ids, breadcrumbs) {
562
615
  propertyDefinition['anyOf'].forEach((element) => {
563
616
  const nextDefinition = common_1.getNextTargetDefinition(transferParameters.appSchema, title, currentConfigObject, element, key, transferParameters.factory, transferParameters.pageType);
@@ -567,6 +620,28 @@ function handleAnyOfDefinitions(propertyDefinition, transferParameters, title, c
567
620
  }
568
621
  });
569
622
  }
623
+ /**
624
+ * Processes complex definitions of schema
625
+ */
626
+ function transferComplexProperty(transferParameters, breadcrumbs, configObject, ids, propertyKey, nextDefinition, title) {
627
+ const propertyDefinition = transferParameters.propertyDefinition;
628
+ if ((propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.type) === 'array' &&
629
+ (breadcrumbs[0] === 'sections' || breadcrumbs[0] === 'subsections') &&
630
+ propertyKey === 'custom') {
631
+ transferManifestExtensions(transferParameters, configObject[propertyKey], transferParameters.pageKeys[transferParameters.pageKeys.length - 1], ids, [...breadcrumbs, propertyKey], propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.items);
632
+ }
633
+ else if (nextDefinition && propertyKey === 'custom') {
634
+ transferCustomColumns(propertyDefinition, breadcrumbs, title, transferParameters, configObject, nextDefinition);
635
+ return;
636
+ }
637
+ else if (nextDefinition) {
638
+ // eslint-disable-next-line @typescript-eslint/no-use-before-define
639
+ transferManifestEntriesAndFlexChange(transferParameters, nextDefinition.configObject, ids, [...breadcrumbs, propertyKey], nextDefinition.targetDefinition, nextDefinition.title);
640
+ }
641
+ else if (propertyDefinition['anyOf']) {
642
+ handleAnyOfDefinitions(propertyDefinition, transferParameters, title, configObject === null || configObject === void 0 ? void 0 : configObject[propertyKey], propertyKey, ids, breadcrumbs);
643
+ }
644
+ }
570
645
  /**
571
646
  * Function that traverses the content of the current object. It reads decorators and fills manifest entries and flex changes
572
647
  * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call
@@ -581,33 +656,20 @@ function transferManifestEntriesAndFlexChange(transferParameters, configObject,
581
656
  if (!(schemaDefinition === null || schemaDefinition === void 0 ? void 0 : schemaDefinition['properties'])) {
582
657
  return;
583
658
  }
584
- for (const key in schemaDefinition['properties']) {
585
- currentConfigObject = configObject && configObject[key];
586
- const childId = configObject && common_1.getChildId(configObject, key);
659
+ for (const propertyKey in schemaDefinition['properties']) {
660
+ currentConfigObject = configObject === null || configObject === void 0 ? void 0 : configObject[propertyKey];
661
+ const childId = configObject && common_1.getChildId(configObject, propertyKey);
587
662
  const ids = childId ? [...parentIds, childId] : parentIds;
588
- const syncRule = common_1.getReflectMetadata(configObject, key);
589
- const propertyDefinition = (transferParameters.propertyDefinition = schemaDefinition['properties'][key]);
590
- const nextDefinition = (transferParameters.nextDefinition = common_1.getNextTargetDefinition(transferParameters.appSchema, title, currentConfigObject, propertyDefinition, key, transferParameters.factory, transferParameters.pageType));
663
+ const syncRule = common_1.getReflectMetadata(configObject, propertyKey);
664
+ const propertyDefinition = (transferParameters.propertyDefinition =
665
+ schemaDefinition['properties'][propertyKey]);
666
+ const nextDefinition = (transferParameters.nextDefinition = common_1.getNextTargetDefinition(transferParameters.appSchema, title, currentConfigObject, propertyDefinition, propertyKey, transferParameters.factory, transferParameters.pageType));
591
667
  //Evaluate sync rule for the export
592
- evaluateExportRule(transferParameters, syncRule, configObject, [...breadcrumbs], ids, title, key);
668
+ evaluateExportRule(transferParameters, syncRule, configObject, [...breadcrumbs], ids, title, propertyKey);
593
669
  //index table
594
- transferIndexTable(currentConfigObject, transferParameters, title, propertyDefinition, key, ids, breadcrumbs);
670
+ transferIndexTable(currentConfigObject, transferParameters, title, propertyKey, ids, breadcrumbs);
595
671
  if (currentConfigObject === undefined || typeof currentConfigObject === 'object') {
596
- if ((propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.type) === 'array' &&
597
- (breadcrumbs[0] === 'sections' || breadcrumbs[0] === 'subsections') &&
598
- key === 'custom') {
599
- transferManifestExtensions(transferParameters, configObject[key], transferParameters.pageKeys[transferParameters.pageKeys.length - 1], ids, [...breadcrumbs, key], propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.items);
600
- }
601
- else if (nextDefinition && key === 'custom') {
602
- transferCustomColumns(propertyDefinition, breadcrumbs, title, transferParameters, configObject, nextDefinition);
603
- continue;
604
- }
605
- else if (nextDefinition) {
606
- transferManifestEntriesAndFlexChange(transferParameters, nextDefinition.configObject, ids, [...breadcrumbs, key], nextDefinition.targetDefinition, nextDefinition.title);
607
- }
608
- else if (propertyDefinition['anyOf']) {
609
- handleAnyOfDefinitions(propertyDefinition, transferParameters, title, currentConfigObject, key, ids, breadcrumbs);
610
- }
672
+ transferComplexProperty(transferParameters, breadcrumbs, configObject, ids, propertyKey, nextDefinition, title);
611
673
  }
612
674
  else if ((propertyDefinition === null || propertyDefinition === void 0 ? void 0 : propertyDefinition.$ref) === common_1.DEFINITION_LINK_PREFIX + 'TableCustomColumns') {
613
675
  //empty config ==> delete all given extensions