@sap/open.fe 1.96.0 → 1.97.0

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 (490) hide show
  1. package/package.json +1 -1
  2. package/packages/sap.fe.common/src/sap/fe/common/.library +1 -1
  3. package/packages/sap.fe.common/src/sap/fe/common/.theming +1 -1
  4. package/packages/sap.fe.common/src/sap/fe/common/MessageButton-dbg.js +57 -42
  5. package/packages/sap.fe.common/src/sap/fe/common/MessageButton.js +1 -1
  6. package/packages/sap.fe.common/src/sap/fe/common/library-dbg.js +1 -1
  7. package/packages/sap.fe.common/src/sap/fe/common/library-h2-preload.js +2 -2
  8. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js +4 -4
  9. package/packages/sap.fe.common/src/sap/fe/common/library-preload.js.map +3 -3
  10. package/packages/sap.fe.common/src/sap/fe/common/library.js +1 -1
  11. package/packages/sap.fe.common/src/sap/fe/common/manifest.json +3 -3
  12. package/packages/sap.fe.common/src/sap/fe/common/resources.json +4 -4
  13. package/packages/sap.fe.common/test/sap/fe/common/designtime/api.json +1 -1
  14. package/packages/sap.fe.common/test/sap/fe/common/designtime/apiref/api.json +1 -1
  15. package/packages/sap.fe.common/test/sap/fe/common/designtime/codeassistance/Library.xmlmeta.json +1 -1
  16. package/packages/sap.fe.core/src/sap/fe/core/.library +1 -1
  17. package/packages/sap.fe.core/src/sap/fe/core/.theming +1 -1
  18. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper-dbg.js +2 -2
  19. package/packages/sap.fe.core/src/sap/fe/core/AnnotationHelper.js +1 -1
  20. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils-dbg.js +59 -274
  21. package/packages/sap.fe.core/src/sap/fe/core/CommonUtils.js +1 -1
  22. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy-dbg.js +52 -64
  23. package/packages/sap.fe.core/src/sap/fe/core/RouterProxy.js +1 -1
  24. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent-dbg.js +2 -2
  25. package/packages/sap.fe.core/src/sap/fe/core/TemplateComponent.js +1 -1
  26. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper-dbg.js +18 -22
  27. package/packages/sap.fe.core/src/sap/fe/core/TransactionHelper.js +1 -1
  28. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling-dbg.js +80 -4
  29. package/packages/sap.fe.core/src/sap/fe/core/actions/messageHandling.js +1 -1
  30. package/packages/sap.fe.core/src/sap/fe/core/actions/operations-dbg.js +42 -23
  31. package/packages/sap.fe.core/src/sap/fe/core/actions/operations.js +1 -1
  32. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow-dbg.js +36 -21
  33. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/EditFlow.js +1 -1
  34. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation-dbg.js +9 -3
  35. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +1 -1
  36. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting-dbg.js +20 -50
  37. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/InternalRouting.js +1 -1
  38. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler-dbg.js +222 -102
  39. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/MessageHandler.js +1 -1
  40. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState-dbg.js +33 -6
  41. package/packages/sap.fe.core/src/sap/fe/core/controllerextensions/ViewState.js +1 -1
  42. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage-dbg.js +109 -111
  43. package/packages/sap.fe.core/src/sap/fe/core/controls/CustomQuickViewPage.js +1 -1
  44. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d-dbg.js +8 -0
  45. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.js +5 -0
  46. package/packages/sap.fe.core/src/sap/fe/core/controls/filterbar.d.ts +0 -0
  47. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings-dbg.js +2 -1
  48. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.js +1 -1
  49. package/packages/sap.fe.core/src/sap/fe/core/converters/ManifestSettings.ts +4 -1
  50. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter-dbg.js +10 -1
  51. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.js +1 -1
  52. package/packages/sap.fe.core/src/sap/fe/core/converters/MetaModelConverter.ts +9 -1
  53. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField-dbg.js +2 -2
  54. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.js +1 -1
  55. package/packages/sap.fe.core/src/sap/fe/core/converters/annotations/DataField.ts +1 -1
  56. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter-dbg.js +67 -40
  57. package/packages/sap.fe.core/src/sap/fe/core/converters/common/AnnotationConverter.js +1 -1
  58. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action-dbg.js +6 -3
  59. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.js +1 -1
  60. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Action.ts +6 -3
  61. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form-dbg.js +57 -18
  62. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.js +1 -1
  63. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Form.ts +51 -13
  64. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table-dbg.js +130 -19
  65. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.js +1 -1
  66. package/packages/sap.fe.core/src/sap/fe/core/converters/controls/Common/Table.ts +139 -18
  67. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID-dbg.js +9 -1
  68. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.js +1 -1
  69. package/packages/sap.fe.core/src/sap/fe/core/converters/helpers/ID.ts +4 -0
  70. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter-dbg.js +18 -7
  71. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.js +1 -1
  72. package/packages/sap.fe.core/src/sap/fe/core/converters/templates/ListReportConverter.ts +17 -12
  73. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent-dbg.designtime.js +2 -1
  74. package/packages/sap.fe.core/src/sap/fe/core/designtime/AppComponent.designtime.js +1 -1
  75. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js +1 -1
  76. package/packages/sap.fe.core/src/sap/fe/core/designtime/library-preload.designtime.js.map +2 -2
  77. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter-dbg.js +27 -4
  78. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.js +1 -1
  79. package/packages/sap.fe.core/src/sap/fe/core/formatters/TableFormatter.ts +20 -3
  80. package/packages/sap.fe.core/src/sap/fe/core/fpm/manifest.json +2 -2
  81. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper-dbg.js +211 -0
  82. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.js +5 -0
  83. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveHelper.ts +202 -0
  84. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes-dbg.js +32 -0
  85. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.js +5 -0
  86. package/packages/sap.fe.core/src/sap/fe/core/helpers/KeepAliveRefreshTypes.ts +36 -0
  87. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper-dbg.js +51 -0
  88. package/packages/sap.fe.core/src/sap/fe/core/helpers/ModelHelper.js +1 -1
  89. package/packages/sap.fe.core/src/sap/fe/core/library-dbg.js +1 -1
  90. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js +10 -9
  91. package/packages/sap.fe.core/src/sap/fe/core/library-h2-preload.js.map +1 -1
  92. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js +232 -228
  93. package/packages/sap.fe.core/src/sap/fe/core/library-preload.js.map +4 -4
  94. package/packages/sap.fe.core/src/sap/fe/core/library.js +1 -1
  95. package/packages/sap.fe.core/src/sap/fe/core/manifest.json +10 -10
  96. package/packages/sap.fe.core/src/sap/fe/core/messagebundle.properties +15 -1
  97. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ar.properties +10 -0
  98. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_bg.properties +10 -0
  99. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ca.properties +10 -0
  100. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cs.properties +10 -0
  101. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_cy.properties +10 -0
  102. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_da.properties +10 -0
  103. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_de.properties +10 -0
  104. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_el.properties +10 -0
  105. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en.properties +10 -0
  106. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_GB.properties +10 -0
  107. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_sappsd.properties +6 -0
  108. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saprigi.properties +11 -1
  109. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_en_US_saptrc.properties +11 -1
  110. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es.properties +10 -0
  111. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_es_MX.properties +10 -0
  112. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_et.properties +10 -0
  113. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fi.properties +10 -0
  114. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr.properties +10 -0
  115. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_fr_CA.properties +10 -0
  116. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hi.properties +10 -0
  117. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hr.properties +10 -0
  118. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_hu.properties +10 -0
  119. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_id.properties +11 -1
  120. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_it.properties +10 -0
  121. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_iw.properties +10 -0
  122. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ja.properties +19 -9
  123. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_kk.properties +10 -0
  124. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ko.properties +10 -0
  125. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lt.properties +10 -0
  126. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_lv.properties +10 -0
  127. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ms.properties +10 -0
  128. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_nl.properties +10 -0
  129. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_no.properties +10 -0
  130. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pl.properties +10 -0
  131. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt.properties +11 -1
  132. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_pt_PT.properties +10 -0
  133. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ro.properties +10 -0
  134. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_ru.properties +10 -0
  135. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sh.properties +10 -0
  136. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sk.properties +10 -0
  137. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sl.properties +10 -0
  138. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_sv.properties +10 -0
  139. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_th.properties +10 -0
  140. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_tr.properties +10 -0
  141. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_uk.properties +10 -0
  142. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_vi.properties +10 -0
  143. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_CN.properties +10 -0
  144. package/packages/sap.fe.core/src/sap/fe/core/messagebundle_zh_TW.properties +10 -0
  145. package/packages/sap.fe.core/src/sap/fe/core/resources.json +200 -121
  146. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory-dbg.js +30 -19
  147. package/packages/sap.fe.core/src/sap/fe/core/services/RoutingServiceFactory.js +1 -1
  148. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory-dbg.js +1 -1
  149. package/packages/sap.fe.core/src/sap/fe/core/services/TemplatedViewServiceFactory.js +1 -1
  150. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper-dbg.js +80 -7
  151. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.js +1 -1
  152. package/packages/sap.fe.core/src/sap/fe/core/templating/EntitySetHelper.ts +42 -2
  153. package/packages/sap.fe.core/test/sap/fe/core/designtime/api.json +1 -1
  154. package/packages/sap.fe.core/test/sap/fe/core/designtime/apiref/api.json +1 -1
  155. package/packages/sap.fe.core/test/sap/fe/core/designtime/codeassistance/Library.xmlmeta.json +1 -1
  156. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/buildingBlockOverview.md +4 -0
  157. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/buildingBlocks/chart/chartDefault/ChartDefault.view.xml +1 -0
  158. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/controllerExtensions/viewState/manifest.json +2 -2
  159. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnAdaptation.fragment.xml +13 -10
  160. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/CustomColumnButton.fragment.xml +7 -4
  161. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/localService/service.cds +1 -2
  162. package/packages/sap.fe.core/test/sap/fe/core/fpmExplorer/topics/customElements/customColumn/customColumnContent/manifest.json +1 -0
  163. package/packages/sap.fe.core/test/sap/fe/core/jest/CommonUtils.spec.js +119 -0
  164. package/packages/sap.fe.core/test/sap/fe/core/jest/__snapshots__/TemplateConverter.spec.ts.snap +285 -4
  165. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.js +121 -0
  166. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/MessageHandler.spec.ts +79 -0
  167. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.js +147 -0
  168. package/packages/sap.fe.core/test/sap/fe/core/jest/controllerextensions/ViewState.spec.ts +96 -0
  169. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.js +51 -18
  170. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/Table.spec.ts +109 -17
  171. package/packages/sap.fe.core/test/sap/fe/core/jest/converters/__snapshots__/MetaModelConverter.spec.ts.snap +66 -0
  172. package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelper.cds +33 -0
  173. package/packages/sap.fe.core/test/sap/fe/core/jest/data/EntitySetHelperMainEntitySortableFalse.cds +12 -0
  174. package/packages/sap.fe.core/test/sap/fe/core/jest/data/TableGetSelectionMode.cds +8 -8
  175. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.js +68 -0
  176. package/packages/sap.fe.core/test/sap/fe/core/jest/formatters/TableFormatters.spec.ts +38 -0
  177. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.js +483 -0
  178. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelper.spec.ts +376 -0
  179. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.js +101 -0
  180. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlRefreshStrategyTests.ts +105 -0
  181. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.js +103 -0
  182. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/ControlsForRefreshTests.ts +106 -0
  183. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.js +118 -0
  184. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/RefreshStrategyForIntentTests.ts +118 -0
  185. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.js +101 -0
  186. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/KeepAliveHelperTestData/StoreStrategyTests.ts +102 -0
  187. package/packages/sap.fe.core/test/sap/fe/core/jest/helpers/ModelHelper.spec.js +118 -1
  188. package/packages/sap.fe.core/test/sap/fe/core/jest/services/RoutingServiceFactory.spec.js +70 -0
  189. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.js +89 -0
  190. package/packages/sap.fe.core/test/sap/fe/core/jest/templating/EntitySetHelper.spec.ts +73 -0
  191. package/packages/sap.fe.core/test/sap/fe/core/qunit/TemplatingExpressions.qunit.js +4 -2
  192. package/packages/sap.fe.core/test/sap/fe/core/qunit/apps/generalTests.json +6 -0
  193. package/packages/sap.fe.macros/src/sap/fe/macros/.library +1 -1
  194. package/packages/sap.fe.macros/src/sap/fe/macros/.theming +1 -1
  195. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate-dbg.js +15 -5
  196. package/packages/sap.fe.macros/src/sap/fe/macros/ChartDelegate.js +1 -1
  197. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper-dbg.js +9 -5
  198. package/packages/sap.fe.macros/src/sap/fe/macros/CommonHelper.js +1 -1
  199. package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil-dbg.js +30 -11
  200. package/packages/sap.fe.macros/src/sap/fe/macros/DelegateUtil.js +1 -1
  201. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI-dbg.js +3 -5
  202. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.js +1 -1
  203. package/packages/sap.fe.macros/src/sap/fe/macros/FieldAPI.ts +3 -5
  204. package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate-dbg.js +17 -3
  205. package/packages/sap.fe.macros/src/sap/fe/macros/FieldValueHelpDelegate.js +1 -1
  206. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI-dbg.js +1 -1
  207. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarAPI.ts +1 -2
  208. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate-dbg.js +4 -4
  209. package/packages/sap.fe.macros/src/sap/fe/macros/FilterBarDelegate.js +1 -1
  210. package/packages/sap.fe.macros/src/sap/fe/macros/FlexibleColumnLayoutActions.fragment.xml +6 -15
  211. package/packages/sap.fe.macros/src/sap/fe/macros/FormContainer.fragment.xml +14 -12
  212. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil-dbg.js +1 -1
  213. package/packages/sap.fe.macros/src/sap/fe/macros/PhantomUtil.js +1 -1
  214. package/packages/sap.fe.macros/src/sap/fe/macros/Table.fragment.xml +2 -1
  215. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata-dbg.js +12 -1
  216. package/packages/sap.fe.macros/src/sap/fe/macros/Table.metadata.js +1 -1
  217. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI-dbg.js +15 -8
  218. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.js +1 -1
  219. package/packages/sap.fe.macros/src/sap/fe/macros/TableAPI.ts +10 -0
  220. package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper-dbg.js +1 -1
  221. package/packages/sap.fe.macros/src/sap/fe/macros/chart/ChartHelper.js +1 -1
  222. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper-dbg.js +81 -9
  223. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldHelper.js +1 -1
  224. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime-dbg.js +13 -3
  225. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldRuntime.js +1 -1
  226. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating-dbg.js +5 -5
  227. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.js +1 -1
  228. package/packages/sap.fe.macros/src/sap/fe/macros/field/FieldTemplating.ts +4 -4
  229. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkContactContent.fragment.xml +1 -7
  230. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate-dbg.js +5 -3
  231. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkDelegate.js +1 -1
  232. package/packages/sap.fe.macros/src/sap/fe/macros/field/QuickViewLinkForContact.fragment.xml +1 -1
  233. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime-dbg.js +46 -0
  234. package/packages/sap.fe.macros/src/sap/fe/macros/formcontainer/FormContainerRuntime.js +6 -0
  235. package/packages/sap.fe.macros/src/sap/fe/macros/internal/Field.fragment.xml +17 -8
  236. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/FieldStructure.fragment.xml +26 -16
  237. package/packages/sap.fe.macros/src/sap/fe/macros/internal/field/editStyle/File.fragment.xml +1 -0
  238. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating-dbg.js +4 -13
  239. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.js +1 -1
  240. package/packages/sap.fe.macros/src/sap/fe/macros/internal/helpers/DataPointTemplating.ts +10 -10
  241. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate-dbg.js +5 -3
  242. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +1 -1
  243. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper-dbg.js +72 -8
  244. package/packages/sap.fe.macros/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +1 -1
  245. package/packages/sap.fe.macros/src/sap/fe/macros/library-dbg.js +1 -1
  246. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js +12 -11
  247. package/packages/sap.fe.macros/src/sap/fe/macros/library-h2-preload.js.map +1 -1
  248. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js +93 -91
  249. package/packages/sap.fe.macros/src/sap/fe/macros/library-preload.js.map +4 -4
  250. package/packages/sap.fe.macros/src/sap/fe/macros/library.js +1 -1
  251. package/packages/sap.fe.macros/src/sap/fe/macros/manifest.json +9 -9
  252. package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime-dbg.js +1 -1
  253. package/packages/sap.fe.macros/src/sap/fe/macros/massedit/MassEditRuntime.js +1 -1
  254. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle.properties +5 -0
  255. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ar.properties +2 -2
  256. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_bg.properties +2 -2
  257. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ca.properties +2 -2
  258. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cs.properties +2 -2
  259. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_cy.properties +2 -2
  260. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_da.properties +2 -2
  261. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_de.properties +2 -2
  262. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_el.properties +2 -2
  263. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en.properties +1 -1
  264. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_GB.properties +1 -1
  265. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_en_US_sappsd.properties +3 -0
  266. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es.properties +2 -2
  267. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_es_MX.properties +2 -2
  268. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_et.properties +2 -2
  269. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fi.properties +2 -2
  270. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr.properties +2 -2
  271. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_fr_CA.properties +2 -2
  272. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hi.properties +2 -2
  273. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hr.properties +2 -2
  274. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_hu.properties +2 -2
  275. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_id.properties +2 -2
  276. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_it.properties +2 -2
  277. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_iw.properties +2 -2
  278. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ja.properties +3 -3
  279. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_kk.properties +2 -2
  280. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ko.properties +2 -2
  281. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lt.properties +2 -2
  282. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_lv.properties +2 -2
  283. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ms.properties +2 -2
  284. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_nl.properties +2 -2
  285. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_no.properties +2 -2
  286. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pl.properties +2 -2
  287. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt.properties +2 -2
  288. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_pt_PT.properties +2 -2
  289. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ro.properties +2 -2
  290. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_ru.properties +2 -2
  291. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sh.properties +2 -2
  292. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sk.properties +2 -2
  293. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sl.properties +2 -2
  294. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_sv.properties +2 -2
  295. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_th.properties +2 -2
  296. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_tr.properties +2 -2
  297. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_uk.properties +2 -2
  298. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_vi.properties +2 -2
  299. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_CN.properties +2 -2
  300. package/packages/sap.fe.macros/src/sap/fe/macros/messagebundle_zh_TW.properties +2 -2
  301. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/MicroChartTitle.fragment.xml +21 -11
  302. package/packages/sap.fe.macros/src/sap/fe/macros/microchart/fragments/RadialMicroChart.fragment.xml +2 -1
  303. package/packages/sap.fe.macros/src/sap/fe/macros/resources.json +149 -110
  304. package/packages/sap.fe.macros/src/sap/fe/macros/table/Actions.fragment.xml +3 -0
  305. package/packages/sap.fe.macros/src/sap/fe/macros/table/ColumnContent.fragment.xml +70 -29
  306. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper-dbg.js +53 -36
  307. package/packages/sap.fe.macros/src/sap/fe/macros/table/TableHelper.js +1 -1
  308. package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils-dbg.js +1 -1
  309. package/packages/sap.fe.macros/src/sap/fe/macros/table/Utils.js +1 -1
  310. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate-dbg.js +3 -4
  311. package/packages/sap.fe.macros/src/sap/fe/macros/table/delegates/TableDelegate.js +1 -1
  312. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/api.json +2 -2
  313. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/apiref/api.json +1 -1
  314. package/packages/sap.fe.macros/test/sap/fe/macros/designtime/codeassistance/Library.xmlmeta.json +1 -1
  315. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.js +844 -0
  316. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartDelegate.spec.ts +833 -0
  317. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.js +495 -0
  318. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartHelper.spec.ts +440 -0
  319. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.js +469 -0
  320. package/packages/sap.fe.macros/test/sap/fe/macros/jest/ChartUtils.spec.ts +448 -0
  321. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.js +94 -0
  322. package/packages/sap.fe.macros/test/sap/fe/macros/jest/CommonUtils.spec.ts +70 -0
  323. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.js +12 -1
  324. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DatapointMacro.spec.ts +11 -0
  325. package/packages/sap.fe.macros/test/sap/fe/macros/jest/DelegateUtil.spec.js +61 -0
  326. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.js +46 -0
  327. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldHelper.spec.ts +30 -0
  328. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.js +13 -1
  329. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FieldMacroDataFieldTypes.spec.ts +11 -0
  330. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.js +66 -0
  331. package/packages/sap.fe.macros/test/sap/fe/macros/jest/FormElement.spec.ts +35 -0
  332. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.js +48 -1
  333. package/packages/sap.fe.macros/test/sap/fe/macros/jest/SimpleFieldMacro.spec.ts +56 -0
  334. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.js +68 -0
  335. package/packages/sap.fe.macros/test/sap/fe/macros/jest/TableFieldLabel.spec.ts +65 -0
  336. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/ChartDelegate.spec.ts.snap +82 -0
  337. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/DatapointMacro.spec.ts.snap +23 -5
  338. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldHelper.spec.ts.snap +47 -0
  339. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FieldMacroDataFieldTypes.spec.ts.snap +52 -3
  340. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/FormElement.spec.ts.snap +25 -0
  341. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/QuickViewForm.spec.ts.snap +0 -3
  342. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/SimpleFieldMacro.spec.ts.snap +69 -0
  343. package/packages/sap.fe.macros/test/sap/fe/macros/jest/__snapshots__/TableFieldLabel.spec.ts.snap +451 -0
  344. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/FieldHelper.xml +68 -0
  345. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/Table.cds +13 -1
  346. package/packages/sap.fe.macros/test/sap/fe/macros/jest/data/TableFieldLabel.cds +152 -0
  347. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.js +116 -0
  348. package/packages/sap.fe.macros/test/sap/fe/macros/jest/field/FieldRuntime.spec.ts +115 -0
  349. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.js +86 -0
  350. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/FormElement.spec.ts +54 -0
  351. package/packages/sap.fe.macros/test/sap/fe/macros/jest/form/__snapshots__/FormElement.spec.ts.snap +33 -0
  352. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.js +154 -0
  353. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/Actions.spec.ts +128 -0
  354. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.js +7 -2
  355. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/TableDelegate.spec.ts +23 -12
  356. package/packages/sap.fe.macros/test/sap/fe/macros/jest/table/delegates/__snapshots__/TableDelegate.spec.ts.snap +1 -1
  357. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/index.json +0 -5
  358. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldHelperTemplate.qunit.js +1 -1
  359. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FormElementTemplating.qunit.js +1 -1
  360. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/TableHelper.qunit.js +108 -1
  361. package/packages/sap.fe.navigation/src/sap/fe/navigation/.library +1 -1
  362. package/packages/sap.fe.navigation/src/sap/fe/navigation/.theming +1 -1
  363. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-dbg.js +1 -1
  364. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-h2-preload.js +2 -2
  365. package/packages/sap.fe.navigation/src/sap/fe/navigation/library-preload.js +2 -2
  366. package/packages/sap.fe.navigation/src/sap/fe/navigation/library.js +1 -1
  367. package/packages/sap.fe.navigation/src/sap/fe/navigation/manifest.json +3 -3
  368. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/api.json +1 -1
  369. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/apiref/api.json +1 -1
  370. package/packages/sap.fe.navigation/test/sap/fe/navigation/designtime/codeassistance/Library.xmlmeta.json +1 -1
  371. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.library +1 -1
  372. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/.theming +1 -1
  373. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-dbg.js +1 -1
  374. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-h2-preload.js +2 -2
  375. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js +4 -4
  376. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library-preload.js.map +1 -1
  377. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/library.js +1 -1
  378. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/manifest.json +3 -3
  379. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/resources.json +3 -3
  380. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderALP.fragment.html +1 -1
  381. package/packages/sap.fe.placeholder/src/sap/fe/placeholder/view/PlaceholderOVP.fragment.html +1 -1
  382. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/api.json +1 -1
  383. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/designtime/apiref/api.json +1 -1
  384. package/packages/sap.fe.templates/src/sap/fe/templates/.library +1 -1
  385. package/packages/sap.fe.templates/src/sap/fe/templates/.theming +1 -1
  386. package/packages/sap.fe.templates/src/sap/fe/templates/AnalyticalListPage/manifest.json +2 -2
  387. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent-dbg.js +1 -1
  388. package/packages/sap.fe.templates/src/sap/fe/templates/ListComponent.js +1 -1
  389. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReport.view.xml +2 -2
  390. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController-dbg.controller.js +91 -60
  391. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/ListReportController.controller.js +1 -1
  392. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/manifest.json +2 -2
  393. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState-dbg.js +31 -5
  394. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/overrides/ViewState.js +1 -1
  395. package/packages/sap.fe.templates/src/sap/fe/templates/ListReport/resources.json +5 -5
  396. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper-dbg.js +2 -2
  397. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +1 -1
  398. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component-dbg.js +18 -1
  399. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/Component.js +1 -1
  400. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController-dbg.controller.js +114 -85
  401. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +1 -1
  402. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox-dbg.js +8 -0
  403. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +1 -1
  404. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/manifest.json +2 -2
  405. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState-dbg.js +23 -3
  406. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +1 -1
  407. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/resources.json +15 -15
  408. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating-dbg.js +6 -5
  409. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +1 -1
  410. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +6 -4
  411. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
  412. package/packages/sap.fe.templates/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
  413. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl-dbg.controller.js +63 -9
  414. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +1 -1
  415. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer-dbg.controller.js +54 -32
  416. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +1 -1
  417. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController-dbg.js +24 -21
  418. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +1 -1
  419. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
  420. package/packages/sap.fe.templates/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
  421. package/packages/sap.fe.templates/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
  422. package/packages/sap.fe.templates/src/sap/fe/templates/library-dbg.js +1 -1
  423. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js +8 -9
  424. package/packages/sap.fe.templates/src/sap/fe/templates/library-h2-preload.js.map +1 -1
  425. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js +23 -30
  426. package/packages/sap.fe.templates/src/sap/fe/templates/library-preload.js.map +4 -4
  427. package/packages/sap.fe.templates/src/sap/fe/templates/library.js +1 -1
  428. package/packages/sap.fe.templates/src/sap/fe/templates/manifest.json +13 -13
  429. package/packages/sap.fe.templates/src/sap/fe/templates/resources.json +51 -60
  430. package/packages/sap.fe.templates/test/sap/fe/templates/demokit/apps/itelo/webapp/manifest.json +1 -1
  431. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/api.json +1 -1
  432. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/apiref/api.json +1 -1
  433. package/packages/sap.fe.templates/test/sap/fe/templates/designtime/codeassistance/Library.xmlmeta.json +1 -1
  434. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.js +95 -0
  435. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/HeaderFacet.spec.ts +66 -0
  436. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.js +134 -0
  437. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/ObjectPageHeaderForm.spec.ts +94 -0
  438. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/HeaderFacet.spec.ts.snap +61 -0
  439. package/packages/sap.fe.templates/test/sap/fe/templates/jest/ObjectPage/view/fragments/__snapshots__/ObjectPageHeaderForm.spec.ts.snap +53 -0
  440. package/packages/sap.fe.test/src/sap/fe/test/.library +1 -1
  441. package/packages/sap.fe.test/src/sap/fe/test/.theming +1 -1
  442. package/packages/sap.fe.test/src/sap/fe/test/FCLView-dbg.js +0 -6
  443. package/packages/sap.fe.test/src/sap/fe/test/FCLView.js +1 -1
  444. package/packages/sap.fe.test/src/sap/fe/test/Flexibility-dbg.js +14 -3
  445. package/packages/sap.fe.test/src/sap/fe/test/Flexibility.js +1 -1
  446. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper-dbg.js +85 -8
  447. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.js +1 -1
  448. package/packages/sap.fe.test/src/sap/fe/test/JestTemplatingHelper.ts +54 -2
  449. package/packages/sap.fe.test/src/sap/fe/test/ListReport-dbg.js +0 -11
  450. package/packages/sap.fe.test/src/sap/fe/test/ListReport.js +1 -1
  451. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage-dbg.js +0 -38
  452. package/packages/sap.fe.test/src/sap/fe/test/ObjectPage.js +1 -1
  453. package/packages/sap.fe.test/src/sap/fe/test/TemplatePage-dbg.js +0 -12
  454. package/packages/sap.fe.test/src/sap/fe/test/TemplatePage.js +1 -1
  455. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper-dbg.js +22 -1
  456. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.js +1 -1
  457. package/packages/sap.fe.test/src/sap/fe/test/UI5MockHelper.ts +14 -0
  458. package/packages/sap.fe.test/src/sap/fe/test/api/BaseAPI-dbg.js +21 -0
  459. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI-dbg.js +9 -5
  460. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAPI.js +1 -1
  461. package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions-dbg.js +18 -5
  462. package/packages/sap.fe.test/src/sap/fe/test/api/DialogActions.js +1 -1
  463. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions-dbg.js +25 -5
  464. package/packages/sap.fe.test/src/sap/fe/test/api/DialogAssertions.js +1 -1
  465. package/packages/sap.fe.test/src/sap/fe/test/api/EditState-dbg.js +9 -0
  466. package/packages/sap.fe.test/src/sap/fe/test/api/EditState.js +1 -1
  467. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions-dbg.js +38 -4
  468. package/packages/sap.fe.test/src/sap/fe/test/api/FilterBarActions.js +1 -1
  469. package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions-dbg.js +33 -4
  470. package/packages/sap.fe.test/src/sap/fe/test/api/FormAssertions.js +1 -1
  471. package/packages/sap.fe.test/src/sap/fe/test/api/TableActions-dbg.js +1 -1
  472. package/packages/sap.fe.test/src/sap/fe/test/library-dbg.js +1 -1
  473. package/packages/sap.fe.test/src/sap/fe/test/library-h2-preload.js +3 -3
  474. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js +23 -16
  475. package/packages/sap.fe.test/src/sap/fe/test/library-preload.js.map +3 -3
  476. package/packages/sap.fe.test/src/sap/fe/test/library.js +1 -1
  477. package/packages/sap.fe.test/src/sap/fe/test/manifest.json +3 -3
  478. package/packages/sap.fe.test/src/sap/fe/test/resources.json +36 -34
  479. package/packages/sap.fe.test/test/sap/fe/test/designtime/api.json +1 -1
  480. package/packages/sap.fe.test/test/sap/fe/test/designtime/apiref/api.json +1 -1
  481. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.jsmeta.json +1 -1
  482. package/packages/sap.fe.test/test/sap/fe/test/designtime/codeassistance/Library.xmlmeta.json +1 -1
  483. package/packages/sap.fe.common/test/sap/fe/common/relnotes/changes-1.96.json +0 -49
  484. package/packages/sap.fe.core/test/sap/fe/core/relnotes/changes-1.96.json +0 -189
  485. package/packages/sap.fe.macros/test/sap/fe/macros/qunit/macros/FieldRuntime.qunit.js +0 -73
  486. package/packages/sap.fe.macros/test/sap/fe/macros/relnotes/changes-1.96.json +0 -160
  487. package/packages/sap.fe.placeholder/test/sap/fe/placeholder/relnote/changes-1.96.json +0 -17
  488. package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover-dbg.js +0 -26
  489. package/packages/sap.fe.templates/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -6
  490. package/packages/sap.fe.templates/test/sap/fe/templates/relnotes/changes-1.96.json +0 -153
@@ -0,0 +1,495 @@
1
+ /*!
2
+ * SAP UI development toolkit for HTML5 (SAPUI5)
3
+ * (c) Copyright 2009-2021 SAP SE. All rights reserved
4
+ */
5
+ sap.ui.define(["sap/fe/macros/chart/ChartHelper", "sap/fe/macros/CommonHelper"], function (ChartHelper, CommonHelper) {
6
+ "use strict";
7
+
8
+ describe("ChartHelper", function () {
9
+ afterAll(function () {
10
+ jest.restoreAllMocks();
11
+ });
12
+ var mockAnnotationContext = {
13
+ oModel: {},
14
+ sPath: "/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant/Visualizations/0/$AnnotationPath",
15
+ getPath: jest.fn(function () {
16
+ return "/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant/Visualizations/0/$AnnotationPath";
17
+ }),
18
+ getObject: jest.fn(),
19
+ getModel: jest.fn()
20
+ };
21
+ var mockModel = {
22
+ getMetaContext: jest.fn(function (sPath) {
23
+ return {
24
+ sPath: sPath
25
+ };
26
+ }),
27
+ getObject: jest.fn(),
28
+ createBindingContext: jest.fn(),
29
+ requestObject: jest.fn()
30
+ };
31
+ var chartCollection = {
32
+ Actions: [{
33
+ $Type: "com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation",
34
+ SemanticObject: "someSO",
35
+ Action: "someAction",
36
+ Label: "IBN",
37
+ RequiresContext: true
38
+ }, {
39
+ $Type: "com.sap.vocabularies.UI.v1.DataFieldForAction",
40
+ Label: "Dummy action",
41
+ Action: "com.service.someBoundAction",
42
+ RequiresContext: true
43
+ }]
44
+ };
45
+ var mockOData = {
46
+ chartCollection: chartCollection,
47
+ oInterface: {
48
+ context: mockAnnotationContext
49
+ }
50
+ };
51
+ describe("formatDimensions", function () {
52
+ it("verify chart dimensions", function () {
53
+ try {
54
+ mockModel.getObject.mockReturnValue("some label");
55
+ mockModel.createBindingContext.mockReturnValue({
56
+ oModel: {},
57
+ sPath: "/SalesOrderManage/SalesOrder",
58
+ bForceRefresh: false,
59
+ sDeepPath: ""
60
+ });
61
+ mockModel.requestObject.mockReturnValue(Promise.resolve({}));
62
+ mockAnnotationContext.getObject.mockReturnValue({
63
+ $Type: "com.sap.vocabularies.UI.v1.ChartDefinitionType",
64
+ ChartType: {
65
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartType/Column"
66
+ },
67
+ Description: "Testing Line Chart",
68
+ DimensionAttributes: [{
69
+ $Type: "com.sap.vocabularies.UI.v1.ChartDimensionAttributeType",
70
+ Dimension: {
71
+ $PropertyPath: "SalesOrder"
72
+ },
73
+ Role: {
74
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartDimensionRoleType/Axis1"
75
+ }
76
+ }, {
77
+ $Type: "com.sap.vocabularies.UI.v1.ChartDimensionAttributeType",
78
+ Dimension: {
79
+ $PropertyPath: "SoldToParty"
80
+ },
81
+ Role: {
82
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartDimensionRoleType/Axis1"
83
+ }
84
+ }],
85
+ Dimensions: [{
86
+ $PropertyPath: "SalesOrder"
87
+ }, {
88
+ $PropertyPath: "SoldToParty"
89
+ }],
90
+ MeasureAttributes: [{
91
+ $Type: "com.sap.vocabularies.UI.v1.ChartMeasureAttributeType",
92
+ Measure: {
93
+ $PropertyPath: "maxPricing"
94
+ },
95
+ Role: {
96
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartMeasureRoleType/Axis1"
97
+ }
98
+ }],
99
+ Measures: [{
100
+ $PropertyPath: "maxPricing"
101
+ }],
102
+ Title: "Height Line Chart"
103
+ });
104
+ mockAnnotationContext.getModel.mockReturnValue(mockModel);
105
+ expect(ChartHelper.formatDimensions(mockAnnotationContext).getModel().getJSON()).toEqual('[{"key":"SalesOrder","label":"some label","role":"category","criticality":{}},{"key":"SoldToParty","label":"some label","role":"category","criticality":{}}]');
106
+ return Promise.resolve();
107
+ } catch (e) {
108
+ return Promise.reject(e);
109
+ }
110
+ });
111
+ });
112
+ describe("formatMeasures", function () {
113
+ it("verify chart measures", function () {
114
+ try {
115
+ mockModel.getObject.mockImplementation(function (sPath) {
116
+ if (sPath.indexOf("AggregatedProperties") > -1) {
117
+ return [{
118
+ Name: "minPricing",
119
+ "@com.sap.vocabularies.Common.v1.Label": "Minimal Net Amount",
120
+ $Type: "com.sap.vocabularies.Analytics.v1.AggregatedPropertyType",
121
+ Value: "minPricing",
122
+ AggregationMethod: "min",
123
+ AggregatableProperty: {
124
+ $PropertyPath: "NetPricing"
125
+ }
126
+ }, {
127
+ Name: "maxPricing",
128
+ "@com.sap.vocabularies.Common.v1.Label": "Maximal Net Amount",
129
+ $Type: "com.sap.vocabularies.Analytics.v1.AggregatedPropertyType",
130
+ Value: "maxPricing",
131
+ AggregationMethod: "max",
132
+ AggregatableProperty: {
133
+ $PropertyPath: "NetPricing"
134
+ }
135
+ }, {
136
+ Name: "avgPricing",
137
+ "@com.sap.vocabularies.Common.v1.Label": "Average Net Amount",
138
+ $Type: "com.sap.vocabularies.Analytics.v1.AggregatedPropertyType",
139
+ Value: "avgPricing",
140
+ AggregationMethod: "average",
141
+ AggregatableProperty: {
142
+ $PropertyPath: "NetPricing"
143
+ }
144
+ }];
145
+ }
146
+
147
+ return "Maximal Net Amount";
148
+ });
149
+ mockModel.createBindingContext.mockReturnValue({
150
+ oModel: {},
151
+ sPath: "/SalesOrderManage/SalesOrder",
152
+ bForceRefresh: false,
153
+ sDeepPath: ""
154
+ });
155
+ mockModel.requestObject.mockReturnValue(Promise.resolve({}));
156
+ mockAnnotationContext.getObject.mockReturnValue({
157
+ $Type: "com.sap.vocabularies.UI.v1.ChartDefinitionType",
158
+ ChartType: {
159
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartType/Column"
160
+ },
161
+ Description: "Testing Line Chart",
162
+ DimensionAttributes: [{
163
+ $Type: "com.sap.vocabularies.UI.v1.ChartDimensionAttributeType",
164
+ Dimension: {
165
+ $PropertyPath: "SalesOrder"
166
+ },
167
+ Role: {
168
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartDimensionRoleType/Axis1"
169
+ }
170
+ }, {
171
+ $Type: "com.sap.vocabularies.UI.v1.ChartDimensionAttributeType",
172
+ Dimension: {
173
+ $PropertyPath: "SoldToParty"
174
+ },
175
+ Role: {
176
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartDimensionRoleType/Axis1"
177
+ }
178
+ }],
179
+ Dimensions: [{
180
+ $PropertyPath: "SalesOrder"
181
+ }, {
182
+ $PropertyPath: "SoldToParty"
183
+ }],
184
+ MeasureAttributes: [{
185
+ $Type: "com.sap.vocabularies.UI.v1.ChartMeasureAttributeType",
186
+ Measure: {
187
+ $PropertyPath: "maxPricing"
188
+ },
189
+ Role: {
190
+ $EnumMember: "com.sap.vocabularies.UI.v1.ChartMeasureRoleType/Axis1"
191
+ }
192
+ }],
193
+ Measures: [{
194
+ $PropertyPath: "maxPricing"
195
+ }],
196
+ Title: "Height Line Chart"
197
+ });
198
+ mockAnnotationContext.getModel.mockReturnValue(mockModel);
199
+ expect(ChartHelper.formatMeasures(mockAnnotationContext).getModel().getJSON()).toEqual('[{"key":"maxPricing","label":"Maximal Net Amount","role":"axis1","propertyPath":"NetPricing","aggregationMethod":"max"}]');
200
+ return Promise.resolve();
201
+ } catch (e) {
202
+ return Promise.reject(e);
203
+ }
204
+ });
205
+ });
206
+ describe("getUiChart", function () {
207
+ it("with Chart annotation", function () {
208
+ try {
209
+ mockAnnotationContext.sPath = "/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant/Visualizations/0/$AnnotationPath";
210
+ mockAnnotationContext.getPath.mockReturnValue(mockAnnotationContext.sPath);
211
+ mockAnnotationContext.getObject.mockReturnValue("@com.sap.vocabularies.UI.v1.Chart");
212
+ expect(ChartHelper.getUiChart(mockAnnotationContext).sPath).toBe("/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant/Visualizations/0/$AnnotationPath");
213
+ return Promise.resolve();
214
+ } catch (e) {
215
+ return Promise.reject(e);
216
+ }
217
+ });
218
+ it("with Presentation Variant", function () {
219
+ try {
220
+ mockAnnotationContext.sPath = "/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant";
221
+ mockAnnotationContext.getPath.mockReturnValue(mockAnnotationContext.sPath);
222
+ mockAnnotationContext.getObject.mockImplementation(function (sParam) {
223
+ if (sParam.indexOf("@sapui.name") > -1) {
224
+ return "@com.sap.vocabularies.UI.v1.PresentationVariant";
225
+ }
226
+
227
+ return {
228
+ $Type: "com.sap.vocabularies.UI.v1.PresentationVariantType",
229
+ Visualizations: [{
230
+ $AnnotationPath: "@com.sap.vocabularies.UI.v1.Chart"
231
+ }, {
232
+ $AnnotationPath: "@com.sap.vocabularies.UI.v1.Line"
233
+ }]
234
+ };
235
+ });
236
+ mockAnnotationContext.getModel.mockReturnValue(mockModel);
237
+ expect(ChartHelper.getUiChart(mockAnnotationContext).sPath).toBe("/SalesOrderManage/@com.sap.vocabularies.UI.v1.Chart");
238
+ return Promise.resolve();
239
+ } catch (e) {
240
+ return Promise.reject(e);
241
+ }
242
+ });
243
+ });
244
+ describe("getMultiSelectDisabledActions", function () {
245
+ beforeAll(function () {
246
+ jest.spyOn(CommonHelper, "getActionPath").mockImplementationOnce(function (sActionName) {
247
+ return "SalesOrderManager" + sActionName;
248
+ });
249
+ });
250
+ it("no annotations for action parameter", function () {
251
+ try {
252
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
253
+ if (sPath.indexOf("@$ui5.overload") > -1) {
254
+ return {
255
+ $kind: "Action",
256
+ $IsBound: true,
257
+ $EntitySetPath: "_it",
258
+ $Parameter: [{
259
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
260
+ $Name: "_it"
261
+ }],
262
+ $ReturnType: {
263
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
264
+ }
265
+ };
266
+ }
267
+
268
+ return {};
269
+ });
270
+ mockAnnotationContext.sPath = "/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant/Visualizations/0/$AnnotationPath/actions";
271
+ expect(ChartHelper.getMultiSelectDisabledActions(mockOData.chartCollection, mockOData.oInterface)).toEqual([]);
272
+ return Promise.resolve();
273
+ } catch (e) {
274
+ return Promise.reject(e);
275
+ }
276
+ });
277
+ it("static value of ui.hidden annotated for action parameter", function () {
278
+ try {
279
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
280
+ {
281
+ if (sPath.indexOf("@$ui5.overload") > -1) {
282
+ return {
283
+ $kind: "Action",
284
+ $IsBound: true,
285
+ $EntitySetPath: "_it",
286
+ $Parameter: [{
287
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
288
+ $Name: "_it"
289
+ }, {
290
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
291
+ $Name: "someParameter"
292
+ }],
293
+ $ReturnType: {
294
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
295
+ }
296
+ };
297
+ } else if (sPath.endsWith("@")) {
298
+ return {
299
+ "@com.sap.vocabularies.UI.v1.Hidden": true
300
+ };
301
+ }
302
+
303
+ return {};
304
+ }
305
+ });
306
+ expect(ChartHelper.getMultiSelectDisabledActions(mockOData.chartCollection, mockOData.oInterface)).toEqual([]);
307
+ return Promise.resolve();
308
+ } catch (e) {
309
+ return Promise.reject(e);
310
+ }
311
+ });
312
+ it("path based ui.hidden annotated for action parameter", function () {
313
+ try {
314
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
315
+ if (sPath.indexOf("@$ui5.overload") > -1) {
316
+ return {
317
+ $kind: "Action",
318
+ $IsBound: true,
319
+ $EntitySetPath: "_it",
320
+ $Parameter: [{
321
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
322
+ $Name: "_it"
323
+ }, {
324
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
325
+ $Name: "someParameter"
326
+ }],
327
+ $ReturnType: {
328
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
329
+ }
330
+ };
331
+ } else if (sPath.endsWith("@")) {
332
+ return {
333
+ "@com.sap.vocabularies.UI.v1.Hidden": {
334
+ $Path: "somePath"
335
+ }
336
+ };
337
+ }
338
+
339
+ return {};
340
+ });
341
+ expect(ChartHelper.getMultiSelectDisabledActions(mockOData.chartCollection, mockOData.oInterface)).toEqual(["com.service.someBoundAction"]);
342
+ return Promise.resolve();
343
+ } catch (e) {
344
+ return Promise.reject(e);
345
+ }
346
+ });
347
+ it("path based field control annotated for action parameter", function () {
348
+ try {
349
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
350
+ if (sPath.indexOf("@$ui5.overload") > -1) {
351
+ return {
352
+ $kind: "Action",
353
+ $IsBound: true,
354
+ $EntitySetPath: "_it",
355
+ $Parameter: [{
356
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
357
+ $Name: "_it"
358
+ }, {
359
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
360
+ $Name: "someParameter"
361
+ }],
362
+ $ReturnType: {
363
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
364
+ }
365
+ };
366
+ } else if (sPath.endsWith("@")) {
367
+ return {
368
+ "@com.sap.vocabularies.Common.v1.FieldControl": {
369
+ $Path: "somePath"
370
+ }
371
+ };
372
+ }
373
+
374
+ return {};
375
+ });
376
+ expect(ChartHelper.getMultiSelectDisabledActions(mockOData.chartCollection, mockOData.oInterface)).toEqual(["com.service.someBoundAction"]);
377
+ return Promise.resolve();
378
+ } catch (e) {
379
+ return Promise.reject(e);
380
+ }
381
+ });
382
+ it("action parameter annotated with static field control", function () {
383
+ try {
384
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
385
+ if (sPath.indexOf("@$ui5.overload") > -1) {
386
+ return {
387
+ $kind: "Action",
388
+ $IsBound: true,
389
+ $EntitySetPath: "_it",
390
+ $Parameter: [{
391
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
392
+ $Name: "_it"
393
+ }, {
394
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage",
395
+ $Name: "someParameter"
396
+ }],
397
+ $ReturnType: {
398
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
399
+ }
400
+ };
401
+ } else if (sPath.endsWith("@")) {
402
+ return {
403
+ "@com.sap.vocabularies.Common.v1.FieldControl": "ReadOnly"
404
+ };
405
+ }
406
+
407
+ return {};
408
+ });
409
+ expect(ChartHelper.getMultiSelectDisabledActions(mockOData.chartCollection, mockOData.oInterface)).toEqual([]);
410
+ return Promise.resolve();
411
+ } catch (e) {
412
+ return Promise.reject(e);
413
+ }
414
+ });
415
+ });
416
+ describe("getOperationAvailableMap", function () {
417
+ beforeAll(function () {
418
+ jest.spyOn(CommonHelper, "getEntitySetName").mockImplementationOnce(function () {
419
+ return "SalesOrderManage";
420
+ });
421
+ });
422
+ mockAnnotationContext.sPath = "/SalesOrderManage/@com.sap.vocabularies.UI.v1.PresentationVariant/Visualizations/0/$AnnotationPath/actions";
423
+ mockAnnotationContext.getPath.mockReturnValue(mockAnnotationContext.sPath);
424
+ it("static value of operation available", function () {
425
+ try {
426
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
427
+ if (sPath.endsWith("@Org.OData.Core.V1.OperationAvailable")) {
428
+ return true;
429
+ } else if (sPath.endsWith("/$Path")) {
430
+ return;
431
+ } else if (sPath.endsWith("/@$ui5.overload/0/$Parameter/0/$Name")) {
432
+ return "_it";
433
+ }
434
+
435
+ return {
436
+ $kind: "EntitySet",
437
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
438
+ };
439
+ });
440
+ expect(ChartHelper.getOperationAvailableMap(mockOData.chartCollection, mockOData.oInterface)).toBe("{}");
441
+ return Promise.resolve();
442
+ } catch (e) {
443
+ return Promise.reject(e);
444
+ }
445
+ });
446
+ it("operation available annotated as null", function () {
447
+ try {
448
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
449
+ if (sPath.endsWith("@Org.OData.Core.V1.OperationAvailable")) {
450
+ return null;
451
+ } else if (sPath.endsWith("/$Path")) {
452
+ return;
453
+ } else if (sPath.endsWith("/@$ui5.overload/0/$Parameter/0/$Name")) {
454
+ return "_it";
455
+ }
456
+
457
+ return {
458
+ $kind: "EntitySet",
459
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
460
+ };
461
+ });
462
+ expect(ChartHelper.getOperationAvailableMap(mockOData.chartCollection, mockOData.oInterface)).toBe('{"com.service.someBoundAction":null}');
463
+ return Promise.resolve();
464
+ } catch (e) {
465
+ return Promise.reject(e);
466
+ }
467
+ });
468
+ it("operation available having $path", function () {
469
+ try {
470
+ mockAnnotationContext.getObject.mockImplementation(function (sPath) {
471
+ if (sPath.endsWith("@Org.OData.Core.V1.OperationAvailable")) {
472
+ return {
473
+ $Path: "_it/somePath"
474
+ };
475
+ } else if (sPath.endsWith("/$Path")) {
476
+ return "_it/somePath";
477
+ } else if (sPath.endsWith("/@$ui5.overload/0/$Parameter/0/$Name")) {
478
+ return "_it";
479
+ }
480
+
481
+ return {
482
+ $kind: "EntitySet",
483
+ $Type: "com.c_salesordermanage_sd_aggregate.SalesOrderManage"
484
+ };
485
+ });
486
+ expect(ChartHelper.getOperationAvailableMap(mockOData.chartCollection, mockOData.oInterface)).toBe('{"com.service.someBoundAction":"somePath"}');
487
+ return Promise.resolve();
488
+ } catch (e) {
489
+ return Promise.reject(e);
490
+ }
491
+ });
492
+ });
493
+ });
494
+ }, false);
495
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNoYXJ0SGVscGVyLnNwZWMudHMiXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJhZnRlckFsbCIsImplc3QiLCJyZXN0b3JlQWxsTW9ja3MiLCJtb2NrQW5ub3RhdGlvbkNvbnRleHQiLCJvTW9kZWwiLCJzUGF0aCIsImdldFBhdGgiLCJmbiIsImdldE9iamVjdCIsImdldE1vZGVsIiwibW9ja01vZGVsIiwiZ2V0TWV0YUNvbnRleHQiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsInJlcXVlc3RPYmplY3QiLCJjaGFydENvbGxlY3Rpb24iLCJBY3Rpb25zIiwiJFR5cGUiLCJTZW1hbnRpY09iamVjdCIsIkFjdGlvbiIsIkxhYmVsIiwiUmVxdWlyZXNDb250ZXh0IiwibW9ja09EYXRhIiwib0ludGVyZmFjZSIsImNvbnRleHQiLCJpdCIsIm1vY2tSZXR1cm5WYWx1ZSIsImJGb3JjZVJlZnJlc2giLCJzRGVlcFBhdGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkNoYXJ0VHlwZSIsIiRFbnVtTWVtYmVyIiwiRGVzY3JpcHRpb24iLCJEaW1lbnNpb25BdHRyaWJ1dGVzIiwiRGltZW5zaW9uIiwiJFByb3BlcnR5UGF0aCIsIlJvbGUiLCJEaW1lbnNpb25zIiwiTWVhc3VyZUF0dHJpYnV0ZXMiLCJNZWFzdXJlIiwiTWVhc3VyZXMiLCJUaXRsZSIsImV4cGVjdCIsIkNoYXJ0SGVscGVyIiwiZm9ybWF0RGltZW5zaW9ucyIsImdldEpTT04iLCJ0b0VxdWFsIiwibW9ja0ltcGxlbWVudGF0aW9uIiwiaW5kZXhPZiIsIk5hbWUiLCJWYWx1ZSIsIkFnZ3JlZ2F0aW9uTWV0aG9kIiwiQWdncmVnYXRhYmxlUHJvcGVydHkiLCJmb3JtYXRNZWFzdXJlcyIsImdldFVpQ2hhcnQiLCJ0b0JlIiwic1BhcmFtIiwiVmlzdWFsaXphdGlvbnMiLCIkQW5ub3RhdGlvblBhdGgiLCJiZWZvcmVBbGwiLCJzcHlPbiIsIkNvbW1vbkhlbHBlciIsIm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UiLCJzQWN0aW9uTmFtZSIsIiRraW5kIiwiJElzQm91bmQiLCIkRW50aXR5U2V0UGF0aCIsIiRQYXJhbWV0ZXIiLCIkTmFtZSIsIiRSZXR1cm5UeXBlIiwiZ2V0TXVsdGlTZWxlY3REaXNhYmxlZEFjdGlvbnMiLCJlbmRzV2l0aCIsIiRQYXRoIiwiZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7O0FBR0FBLEVBQUFBLFFBQVEsQ0FBQyxhQUFELEVBQWdCLFlBQVc7QUFDbENDLElBQUFBLFFBQVEsQ0FBQyxZQUFNO0FBQ2RDLE1BQUFBLElBQUksQ0FBQ0MsZUFBTDtBQUNBLEtBRk8sQ0FBUjtBQUdBLFFBQU1DLHFCQUFxQixHQUFHO0FBQzdCQyxNQUFBQSxNQUFNLEVBQUUsRUFEcUI7QUFFN0JDLE1BQUFBLEtBQUssRUFBRSxvR0FGc0I7QUFHN0JDLE1BQUFBLE9BQU8sRUFBRUwsSUFBSSxDQUFDTSxFQUFMLENBQVEsWUFBTTtBQUN0QixlQUFPLG9HQUFQO0FBQ0EsT0FGUSxDQUhvQjtBQU03QkMsTUFBQUEsU0FBUyxFQUFFUCxJQUFJLENBQUNNLEVBQUwsRUFOa0I7QUFPN0JFLE1BQUFBLFFBQVEsRUFBRVIsSUFBSSxDQUFDTSxFQUFMO0FBUG1CLEtBQTlCO0FBU0EsUUFBTUcsU0FBUyxHQUFHO0FBQ2pCQyxNQUFBQSxjQUFjLEVBQUVWLElBQUksQ0FBQ00sRUFBTCxDQUFRLFVBQUNGLEtBQUQsRUFBbUI7QUFDMUMsZUFBTztBQUNOQSxVQUFBQSxLQUFLLEVBQUVBO0FBREQsU0FBUDtBQUdBLE9BSmUsQ0FEQztBQU1qQkcsTUFBQUEsU0FBUyxFQUFFUCxJQUFJLENBQUNNLEVBQUwsRUFOTTtBQU9qQkssTUFBQUEsb0JBQW9CLEVBQUVYLElBQUksQ0FBQ00sRUFBTCxFQVBMO0FBUWpCTSxNQUFBQSxhQUFhLEVBQUVaLElBQUksQ0FBQ00sRUFBTDtBQVJFLEtBQWxCO0FBVUEsUUFBTU8sZUFBZSxHQUFHO0FBQ3ZCQyxNQUFBQSxPQUFPLEVBQUUsQ0FDUjtBQUND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V0FBVyxDQUFDOEIsd0JBQVosQ0FBcUNwRCxTQUFTLENBQUNQLGVBQS9DLEVBQWdFTyxTQUFTLENBQUNDLFVBQTFFLENBQUQsQ0FBTixDQUE4RmlDLElBQTlGLENBQ0Msc0NBREQ7QUFkNEQ7QUFpQjVELFNBakJDO0FBQUE7QUFBQTtBQUFBLFFBQUY7QUFtQkEvQixNQUFBQSxFQUFFLENBQUMsa0NBQUQ7QUFBQSxZQUFzRDtBQUN2RHJCLFVBQUFBLHFCQUFxQixDQUFDSyxTQUF0QixDQUFnQ3VDLGtCQUFoQyxDQUFtRCxVQUFDMUMsS0FBRCxFQUFtQjtBQUNyRSxnQkFBSUEsS0FBSyxDQUFDa0UsUUFBTixDQUFlLHVDQUFmLENBQUosRUFBNkQ7QUFDNUQscUJBQU87QUFBRUMsZ0JBQUFBLEtBQUssRUFBRTtBQUFULGVBQVA7QUFDQSxhQUZELE1BRU8sSUFBSW5FLEtBQUssQ0FBQ2tFLFFBQU4sQ0FBZSxRQUFmLENBQUosRUFBOEI7QUFDcEMscUJBQU8sY0FBUDtBQUNBLGFBRk0sTUFFQSxJQUFJbEUsS0FBSyxDQUFDa0UsUUFBTixDQUFlLHNDQUFmLENBQUosRUFBNEQ7QUFDbEUscUJBQU8sS0FBUDtBQUNBOztBQUNELG1CQUFPO0FBQ05QLGNBQUFBLEtBQUssRUFBRSxXQUREO0FBRU5oRCxjQUFBQSxLQUFLLEVBQUU7QUFGRCxhQUFQO0FBSUEsV0FaRDtBQWFBMEIsVUFBQUEsTUFBTSxDQUFDQyxXQUFXLENBQUM4Qix3QkFBWixDQUFxQ3BELFNBQVMsQ0FBQ1AsZUFBL0MsRUFBZ0VPLFNBQVMsQ0FBQ0MsVUFBMUUsQ0FBRCxDQUFOLENBQThGaUMsSUFBOUYsQ0FDQyw0Q0FERDtBQWR1RDtBQWlCdkQsU0FqQkM7QUFBQTtBQUFBO0FBQUEsUUFBRjtBQWtCQSxLQS9ETyxDQUFSO0FBZ0VBLEdBbGJPLENBQVIiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbIi8vQHRzLWlnbm9yZVxuaW1wb3J0IHsgQ2hhcnRIZWxwZXIgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydFwiO1xuLy9AdHMtaWdub3JlXG5pbXBvcnQgeyBDb21tb25IZWxwZXIgfSBmcm9tIFwic2FwL2ZlL21hY3Jvc1wiO1xuXG5kZXNjcmliZShcIkNoYXJ0SGVscGVyXCIsIGZ1bmN0aW9uKCkge1xuXHRhZnRlckFsbCgoKSA9PiB7XG5cdFx0amVzdC5yZXN0b3JlQWxsTW9ja3MoKTtcblx0fSk7XG5cdGNvbnN0IG1vY2tBbm5vdGF0aW9uQ29udGV4dCA9IHtcblx0XHRvTW9kZWw6IHt9LFxuXHRcdHNQYXRoOiBcIi9TYWxlc09yZGVyTWFuYWdlL0Bjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50L1Zpc3VhbGl6YXRpb25zLzAvJEFubm90YXRpb25QYXRoXCIsXG5cdFx0Z2V0UGF0aDogamVzdC5mbigoKSA9PiB7XG5cdFx0XHRyZXR1cm4gXCIvU2FsZXNPcmRlck1hbmFnZS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudC9WaXN1YWxpemF0aW9ucy8wLyRBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdH0pLFxuXHRcdGdldE9iamVjdDogamVzdC5mbigpLFxuXHRcdGdldE1vZGVsOiBqZXN0LmZuKClcblx0fTtcblx0Y29uc3QgbW9ja01vZGVsID0ge1xuXHRcdGdldE1ldGFDb250ZXh0OiBqZXN0LmZuKChzUGF0aDogU3RyaW5nKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRzUGF0aDogc1BhdGhcblx0XHRcdH07XG5cdFx0fSksXG5cdFx0Z2V0T2JqZWN0OiBqZXN0LmZuKCksXG5cdFx0Y3JlYXRlQmluZGluZ0NvbnRleHQ6IGplc3QuZm4oKSxcblx0XHRyZXF1ZXN0T2JqZWN0OiBqZXN0LmZuKClcblx0fTtcblx0Y29uc3QgY2hhcnRDb2xsZWN0aW9uID0ge1xuXHRcdEFjdGlvbnM6IFtcblx0XHRcdHtcblx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuRGF0YUZpZWxkRm9ySW50ZW50QmFzZWROYXZpZ2F0aW9uXCIsXG5cdFx0XHRcdFNlbWFudGljT2JqZWN0OiBcInNvbWVTT1wiLFxuXHRcdFx0XHRBY3Rpb246IFwic29tZUFjdGlvblwiLFxuXHRcdFx0XHRMYWJlbDogXCJJQk5cIixcblx0XHRcdFx0UmVxdWlyZXNDb250ZXh0OiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5EYXRhRmllbGRGb3JBY3Rpb25cIixcblx0XHRcdFx0TGFiZWw6IFwiRHVtbXkgYWN0aW9uXCIsXG5cdFx0XHRcdEFjdGlvbjogXCJjb20uc2VydmljZS5zb21lQm91bmRBY3Rpb25cIixcblx0XHRcdFx0UmVxdWlyZXNDb250ZXh0OiB0cnVlXG5cdFx0XHR9XG5cdFx0XVxuXHR9O1xuXHRjb25zdCBtb2NrT0RhdGEgPSB7XG5cdFx0Y2hhcnRDb2xsZWN0aW9uOiBjaGFydENvbGxlY3Rpb24sXG5cdFx0b0ludGVyZmFjZTogeyBjb250ZXh0OiBtb2NrQW5ub3RhdGlvbkNvbnRleHQgfVxuXHR9O1xuXG5cdGRlc2NyaWJlKFwiZm9ybWF0RGltZW5zaW9uc1wiLCBmdW5jdGlvbigpIHtcblx0XHRpdChcInZlcmlmeSBjaGFydCBkaW1lbnNpb25zXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja01vZGVsLmdldE9iamVjdC5tb2NrUmV0dXJuVmFsdWUoXCJzb21lIGxhYmVsXCIpO1xuXHRcdFx0bW9ja01vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0Lm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRcdG9Nb2RlbDoge30sXG5cdFx0XHRcdHNQYXRoOiBcIi9TYWxlc09yZGVyTWFuYWdlL1NhbGVzT3JkZXJcIixcblx0XHRcdFx0YkZvcmNlUmVmcmVzaDogZmFsc2UsXG5cdFx0XHRcdHNEZWVwUGF0aDogXCJcIlxuXHRcdFx0fSk7XG5cdFx0XHRtb2NrTW9kZWwucmVxdWVzdE9iamVjdC5tb2NrUmV0dXJuVmFsdWUoUHJvbWlzZS5yZXNvbHZlKHt9KSk7XG5cdFx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuZ2V0T2JqZWN0Lm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGVmaW5pdGlvblR5cGVcIixcblx0XHRcdFx0Q2hhcnRUeXBlOiB7ICRFbnVtTWVtYmVyOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0VHlwZS9Db2x1bW5cIiB9LFxuXHRcdFx0XHREZXNjcmlwdGlvbjogXCJUZXN0aW5nIExpbmUgQ2hhcnRcIixcblx0XHRcdFx0RGltZW5zaW9uQXR0cmlidXRlczogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uQXR0cmlidXRlVHlwZVwiLFxuXHRcdFx0XHRcdFx0RGltZW5zaW9uOiB7ICRQcm9wZXJ0eVBhdGg6IFwiU2FsZXNPcmRlclwiIH0sXG5cdFx0XHRcdFx0XHRSb2xlOiB7ICRFbnVtTWVtYmVyOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uUm9sZVR5cGUvQXhpczFcIiB9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERpbWVuc2lvbkF0dHJpYnV0ZVR5cGVcIixcblx0XHRcdFx0XHRcdERpbWVuc2lvbjogeyAkUHJvcGVydHlQYXRoOiBcIlNvbGRUb1BhcnR5XCIgfSxcblx0XHRcdFx0XHRcdFJvbGU6IHsgJEVudW1NZW1iZXI6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9BeGlzMVwiIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdERpbWVuc2lvbnM6IFt7ICRQcm9wZXJ0eVBhdGg6IFwiU2FsZXNPcmRlclwiIH0sIHsgJFByb3BlcnR5UGF0aDogXCJTb2xkVG9QYXJ0eVwiIH1dLFxuXHRcdFx0XHRNZWFzdXJlQXR0cmlidXRlczogW1xuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0TWVhc3VyZUF0dHJpYnV0ZVR5cGVcIixcblx0XHRcdFx0XHRcdE1lYXN1cmU6IHsgJFByb3BlcnR5UGF0aDogXCJtYXhQcmljaW5nXCIgfSxcblx0XHRcdFx0XHRcdFJvbGU6IHsgJEVudW1NZW1iZXI6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRNZWFzdXJlUm9sZVR5cGUvQXhpczFcIiB9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRdLFxuXHRcdFx0XHRNZWFzdXJlczogW3sgJFByb3BlcnR5UGF0aDogXCJtYXhQcmljaW5nXCIgfV0sXG5cdFx0XHRcdFRpdGxlOiBcIkhlaWdodCBMaW5lIENoYXJ0XCJcblx0XHRcdH0pO1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldE1vZGVsLm1vY2tSZXR1cm5WYWx1ZShtb2NrTW9kZWwpO1xuXHRcdFx0ZXhwZWN0KFxuXHRcdFx0XHRDaGFydEhlbHBlci5mb3JtYXREaW1lbnNpb25zKG1vY2tBbm5vdGF0aW9uQ29udGV4dClcblx0XHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdC5nZXRKU09OKClcblx0XHRcdCkudG9FcXVhbChcblx0XHRcdFx0J1t7XCJrZXlcIjpcIlNhbGVzT3JkZXJcIixcImxhYmVsXCI6XCJzb21lIGxhYmVsXCIsXCJyb2xlXCI6XCJjYXRlZ29yeVwiLFwiY3JpdGljYWxpdHlcIjp7fX0se1wia2V5XCI6XCJTb2xkVG9QYXJ0eVwiLFwibGFiZWxcIjpcInNvbWUgbGFiZWxcIixcInJvbGVcIjpcImNhdGVnb3J5XCIsXCJjcml0aWNhbGl0eVwiOnt9fV0nXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRkZXNjcmliZShcImZvcm1hdE1lYXN1cmVzXCIsIGZ1bmN0aW9uKCkge1xuXHRcdGl0KFwidmVyaWZ5IGNoYXJ0IG1lYXN1cmVzXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja01vZGVsLmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBTdHJpbmcpID0+IHtcblx0XHRcdFx0aWYgKHNQYXRoLmluZGV4T2YoXCJBZ2dyZWdhdGVkUHJvcGVydGllc1wiKSA+IC0xKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0TmFtZTogXCJtaW5QcmljaW5nXCIsXG5cdFx0XHRcdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiOiBcIk1pbmltYWwgTmV0IEFtb3VudFwiLFxuXHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5BbmFseXRpY3MudjEuQWdncmVnYXRlZFByb3BlcnR5VHlwZVwiLFxuXHRcdFx0XHRcdFx0XHRWYWx1ZTogXCJtaW5QcmljaW5nXCIsXG5cdFx0XHRcdFx0XHRcdEFnZ3JlZ2F0aW9uTWV0aG9kOiBcIm1pblwiLFxuXHRcdFx0XHRcdFx0XHRBZ2dyZWdhdGFibGVQcm9wZXJ0eTogeyAkUHJvcGVydHlQYXRoOiBcIk5ldFByaWNpbmdcIiB9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHROYW1lOiBcIm1heFByaWNpbmdcIixcblx0XHRcdFx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCI6IFwiTWF4aW1hbCBOZXQgQW1vdW50XCIsXG5cdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkFuYWx5dGljcy52MS5BZ2dyZWdhdGVkUHJvcGVydHlUeXBlXCIsXG5cdFx0XHRcdFx0XHRcdFZhbHVlOiBcIm1heFByaWNpbmdcIixcblx0XHRcdFx0XHRcdFx0QWdncmVnYXRpb25NZXRob2Q6IFwibWF4XCIsXG5cdFx0XHRcdFx0XHRcdEFnZ3JlZ2F0YWJsZVByb3BlcnR5OiB7ICRQcm9wZXJ0eVBhdGg6IFwiTmV0UHJpY2luZ1wiIH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdE5hbWU6IFwiYXZnUHJpY2luZ1wiLFxuXHRcdFx0XHRcdFx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIjogXCJBdmVyYWdlIE5ldCBBbW91bnRcIixcblx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQW5hbHl0aWNzLnYxLkFnZ3JlZ2F0ZWRQcm9wZXJ0eVR5cGVcIixcblx0XHRcdFx0XHRcdFx0VmFsdWU6IFwiYXZnUHJpY2luZ1wiLFxuXHRcdFx0XHRcdFx0XHRBZ2dyZWdhdGlvbk1ldGhvZDogXCJhdmVyYWdlXCIsXG5cdFx0XHRcdFx0XHRcdEFnZ3JlZ2F0YWJsZVByb3BlcnR5OiB7ICRQcm9wZXJ0eVBhdGg6IFwiTmV0UHJpY2luZ1wiIH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBcIk1heGltYWwgTmV0IEFtb3VudFwiO1xuXHRcdFx0fSk7XG5cdFx0XHRtb2NrTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQubW9ja1JldHVyblZhbHVlKHtcblx0XHRcdFx0b01vZGVsOiB7fSxcblx0XHRcdFx0c1BhdGg6IFwiL1NhbGVzT3JkZXJNYW5hZ2UvU2FsZXNPcmRlclwiLFxuXHRcdFx0XHRiRm9yY2VSZWZyZXNoOiBmYWxzZSxcblx0XHRcdFx0c0RlZXBQYXRoOiBcIlwiXG5cdFx0XHR9KTtcblx0XHRcdG1vY2tNb2RlbC5yZXF1ZXN0T2JqZWN0Lm1vY2tSZXR1cm5WYWx1ZShQcm9taXNlLnJlc29sdmUoe30pKTtcblx0XHRcdG1vY2tBbm5vdGF0aW9uQ29udGV4dC5nZXRPYmplY3QubW9ja1JldHVyblZhbHVlKHtcblx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREZWZpbml0aW9uVHlwZVwiLFxuXHRcdFx0XHRDaGFydFR5cGU6IHsgJEVudW1NZW1iZXI6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRUeXBlL0NvbHVtblwiIH0sXG5cdFx0XHRcdERlc2NyaXB0aW9uOiBcIlRlc3RpbmcgTGluZSBDaGFydFwiLFxuXHRcdFx0XHREaW1lbnNpb25BdHRyaWJ1dGVzOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25BdHRyaWJ1dGVUeXBlXCIsXG5cdFx0XHRcdFx0XHREaW1lbnNpb246IHsgJFByb3BlcnR5UGF0aDogXCJTYWxlc09yZGVyXCIgfSxcblx0XHRcdFx0XHRcdFJvbGU6IHsgJEVudW1NZW1iZXI6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnREaW1lbnNpb25Sb2xlVHlwZS9BeGlzMVwiIH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0RGltZW5zaW9uQXR0cmlidXRlVHlwZVwiLFxuXHRcdFx0XHRcdFx0RGltZW5zaW9uOiB7ICRQcm9wZXJ0eVBhdGg6IFwiU29sZFRvUGFydHlcIiB9LFxuXHRcdFx0XHRcdFx0Um9sZTogeyAkRW51bU1lbWJlcjogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydERpbWVuc2lvblJvbGVUeXBlL0F4aXMxXCIgfVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XSxcblx0XHRcdFx0RGltZW5zaW9uczogW3sgJFByb3BlcnR5UGF0aDogXCJTYWxlc09yZGVyXCIgfSwgeyAkUHJvcGVydHlQYXRoOiBcIlNvbGRUb1BhcnR5XCIgfV0sXG5cdFx0XHRcdE1lYXN1cmVBdHRyaWJ1dGVzOiBbXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRNZWFzdXJlQXR0cmlidXRlVHlwZVwiLFxuXHRcdFx0XHRcdFx0TWVhc3VyZTogeyAkUHJvcGVydHlQYXRoOiBcIm1heFByaWNpbmdcIiB9LFxuXHRcdFx0XHRcdFx0Um9sZTogeyAkRW51bU1lbWJlcjogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydE1lYXN1cmVSb2xlVHlwZS9BeGlzMVwiIH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdF0sXG5cdFx0XHRcdE1lYXN1cmVzOiBbeyAkUHJvcGVydHlQYXRoOiBcIm1heFByaWNpbmdcIiB9XSxcblx0XHRcdFx0VGl0bGU6IFwiSGVpZ2h0IExpbmUgQ2hhcnRcIlxuXHRcdFx0fSk7XG5cdFx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuZ2V0TW9kZWwubW9ja1JldHVyblZhbHVlKG1vY2tNb2RlbCk7XG5cdFx0XHRleHBlY3QoXG5cdFx0XHRcdENoYXJ0SGVscGVyLmZvcm1hdE1lYXN1cmVzKG1vY2tBbm5vdGF0aW9uQ29udGV4dClcblx0XHRcdFx0XHQuZ2V0TW9kZWwoKVxuXHRcdFx0XHRcdC5nZXRKU09OKClcblx0XHRcdCkudG9FcXVhbChcblx0XHRcdFx0J1t7XCJrZXlcIjpcIm1heFByaWNpbmdcIixcImxhYmVsXCI6XCJNYXhpbWFsIE5ldCBBbW91bnRcIixcInJvbGVcIjpcImF4aXMxXCIsXCJwcm9wZXJ0eVBhdGhcIjpcIk5ldFByaWNpbmdcIixcImFnZ3JlZ2F0aW9uTWV0aG9kXCI6XCJtYXhcIn1dJ1xuXHRcdFx0KTtcblx0XHR9KTtcblx0fSk7XG5cblx0ZGVzY3JpYmUoXCJnZXRVaUNoYXJ0XCIsIGZ1bmN0aW9uKCkge1xuXHRcdGl0KFwid2l0aCBDaGFydCBhbm5vdGF0aW9uXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LnNQYXRoID1cblx0XHRcdFx0XCIvU2FsZXNPcmRlck1hbmFnZS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudC9WaXN1YWxpemF0aW9ucy8wLyRBbm5vdGF0aW9uUGF0aFwiO1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldFBhdGgubW9ja1JldHVyblZhbHVlKG1vY2tBbm5vdGF0aW9uQ29udGV4dC5zUGF0aCk7XG5cdFx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuZ2V0T2JqZWN0Lm1vY2tSZXR1cm5WYWx1ZShcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5DaGFydFwiKTtcblx0XHRcdGV4cGVjdChDaGFydEhlbHBlci5nZXRVaUNoYXJ0KG1vY2tBbm5vdGF0aW9uQ29udGV4dCkuc1BhdGgpLnRvQmUoXG5cdFx0XHRcdFwiL1NhbGVzT3JkZXJNYW5hZ2UvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnQvVmlzdWFsaXphdGlvbnMvMC8kQW5ub3RhdGlvblBhdGhcIlxuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdGl0KFwid2l0aCBQcmVzZW50YXRpb24gVmFyaWFudFwiLCBhc3luYyBmdW5jdGlvbigpIHtcblx0XHRcdG1vY2tBbm5vdGF0aW9uQ29udGV4dC5zUGF0aCA9IFwiL1NhbGVzT3JkZXJNYW5hZ2UvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnRcIjtcblx0XHRcdG1vY2tBbm5vdGF0aW9uQ29udGV4dC5nZXRQYXRoLm1vY2tSZXR1cm5WYWx1ZShtb2NrQW5ub3RhdGlvbkNvbnRleHQuc1BhdGgpO1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXJhbTogU3RyaW5nKSA9PiB7XG5cdFx0XHRcdGlmIChzUGFyYW0uaW5kZXhPZihcIkBzYXB1aS5uYW1lXCIpID4gLTEpIHtcblx0XHRcdFx0XHRyZXR1cm4gXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudFwiO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHQkVHlwZTogXCJjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5QcmVzZW50YXRpb25WYXJpYW50VHlwZVwiLFxuXHRcdFx0XHRcdFZpc3VhbGl6YXRpb25zOiBbXG5cdFx0XHRcdFx0XHR7ICRBbm5vdGF0aW9uUGF0aDogXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuQ2hhcnRcIiB9LFxuXHRcdFx0XHRcdFx0eyAkQW5ub3RhdGlvblBhdGg6IFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkxpbmVcIiB9XG5cdFx0XHRcdFx0XVxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuZ2V0TW9kZWwubW9ja1JldHVyblZhbHVlKG1vY2tNb2RlbCk7XG5cdFx0XHRleHBlY3QoQ2hhcnRIZWxwZXIuZ2V0VWlDaGFydChtb2NrQW5ub3RhdGlvbkNvbnRleHQpLnNQYXRoKS50b0JlKFwiL1NhbGVzT3JkZXJNYW5hZ2UvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkNoYXJ0XCIpO1xuXHRcdH0pO1xuXHR9KTtcblxuXHRkZXNjcmliZShcImdldE11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zXCIsIGZ1bmN0aW9uKCkge1xuXHRcdGJlZm9yZUFsbCgoKSA9PiB7XG5cdFx0XHRqZXN0LnNweU9uKENvbW1vbkhlbHBlciwgXCJnZXRBY3Rpb25QYXRoXCIpLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoKHNBY3Rpb25OYW1lOiBzdHJpbmcpID0+IHtcblx0XHRcdFx0cmV0dXJuIFwiU2FsZXNPcmRlck1hbmFnZXJcIiArIHNBY3Rpb25OYW1lO1xuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHRpdChcIm5vIGFubm90YXRpb25zIGZvciBhY3Rpb24gcGFyYW1ldGVyXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBTdHJpbmcpID0+IHtcblx0XHRcdFx0aWYgKHNQYXRoLmluZGV4T2YoXCJAJHVpNS5vdmVybG9hZFwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdCRraW5kOiBcIkFjdGlvblwiLFxuXHRcdFx0XHRcdFx0JElzQm91bmQ6IHRydWUsXG5cdFx0XHRcdFx0XHQkRW50aXR5U2V0UGF0aDogXCJfaXRcIixcblx0XHRcdFx0XHRcdCRQYXJhbWV0ZXI6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0XHRcdFx0XHQkTmFtZTogXCJfaXRcIlxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0JFJldHVyblR5cGU6IHtcblx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHR9KTtcblx0XHRcdG1vY2tBbm5vdGF0aW9uQ29udGV4dC5zUGF0aCA9XG5cdFx0XHRcdFwiL1NhbGVzT3JkZXJNYW5hZ2UvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlByZXNlbnRhdGlvblZhcmlhbnQvVmlzdWFsaXphdGlvbnMvMC8kQW5ub3RhdGlvblBhdGgvYWN0aW9uc1wiO1xuXHRcdFx0ZXhwZWN0KENoYXJ0SGVscGVyLmdldE11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zKG1vY2tPRGF0YS5jaGFydENvbGxlY3Rpb24sIG1vY2tPRGF0YS5vSW50ZXJmYWNlKSkudG9FcXVhbChbXSk7XG5cdFx0fSk7XG5cblx0XHRpdChcInN0YXRpYyB2YWx1ZSBvZiB1aS5oaWRkZW4gYW5ub3RhdGVkIGZvciBhY3Rpb24gcGFyYW1ldGVyXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBTdHJpbmcpID0+IHtcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmIChzUGF0aC5pbmRleE9mKFwiQCR1aTUub3ZlcmxvYWRcIikgPiAtMSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0JGtpbmQ6IFwiQWN0aW9uXCIsXG5cdFx0XHRcdFx0XHRcdCRJc0JvdW5kOiB0cnVlLFxuXHRcdFx0XHRcdFx0XHQkRW50aXR5U2V0UGF0aDogXCJfaXRcIixcblx0XHRcdFx0XHRcdFx0JFBhcmFtZXRlcjogW1xuXHRcdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0XHRcdFx0XHRcdCROYW1lOiBcIl9pdFwiXG5cdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkX2FnZ3JlZ2F0ZS5TYWxlc09yZGVyTWFuYWdlXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHQkTmFtZTogXCJzb21lUGFyYW1ldGVyXCJcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdF0sXG5cdFx0XHRcdFx0XHRcdCRSZXR1cm5UeXBlOiB7XG5cdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChzUGF0aC5lbmRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiOiB0cnVlXG5cdFx0XHRcdFx0XHR9O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm4ge307XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdFx0ZXhwZWN0KENoYXJ0SGVscGVyLmdldE11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zKG1vY2tPRGF0YS5jaGFydENvbGxlY3Rpb24sIG1vY2tPRGF0YS5vSW50ZXJmYWNlKSkudG9FcXVhbChbXSk7XG5cdFx0fSk7XG5cblx0XHRpdChcInBhdGggYmFzZWQgdWkuaGlkZGVuIGFubm90YXRlZCBmb3IgYWN0aW9uIHBhcmFtZXRlclwiLCBhc3luYyBmdW5jdGlvbigpIHtcblx0XHRcdG1vY2tBbm5vdGF0aW9uQ29udGV4dC5nZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogU3RyaW5nKSA9PiB7XG5cdFx0XHRcdGlmIChzUGF0aC5pbmRleE9mKFwiQCR1aTUub3ZlcmxvYWRcIikgPiAtMSkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHQka2luZDogXCJBY3Rpb25cIixcblx0XHRcdFx0XHRcdCRJc0JvdW5kOiB0cnVlLFxuXHRcdFx0XHRcdFx0JEVudGl0eVNldFBhdGg6IFwiX2l0XCIsXG5cdFx0XHRcdFx0XHQkUGFyYW1ldGVyOiBbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHQkVHlwZTogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkX2FnZ3JlZ2F0ZS5TYWxlc09yZGVyTWFuYWdlXCIsXG5cdFx0XHRcdFx0XHRcdFx0JE5hbWU6IFwiX2l0XCJcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0XHRcdFx0XHQkTmFtZTogXCJzb21lUGFyYW1ldGVyXCJcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XSxcblx0XHRcdFx0XHRcdCRSZXR1cm5UeXBlOiB7XG5cdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIlxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH0gZWxzZSBpZiAoc1BhdGguZW5kc1dpdGgoXCJAXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLkhpZGRlblwiOiB7XG5cdFx0XHRcdFx0XHRcdCRQYXRoOiBcInNvbWVQYXRoXCJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdH0pO1xuXHRcdFx0ZXhwZWN0KENoYXJ0SGVscGVyLmdldE11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zKG1vY2tPRGF0YS5jaGFydENvbGxlY3Rpb24sIG1vY2tPRGF0YS5vSW50ZXJmYWNlKSkudG9FcXVhbChbXG5cdFx0XHRcdFwiY29tLnNlcnZpY2Uuc29tZUJvdW5kQWN0aW9uXCJcblx0XHRcdF0pO1xuXHRcdH0pO1xuXG5cdFx0aXQoXCJwYXRoIGJhc2VkIGZpZWxkIGNvbnRyb2wgYW5ub3RhdGVkIGZvciBhY3Rpb24gcGFyYW1ldGVyXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBTdHJpbmcpID0+IHtcblx0XHRcdFx0aWYgKHNQYXRoLmluZGV4T2YoXCJAJHVpNS5vdmVybG9hZFwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdCRraW5kOiBcIkFjdGlvblwiLFxuXHRcdFx0XHRcdFx0JElzQm91bmQ6IHRydWUsXG5cdFx0XHRcdFx0XHQkRW50aXR5U2V0UGF0aDogXCJfaXRcIixcblx0XHRcdFx0XHRcdCRQYXJhbWV0ZXI6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0XHRcdFx0XHQkTmFtZTogXCJfaXRcIlxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRcdFx0XHRcdCROYW1lOiBcInNvbWVQYXJhbWV0ZXJcIlxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0JFJldHVyblR5cGU6IHtcblx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIGlmIChzUGF0aC5lbmRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFwiOiB7XG5cdFx0XHRcdFx0XHRcdCRQYXRoOiBcInNvbWVQYXRoXCJcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdH0pO1xuXHRcdFx0ZXhwZWN0KENoYXJ0SGVscGVyLmdldE11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zKG1vY2tPRGF0YS5jaGFydENvbGxlY3Rpb24sIG1vY2tPRGF0YS5vSW50ZXJmYWNlKSkudG9FcXVhbChbXG5cdFx0XHRcdFwiY29tLnNlcnZpY2Uuc29tZUJvdW5kQWN0aW9uXCJcblx0XHRcdF0pO1xuXHRcdH0pO1xuXG5cdFx0aXQoXCJhY3Rpb24gcGFyYW1ldGVyIGFubm90YXRlZCB3aXRoIHN0YXRpYyBmaWVsZCBjb250cm9sXCIsIGFzeW5jIGZ1bmN0aW9uKCkge1xuXHRcdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldE9iamVjdC5tb2NrSW1wbGVtZW50YXRpb24oKHNQYXRoOiBTdHJpbmcpID0+IHtcblx0XHRcdFx0aWYgKHNQYXRoLmluZGV4T2YoXCJAJHVpNS5vdmVybG9hZFwiKSA+IC0xKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdCRraW5kOiBcIkFjdGlvblwiLFxuXHRcdFx0XHRcdFx0JElzQm91bmQ6IHRydWUsXG5cdFx0XHRcdFx0XHQkRW50aXR5U2V0UGF0aDogXCJfaXRcIixcblx0XHRcdFx0XHRcdCRQYXJhbWV0ZXI6IFtcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIixcblx0XHRcdFx0XHRcdFx0XHQkTmFtZTogXCJfaXRcIlxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiLFxuXHRcdFx0XHRcdFx0XHRcdCROYW1lOiBcInNvbWVQYXJhbWV0ZXJcIlxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRdLFxuXHRcdFx0XHRcdFx0JFJldHVyblR5cGU6IHtcblx0XHRcdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSBlbHNlIGlmIChzUGF0aC5lbmRzV2l0aChcIkBcIikpIHtcblx0XHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkZpZWxkQ29udHJvbFwiOiBcIlJlYWRPbmx5XCJcblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7fTtcblx0XHRcdH0pO1xuXHRcdFx0ZXhwZWN0KENoYXJ0SGVscGVyLmdldE11bHRpU2VsZWN0RGlzYWJsZWRBY3Rpb25zKG1vY2tPRGF0YS5jaGFydENvbGxlY3Rpb24sIG1vY2tPRGF0YS5vSW50ZXJmYWNlKSkudG9FcXVhbChbXSk7XG5cdFx0fSk7XG5cdH0pO1xuXG5cdGRlc2NyaWJlKFwiZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwXCIsIGZ1bmN0aW9uKCkge1xuXHRcdGJlZm9yZUFsbCgoKSA9PiB7XG5cdFx0XHRqZXN0LnNweU9uKENvbW1vbkhlbHBlciwgXCJnZXRFbnRpdHlTZXROYW1lXCIpLm1vY2tJbXBsZW1lbnRhdGlvbk9uY2UoKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gXCJTYWxlc09yZGVyTWFuYWdlXCI7XG5cdFx0XHR9KTtcblx0XHR9KTtcblx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuc1BhdGggPVxuXHRcdFx0XCIvU2FsZXNPcmRlck1hbmFnZS9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuUHJlc2VudGF0aW9uVmFyaWFudC9WaXN1YWxpemF0aW9ucy8wLyRBbm5vdGF0aW9uUGF0aC9hY3Rpb25zXCI7XG5cdFx0bW9ja0Fubm90YXRpb25Db250ZXh0LmdldFBhdGgubW9ja1JldHVyblZhbHVlKG1vY2tBbm5vdGF0aW9uQ29udGV4dC5zUGF0aCk7XG5cdFx0aXQoXCJzdGF0aWMgdmFsdWUgb2Ygb3BlcmF0aW9uIGF2YWlsYWJsZVwiLCBhc3luYyBmdW5jdGlvbigpIHtcblx0XHRcdG1vY2tBbm5vdGF0aW9uQ29udGV4dC5nZXRPYmplY3QubW9ja0ltcGxlbWVudGF0aW9uKChzUGF0aDogU3RyaW5nKSA9PiB7XG5cdFx0XHRcdGlmIChzUGF0aC5lbmRzV2l0aChcIkBPcmcuT0RhdGEuQ29yZS5WMS5PcGVyYXRpb25BdmFpbGFibGVcIikpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0fSBlbHNlIGlmIChzUGF0aC5lbmRzV2l0aChcIi8kUGF0aFwiKSkge1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fSBlbHNlIGlmIChzUGF0aC5lbmRzV2l0aChcIi9AJHVpNS5vdmVybG9hZC8wLyRQYXJhbWV0ZXIvMC8kTmFtZVwiKSkge1xuXHRcdFx0XHRcdHJldHVybiBcIl9pdFwiO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0JGtpbmQ6IFwiRW50aXR5U2V0XCIsXG5cdFx0XHRcdFx0JFR5cGU6IFwiY29tLmNfc2FsZXNvcmRlcm1hbmFnZV9zZF9hZ2dyZWdhdGUuU2FsZXNPcmRlck1hbmFnZVwiXG5cdFx0XHRcdH07XG5cdFx0XHR9KTtcblx0XHRcdGV4cGVjdChDaGFydEhlbHBlci5nZXRPcGVyYXRpb25BdmFpbGFibGVNYXAobW9ja09EYXRhLmNoYXJ0Q29sbGVjdGlvbiwgbW9ja09EYXRhLm9JbnRlcmZhY2UpKS50b0JlKFwie31cIik7XG5cdFx0fSk7XG5cblx0XHRpdChcIm9wZXJhdGlvbiBhdmFpbGFibGUgYW5ub3RhdGVkIGFzIG51bGxcIiwgYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuZ2V0T2JqZWN0Lm1vY2tJbXBsZW1lbnRhdGlvbigoc1BhdGg6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRpZiAoc1BhdGguZW5kc1dpdGgoXCJAT3JnLk9EYXRhLkNvcmUuVjEuT3BlcmF0aW9uQXZhaWxhYmxlXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH0gZWxzZSBpZiAoc1BhdGguZW5kc1dpdGgoXCIvJFBhdGhcIikpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0gZWxzZSBpZiAoc1BhdGguZW5kc1dpdGgoXCIvQCR1aTUub3ZlcmxvYWQvMC8kUGFyYW1ldGVyLzAvJE5hbWVcIikpIHtcblx0XHRcdFx0XHRyZXR1cm4gXCJfaXRcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdCRraW5kOiBcIkVudGl0eVNldFwiLFxuXHRcdFx0XHRcdCRUeXBlOiBcImNvbS5jX3NhbGVzb3JkZXJtYW5hZ2Vfc2RfYWdncmVnYXRlLlNhbGVzT3JkZXJNYW5hZ2VcIlxuXHRcdFx0XHR9O1xuXHRcdFx0fSk7XG5cdFx0XHRleHBlY3QoQ2hhcnRIZWxwZXIuZ2V0T3BlcmF0aW9uQXZhaWxhYmxlTWFwKG1vY2tPRGF0YS5jaGFydENvbGxlY3Rpb24sIG1vY2tPRGF0YS5vSW50ZXJmYWNlKSkudG9CZShcblx0XHRcdFx0J3tcImNvbS5zZXJ2aWNlLnNvbWVCb3VuZEFjdGlvblwiOm51bGx9J1xuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdGl0KFwib3BlcmF0aW9uIGF2YWlsYWJsZSBoYXZpbmcgJHBhdGhcIiwgYXN5bmMgZnVuY3Rpb24oKSB7XG5cdFx0XHRtb2NrQW5ub3RhdGlvbkNvbnRleHQuZ2V0T2JqZWN0Lm1vY2tJbXBsZW1lbnRhdGlvbigoc1BhdGg6IFN0cmluZykgPT4ge1xuXHRcdFx0XHRpZiAoc1BhdGguZW5kc1dpdGgoXCJAT3JnLk9EYXRhLkNvcmUuVjEuT3BlcmF0aW9uQXZhaWxhYmxlXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHsgJFBhdGg6IFwiX2l0L3NvbWVQYXRoXCIgfTtcblx0XHRcdFx0fSBlbHNlIGlmIChzUGF0aC5lbmRzV2l0aChcIi8kUGF0aFwiKSkge1xuXHRcdFx0XHRcdHJldHVybiBcIl9pdC9zb21lUGF0aFwiO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHNQYXRoLmVuZHNXaXRoKFwiL0AkdWk1Lm92ZXJsb2FkLzAvJFBhcmFtZXRlci8wLyROYW1lXCIpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIFwiX2l0XCI7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHQka2luZDogXCJFbnRpdHlTZXRcIixcblx0XHRcdFx0XHQkVHlwZTogXCJjb20uY19zYWxlc29yZGVybWFuYWdlX3NkX2FnZ3JlZ2F0ZS5TYWxlc09yZGVyTWFuYWdlXCJcblx0XHRcdFx0fTtcblx0XHRcdH0pO1xuXHRcdFx0ZXhwZWN0KENoYXJ0SGVscGVyLmdldE9wZXJhdGlvbkF2YWlsYWJsZU1hcChtb2NrT0RhdGEuY2hhcnRDb2xsZWN0aW9uLCBtb2NrT0RhdGEub0ludGVyZmFjZSkpLnRvQmUoXG5cdFx0XHRcdCd7XCJjb20uc2VydmljZS5zb21lQm91bmRBY3Rpb25cIjpcInNvbWVQYXRoXCJ9J1xuXHRcdFx0KTtcblx0XHR9KTtcblx0fSk7XG59KTtcbiJdfQ==