@sap/ux-specification 1.71.65 → 1.71.66

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 (523) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/documentation/runDocu-min.js +9645 -2
  3. package/dist/documentation/runDocu-min.js.map +7 -0
  4. package/dist/documentation/styleDocu.css +32 -28
  5. package/dist/documentation/v2/v2-AnalyticalListPage.html +20 -8
  6. package/dist/documentation/v2/v2-ApplicationV2.html +20 -8
  7. package/dist/documentation/v2/v2-ListReport.html +20 -8
  8. package/dist/documentation/v2/v2-ObjectPage.html +20 -8
  9. package/dist/documentation/v2/v2-OverviewPage.html +20 -8
  10. package/dist/index-min.js +24708 -2
  11. package/dist/index-min.js.map +7 -0
  12. package/dist/schemas/v2/ObjectPageConfig.json +1 -1
  13. package/dist/{src → types}/api.d.ts +2 -1
  14. package/dist/types/api.d.ts.map +1 -0
  15. package/dist/{src → types}/apiTypes.d.ts +3 -1
  16. package/dist/types/apiTypes.d.ts.map +1 -0
  17. package/dist/{src → types}/extensionLogger.d.ts +1 -0
  18. package/dist/types/extensionLogger.d.ts.map +1 -0
  19. package/dist/{src → types}/i18n/i18n.d.ts +1 -0
  20. package/dist/types/i18n/i18n.d.ts.map +1 -0
  21. package/dist/{src → types}/index.d.ts +1 -0
  22. package/dist/types/index.d.ts.map +1 -0
  23. package/dist/{src → types}/project.d.ts +1 -0
  24. package/dist/types/project.d.ts.map +1 -0
  25. package/dist/{src → types}/specification/common/Application.d.ts +1 -0
  26. package/dist/types/specification/common/Application.d.ts.map +1 -0
  27. package/dist/{src → types}/specification/common/index.d.ts +1 -0
  28. package/dist/types/specification/common/index.d.ts.map +1 -0
  29. package/dist/{src → types}/specification/common/page.d.ts +1 -0
  30. package/dist/types/specification/common/page.d.ts.map +1 -0
  31. package/dist/{src → types}/specification/common/types.d.ts +1 -0
  32. package/dist/types/specification/common/types.d.ts.map +1 -0
  33. package/dist/{src → types}/specification/common/webapp/manifest/Manifest.d.ts +1 -0
  34. package/dist/types/specification/common/webapp/manifest/Manifest.d.ts.map +1 -0
  35. package/dist/{src → types}/specification/common/webapp/manifest/index.d.ts +1 -0
  36. package/dist/types/specification/common/webapp/manifest/index.d.ts.map +1 -0
  37. package/dist/{src → types}/specification/common/webapp/manifest/sapOvp.d.ts +1 -0
  38. package/dist/types/specification/common/webapp/manifest/sapOvp.d.ts.map +1 -0
  39. package/dist/{src → types}/specification/common/webapp/manifest/sapUi5.d.ts +1 -0
  40. package/dist/types/specification/common/webapp/manifest/sapUi5.d.ts.map +1 -0
  41. package/dist/{src → types}/specification/schemaAccess.d.ts +7 -0
  42. package/dist/types/specification/schemaAccess.d.ts.map +1 -0
  43. package/dist/{src → types}/specification/v2/ApplicationV2.d.ts +1 -0
  44. package/dist/types/specification/v2/ApplicationV2.d.ts.map +1 -0
  45. package/dist/{src → types}/specification/v2/controls/Action.d.ts +1 -0
  46. package/dist/types/specification/v2/controls/Action.d.ts.map +1 -0
  47. package/dist/{src → types}/specification/v2/controls/AnalyticalListPageChart.d.ts +1 -0
  48. package/dist/types/specification/v2/controls/AnalyticalListPageChart.d.ts.map +1 -0
  49. package/dist/{src → types}/specification/v2/controls/AnalyticalListPageKPI.d.ts +1 -0
  50. package/dist/types/specification/v2/controls/AnalyticalListPageKPI.d.ts.map +1 -0
  51. package/dist/{src → types}/specification/v2/controls/Card.d.ts +1 -0
  52. package/dist/types/specification/v2/controls/Card.d.ts.map +1 -0
  53. package/dist/{src → types}/specification/v2/controls/Facets.d.ts +1 -0
  54. package/dist/types/specification/v2/controls/Facets.d.ts.map +1 -0
  55. package/dist/{src → types}/specification/v2/controls/Field.d.ts +1 -0
  56. package/dist/types/specification/v2/controls/Field.d.ts.map +1 -0
  57. package/dist/{src → types}/specification/v2/controls/FilterBar.d.ts +1 -0
  58. package/dist/types/specification/v2/controls/FilterBar.d.ts.map +1 -0
  59. package/dist/{src → types}/specification/v2/controls/Footer.d.ts +1 -0
  60. package/dist/types/specification/v2/controls/Footer.d.ts.map +1 -0
  61. package/dist/{src → types}/specification/v2/controls/ObjectPageChart.d.ts +1 -0
  62. package/dist/types/specification/v2/controls/ObjectPageChart.d.ts.map +1 -0
  63. package/dist/{src → types}/specification/v2/controls/ObjectPageForm.d.ts +1 -0
  64. package/dist/types/specification/v2/controls/ObjectPageForm.d.ts.map +1 -0
  65. package/dist/{src → types}/specification/v2/controls/ObjectPageHeader.d.ts +1 -0
  66. package/dist/types/specification/v2/controls/ObjectPageHeader.d.ts.map +1 -0
  67. package/dist/{src → types}/specification/v2/controls/ObjectPageLayout.d.ts +1 -0
  68. package/dist/types/specification/v2/controls/ObjectPageLayout.d.ts.map +1 -0
  69. package/dist/{src → types}/specification/v2/controls/ObjectPageSection.d.ts +1 -0
  70. package/dist/types/specification/v2/controls/ObjectPageSection.d.ts.map +1 -0
  71. package/dist/{src → types}/specification/v2/controls/ObjectPageTable.d.ts +1 -0
  72. package/dist/types/specification/v2/controls/ObjectPageTable.d.ts.map +1 -0
  73. package/dist/{src → types}/specification/v2/controls/ObjectPageToolBar.d.ts +1 -0
  74. package/dist/types/specification/v2/controls/ObjectPageToolBar.d.ts.map +1 -0
  75. package/dist/{src → types}/specification/v2/controls/Table.d.ts +1 -0
  76. package/dist/types/specification/v2/controls/Table.d.ts.map +1 -0
  77. package/dist/{src → types}/specification/v2/controls/ToolBar.d.ts +1 -0
  78. package/dist/types/specification/v2/controls/ToolBar.d.ts.map +1 -0
  79. package/dist/{src → types}/specification/v2/controls/index.d.ts +1 -0
  80. package/dist/types/specification/v2/controls/index.d.ts.map +1 -0
  81. package/dist/{src → types}/specification/v2/index.d.ts +1 -0
  82. package/dist/types/specification/v2/index.d.ts.map +1 -0
  83. package/dist/{src → types}/specification/v2/page.d.ts +1 -0
  84. package/dist/types/specification/v2/page.d.ts.map +1 -0
  85. package/dist/{src → types}/specification/v2/pages/AnalyticalListPageConfig.d.ts +1 -0
  86. package/dist/types/specification/v2/pages/AnalyticalListPageConfig.d.ts.map +1 -0
  87. package/dist/{src → types}/specification/v2/pages/ListReportConfig.d.ts +1 -0
  88. package/dist/types/specification/v2/pages/ListReportConfig.d.ts.map +1 -0
  89. package/dist/{src → types}/specification/v2/pages/ObjectPageConfig.d.ts +1 -0
  90. package/dist/types/specification/v2/pages/ObjectPageConfig.d.ts.map +1 -0
  91. package/dist/{src → types}/specification/v2/pages/OverviewPageConfig.d.ts +1 -0
  92. package/dist/types/specification/v2/pages/OverviewPageConfig.d.ts.map +1 -0
  93. package/dist/{src → types}/specification/v2/pages/index.d.ts +1 -0
  94. package/dist/types/specification/v2/pages/index.d.ts.map +1 -0
  95. package/dist/types/specification/v2/webapp/index.d.ts +2 -0
  96. package/dist/types/specification/v2/webapp/index.d.ts.map +1 -0
  97. package/dist/{src → types}/specification/v2/webapp/manifest/index.d.ts +1 -0
  98. package/dist/types/specification/v2/webapp/manifest/index.d.ts.map +1 -0
  99. package/dist/{src → types}/specification/v2/webapp/manifest/sapUi.d.ts +1 -0
  100. package/dist/types/specification/v2/webapp/manifest/sapUi.d.ts.map +1 -0
  101. package/dist/{src → types}/specification/v2/webapp/manifest/sapUi5.d.ts +1 -0
  102. package/dist/types/specification/v2/webapp/manifest/sapUi5.d.ts.map +1 -0
  103. package/dist/{src → types}/specification/v2/webapp/manifest/sapUiPageV2.d.ts +1 -0
  104. package/dist/types/specification/v2/webapp/manifest/sapUiPageV2.d.ts.map +1 -0
  105. package/dist/{src → types}/sync/common/appProvider.d.ts +1 -0
  106. package/dist/types/sync/common/appProvider.d.ts.map +1 -0
  107. package/dist/{src → types}/sync/common/decoration/control.d.ts +1 -0
  108. package/dist/types/sync/common/decoration/control.d.ts.map +1 -0
  109. package/dist/{src → types}/sync/common/decoration/decorators.d.ts +1 -0
  110. package/dist/types/sync/common/decoration/decorators.d.ts.map +1 -0
  111. package/dist/{src → types}/sync/common/decoration/factory.d.ts +1 -0
  112. package/dist/types/sync/common/decoration/factory.d.ts.map +1 -0
  113. package/dist/{src → types}/sync/common/decoration/flex.d.ts +1 -0
  114. package/dist/types/sync/common/decoration/flex.d.ts.map +1 -0
  115. package/dist/{src → types}/sync/common/decoration/index.d.ts +1 -0
  116. package/dist/types/sync/common/decoration/index.d.ts.map +1 -0
  117. package/dist/{src → types}/sync/common/flexUtils.d.ts +1 -0
  118. package/dist/types/sync/common/flexUtils.d.ts.map +1 -0
  119. package/dist/{src → types}/sync/common/generate/index.d.ts +1 -0
  120. package/dist/types/sync/common/generate/index.d.ts.map +1 -0
  121. package/dist/{src → types}/sync/common/generate/objectPage.d.ts +3 -1
  122. package/dist/types/sync/common/generate/objectPage.d.ts.map +1 -0
  123. package/dist/{src → types}/sync/common/generate/utils.d.ts +1 -0
  124. package/dist/types/sync/common/generate/utils.d.ts.map +1 -0
  125. package/dist/{src → types}/sync/common/import/utils.d.ts +1 -0
  126. package/dist/types/sync/common/import/utils.d.ts.map +1 -0
  127. package/dist/{src → types}/sync/common/importProject.d.ts +1 -0
  128. package/dist/types/sync/common/importProject.d.ts.map +1 -0
  129. package/dist/{src → types}/sync/common/index.d.ts +1 -0
  130. package/dist/types/sync/common/index.d.ts.map +1 -0
  131. package/dist/{src → types}/sync/common/types.d.ts +4 -1
  132. package/dist/types/sync/common/types.d.ts.map +1 -0
  133. package/dist/{src → types}/sync/common/utils.d.ts +1 -0
  134. package/dist/types/sync/common/utils.d.ts.map +1 -0
  135. package/dist/{src → types}/sync/i18n.d.ts +1 -0
  136. package/dist/types/sync/i18n.d.ts.map +1 -0
  137. package/dist/{src → types}/sync/v2/application.d.ts +1 -0
  138. package/dist/types/sync/v2/application.d.ts.map +1 -0
  139. package/dist/{src → types}/sync/v2/export/controls/Action.d.ts +1 -0
  140. package/dist/types/sync/v2/export/controls/Action.d.ts.map +1 -0
  141. package/dist/{src → types}/sync/v2/export/controls/AnalyticalListPageChart.d.ts +1 -0
  142. package/dist/types/sync/v2/export/controls/AnalyticalListPageChart.d.ts.map +1 -0
  143. package/dist/{src → types}/sync/v2/export/controls/AnalyticalListPageKPI.d.ts +1 -0
  144. package/dist/types/sync/v2/export/controls/AnalyticalListPageKPI.d.ts.map +1 -0
  145. package/dist/{src → types}/sync/v2/export/controls/Card.d.ts +1 -0
  146. package/dist/types/sync/v2/export/controls/Card.d.ts.map +1 -0
  147. package/dist/{src → types}/sync/v2/export/controls/Field.d.ts +1 -0
  148. package/dist/types/sync/v2/export/controls/Field.d.ts.map +1 -0
  149. package/dist/{src → types}/sync/v2/export/controls/FilterBar.d.ts +1 -0
  150. package/dist/types/sync/v2/export/controls/FilterBar.d.ts.map +1 -0
  151. package/dist/{src → types}/sync/v2/export/controls/FormAction.d.ts +1 -0
  152. package/dist/types/sync/v2/export/controls/FormAction.d.ts.map +1 -0
  153. package/dist/{src → types}/sync/v2/export/controls/Fragment.d.ts +1 -0
  154. package/dist/types/sync/v2/export/controls/Fragment.d.ts.map +1 -0
  155. package/dist/{src → types}/sync/v2/export/controls/ObjectPageCustomSection.d.ts +1 -0
  156. package/dist/types/sync/v2/export/controls/ObjectPageCustomSection.d.ts.map +1 -0
  157. package/dist/{src → types}/sync/v2/export/controls/ObjectPageFooterAction.d.ts +1 -0
  158. package/dist/types/sync/v2/export/controls/ObjectPageFooterAction.d.ts.map +1 -0
  159. package/dist/{src → types}/sync/v2/export/controls/ObjectPageHeader.d.ts +1 -0
  160. package/dist/types/sync/v2/export/controls/ObjectPageHeader.d.ts.map +1 -0
  161. package/dist/{src → types}/sync/v2/export/controls/ObjectPageHeaderAction.d.ts +1 -0
  162. package/dist/types/sync/v2/export/controls/ObjectPageHeaderAction.d.ts.map +1 -0
  163. package/dist/{src → types}/sync/v2/export/controls/ObjectPageLayout.d.ts +1 -0
  164. package/dist/types/sync/v2/export/controls/ObjectPageLayout.d.ts.map +1 -0
  165. package/dist/{src → types}/sync/v2/export/controls/ObjectPageSectionsV2.d.ts +1 -0
  166. package/dist/types/sync/v2/export/controls/ObjectPageSectionsV2.d.ts.map +1 -0
  167. package/dist/{src → types}/sync/v2/export/controls/ObjectPageTable.d.ts +1 -0
  168. package/dist/types/sync/v2/export/controls/ObjectPageTable.d.ts.map +1 -0
  169. package/dist/{src → types}/sync/v2/export/controls/ObjectPageToolBarAction.d.ts +1 -0
  170. package/dist/types/sync/v2/export/controls/ObjectPageToolBarAction.d.ts.map +1 -0
  171. package/dist/{src → types}/sync/v2/export/controls/Table.d.ts +1 -0
  172. package/dist/types/sync/v2/export/controls/Table.d.ts.map +1 -0
  173. package/dist/{src → types}/sync/v2/export/controls/TableColumn.d.ts +1 -0
  174. package/dist/types/sync/v2/export/controls/TableColumn.d.ts.map +1 -0
  175. package/dist/{src → types}/sync/v2/export/controls/ToolBar.d.ts +1 -0
  176. package/dist/types/sync/v2/export/controls/ToolBar.d.ts.map +1 -0
  177. package/dist/{src → types}/sync/v2/export/controls/index.d.ts +1 -0
  178. package/dist/types/sync/v2/export/controls/index.d.ts.map +1 -0
  179. package/dist/{src → types}/sync/v2/export/export.d.ts +1 -0
  180. package/dist/types/sync/v2/export/export.d.ts.map +1 -0
  181. package/dist/{src → types}/sync/v2/export/exportPage.d.ts +1 -0
  182. package/dist/types/sync/v2/export/exportPage.d.ts.map +1 -0
  183. package/dist/{src → types}/sync/v2/export/factory.d.ts +1 -0
  184. package/dist/types/sync/v2/export/factory.d.ts.map +1 -0
  185. package/dist/{src → types}/sync/v2/export/manifest.d.ts +1 -0
  186. package/dist/types/sync/v2/export/manifest.d.ts.map +1 -0
  187. package/dist/{src → types}/sync/v2/export/pages/AnalyticalListPage.d.ts +1 -0
  188. package/dist/types/sync/v2/export/pages/AnalyticalListPage.d.ts.map +1 -0
  189. package/dist/{src → types}/sync/v2/export/pages/ListReport.d.ts +1 -0
  190. package/dist/types/sync/v2/export/pages/ListReport.d.ts.map +1 -0
  191. package/dist/{src → types}/sync/v2/export/pages/ObjectPage.d.ts +1 -0
  192. package/dist/types/sync/v2/export/pages/ObjectPage.d.ts.map +1 -0
  193. package/dist/{src → types}/sync/v2/export/pages/OverviewPage.d.ts +1 -0
  194. package/dist/types/sync/v2/export/pages/OverviewPage.d.ts.map +1 -0
  195. package/dist/{src → types}/sync/v2/export/pages/index.d.ts +1 -0
  196. package/dist/types/sync/v2/export/pages/index.d.ts.map +1 -0
  197. package/dist/{src → types}/sync/v2/export/view-controller-generator.d.ts +1 -0
  198. package/dist/types/sync/v2/export/view-controller-generator.d.ts.map +1 -0
  199. package/dist/{src → types}/sync/v2/generate/analyticalListReport.d.ts +1 -0
  200. package/dist/types/sync/v2/generate/analyticalListReport.d.ts.map +1 -0
  201. package/dist/{src → types}/sync/v2/generate/generate.d.ts +1 -0
  202. package/dist/types/sync/v2/generate/generate.d.ts.map +1 -0
  203. package/dist/{src → types}/sync/v2/generate/index.d.ts +1 -0
  204. package/dist/types/sync/v2/generate/index.d.ts.map +1 -0
  205. package/dist/{src → types}/sync/v2/generate/listReport.d.ts +1 -0
  206. package/dist/types/sync/v2/generate/listReport.d.ts.map +1 -0
  207. package/dist/{src → types}/sync/v2/generate/objectPage.d.ts +1 -0
  208. package/dist/types/sync/v2/generate/objectPage.d.ts.map +1 -0
  209. package/dist/{src → types}/sync/v2/generate/overviewPage.d.ts +1 -0
  210. package/dist/types/sync/v2/generate/overviewPage.d.ts.map +1 -0
  211. package/dist/{src → types}/sync/v2/generate/utils.d.ts +1 -0
  212. package/dist/types/sync/v2/generate/utils.d.ts.map +1 -0
  213. package/dist/{src → types}/sync/v2/import/app/appProvider.d.ts +1 -0
  214. package/dist/types/sync/v2/import/app/appProvider.d.ts.map +1 -0
  215. package/dist/{src → types}/sync/v2/import/app/ovpProvider.d.ts +1 -0
  216. package/dist/types/sync/v2/import/app/ovpProvider.d.ts.map +1 -0
  217. package/dist/{src → types}/sync/v2/import/common/index.d.ts +1 -0
  218. package/dist/types/sync/v2/import/common/index.d.ts.map +1 -0
  219. package/dist/{src → types}/sync/v2/import/controls/table.d.ts +1 -0
  220. package/dist/types/sync/v2/import/controls/table.d.ts.map +1 -0
  221. package/dist/types/sync/v2/import/getPageType.d.ts +1 -0
  222. package/dist/types/sync/v2/import/getPageType.d.ts.map +1 -0
  223. package/dist/{src → types}/sync/v2/import/index.d.ts +1 -0
  224. package/dist/types/sync/v2/import/index.d.ts.map +1 -0
  225. package/dist/{src → types}/sync/v2/import/pages/analyticalListPage.d.ts +1 -0
  226. package/dist/types/sync/v2/import/pages/analyticalListPage.d.ts.map +1 -0
  227. package/dist/{src → types}/sync/v2/import/pages/listReport.d.ts +1 -0
  228. package/dist/types/sync/v2/import/pages/listReport.d.ts.map +1 -0
  229. package/dist/{src → types}/sync/v2/import/pages/objectPage.d.ts +1 -0
  230. package/dist/types/sync/v2/import/pages/objectPage.d.ts.map +1 -0
  231. package/dist/{src → types}/sync/v2/import/pages/overviewPage.d.ts +1 -0
  232. package/dist/types/sync/v2/import/pages/overviewPage.d.ts.map +1 -0
  233. package/dist/{src → types}/sync/v2/import/utils.d.ts +1 -0
  234. package/dist/types/sync/v2/import/utils.d.ts.map +1 -0
  235. package/dist/{src → types}/sync/v2/types.d.ts +1 -0
  236. package/dist/types/sync/v2/types.d.ts.map +1 -0
  237. package/dist/{src → types}/sync/v4/utils/StableIdHelper.d.ts +1 -0
  238. package/dist/types/sync/v4/utils/StableIdHelper.d.ts.map +1 -0
  239. package/dist/{src → types}/v2.d.ts +1 -0
  240. package/dist/types/v2.d.ts.map +1 -0
  241. package/package.json +25 -28
  242. package/dist/documentation/runDocu-min.js.LICENSE.txt +0 -24
  243. package/dist/index-min.js.LICENSE.txt +0 -26
  244. package/dist/scripts/extractDocu.d.ts +0 -1
  245. package/dist/scripts/extractDocu.js +0 -485
  246. package/dist/scripts/extractDocu.js.map +0 -1
  247. package/dist/scripts/runDocu.d.ts +0 -1
  248. package/dist/scripts/runDocu.js +0 -570
  249. package/dist/scripts/runDocu.js.map +0 -1
  250. package/dist/scripts/spec.d.ts +0 -1
  251. package/dist/scripts/spec.js +0 -114
  252. package/dist/scripts/spec.js.map +0 -1
  253. package/dist/scripts/to-json-schema.d.ts +0 -10
  254. package/dist/scripts/to-json-schema.js +0 -112
  255. package/dist/scripts/to-json-schema.js.map +0 -1
  256. package/dist/specification/v2/index-min.js +0 -1
  257. package/dist/src/api.js +0 -123
  258. package/dist/src/api.js.map +0 -1
  259. package/dist/src/apiTypes.js +0 -3
  260. package/dist/src/apiTypes.js.map +0 -1
  261. package/dist/src/extensionLogger.js +0 -34
  262. package/dist/src/extensionLogger.js.map +0 -1
  263. package/dist/src/i18n/i18n.js +0 -25
  264. package/dist/src/i18n/i18n.js.map +0 -1
  265. package/dist/src/index.js +0 -12
  266. package/dist/src/index.js.map +0 -1
  267. package/dist/src/project.js +0 -151
  268. package/dist/src/project.js.map +0 -1
  269. package/dist/src/specification/common/Application.js +0 -3
  270. package/dist/src/specification/common/Application.js.map +0 -1
  271. package/dist/src/specification/common/i18n.json +0 -1
  272. package/dist/src/specification/common/index.js +0 -10
  273. package/dist/src/specification/common/index.js.map +0 -1
  274. package/dist/src/specification/common/page.js +0 -26
  275. package/dist/src/specification/common/page.js.map +0 -1
  276. package/dist/src/specification/common/types.js +0 -25
  277. package/dist/src/specification/common/types.js.map +0 -1
  278. package/dist/src/specification/common/webapp/manifest/Manifest.js +0 -17
  279. package/dist/src/specification/common/webapp/manifest/Manifest.js.map +0 -1
  280. package/dist/src/specification/common/webapp/manifest/index.js +0 -8
  281. package/dist/src/specification/common/webapp/manifest/index.js.map +0 -1
  282. package/dist/src/specification/common/webapp/manifest/sapOvp.js +0 -9
  283. package/dist/src/specification/common/webapp/manifest/sapOvp.js.map +0 -1
  284. package/dist/src/specification/common/webapp/manifest/sapUi5.js +0 -14
  285. package/dist/src/specification/common/webapp/manifest/sapUi5.js.map +0 -1
  286. package/dist/src/specification/schemaAccess.js +0 -62
  287. package/dist/src/specification/schemaAccess.js.map +0 -1
  288. package/dist/src/specification/v2/ApplicationV2.js +0 -3
  289. package/dist/src/specification/v2/ApplicationV2.js.map +0 -1
  290. package/dist/src/specification/v2/controls/Action.js +0 -15
  291. package/dist/src/specification/v2/controls/Action.js.map +0 -1
  292. package/dist/src/specification/v2/controls/AnalyticalListPageChart.js +0 -36
  293. package/dist/src/specification/v2/controls/AnalyticalListPageChart.js.map +0 -1
  294. package/dist/src/specification/v2/controls/AnalyticalListPageKPI.js +0 -3
  295. package/dist/src/specification/v2/controls/AnalyticalListPageKPI.js.map +0 -1
  296. package/dist/src/specification/v2/controls/Card.js +0 -53
  297. package/dist/src/specification/v2/controls/Card.js.map +0 -1
  298. package/dist/src/specification/v2/controls/Facets.js +0 -3
  299. package/dist/src/specification/v2/controls/Facets.js.map +0 -1
  300. package/dist/src/specification/v2/controls/Field.js +0 -3
  301. package/dist/src/specification/v2/controls/Field.js.map +0 -1
  302. package/dist/src/specification/v2/controls/FilterBar.js +0 -3
  303. package/dist/src/specification/v2/controls/FilterBar.js.map +0 -1
  304. package/dist/src/specification/v2/controls/Footer.js +0 -3
  305. package/dist/src/specification/v2/controls/Footer.js.map +0 -1
  306. package/dist/src/specification/v2/controls/ObjectPageChart.js +0 -3
  307. package/dist/src/specification/v2/controls/ObjectPageChart.js.map +0 -1
  308. package/dist/src/specification/v2/controls/ObjectPageForm.js +0 -3
  309. package/dist/src/specification/v2/controls/ObjectPageForm.js.map +0 -1
  310. package/dist/src/specification/v2/controls/ObjectPageHeader.js +0 -8
  311. package/dist/src/specification/v2/controls/ObjectPageHeader.js.map +0 -1
  312. package/dist/src/specification/v2/controls/ObjectPageLayout.js +0 -3
  313. package/dist/src/specification/v2/controls/ObjectPageLayout.js.map +0 -1
  314. package/dist/src/specification/v2/controls/ObjectPageSection.js +0 -13
  315. package/dist/src/specification/v2/controls/ObjectPageSection.js.map +0 -1
  316. package/dist/src/specification/v2/controls/ObjectPageTable.js +0 -7
  317. package/dist/src/specification/v2/controls/ObjectPageTable.js.map +0 -1
  318. package/dist/src/specification/v2/controls/ObjectPageToolBar.js +0 -3
  319. package/dist/src/specification/v2/controls/ObjectPageToolBar.js.map +0 -1
  320. package/dist/src/specification/v2/controls/Table.js +0 -51
  321. package/dist/src/specification/v2/controls/Table.js.map +0 -1
  322. package/dist/src/specification/v2/controls/ToolBar.js +0 -3
  323. package/dist/src/specification/v2/controls/ToolBar.js.map +0 -1
  324. package/dist/src/specification/v2/controls/index.js +0 -13
  325. package/dist/src/specification/v2/controls/index.js.map +0 -1
  326. package/dist/src/specification/v2/index.js +0 -9
  327. package/dist/src/specification/v2/index.js.map +0 -1
  328. package/dist/src/specification/v2/page.js +0 -3
  329. package/dist/src/specification/v2/page.js.map +0 -1
  330. package/dist/src/specification/v2/pages/AnalyticalListPageConfig.js +0 -3
  331. package/dist/src/specification/v2/pages/AnalyticalListPageConfig.js.map +0 -1
  332. package/dist/src/specification/v2/pages/ListReportConfig.js +0 -3
  333. package/dist/src/specification/v2/pages/ListReportConfig.js.map +0 -1
  334. package/dist/src/specification/v2/pages/ObjectPageConfig.js +0 -3
  335. package/dist/src/specification/v2/pages/ObjectPageConfig.js.map +0 -1
  336. package/dist/src/specification/v2/pages/OverviewPageConfig.js +0 -8
  337. package/dist/src/specification/v2/pages/OverviewPageConfig.js.map +0 -1
  338. package/dist/src/specification/v2/pages/index.js +0 -7
  339. package/dist/src/specification/v2/pages/index.js.map +0 -1
  340. package/dist/src/specification/v2/webapp/index.d.ts +0 -1
  341. package/dist/src/specification/v2/webapp/index.js +0 -7
  342. package/dist/src/specification/v2/webapp/index.js.map +0 -1
  343. package/dist/src/specification/v2/webapp/manifest/index.js +0 -8
  344. package/dist/src/specification/v2/webapp/manifest/index.js.map +0 -1
  345. package/dist/src/specification/v2/webapp/manifest/sapUi.js +0 -3
  346. package/dist/src/specification/v2/webapp/manifest/sapUi.js.map +0 -1
  347. package/dist/src/specification/v2/webapp/manifest/sapUi5.js +0 -9
  348. package/dist/src/specification/v2/webapp/manifest/sapUi5.js.map +0 -1
  349. package/dist/src/specification/v2/webapp/manifest/sapUiPageV2.js +0 -7
  350. package/dist/src/specification/v2/webapp/manifest/sapUiPageV2.js.map +0 -1
  351. package/dist/src/sync/common/appProvider.js +0 -59
  352. package/dist/src/sync/common/appProvider.js.map +0 -1
  353. package/dist/src/sync/common/decoration/control.js +0 -211
  354. package/dist/src/sync/common/decoration/control.js.map +0 -1
  355. package/dist/src/sync/common/decoration/decorators.js +0 -45
  356. package/dist/src/sync/common/decoration/decorators.js.map +0 -1
  357. package/dist/src/sync/common/decoration/factory.js +0 -48
  358. package/dist/src/sync/common/decoration/factory.js.map +0 -1
  359. package/dist/src/sync/common/decoration/flex.js +0 -8
  360. package/dist/src/sync/common/decoration/flex.js.map +0 -1
  361. package/dist/src/sync/common/decoration/index.js +0 -9
  362. package/dist/src/sync/common/decoration/index.js.map +0 -1
  363. package/dist/src/sync/common/flexUtils.js +0 -94
  364. package/dist/src/sync/common/flexUtils.js.map +0 -1
  365. package/dist/src/sync/common/generate/index.js +0 -8
  366. package/dist/src/sync/common/generate/index.js.map +0 -1
  367. package/dist/src/sync/common/generate/objectPage.js +0 -355
  368. package/dist/src/sync/common/generate/objectPage.js.map +0 -1
  369. package/dist/src/sync/common/generate/utils.js +0 -381
  370. package/dist/src/sync/common/generate/utils.js.map +0 -1
  371. package/dist/src/sync/common/i18n.json +0 -21
  372. package/dist/src/sync/common/import/utils.js +0 -92
  373. package/dist/src/sync/common/import/utils.js.map +0 -1
  374. package/dist/src/sync/common/importProject.js +0 -259
  375. package/dist/src/sync/common/importProject.js.map +0 -1
  376. package/dist/src/sync/common/index.js +0 -15
  377. package/dist/src/sync/common/index.js.map +0 -1
  378. package/dist/src/sync/common/types.js +0 -213
  379. package/dist/src/sync/common/types.js.map +0 -1
  380. package/dist/src/sync/common/utils.js +0 -1068
  381. package/dist/src/sync/common/utils.js.map +0 -1
  382. package/dist/src/sync/i18n.js +0 -15
  383. package/dist/src/sync/i18n.js.map +0 -1
  384. package/dist/src/sync/v2/application.js +0 -155
  385. package/dist/src/sync/v2/application.js.map +0 -1
  386. package/dist/src/sync/v2/export/controls/Action.js +0 -127
  387. package/dist/src/sync/v2/export/controls/Action.js.map +0 -1
  388. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js +0 -61
  389. package/dist/src/sync/v2/export/controls/AnalyticalListPageChart.js.map +0 -1
  390. package/dist/src/sync/v2/export/controls/AnalyticalListPageKPI.js +0 -56
  391. package/dist/src/sync/v2/export/controls/AnalyticalListPageKPI.js.map +0 -1
  392. package/dist/src/sync/v2/export/controls/Card.js +0 -655
  393. package/dist/src/sync/v2/export/controls/Card.js.map +0 -1
  394. package/dist/src/sync/v2/export/controls/Field.js +0 -32
  395. package/dist/src/sync/v2/export/controls/Field.js.map +0 -1
  396. package/dist/src/sync/v2/export/controls/FilterBar.js +0 -107
  397. package/dist/src/sync/v2/export/controls/FilterBar.js.map +0 -1
  398. package/dist/src/sync/v2/export/controls/FormAction.js +0 -128
  399. package/dist/src/sync/v2/export/controls/FormAction.js.map +0 -1
  400. package/dist/src/sync/v2/export/controls/Fragment.js +0 -580
  401. package/dist/src/sync/v2/export/controls/Fragment.js.map +0 -1
  402. package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js +0 -110
  403. package/dist/src/sync/v2/export/controls/ObjectPageCustomSection.js.map +0 -1
  404. package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.js +0 -62
  405. package/dist/src/sync/v2/export/controls/ObjectPageFooterAction.js.map +0 -1
  406. package/dist/src/sync/v2/export/controls/ObjectPageHeader.js +0 -60
  407. package/dist/src/sync/v2/export/controls/ObjectPageHeader.js.map +0 -1
  408. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js +0 -62
  409. package/dist/src/sync/v2/export/controls/ObjectPageHeaderAction.js.map +0 -1
  410. package/dist/src/sync/v2/export/controls/ObjectPageLayout.js +0 -59
  411. package/dist/src/sync/v2/export/controls/ObjectPageLayout.js.map +0 -1
  412. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js +0 -193
  413. package/dist/src/sync/v2/export/controls/ObjectPageSectionsV2.js.map +0 -1
  414. package/dist/src/sync/v2/export/controls/ObjectPageTable.js +0 -278
  415. package/dist/src/sync/v2/export/controls/ObjectPageTable.js.map +0 -1
  416. package/dist/src/sync/v2/export/controls/ObjectPageToolBarAction.js +0 -61
  417. package/dist/src/sync/v2/export/controls/ObjectPageToolBarAction.js.map +0 -1
  418. package/dist/src/sync/v2/export/controls/Table.js +0 -593
  419. package/dist/src/sync/v2/export/controls/Table.js.map +0 -1
  420. package/dist/src/sync/v2/export/controls/TableColumn.js +0 -166
  421. package/dist/src/sync/v2/export/controls/TableColumn.js.map +0 -1
  422. package/dist/src/sync/v2/export/controls/ToolBar.js +0 -6
  423. package/dist/src/sync/v2/export/controls/ToolBar.js.map +0 -1
  424. package/dist/src/sync/v2/export/controls/index.js +0 -25
  425. package/dist/src/sync/v2/export/controls/index.js.map +0 -1
  426. package/dist/src/sync/v2/export/export.js +0 -682
  427. package/dist/src/sync/v2/export/export.js.map +0 -1
  428. package/dist/src/sync/v2/export/exportPage.js +0 -305
  429. package/dist/src/sync/v2/export/exportPage.js.map +0 -1
  430. package/dist/src/sync/v2/export/factory.js +0 -56
  431. package/dist/src/sync/v2/export/factory.js.map +0 -1
  432. package/dist/src/sync/v2/export/manifest.js +0 -169
  433. package/dist/src/sync/v2/export/manifest.js.map +0 -1
  434. package/dist/src/sync/v2/export/pages/AnalyticalListPage.js +0 -44
  435. package/dist/src/sync/v2/export/pages/AnalyticalListPage.js.map +0 -1
  436. package/dist/src/sync/v2/export/pages/ListReport.js +0 -41
  437. package/dist/src/sync/v2/export/pages/ListReport.js.map +0 -1
  438. package/dist/src/sync/v2/export/pages/ObjectPage.js +0 -74
  439. package/dist/src/sync/v2/export/pages/ObjectPage.js.map +0 -1
  440. package/dist/src/sync/v2/export/pages/OverviewPage.js +0 -118
  441. package/dist/src/sync/v2/export/pages/OverviewPage.js.map +0 -1
  442. package/dist/src/sync/v2/export/pages/index.js +0 -10
  443. package/dist/src/sync/v2/export/pages/index.js.map +0 -1
  444. package/dist/src/sync/v2/export/view-controller-generator.js +0 -141
  445. package/dist/src/sync/v2/export/view-controller-generator.js.map +0 -1
  446. package/dist/src/sync/v2/generate/analyticalListReport.js +0 -84
  447. package/dist/src/sync/v2/generate/analyticalListReport.js.map +0 -1
  448. package/dist/src/sync/v2/generate/generate.js +0 -99
  449. package/dist/src/sync/v2/generate/generate.js.map +0 -1
  450. package/dist/src/sync/v2/generate/index.js +0 -14
  451. package/dist/src/sync/v2/generate/index.js.map +0 -1
  452. package/dist/src/sync/v2/generate/listReport.js +0 -116
  453. package/dist/src/sync/v2/generate/listReport.js.map +0 -1
  454. package/dist/src/sync/v2/generate/objectPage.js +0 -537
  455. package/dist/src/sync/v2/generate/objectPage.js.map +0 -1
  456. package/dist/src/sync/v2/generate/overviewPage.js +0 -70
  457. package/dist/src/sync/v2/generate/overviewPage.js.map +0 -1
  458. package/dist/src/sync/v2/generate/utils.js +0 -526
  459. package/dist/src/sync/v2/generate/utils.js.map +0 -1
  460. package/dist/src/sync/v2/import/app/appProvider.js +0 -145
  461. package/dist/src/sync/v2/import/app/appProvider.js.map +0 -1
  462. package/dist/src/sync/v2/import/app/ovpProvider.js +0 -33
  463. package/dist/src/sync/v2/import/app/ovpProvider.js.map +0 -1
  464. package/dist/src/sync/v2/import/common/index.js +0 -395
  465. package/dist/src/sync/v2/import/common/index.js.map +0 -1
  466. package/dist/src/sync/v2/import/controls/table.js +0 -32
  467. package/dist/src/sync/v2/import/controls/table.js.map +0 -1
  468. package/dist/src/sync/v2/import/getPageType.d.ts +0 -0
  469. package/dist/src/sync/v2/import/getPageType.js +0 -1
  470. package/dist/src/sync/v2/import/getPageType.js.map +0 -1
  471. package/dist/src/sync/v2/import/index.js +0 -11
  472. package/dist/src/sync/v2/import/index.js.map +0 -1
  473. package/dist/src/sync/v2/import/pages/analyticalListPage.js +0 -119
  474. package/dist/src/sync/v2/import/pages/analyticalListPage.js.map +0 -1
  475. package/dist/src/sync/v2/import/pages/listReport.js +0 -143
  476. package/dist/src/sync/v2/import/pages/listReport.js.map +0 -1
  477. package/dist/src/sync/v2/import/pages/objectPage.js +0 -745
  478. package/dist/src/sync/v2/import/pages/objectPage.js.map +0 -1
  479. package/dist/src/sync/v2/import/pages/overviewPage.js +0 -107
  480. package/dist/src/sync/v2/import/pages/overviewPage.js.map +0 -1
  481. package/dist/src/sync/v2/import/utils.js +0 -149
  482. package/dist/src/sync/v2/import/utils.js.map +0 -1
  483. package/dist/src/sync/v2/types.js +0 -36
  484. package/dist/src/sync/v2/types.js.map +0 -1
  485. package/dist/src/sync/v4/utils/StableIdHelper.js +0 -156
  486. package/dist/src/sync/v4/utils/StableIdHelper.js.map +0 -1
  487. package/dist/src/v2.js +0 -8
  488. package/dist/src/v2.js.map +0 -1
  489. package/dist/test/test-data/flexChange/v2/stta.prod.man/index.d.ts +0 -7
  490. package/dist/test/test-projects/index.d.ts +0 -2
  491. package/dist/test/test-utils/utils.d.ts +0 -33
  492. package/dist/test/unit/customSections/exportV2.test.d.ts +0 -1
  493. package/dist/test/unit/customSections/generateFacetsSchemaV2.test.d.ts +0 -1
  494. package/dist/test/unit/customSections/importV2.test.d.ts +0 -1
  495. package/dist/test/unit/export/exportALPV2.test.d.ts +0 -1
  496. package/dist/test/unit/export/exportAppV2.test.d.ts +0 -1
  497. package/dist/test/unit/export/exportLRPV2.test.d.ts +0 -1
  498. package/dist/test/unit/export/exportLRPV2CustomColumns.test.d.ts +0 -1
  499. package/dist/test/unit/export/exportOVPV2.test.d.ts +0 -1
  500. package/dist/test/unit/export/exportObjectPageV2.test.d.ts +0 -1
  501. package/dist/test/unit/export/flexUtils.test.d.ts +0 -1
  502. package/dist/test/unit/export/manifest.test.d.ts +0 -1
  503. package/dist/test/unit/fcl/exportV2.test.d.ts +0 -1
  504. package/dist/test/unit/fcl/importV2.test.d.ts +0 -1
  505. package/dist/test/unit/generateAppSchema/generateAppSchemaALPV2.test.d.ts +0 -1
  506. package/dist/test/unit/generateAppSchema/generateAppSchemaLRV2.test.d.ts +0 -1
  507. package/dist/test/unit/generateAppSchema/generateAppSchemaOPV2.test.d.ts +0 -1
  508. package/dist/test/unit/generateAppSchema/generateAppSchemaOVPV2.test.d.ts +0 -1
  509. package/dist/test/unit/generateGenericSchema/generateGenericSchemaAppV2.test.d.ts +0 -1
  510. package/dist/test/unit/generateGenericSchema/generateGenericSchemaLRV2.test.d.ts +0 -1
  511. package/dist/test/unit/generateGenericSchema/generateGenericSchemaOPV2.test.d.ts +0 -1
  512. package/dist/test/unit/generateGenericSchema/generateI18nV2.test.d.ts +0 -1
  513. package/dist/test/unit/generateGenericSchema/genericSchemas.test.d.ts +0 -1
  514. package/dist/test/unit/import/importALPV2.test.d.ts +0 -1
  515. package/dist/test/unit/import/importAppV2.test.d.ts +0 -1
  516. package/dist/test/unit/import/importLRPV2.test.d.ts +0 -1
  517. package/dist/test/unit/import/importOPV2.test.d.ts +0 -1
  518. package/dist/test/unit/import/importOVPV2.test.d.ts +0 -1
  519. package/dist/test/unit/index.test.d.ts +0 -1
  520. package/dist/test/unit/projects.test.d.ts +0 -1
  521. package/dist/test/unit/schemaAccess.test.d.ts +0 -1
  522. package/dist/test/unit/utils.test.d.ts +0 -1
  523. package/dist/test/unit/view-controller-generator.test.d.ts +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../node_modules/deepmerge/dist/cjs.js", "../../../node_modules/@sap-ux/annotation-converter/src/utils.ts", "../../../node_modules/@sap-ux/annotation-converter/src/converter.ts", "../../../node_modules/@sap-ux/annotation-converter/src/writeback.ts", "../../../node_modules/@sap-ux/annotation-converter/src/index.ts", "../../../node_modules/sax/lib/sax.js", "../../../node_modules/xml-js/lib/array-helper.js", "../../../node_modules/xml-js/lib/options-helper.js", "../../../node_modules/xml-js/lib/xml2js.js", "../../../node_modules/xml-js/lib/xml2json.js", "../../../node_modules/xml-js/lib/js2xml.js", "../../../node_modules/xml-js/lib/json2xml.js", "../../../node_modules/xml-js/lib/index.js", "../../../node_modules/@sap-ux/edmx-parser/src/utils.ts", "../../../node_modules/@sap-ux/edmx-parser/src/v2annotationsSupport.ts", "../../../node_modules/@sap-ux/edmx-parser/src/parser.ts", "../../../node_modules/@sap-ux/edmx-parser/src/merger.ts", "../../../node_modules/@sap-ux/edmx-parser/src/index.ts", "../../../node_modules/@ui5/flexibility-utils/src/changeUtils.js", "../../../node_modules/@ui5/flexibility-utils/index.js", "../../../node_modules/ejs/lib/utils.js", "../../../node_modules/ejs/lib/ejs.js", "../../../node_modules/lodash.unset/index.js", "../../../node_modules/uri-js/src/index.ts", "../../../node_modules/uri-js/src/schemes/urn-uuid.ts", "../../../node_modules/uri-js/src/schemes/urn.ts", "../../../node_modules/uri-js/src/schemes/mailto.ts", "../../../node_modules/uri-js/src/schemes/https.ts", "../../../node_modules/uri-js/src/schemes/http.ts", "../../../node_modules/uri-js/src/uri.ts", "../../../node_modules/uri-js/node_modules/punycode/punycode.es6.js", "../../../node_modules/uri-js/src/regexps-iri.ts", "../../../node_modules/uri-js/src/regexps-uri.ts", "../../../node_modules/uri-js/src/util.ts", "../../../node_modules/fast-deep-equal/index.js", "../../../node_modules/ajv/lib/compile/ucs2length.js", "../../../node_modules/ajv/lib/compile/util.js", "../../../node_modules/ajv/lib/compile/schema_obj.js", "../../../node_modules/json-schema-traverse/index.js", "../../../node_modules/ajv/lib/compile/resolve.js", "../../../node_modules/ajv/lib/compile/error_classes.js", "../../../node_modules/fast-json-stable-stringify/index.js", "../../../node_modules/ajv/lib/dotjs/validate.js", "../../../node_modules/ajv/lib/compile/index.js", "../../../node_modules/ajv/lib/cache.js", "../../../node_modules/ajv/lib/compile/formats.js", "../../../node_modules/ajv/lib/dotjs/ref.js", "../../../node_modules/ajv/lib/dotjs/allOf.js", "../../../node_modules/ajv/lib/dotjs/anyOf.js", "../../../node_modules/ajv/lib/dotjs/comment.js", "../../../node_modules/ajv/lib/dotjs/const.js", "../../../node_modules/ajv/lib/dotjs/contains.js", "../../../node_modules/ajv/lib/dotjs/dependencies.js", "../../../node_modules/ajv/lib/dotjs/enum.js", "../../../node_modules/ajv/lib/dotjs/format.js", "../../../node_modules/ajv/lib/dotjs/if.js", "../../../node_modules/ajv/lib/dotjs/items.js", "../../../node_modules/ajv/lib/dotjs/_limit.js", "../../../node_modules/ajv/lib/dotjs/_limitItems.js", "../../../node_modules/ajv/lib/dotjs/_limitLength.js", "../../../node_modules/ajv/lib/dotjs/_limitProperties.js", "../../../node_modules/ajv/lib/dotjs/multipleOf.js", "../../../node_modules/ajv/lib/dotjs/not.js", "../../../node_modules/ajv/lib/dotjs/oneOf.js", "../../../node_modules/ajv/lib/dotjs/pattern.js", "../../../node_modules/ajv/lib/dotjs/properties.js", "../../../node_modules/ajv/lib/dotjs/propertyNames.js", "../../../node_modules/ajv/lib/dotjs/required.js", "../../../node_modules/ajv/lib/dotjs/uniqueItems.js", "../../../node_modules/ajv/lib/dotjs/index.js", "../../../node_modules/ajv/lib/compile/rules.js", "../../../node_modules/ajv/lib/data.js", "../../../node_modules/ajv/lib/compile/async.js", "../../../node_modules/ajv/lib/dotjs/custom.js", "../../../node_modules/ajv/lib/definition_schema.js", "../../../node_modules/ajv/lib/keyword.js", "../../../node_modules/ajv/lib/ajv.js", "../src/index.ts", "../src/specification/common/page.ts", "../src/specification/common/webapp/manifest/Manifest.ts", "../src/specification/common/webapp/manifest/sapUi5.ts", "../src/specification/schemaAccess.ts", "../src/specification/common/types.ts", "../src/sync/common/types.ts", "../../../node_modules/@babel/runtime/helpers/esm/typeof.js", "../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js", "../../../node_modules/@babel/runtime/helpers/esm/objectSpread.js", "../../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js", "../../../node_modules/@babel/runtime/helpers/esm/createClass.js", "../../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js", "../../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js", "../../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js", "../../../node_modules/@babel/runtime/helpers/esm/inherits.js", "../../../node_modules/i18next/dist/esm/i18next.js", "../src/sync/common/utils.ts", "../src/specification/v2/controls/Card.ts", "../src/specification/v2/controls/Table.ts", "../src/specification/v2/controls/ObjectPageSection.ts", "../src/specification/v2/webapp/manifest/sapUiPageV2.ts", "../src/specification/v2/webapp/manifest/sapUi5.ts", "../src/extensionLogger.ts", "../src/sync/v2/generate/objectPage.ts", "../src/sync/common/decoration/control.ts", "../../../node_modules/reflect-metadata/Reflect.js", "../src/sync/common/decoration/decorators.ts", "../src/sync/common/flexUtils.ts", "../src/sync/common/decoration/flex.ts", "../src/sync/common/import/utils.ts", "../src/sync/common/generate/objectPage.ts", "../src/sync/v4/utils/StableIdHelper.ts", "../src/sync/common/generate/utils.ts", "../src/sync/common/importProject.ts", "../src/sync/common/appProvider.ts", "../src/sync/v2/import/controls/table.ts", "../src/sync/v2/export/manifest.ts", "../src/sync/v2/import/common/index.ts", "../src/sync/v2/export/controls/index.ts", "../src/sync/v2/application.ts", "../src/sync/v2/export/controls/Card.ts", "../src/sync/v2/export/controls/Field.ts", "../src/sync/v2/export/controls/FilterBar.ts", "../src/sync/v2/export/controls/FormAction.ts", "../src/sync/v2/export/controls/Fragment.ts", "../src/sync/v2/export/view-controller-generator.ts", "../src/sync/v2/export/controls/Table.ts", "../src/sync/v2/export/controls/Action.ts", "../src/sync/v2/export/controls/TableColumn.ts", "../src/sync/v2/export/controls/ToolBar.ts", "../src/sync/v2/export/controls/AnalyticalListPageChart.ts", "../src/sync/v2/export/controls/AnalyticalListPageKPI.ts", "../src/sync/v2/export/controls/ObjectPageHeader.ts", "../src/sync/v2/export/controls/ObjectPageHeaderAction.ts", "../src/sync/v2/export/controls/ObjectPageFooterAction.ts", "../src/sync/v2/export/controls/ObjectPageLayout.ts", "../src/sync/v2/export/controls/ObjectPageCustomSection.ts", "../src/sync/v2/export/controls/ObjectPageSectionsV2.ts", "../src/sync/v2/export/controls/ObjectPageTable.ts", "../src/sync/v2/export/controls/ObjectPageToolBarAction.ts", "../src/sync/v2/types.ts", "../src/sync/i18n.ts", "../src/i18n/i18n.ts", "../src/sync/v2/import/utils.ts", "../src/sync/v2/export/pages/index.ts", "../src/sync/v2/export/pages/AnalyticalListPage.ts", "../src/sync/v2/export/pages/ListReport.ts", "../src/sync/v2/export/pages/ObjectPage.ts", "../src/sync/v2/export/pages/OverviewPage.ts", "../src/sync/common/decoration/factory.ts", "../src/sync/v2/export/factory.ts", "../src/sync/v2/import/pages/listReport.ts", "../src/sync/v2/import/pages/analyticalListPage.ts", "../src/sync/v2/import/pages/objectPage.ts", "../src/sync/v2/import/app/appProvider.ts", "../src/sync/v2/export/export.ts", "../src/sync/v2/import/pages/overviewPage.ts", "../src/sync/v2/import/app/ovpProvider.ts", "../src/sync/v2/generate/utils.ts", "../src/sync/v2/generate/listReport.ts", "../src/sync/v2/generate/analyticalListReport.ts", "../src/sync/v2/generate/overviewPage.ts", "../src/sync/v2/generate/generate.ts", "../src/sync/v2/export/exportPage.ts", "../src/api.ts", "../src/project.ts"],
4
+ "sourcesContent": ["'use strict';\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n", null, null, null, null, ";(function (sax) { // wrapper for non-node envs\n sax.parser = function (strict, opt) { return new SAXParser(strict, opt) }\n sax.SAXParser = SAXParser\n sax.SAXStream = SAXStream\n sax.createStream = createStream\n\n // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns.\n // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)),\n // since that's the earliest that a buffer overrun could occur. This way, checks are\n // as rare as required, but as often as necessary to ensure never crossing this bound.\n // Furthermore, buffers are only tested at most once per write(), so passing a very\n // large string into write() might have undesirable effects, but this is manageable by\n // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme\n // edge case, result in creating at most one complete copy of the string passed in.\n // Set to Infinity to have unlimited buffers.\n sax.MAX_BUFFER_LENGTH = 64 * 1024\n\n var buffers = [\n 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype',\n 'procInstName', 'procInstBody', 'entity', 'attribName',\n 'attribValue', 'cdata', 'script'\n ]\n\n sax.EVENTS = [\n 'text',\n 'processinginstruction',\n 'sgmldeclaration',\n 'doctype',\n 'comment',\n 'opentagstart',\n 'attribute',\n 'opentag',\n 'closetag',\n 'opencdata',\n 'cdata',\n 'closecdata',\n 'error',\n 'end',\n 'ready',\n 'script',\n 'opennamespace',\n 'closenamespace'\n ]\n\n function SAXParser (strict, opt) {\n if (!(this instanceof SAXParser)) {\n return new SAXParser(strict, opt)\n }\n\n var parser = this\n clearBuffers(parser)\n parser.q = parser.c = ''\n parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH\n parser.opt = opt || {}\n parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags\n parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase'\n parser.tags = []\n parser.closed = parser.closedRoot = parser.sawRoot = false\n parser.tag = parser.error = null\n parser.strict = !!strict\n parser.noscript = !!(strict || parser.opt.noscript)\n parser.state = S.BEGIN\n parser.strictEntities = parser.opt.strictEntities\n parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES)\n parser.attribList = []\n\n // namespaces form a prototype chain.\n // it always points at the current tag,\n // which protos to its parent tag.\n if (parser.opt.xmlns) {\n parser.ns = Object.create(rootNS)\n }\n\n // mostly just for error reporting\n parser.trackPosition = parser.opt.position !== false\n if (parser.trackPosition) {\n parser.position = parser.line = parser.column = 0\n }\n emit(parser, 'onready')\n }\n\n if (!Object.create) {\n Object.create = function (o) {\n function F () {}\n F.prototype = o\n var newf = new F()\n return newf\n }\n }\n\n if (!Object.keys) {\n Object.keys = function (o) {\n var a = []\n for (var i in o) if (o.hasOwnProperty(i)) a.push(i)\n return a\n }\n }\n\n function checkBufferLength (parser) {\n var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10)\n var maxActual = 0\n for (var i = 0, l = buffers.length; i < l; i++) {\n var len = parser[buffers[i]].length\n if (len > maxAllowed) {\n // Text/cdata nodes can get big, and since they're buffered,\n // we can get here under normal conditions.\n // Avoid issues by emitting the text node now,\n // so at least it won't get any bigger.\n switch (buffers[i]) {\n case 'textNode':\n closeText(parser)\n break\n\n case 'cdata':\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n break\n\n case 'script':\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n break\n\n default:\n error(parser, 'Max buffer length exceeded: ' + buffers[i])\n }\n }\n maxActual = Math.max(maxActual, len)\n }\n // schedule the next check for the earliest possible buffer overrun.\n var m = sax.MAX_BUFFER_LENGTH - maxActual\n parser.bufferCheckPosition = m + parser.position\n }\n\n function clearBuffers (parser) {\n for (var i = 0, l = buffers.length; i < l; i++) {\n parser[buffers[i]] = ''\n }\n }\n\n function flushBuffers (parser) {\n closeText(parser)\n if (parser.cdata !== '') {\n emitNode(parser, 'oncdata', parser.cdata)\n parser.cdata = ''\n }\n if (parser.script !== '') {\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n }\n\n SAXParser.prototype = {\n end: function () { end(this) },\n write: write,\n resume: function () { this.error = null; return this },\n close: function () { return this.write(null) },\n flush: function () { flushBuffers(this) }\n }\n\n var Stream\n try {\n Stream = require('stream').Stream\n } catch (ex) {\n Stream = function () {}\n }\n\n var streamWraps = sax.EVENTS.filter(function (ev) {\n return ev !== 'error' && ev !== 'end'\n })\n\n function createStream (strict, opt) {\n return new SAXStream(strict, opt)\n }\n\n function SAXStream (strict, opt) {\n if (!(this instanceof SAXStream)) {\n return new SAXStream(strict, opt)\n }\n\n Stream.apply(this)\n\n this._parser = new SAXParser(strict, opt)\n this.writable = true\n this.readable = true\n\n var me = this\n\n this._parser.onend = function () {\n me.emit('end')\n }\n\n this._parser.onerror = function (er) {\n me.emit('error', er)\n\n // if didn't throw, then means error was handled.\n // go ahead and clear error, so we can write again.\n me._parser.error = null\n }\n\n this._decoder = null\n\n streamWraps.forEach(function (ev) {\n Object.defineProperty(me, 'on' + ev, {\n get: function () {\n return me._parser['on' + ev]\n },\n set: function (h) {\n if (!h) {\n me.removeAllListeners(ev)\n me._parser['on' + ev] = h\n return h\n }\n me.on(ev, h)\n },\n enumerable: true,\n configurable: false\n })\n })\n }\n\n SAXStream.prototype = Object.create(Stream.prototype, {\n constructor: {\n value: SAXStream\n }\n })\n\n SAXStream.prototype.write = function (data) {\n if (typeof Buffer === 'function' &&\n typeof Buffer.isBuffer === 'function' &&\n Buffer.isBuffer(data)) {\n if (!this._decoder) {\n var SD = require('string_decoder').StringDecoder\n this._decoder = new SD('utf8')\n }\n data = this._decoder.write(data)\n }\n\n this._parser.write(data.toString())\n this.emit('data', data)\n return true\n }\n\n SAXStream.prototype.end = function (chunk) {\n if (chunk && chunk.length) {\n this.write(chunk)\n }\n this._parser.end()\n return true\n }\n\n SAXStream.prototype.on = function (ev, handler) {\n var me = this\n if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) {\n me._parser['on' + ev] = function () {\n var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments)\n args.splice(0, 0, ev)\n me.emit.apply(me, args)\n }\n }\n\n return Stream.prototype.on.call(me, ev, handler)\n }\n\n // this really needs to be replaced with character classes.\n // XML allows all manner of ridiculous numbers and digits.\n var CDATA = '[CDATA['\n var DOCTYPE = 'DOCTYPE'\n var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace'\n var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/'\n var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }\n\n // http://www.w3.org/TR/REC-xml/#NT-NameStartChar\n // This implementation works on strings, a single character at a time\n // as such, it cannot ever support astral-plane characters (10000-EFFFF)\n // without a significant breaking change to either this parser, or the\n // JavaScript language. Implementation of an emoji-capable xml parser\n // is left as an exercise for the reader.\n var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n\n var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/\n var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/\n\n function isWhitespace (c) {\n return c === ' ' || c === '\\n' || c === '\\r' || c === '\\t'\n }\n\n function isQuote (c) {\n return c === '\"' || c === '\\''\n }\n\n function isAttribEnd (c) {\n return c === '>' || isWhitespace(c)\n }\n\n function isMatch (regex, c) {\n return regex.test(c)\n }\n\n function notMatch (regex, c) {\n return !isMatch(regex, c)\n }\n\n var S = 0\n sax.STATE = {\n BEGIN: S++, // leading byte order mark or whitespace\n BEGIN_WHITESPACE: S++, // leading whitespace\n TEXT: S++, // general stuff\n TEXT_ENTITY: S++, // &amp and such.\n OPEN_WAKA: S++, // <\n SGML_DECL: S++, // <!BLARG\n SGML_DECL_QUOTED: S++, // <!BLARG foo \"bar\n DOCTYPE: S++, // <!DOCTYPE\n DOCTYPE_QUOTED: S++, // <!DOCTYPE \"//blah\n DOCTYPE_DTD: S++, // <!DOCTYPE \"//blah\" [ ...\n DOCTYPE_DTD_QUOTED: S++, // <!DOCTYPE \"//blah\" [ \"foo\n COMMENT_STARTING: S++, // <!-\n COMMENT: S++, // <!--\n COMMENT_ENDING: S++, // <!-- blah -\n COMMENT_ENDED: S++, // <!-- blah --\n CDATA: S++, // <![CDATA[ something\n CDATA_ENDING: S++, // ]\n CDATA_ENDING_2: S++, // ]]\n PROC_INST: S++, // <?hi\n PROC_INST_BODY: S++, // <?hi there\n PROC_INST_ENDING: S++, // <?hi \"there\" ?\n OPEN_TAG: S++, // <strong\n OPEN_TAG_SLASH: S++, // <strong /\n ATTRIB: S++, // <a\n ATTRIB_NAME: S++, // <a foo\n ATTRIB_NAME_SAW_WHITE: S++, // <a foo _\n ATTRIB_VALUE: S++, // <a foo=\n ATTRIB_VALUE_QUOTED: S++, // <a foo=\"bar\n ATTRIB_VALUE_CLOSED: S++, // <a foo=\"bar\"\n ATTRIB_VALUE_UNQUOTED: S++, // <a foo=bar\n ATTRIB_VALUE_ENTITY_Q: S++, // <foo bar=\"&quot;\"\n ATTRIB_VALUE_ENTITY_U: S++, // <foo bar=&quot\n CLOSE_TAG: S++, // </a\n CLOSE_TAG_SAW_WHITE: S++, // </a >\n SCRIPT: S++, // <script> ...\n SCRIPT_ENDING: S++ // <script> ... <\n }\n\n sax.XML_ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\"\n }\n\n sax.ENTITIES = {\n 'amp': '&',\n 'gt': '>',\n 'lt': '<',\n 'quot': '\"',\n 'apos': \"'\",\n 'AElig': 198,\n 'Aacute': 193,\n 'Acirc': 194,\n 'Agrave': 192,\n 'Aring': 197,\n 'Atilde': 195,\n 'Auml': 196,\n 'Ccedil': 199,\n 'ETH': 208,\n 'Eacute': 201,\n 'Ecirc': 202,\n 'Egrave': 200,\n 'Euml': 203,\n 'Iacute': 205,\n 'Icirc': 206,\n 'Igrave': 204,\n 'Iuml': 207,\n 'Ntilde': 209,\n 'Oacute': 211,\n 'Ocirc': 212,\n 'Ograve': 210,\n 'Oslash': 216,\n 'Otilde': 213,\n 'Ouml': 214,\n 'THORN': 222,\n 'Uacute': 218,\n 'Ucirc': 219,\n 'Ugrave': 217,\n 'Uuml': 220,\n 'Yacute': 221,\n 'aacute': 225,\n 'acirc': 226,\n 'aelig': 230,\n 'agrave': 224,\n 'aring': 229,\n 'atilde': 227,\n 'auml': 228,\n 'ccedil': 231,\n 'eacute': 233,\n 'ecirc': 234,\n 'egrave': 232,\n 'eth': 240,\n 'euml': 235,\n 'iacute': 237,\n 'icirc': 238,\n 'igrave': 236,\n 'iuml': 239,\n 'ntilde': 241,\n 'oacute': 243,\n 'ocirc': 244,\n 'ograve': 242,\n 'oslash': 248,\n 'otilde': 245,\n 'ouml': 246,\n 'szlig': 223,\n 'thorn': 254,\n 'uacute': 250,\n 'ucirc': 251,\n 'ugrave': 249,\n 'uuml': 252,\n 'yacute': 253,\n 'yuml': 255,\n 'copy': 169,\n 'reg': 174,\n 'nbsp': 160,\n 'iexcl': 161,\n 'cent': 162,\n 'pound': 163,\n 'curren': 164,\n 'yen': 165,\n 'brvbar': 166,\n 'sect': 167,\n 'uml': 168,\n 'ordf': 170,\n 'laquo': 171,\n 'not': 172,\n 'shy': 173,\n 'macr': 175,\n 'deg': 176,\n 'plusmn': 177,\n 'sup1': 185,\n 'sup2': 178,\n 'sup3': 179,\n 'acute': 180,\n 'micro': 181,\n 'para': 182,\n 'middot': 183,\n 'cedil': 184,\n 'ordm': 186,\n 'raquo': 187,\n 'frac14': 188,\n 'frac12': 189,\n 'frac34': 190,\n 'iquest': 191,\n 'times': 215,\n 'divide': 247,\n 'OElig': 338,\n 'oelig': 339,\n 'Scaron': 352,\n 'scaron': 353,\n 'Yuml': 376,\n 'fnof': 402,\n 'circ': 710,\n 'tilde': 732,\n 'Alpha': 913,\n 'Beta': 914,\n 'Gamma': 915,\n 'Delta': 916,\n 'Epsilon': 917,\n 'Zeta': 918,\n 'Eta': 919,\n 'Theta': 920,\n 'Iota': 921,\n 'Kappa': 922,\n 'Lambda': 923,\n 'Mu': 924,\n 'Nu': 925,\n 'Xi': 926,\n 'Omicron': 927,\n 'Pi': 928,\n 'Rho': 929,\n 'Sigma': 931,\n 'Tau': 932,\n 'Upsilon': 933,\n 'Phi': 934,\n 'Chi': 935,\n 'Psi': 936,\n 'Omega': 937,\n 'alpha': 945,\n 'beta': 946,\n 'gamma': 947,\n 'delta': 948,\n 'epsilon': 949,\n 'zeta': 950,\n 'eta': 951,\n 'theta': 952,\n 'iota': 953,\n 'kappa': 954,\n 'lambda': 955,\n 'mu': 956,\n 'nu': 957,\n 'xi': 958,\n 'omicron': 959,\n 'pi': 960,\n 'rho': 961,\n 'sigmaf': 962,\n 'sigma': 963,\n 'tau': 964,\n 'upsilon': 965,\n 'phi': 966,\n 'chi': 967,\n 'psi': 968,\n 'omega': 969,\n 'thetasym': 977,\n 'upsih': 978,\n 'piv': 982,\n 'ensp': 8194,\n 'emsp': 8195,\n 'thinsp': 8201,\n 'zwnj': 8204,\n 'zwj': 8205,\n 'lrm': 8206,\n 'rlm': 8207,\n 'ndash': 8211,\n 'mdash': 8212,\n 'lsquo': 8216,\n 'rsquo': 8217,\n 'sbquo': 8218,\n 'ldquo': 8220,\n 'rdquo': 8221,\n 'bdquo': 8222,\n 'dagger': 8224,\n 'Dagger': 8225,\n 'bull': 8226,\n 'hellip': 8230,\n 'permil': 8240,\n 'prime': 8242,\n 'Prime': 8243,\n 'lsaquo': 8249,\n 'rsaquo': 8250,\n 'oline': 8254,\n 'frasl': 8260,\n 'euro': 8364,\n 'image': 8465,\n 'weierp': 8472,\n 'real': 8476,\n 'trade': 8482,\n 'alefsym': 8501,\n 'larr': 8592,\n 'uarr': 8593,\n 'rarr': 8594,\n 'darr': 8595,\n 'harr': 8596,\n 'crarr': 8629,\n 'lArr': 8656,\n 'uArr': 8657,\n 'rArr': 8658,\n 'dArr': 8659,\n 'hArr': 8660,\n 'forall': 8704,\n 'part': 8706,\n 'exist': 8707,\n 'empty': 8709,\n 'nabla': 8711,\n 'isin': 8712,\n 'notin': 8713,\n 'ni': 8715,\n 'prod': 8719,\n 'sum': 8721,\n 'minus': 8722,\n 'lowast': 8727,\n 'radic': 8730,\n 'prop': 8733,\n 'infin': 8734,\n 'ang': 8736,\n 'and': 8743,\n 'or': 8744,\n 'cap': 8745,\n 'cup': 8746,\n 'int': 8747,\n 'there4': 8756,\n 'sim': 8764,\n 'cong': 8773,\n 'asymp': 8776,\n 'ne': 8800,\n 'equiv': 8801,\n 'le': 8804,\n 'ge': 8805,\n 'sub': 8834,\n 'sup': 8835,\n 'nsub': 8836,\n 'sube': 8838,\n 'supe': 8839,\n 'oplus': 8853,\n 'otimes': 8855,\n 'perp': 8869,\n 'sdot': 8901,\n 'lceil': 8968,\n 'rceil': 8969,\n 'lfloor': 8970,\n 'rfloor': 8971,\n 'lang': 9001,\n 'rang': 9002,\n 'loz': 9674,\n 'spades': 9824,\n 'clubs': 9827,\n 'hearts': 9829,\n 'diams': 9830\n }\n\n Object.keys(sax.ENTITIES).forEach(function (key) {\n var e = sax.ENTITIES[key]\n var s = typeof e === 'number' ? String.fromCharCode(e) : e\n sax.ENTITIES[key] = s\n })\n\n for (var s in sax.STATE) {\n sax.STATE[sax.STATE[s]] = s\n }\n\n // shorthand\n S = sax.STATE\n\n function emit (parser, event, data) {\n parser[event] && parser[event](data)\n }\n\n function emitNode (parser, nodeType, data) {\n if (parser.textNode) closeText(parser)\n emit(parser, nodeType, data)\n }\n\n function closeText (parser) {\n parser.textNode = textopts(parser.opt, parser.textNode)\n if (parser.textNode) emit(parser, 'ontext', parser.textNode)\n parser.textNode = ''\n }\n\n function textopts (opt, text) {\n if (opt.trim) text = text.trim()\n if (opt.normalize) text = text.replace(/\\s+/g, ' ')\n return text\n }\n\n function error (parser, er) {\n closeText(parser)\n if (parser.trackPosition) {\n er += '\\nLine: ' + parser.line +\n '\\nColumn: ' + parser.column +\n '\\nChar: ' + parser.c\n }\n er = new Error(er)\n parser.error = er\n emit(parser, 'onerror', er)\n return parser\n }\n\n function end (parser) {\n if (parser.sawRoot && !parser.closedRoot) strictFail(parser, 'Unclosed root tag')\n if ((parser.state !== S.BEGIN) &&\n (parser.state !== S.BEGIN_WHITESPACE) &&\n (parser.state !== S.TEXT)) {\n error(parser, 'Unexpected end')\n }\n closeText(parser)\n parser.c = ''\n parser.closed = true\n emit(parser, 'onend')\n SAXParser.call(parser, parser.strict, parser.opt)\n return parser\n }\n\n function strictFail (parser, message) {\n if (typeof parser !== 'object' || !(parser instanceof SAXParser)) {\n throw new Error('bad call to strictFail')\n }\n if (parser.strict) {\n error(parser, message)\n }\n }\n\n function newTag (parser) {\n if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]()\n var parent = parser.tags[parser.tags.length - 1] || parser\n var tag = parser.tag = { name: parser.tagName, attributes: {} }\n\n // will be overridden if tag contails an xmlns=\"foo\" or xmlns:foo=\"bar\"\n if (parser.opt.xmlns) {\n tag.ns = parent.ns\n }\n parser.attribList.length = 0\n emitNode(parser, 'onopentagstart', tag)\n }\n\n function qname (name, attribute) {\n var i = name.indexOf(':')\n var qualName = i < 0 ? [ '', name ] : name.split(':')\n var prefix = qualName[0]\n var local = qualName[1]\n\n // <x \"xmlns\"=\"http://foo\">\n if (attribute && name === 'xmlns') {\n prefix = 'xmlns'\n local = ''\n }\n\n return { prefix: prefix, local: local }\n }\n\n function attrib (parser) {\n if (!parser.strict) {\n parser.attribName = parser.attribName[parser.looseCase]()\n }\n\n if (parser.attribList.indexOf(parser.attribName) !== -1 ||\n parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n parser.attribName = parser.attribValue = ''\n return\n }\n\n if (parser.opt.xmlns) {\n var qn = qname(parser.attribName, true)\n var prefix = qn.prefix\n var local = qn.local\n\n if (prefix === 'xmlns') {\n // namespace binding attribute. push the binding into scope\n if (local === 'xml' && parser.attribValue !== XML_NAMESPACE) {\n strictFail(parser,\n 'xml: prefix must be bound to ' + XML_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else if (local === 'xmlns' && parser.attribValue !== XMLNS_NAMESPACE) {\n strictFail(parser,\n 'xmlns: prefix must be bound to ' + XMLNS_NAMESPACE + '\\n' +\n 'Actual: ' + parser.attribValue)\n } else {\n var tag = parser.tag\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns === parent.ns) {\n tag.ns = Object.create(parent.ns)\n }\n tag.ns[local] = parser.attribValue\n }\n }\n\n // defer onattribute events until all attributes have been seen\n // so any new bindings can take effect. preserve attribute order\n // so deferred events can be emitted in document order\n parser.attribList.push([parser.attribName, parser.attribValue])\n } else {\n // in non-xmlns mode, we can emit the event right away\n parser.tag.attributes[parser.attribName] = parser.attribValue\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: parser.attribValue\n })\n }\n\n parser.attribName = parser.attribValue = ''\n }\n\n function openTag (parser, selfClosing) {\n if (parser.opt.xmlns) {\n // emit namespace binding events\n var tag = parser.tag\n\n // add namespace info to tag\n var qn = qname(parser.tagName)\n tag.prefix = qn.prefix\n tag.local = qn.local\n tag.uri = tag.ns[qn.prefix] || ''\n\n if (tag.prefix && !tag.uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(parser.tagName))\n tag.uri = qn.prefix\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (tag.ns && parent.ns !== tag.ns) {\n Object.keys(tag.ns).forEach(function (p) {\n emitNode(parser, 'onopennamespace', {\n prefix: p,\n uri: tag.ns[p]\n })\n })\n }\n\n // handle deferred onattribute events\n // Note: do not apply default ns to attributes:\n // http://www.w3.org/TR/REC-xml-names/#defaulting\n for (var i = 0, l = parser.attribList.length; i < l; i++) {\n var nv = parser.attribList[i]\n var name = nv[0]\n var value = nv[1]\n var qualName = qname(name, true)\n var prefix = qualName.prefix\n var local = qualName.local\n var uri = prefix === '' ? '' : (tag.ns[prefix] || '')\n var a = {\n name: name,\n value: value,\n prefix: prefix,\n local: local,\n uri: uri\n }\n\n // if there's any attributes with an undefined namespace,\n // then fail on them now.\n if (prefix && prefix !== 'xmlns' && !uri) {\n strictFail(parser, 'Unbound namespace prefix: ' +\n JSON.stringify(prefix))\n a.uri = prefix\n }\n parser.tag.attributes[name] = a\n emitNode(parser, 'onattribute', a)\n }\n parser.attribList.length = 0\n }\n\n parser.tag.isSelfClosing = !!selfClosing\n\n // process the tag\n parser.sawRoot = true\n parser.tags.push(parser.tag)\n emitNode(parser, 'onopentag', parser.tag)\n if (!selfClosing) {\n // special case for <script> in non-strict mode.\n if (!parser.noscript && parser.tagName.toLowerCase() === 'script') {\n parser.state = S.SCRIPT\n } else {\n parser.state = S.TEXT\n }\n parser.tag = null\n parser.tagName = ''\n }\n parser.attribName = parser.attribValue = ''\n parser.attribList.length = 0\n }\n\n function closeTag (parser) {\n if (!parser.tagName) {\n strictFail(parser, 'Weird empty close tag.')\n parser.textNode += '</>'\n parser.state = S.TEXT\n return\n }\n\n if (parser.script) {\n if (parser.tagName !== 'script') {\n parser.script += '</' + parser.tagName + '>'\n parser.tagName = ''\n parser.state = S.SCRIPT\n return\n }\n emitNode(parser, 'onscript', parser.script)\n parser.script = ''\n }\n\n // first make sure that the closing tag actually exists.\n // <a><b></c></b></a> will close everything, otherwise.\n var t = parser.tags.length\n var tagName = parser.tagName\n if (!parser.strict) {\n tagName = tagName[parser.looseCase]()\n }\n var closeTo = tagName\n while (t--) {\n var close = parser.tags[t]\n if (close.name !== closeTo) {\n // fail the first time in strict mode\n strictFail(parser, 'Unexpected close tag')\n } else {\n break\n }\n }\n\n // didn't find it. we already failed for strict, so just abort.\n if (t < 0) {\n strictFail(parser, 'Unmatched closing tag: ' + parser.tagName)\n parser.textNode += '</' + parser.tagName + '>'\n parser.state = S.TEXT\n return\n }\n parser.tagName = tagName\n var s = parser.tags.length\n while (s-- > t) {\n var tag = parser.tag = parser.tags.pop()\n parser.tagName = parser.tag.name\n emitNode(parser, 'onclosetag', parser.tagName)\n\n var x = {}\n for (var i in tag.ns) {\n x[i] = tag.ns[i]\n }\n\n var parent = parser.tags[parser.tags.length - 1] || parser\n if (parser.opt.xmlns && tag.ns !== parent.ns) {\n // remove namespace bindings introduced by tag\n Object.keys(tag.ns).forEach(function (p) {\n var n = tag.ns[p]\n emitNode(parser, 'onclosenamespace', { prefix: p, uri: n })\n })\n }\n }\n if (t === 0) parser.closedRoot = true\n parser.tagName = parser.attribValue = parser.attribName = ''\n parser.attribList.length = 0\n parser.state = S.TEXT\n }\n\n function parseEntity (parser) {\n var entity = parser.entity\n var entityLC = entity.toLowerCase()\n var num\n var numStr = ''\n\n if (parser.ENTITIES[entity]) {\n return parser.ENTITIES[entity]\n }\n if (parser.ENTITIES[entityLC]) {\n return parser.ENTITIES[entityLC]\n }\n entity = entityLC\n if (entity.charAt(0) === '#') {\n if (entity.charAt(1) === 'x') {\n entity = entity.slice(2)\n num = parseInt(entity, 16)\n numStr = num.toString(16)\n } else {\n entity = entity.slice(1)\n num = parseInt(entity, 10)\n numStr = num.toString(10)\n }\n }\n entity = entity.replace(/^0+/, '')\n if (isNaN(num) || numStr.toLowerCase() !== entity) {\n strictFail(parser, 'Invalid character entity')\n return '&' + parser.entity + ';'\n }\n\n return String.fromCodePoint(num)\n }\n\n function beginWhiteSpace (parser, c) {\n if (c === '<') {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else if (!isWhitespace(c)) {\n // have to process this as a text node.\n // weird, but happens.\n strictFail(parser, 'Non-whitespace before first tag.')\n parser.textNode = c\n parser.state = S.TEXT\n }\n }\n\n function charAt (chunk, i) {\n var result = ''\n if (i < chunk.length) {\n result = chunk.charAt(i)\n }\n return result\n }\n\n function write (chunk) {\n var parser = this\n if (this.error) {\n throw this.error\n }\n if (parser.closed) {\n return error(parser,\n 'Cannot write after close. Assign an onready handler.')\n }\n if (chunk === null) {\n return end(parser)\n }\n if (typeof chunk === 'object') {\n chunk = chunk.toString()\n }\n var i = 0\n var c = ''\n while (true) {\n c = charAt(chunk, i++)\n parser.c = c\n\n if (!c) {\n break\n }\n\n if (parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n\n switch (parser.state) {\n case S.BEGIN:\n parser.state = S.BEGIN_WHITESPACE\n if (c === '\\uFEFF') {\n continue\n }\n beginWhiteSpace(parser, c)\n continue\n\n case S.BEGIN_WHITESPACE:\n beginWhiteSpace(parser, c)\n continue\n\n case S.TEXT:\n if (parser.sawRoot && !parser.closedRoot) {\n var starti = i - 1\n while (c && c !== '<' && c !== '&') {\n c = charAt(chunk, i++)\n if (c && parser.trackPosition) {\n parser.position++\n if (c === '\\n') {\n parser.line++\n parser.column = 0\n } else {\n parser.column++\n }\n }\n }\n parser.textNode += chunk.substring(starti, i - 1)\n }\n if (c === '<' && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n parser.state = S.OPEN_WAKA\n parser.startTagPosition = parser.position\n } else {\n if (!isWhitespace(c) && (!parser.sawRoot || parser.closedRoot)) {\n strictFail(parser, 'Text data outside of root node.')\n }\n if (c === '&') {\n parser.state = S.TEXT_ENTITY\n } else {\n parser.textNode += c\n }\n }\n continue\n\n case S.SCRIPT:\n // only non-strict\n if (c === '<') {\n parser.state = S.SCRIPT_ENDING\n } else {\n parser.script += c\n }\n continue\n\n case S.SCRIPT_ENDING:\n if (c === '/') {\n parser.state = S.CLOSE_TAG\n } else {\n parser.script += '<' + c\n parser.state = S.SCRIPT\n }\n continue\n\n case S.OPEN_WAKA:\n // either a /, ?, !, or text is coming next.\n if (c === '!') {\n parser.state = S.SGML_DECL\n parser.sgmlDecl = ''\n } else if (isWhitespace(c)) {\n // wait for it...\n } else if (isMatch(nameStart, c)) {\n parser.state = S.OPEN_TAG\n parser.tagName = c\n } else if (c === '/') {\n parser.state = S.CLOSE_TAG\n parser.tagName = ''\n } else if (c === '?') {\n parser.state = S.PROC_INST\n parser.procInstName = parser.procInstBody = ''\n } else {\n strictFail(parser, 'Unencoded <')\n // if there was some whitespace, then add that in.\n if (parser.startTagPosition + 1 < parser.position) {\n var pad = parser.position - parser.startTagPosition\n c = new Array(pad).join(' ') + c\n }\n parser.textNode += '<' + c\n parser.state = S.TEXT\n }\n continue\n\n case S.SGML_DECL:\n if ((parser.sgmlDecl + c).toUpperCase() === CDATA) {\n emitNode(parser, 'onopencdata')\n parser.state = S.CDATA\n parser.sgmlDecl = ''\n parser.cdata = ''\n } else if (parser.sgmlDecl + c === '--') {\n parser.state = S.COMMENT\n parser.comment = ''\n parser.sgmlDecl = ''\n } else if ((parser.sgmlDecl + c).toUpperCase() === DOCTYPE) {\n parser.state = S.DOCTYPE\n if (parser.doctype || parser.sawRoot) {\n strictFail(parser,\n 'Inappropriately located doctype declaration')\n }\n parser.doctype = ''\n parser.sgmlDecl = ''\n } else if (c === '>') {\n emitNode(parser, 'onsgmldeclaration', parser.sgmlDecl)\n parser.sgmlDecl = ''\n parser.state = S.TEXT\n } else if (isQuote(c)) {\n parser.state = S.SGML_DECL_QUOTED\n parser.sgmlDecl += c\n } else {\n parser.sgmlDecl += c\n }\n continue\n\n case S.SGML_DECL_QUOTED:\n if (c === parser.q) {\n parser.state = S.SGML_DECL\n parser.q = ''\n }\n parser.sgmlDecl += c\n continue\n\n case S.DOCTYPE:\n if (c === '>') {\n parser.state = S.TEXT\n emitNode(parser, 'ondoctype', parser.doctype)\n parser.doctype = true // just remember that we saw it.\n } else {\n parser.doctype += c\n if (c === '[') {\n parser.state = S.DOCTYPE_DTD\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_QUOTED\n parser.q = c\n }\n }\n continue\n\n case S.DOCTYPE_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.q = ''\n parser.state = S.DOCTYPE\n }\n continue\n\n case S.DOCTYPE_DTD:\n parser.doctype += c\n if (c === ']') {\n parser.state = S.DOCTYPE\n } else if (isQuote(c)) {\n parser.state = S.DOCTYPE_DTD_QUOTED\n parser.q = c\n }\n continue\n\n case S.DOCTYPE_DTD_QUOTED:\n parser.doctype += c\n if (c === parser.q) {\n parser.state = S.DOCTYPE_DTD\n parser.q = ''\n }\n continue\n\n case S.COMMENT:\n if (c === '-') {\n parser.state = S.COMMENT_ENDING\n } else {\n parser.comment += c\n }\n continue\n\n case S.COMMENT_ENDING:\n if (c === '-') {\n parser.state = S.COMMENT_ENDED\n parser.comment = textopts(parser.opt, parser.comment)\n if (parser.comment) {\n emitNode(parser, 'oncomment', parser.comment)\n }\n parser.comment = ''\n } else {\n parser.comment += '-' + c\n parser.state = S.COMMENT\n }\n continue\n\n case S.COMMENT_ENDED:\n if (c !== '>') {\n strictFail(parser, 'Malformed comment')\n // allow <!-- blah -- bloo --> in non-strict mode,\n // which is a comment of \" blah -- bloo \"\n parser.comment += '--' + c\n parser.state = S.COMMENT\n } else {\n parser.state = S.TEXT\n }\n continue\n\n case S.CDATA:\n if (c === ']') {\n parser.state = S.CDATA_ENDING\n } else {\n parser.cdata += c\n }\n continue\n\n case S.CDATA_ENDING:\n if (c === ']') {\n parser.state = S.CDATA_ENDING_2\n } else {\n parser.cdata += ']' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.CDATA_ENDING_2:\n if (c === '>') {\n if (parser.cdata) {\n emitNode(parser, 'oncdata', parser.cdata)\n }\n emitNode(parser, 'onclosecdata')\n parser.cdata = ''\n parser.state = S.TEXT\n } else if (c === ']') {\n parser.cdata += ']'\n } else {\n parser.cdata += ']]' + c\n parser.state = S.CDATA\n }\n continue\n\n case S.PROC_INST:\n if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else if (isWhitespace(c)) {\n parser.state = S.PROC_INST_BODY\n } else {\n parser.procInstName += c\n }\n continue\n\n case S.PROC_INST_BODY:\n if (!parser.procInstBody && isWhitespace(c)) {\n continue\n } else if (c === '?') {\n parser.state = S.PROC_INST_ENDING\n } else {\n parser.procInstBody += c\n }\n continue\n\n case S.PROC_INST_ENDING:\n if (c === '>') {\n emitNode(parser, 'onprocessinginstruction', {\n name: parser.procInstName,\n body: parser.procInstBody\n })\n parser.procInstName = parser.procInstBody = ''\n parser.state = S.TEXT\n } else {\n parser.procInstBody += '?' + c\n parser.state = S.PROC_INST_BODY\n }\n continue\n\n case S.OPEN_TAG:\n if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else {\n newTag(parser)\n if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid character in tag name')\n }\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.OPEN_TAG_SLASH:\n if (c === '>') {\n openTag(parser, true)\n closeTag(parser)\n } else {\n strictFail(parser, 'Forward-slash in opening tag not followed by >')\n parser.state = S.ATTRIB\n }\n continue\n\n case S.ATTRIB:\n // haven't read the attribute name yet.\n if (isWhitespace(c)) {\n continue\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (c === '>') {\n strictFail(parser, 'Attribute without value')\n parser.attribValue = parser.attribName\n attrib(parser)\n openTag(parser)\n } else if (isWhitespace(c)) {\n parser.state = S.ATTRIB_NAME_SAW_WHITE\n } else if (isMatch(nameBody, c)) {\n parser.attribName += c\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_NAME_SAW_WHITE:\n if (c === '=') {\n parser.state = S.ATTRIB_VALUE\n } else if (isWhitespace(c)) {\n continue\n } else {\n strictFail(parser, 'Attribute without value')\n parser.tag.attributes[parser.attribName] = ''\n parser.attribValue = ''\n emitNode(parser, 'onattribute', {\n name: parser.attribName,\n value: ''\n })\n parser.attribName = ''\n if (c === '>') {\n openTag(parser)\n } else if (isMatch(nameStart, c)) {\n parser.attribName = c\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n parser.state = S.ATTRIB\n }\n }\n continue\n\n case S.ATTRIB_VALUE:\n if (isWhitespace(c)) {\n continue\n } else if (isQuote(c)) {\n parser.q = c\n parser.state = S.ATTRIB_VALUE_QUOTED\n } else {\n strictFail(parser, 'Unquoted attribute value')\n parser.state = S.ATTRIB_VALUE_UNQUOTED\n parser.attribValue = c\n }\n continue\n\n case S.ATTRIB_VALUE_QUOTED:\n if (c !== parser.q) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_Q\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n parser.q = ''\n parser.state = S.ATTRIB_VALUE_CLOSED\n continue\n\n case S.ATTRIB_VALUE_CLOSED:\n if (isWhitespace(c)) {\n parser.state = S.ATTRIB\n } else if (c === '>') {\n openTag(parser)\n } else if (c === '/') {\n parser.state = S.OPEN_TAG_SLASH\n } else if (isMatch(nameStart, c)) {\n strictFail(parser, 'No whitespace between attributes')\n parser.attribName = c\n parser.attribValue = ''\n parser.state = S.ATTRIB_NAME\n } else {\n strictFail(parser, 'Invalid attribute name')\n }\n continue\n\n case S.ATTRIB_VALUE_UNQUOTED:\n if (!isAttribEnd(c)) {\n if (c === '&') {\n parser.state = S.ATTRIB_VALUE_ENTITY_U\n } else {\n parser.attribValue += c\n }\n continue\n }\n attrib(parser)\n if (c === '>') {\n openTag(parser)\n } else {\n parser.state = S.ATTRIB\n }\n continue\n\n case S.CLOSE_TAG:\n if (!parser.tagName) {\n if (isWhitespace(c)) {\n continue\n } else if (notMatch(nameStart, c)) {\n if (parser.script) {\n parser.script += '</' + c\n parser.state = S.SCRIPT\n } else {\n strictFail(parser, 'Invalid tagname in closing tag.')\n }\n } else {\n parser.tagName = c\n }\n } else if (c === '>') {\n closeTag(parser)\n } else if (isMatch(nameBody, c)) {\n parser.tagName += c\n } else if (parser.script) {\n parser.script += '</' + parser.tagName\n parser.tagName = ''\n parser.state = S.SCRIPT\n } else {\n if (!isWhitespace(c)) {\n strictFail(parser, 'Invalid tagname in closing tag')\n }\n parser.state = S.CLOSE_TAG_SAW_WHITE\n }\n continue\n\n case S.CLOSE_TAG_SAW_WHITE:\n if (isWhitespace(c)) {\n continue\n }\n if (c === '>') {\n closeTag(parser)\n } else {\n strictFail(parser, 'Invalid characters in closing tag')\n }\n continue\n\n case S.TEXT_ENTITY:\n case S.ATTRIB_VALUE_ENTITY_Q:\n case S.ATTRIB_VALUE_ENTITY_U:\n var returnState\n var buffer\n switch (parser.state) {\n case S.TEXT_ENTITY:\n returnState = S.TEXT\n buffer = 'textNode'\n break\n\n case S.ATTRIB_VALUE_ENTITY_Q:\n returnState = S.ATTRIB_VALUE_QUOTED\n buffer = 'attribValue'\n break\n\n case S.ATTRIB_VALUE_ENTITY_U:\n returnState = S.ATTRIB_VALUE_UNQUOTED\n buffer = 'attribValue'\n break\n }\n\n if (c === ';') {\n parser[buffer] += parseEntity(parser)\n parser.entity = ''\n parser.state = returnState\n } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) {\n parser.entity += c\n } else {\n strictFail(parser, 'Invalid character in entity name')\n parser[buffer] += '&' + parser.entity + c\n parser.entity = ''\n parser.state = returnState\n }\n\n continue\n\n default:\n throw new Error(parser, 'Unknown state: ' + parser.state)\n }\n } // while\n\n if (parser.position >= parser.bufferCheckPosition) {\n checkBufferLength(parser)\n }\n return parser\n }\n\n /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n /* istanbul ignore next */\n if (!String.fromCodePoint) {\n (function () {\n var stringFromCharCode = String.fromCharCode\n var floor = Math.floor\n var fromCodePoint = function () {\n var MAX_SIZE = 0x4000\n var codeUnits = []\n var highSurrogate\n var lowSurrogate\n var index = -1\n var length = arguments.length\n if (!length) {\n return ''\n }\n var result = ''\n while (++index < length) {\n var codePoint = Number(arguments[index])\n if (\n !isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10FFFF || // not a valid Unicode code point\n floor(codePoint) !== codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint)\n }\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint)\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000\n highSurrogate = (codePoint >> 10) + 0xD800\n lowSurrogate = (codePoint % 0x400) + 0xDC00\n codeUnits.push(highSurrogate, lowSurrogate)\n }\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += stringFromCharCode.apply(null, codeUnits)\n codeUnits.length = 0\n }\n }\n return result\n }\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(String, 'fromCodePoint', {\n value: fromCodePoint,\n configurable: true,\n writable: true\n })\n } else {\n String.fromCodePoint = fromCodePoint\n }\n }())\n }\n})(typeof exports === 'undefined' ? this.sax = {} : exports)\n", "module.exports = {\r\n\r\n isArray: function(value) {\r\n if (Array.isArray) {\r\n return Array.isArray(value);\r\n }\r\n // fallback for older browsers like IE 8\r\n return Object.prototype.toString.call( value ) === '[object Array]';\r\n }\r\n\r\n};\r\n", "var isArray = require('./array-helper').isArray;\r\n\r\nmodule.exports = {\r\n\r\n copyOptions: function (options) {\r\n var key, copy = {};\r\n for (key in options) {\r\n if (options.hasOwnProperty(key)) {\r\n copy[key] = options[key];\r\n }\r\n }\r\n return copy;\r\n },\r\n\r\n ensureFlagExists: function (item, options) {\r\n if (!(item in options) || typeof options[item] !== 'boolean') {\r\n options[item] = false;\r\n }\r\n },\r\n\r\n ensureSpacesExists: function (options) {\r\n if (!('spaces' in options) || (typeof options.spaces !== 'number' && typeof options.spaces !== 'string')) {\r\n options.spaces = 0;\r\n }\r\n },\r\n\r\n ensureAlwaysArrayExists: function (options) {\r\n if (!('alwaysArray' in options) || (typeof options.alwaysArray !== 'boolean' && !isArray(options.alwaysArray))) {\r\n options.alwaysArray = false;\r\n }\r\n },\r\n\r\n ensureKeyExists: function (key, options) {\r\n if (!(key + 'Key' in options) || typeof options[key + 'Key'] !== 'string') {\r\n options[key + 'Key'] = options.compact ? '_' + key : key;\r\n }\r\n },\r\n\r\n checkFnExists: function (key, options) {\r\n return key + 'Fn' in options;\r\n }\r\n\r\n};\r\n", "var sax = require('sax');\r\nvar expat /*= require('node-expat');*/ = { on: function () { }, parse: function () { } };\r\nvar helper = require('./options-helper');\r\nvar isArray = require('./array-helper').isArray;\r\n\r\nvar options;\r\nvar pureJsParser = true;\r\nvar currentElement;\r\n\r\nfunction validateOptions(userOptions) {\r\n options = helper.copyOptions(userOptions);\r\n helper.ensureFlagExists('ignoreDeclaration', options);\r\n helper.ensureFlagExists('ignoreInstruction', options);\r\n helper.ensureFlagExists('ignoreAttributes', options);\r\n helper.ensureFlagExists('ignoreText', options);\r\n helper.ensureFlagExists('ignoreComment', options);\r\n helper.ensureFlagExists('ignoreCdata', options);\r\n helper.ensureFlagExists('ignoreDoctype', options);\r\n helper.ensureFlagExists('compact', options);\r\n helper.ensureFlagExists('alwaysChildren', options);\r\n helper.ensureFlagExists('addParent', options);\r\n helper.ensureFlagExists('trim', options);\r\n helper.ensureFlagExists('nativeType', options);\r\n helper.ensureFlagExists('nativeTypeAttributes', options);\r\n helper.ensureFlagExists('sanitize', options);\r\n helper.ensureFlagExists('instructionHasAttributes', options);\r\n helper.ensureFlagExists('captureSpacesBetweenElements', options);\r\n helper.ensureAlwaysArrayExists(options);\r\n helper.ensureKeyExists('declaration', options);\r\n helper.ensureKeyExists('instruction', options);\r\n helper.ensureKeyExists('attributes', options);\r\n helper.ensureKeyExists('text', options);\r\n helper.ensureKeyExists('comment', options);\r\n helper.ensureKeyExists('cdata', options);\r\n helper.ensureKeyExists('doctype', options);\r\n helper.ensureKeyExists('type', options);\r\n helper.ensureKeyExists('name', options);\r\n helper.ensureKeyExists('elements', options);\r\n helper.ensureKeyExists('parent', options);\r\n helper.checkFnExists('doctype', options);\r\n helper.checkFnExists('instruction', options);\r\n helper.checkFnExists('cdata', options);\r\n helper.checkFnExists('comment', options);\r\n helper.checkFnExists('text', options);\r\n helper.checkFnExists('instructionName', options);\r\n helper.checkFnExists('elementName', options);\r\n helper.checkFnExists('attributeName', options);\r\n helper.checkFnExists('attributeValue', options);\r\n helper.checkFnExists('attributes', options);\r\n return options;\r\n}\r\n\r\nfunction nativeType(value) {\r\n var nValue = Number(value);\r\n if (!isNaN(nValue)) {\r\n return nValue;\r\n }\r\n var bValue = value.toLowerCase();\r\n if (bValue === 'true') {\r\n return true;\r\n } else if (bValue === 'false') {\r\n return false;\r\n }\r\n return value;\r\n}\r\n\r\nfunction addField(type, value) {\r\n var key;\r\n if (options.compact) {\r\n if (\r\n !currentElement[options[type + 'Key']] &&\r\n (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(options[type + 'Key']) !== -1 : options.alwaysArray)\r\n ) {\r\n currentElement[options[type + 'Key']] = [];\r\n }\r\n if (currentElement[options[type + 'Key']] && !isArray(currentElement[options[type + 'Key']])) {\r\n currentElement[options[type + 'Key']] = [currentElement[options[type + 'Key']]];\r\n }\r\n if (type + 'Fn' in options && typeof value === 'string') {\r\n value = options[type + 'Fn'](value, currentElement);\r\n }\r\n if (type === 'instruction' && ('instructionFn' in options || 'instructionNameFn' in options)) {\r\n for (key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n if ('instructionFn' in options) {\r\n value[key] = options.instructionFn(value[key], key, currentElement);\r\n } else {\r\n var temp = value[key];\r\n delete value[key];\r\n value[options.instructionNameFn(key, temp, currentElement)] = temp;\r\n }\r\n }\r\n }\r\n }\r\n if (isArray(currentElement[options[type + 'Key']])) {\r\n currentElement[options[type + 'Key']].push(value);\r\n } else {\r\n currentElement[options[type + 'Key']] = value;\r\n }\r\n } else {\r\n if (!currentElement[options.elementsKey]) {\r\n currentElement[options.elementsKey] = [];\r\n }\r\n var element = {};\r\n element[options.typeKey] = type;\r\n if (type === 'instruction') {\r\n for (key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n break;\r\n }\r\n }\r\n element[options.nameKey] = 'instructionNameFn' in options ? options.instructionNameFn(key, value, currentElement) : key;\r\n if (options.instructionHasAttributes) {\r\n element[options.attributesKey] = value[key][options.attributesKey];\r\n if ('instructionFn' in options) {\r\n element[options.attributesKey] = options.instructionFn(element[options.attributesKey], key, currentElement);\r\n }\r\n } else {\r\n if ('instructionFn' in options) {\r\n value[key] = options.instructionFn(value[key], key, currentElement);\r\n }\r\n element[options.instructionKey] = value[key];\r\n }\r\n } else {\r\n if (type + 'Fn' in options) {\r\n value = options[type + 'Fn'](value, currentElement);\r\n }\r\n element[options[type + 'Key']] = value;\r\n }\r\n if (options.addParent) {\r\n element[options.parentKey] = currentElement;\r\n }\r\n currentElement[options.elementsKey].push(element);\r\n }\r\n}\r\n\r\nfunction manipulateAttributes(attributes) {\r\n if ('attributesFn' in options && attributes) {\r\n attributes = options.attributesFn(attributes, currentElement);\r\n }\r\n if ((options.trim || 'attributeValueFn' in options || 'attributeNameFn' in options || options.nativeTypeAttributes) && attributes) {\r\n var key;\r\n for (key in attributes) {\r\n if (attributes.hasOwnProperty(key)) {\r\n if (options.trim) attributes[key] = attributes[key].trim();\r\n if (options.nativeTypeAttributes) {\r\n attributes[key] = nativeType(attributes[key]);\r\n }\r\n if ('attributeValueFn' in options) attributes[key] = options.attributeValueFn(attributes[key], key, currentElement);\r\n if ('attributeNameFn' in options) {\r\n var temp = attributes[key];\r\n delete attributes[key];\r\n attributes[options.attributeNameFn(key, attributes[key], currentElement)] = temp;\r\n }\r\n }\r\n }\r\n }\r\n return attributes;\r\n}\r\n\r\nfunction onInstruction(instruction) {\r\n var attributes = {};\r\n if (instruction.body && (instruction.name.toLowerCase() === 'xml' || options.instructionHasAttributes)) {\r\n var attrsRegExp = /([\\w:-]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)'|(\\w+))\\s*/g;\r\n var match;\r\n while ((match = attrsRegExp.exec(instruction.body)) !== null) {\r\n attributes[match[1]] = match[2] || match[3] || match[4];\r\n }\r\n attributes = manipulateAttributes(attributes);\r\n }\r\n if (instruction.name.toLowerCase() === 'xml') {\r\n if (options.ignoreDeclaration) {\r\n return;\r\n }\r\n currentElement[options.declarationKey] = {};\r\n if (Object.keys(attributes).length) {\r\n currentElement[options.declarationKey][options.attributesKey] = attributes;\r\n }\r\n if (options.addParent) {\r\n currentElement[options.declarationKey][options.parentKey] = currentElement;\r\n }\r\n } else {\r\n if (options.ignoreInstruction) {\r\n return;\r\n }\r\n if (options.trim) {\r\n instruction.body = instruction.body.trim();\r\n }\r\n var value = {};\r\n if (options.instructionHasAttributes && Object.keys(attributes).length) {\r\n value[instruction.name] = {};\r\n value[instruction.name][options.attributesKey] = attributes;\r\n } else {\r\n value[instruction.name] = instruction.body;\r\n }\r\n addField('instruction', value);\r\n }\r\n}\r\n\r\nfunction onStartElement(name, attributes) {\r\n var element;\r\n if (typeof name === 'object') {\r\n attributes = name.attributes;\r\n name = name.name;\r\n }\r\n attributes = manipulateAttributes(attributes);\r\n if ('elementNameFn' in options) {\r\n name = options.elementNameFn(name, currentElement);\r\n }\r\n if (options.compact) {\r\n element = {};\r\n if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n element[options.attributesKey] = {};\r\n var key;\r\n for (key in attributes) {\r\n if (attributes.hasOwnProperty(key)) {\r\n element[options.attributesKey][key] = attributes[key];\r\n }\r\n }\r\n }\r\n if (\r\n !(name in currentElement) &&\r\n (isArray(options.alwaysArray) ? options.alwaysArray.indexOf(name) !== -1 : options.alwaysArray)\r\n ) {\r\n currentElement[name] = [];\r\n }\r\n if (currentElement[name] && !isArray(currentElement[name])) {\r\n currentElement[name] = [currentElement[name]];\r\n }\r\n if (isArray(currentElement[name])) {\r\n currentElement[name].push(element);\r\n } else {\r\n currentElement[name] = element;\r\n }\r\n } else {\r\n if (!currentElement[options.elementsKey]) {\r\n currentElement[options.elementsKey] = [];\r\n }\r\n element = {};\r\n element[options.typeKey] = 'element';\r\n element[options.nameKey] = name;\r\n if (!options.ignoreAttributes && attributes && Object.keys(attributes).length) {\r\n element[options.attributesKey] = attributes;\r\n }\r\n if (options.alwaysChildren) {\r\n element[options.elementsKey] = [];\r\n }\r\n currentElement[options.elementsKey].push(element);\r\n }\r\n element[options.parentKey] = currentElement; // will be deleted in onEndElement() if !options.addParent\r\n currentElement = element;\r\n}\r\n\r\nfunction onText(text) {\r\n if (options.ignoreText) {\r\n return;\r\n }\r\n if (!text.trim() && !options.captureSpacesBetweenElements) {\r\n return;\r\n }\r\n if (options.trim) {\r\n text = text.trim();\r\n }\r\n if (options.nativeType) {\r\n text = nativeType(text);\r\n }\r\n if (options.sanitize) {\r\n text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\r\n }\r\n addField('text', text);\r\n}\r\n\r\nfunction onComment(comment) {\r\n if (options.ignoreComment) {\r\n return;\r\n }\r\n if (options.trim) {\r\n comment = comment.trim();\r\n }\r\n addField('comment', comment);\r\n}\r\n\r\nfunction onEndElement(name) {\r\n var parentElement = currentElement[options.parentKey];\r\n if (!options.addParent) {\r\n delete currentElement[options.parentKey];\r\n }\r\n currentElement = parentElement;\r\n}\r\n\r\nfunction onCdata(cdata) {\r\n if (options.ignoreCdata) {\r\n return;\r\n }\r\n if (options.trim) {\r\n cdata = cdata.trim();\r\n }\r\n addField('cdata', cdata);\r\n}\r\n\r\nfunction onDoctype(doctype) {\r\n if (options.ignoreDoctype) {\r\n return;\r\n }\r\n doctype = doctype.replace(/^ /, '');\r\n if (options.trim) {\r\n doctype = doctype.trim();\r\n }\r\n addField('doctype', doctype);\r\n}\r\n\r\nfunction onError(error) {\r\n error.note = error; //console.error(error);\r\n}\r\n\r\nmodule.exports = function (xml, userOptions) {\r\n\r\n var parser = pureJsParser ? sax.parser(true, {}) : parser = new expat.Parser('UTF-8');\r\n var result = {};\r\n currentElement = result;\r\n\r\n options = validateOptions(userOptions);\r\n\r\n if (pureJsParser) {\r\n parser.opt = {strictEntities: true};\r\n parser.onopentag = onStartElement;\r\n parser.ontext = onText;\r\n parser.oncomment = onComment;\r\n parser.onclosetag = onEndElement;\r\n parser.onerror = onError;\r\n parser.oncdata = onCdata;\r\n parser.ondoctype = onDoctype;\r\n parser.onprocessinginstruction = onInstruction;\r\n } else {\r\n parser.on('startElement', onStartElement);\r\n parser.on('text', onText);\r\n parser.on('comment', onComment);\r\n parser.on('endElement', onEndElement);\r\n parser.on('error', onError);\r\n //parser.on('startCdata', onStartCdata);\r\n //parser.on('endCdata', onEndCdata);\r\n //parser.on('entityDecl', onEntityDecl);\r\n }\r\n\r\n if (pureJsParser) {\r\n parser.write(xml).close();\r\n } else {\r\n if (!parser.parse(xml)) {\r\n throw new Error('XML parsing error: ' + parser.getError());\r\n }\r\n }\r\n\r\n if (result[options.elementsKey]) {\r\n var temp = result[options.elementsKey];\r\n delete result[options.elementsKey];\r\n result[options.elementsKey] = temp;\r\n delete result.text;\r\n }\r\n\r\n return result;\r\n\r\n};\r\n", "var helper = require('./options-helper');\r\nvar xml2js = require('./xml2js');\r\n\r\nfunction validateOptions (userOptions) {\r\n var options = helper.copyOptions(userOptions);\r\n helper.ensureSpacesExists(options);\r\n return options;\r\n}\r\n\r\nmodule.exports = function(xml, userOptions) {\r\n var options, js, json, parentKey;\r\n options = validateOptions(userOptions);\r\n js = xml2js(xml, options);\r\n parentKey = 'compact' in options && options.compact ? '_parent' : 'parent';\r\n // parentKey = ptions.compact ? '_parent' : 'parent'; // consider this\r\n if ('addParent' in options && options.addParent) {\r\n json = JSON.stringify(js, function (k, v) { return k === parentKey? '_' : v; }, options.spaces);\r\n } else {\r\n json = JSON.stringify(js, null, options.spaces);\r\n }\r\n return json.replace(/\\u2028/g, '\\\\u2028').replace(/\\u2029/g, '\\\\u2029');\r\n};\r\n", "var helper = require('./options-helper');\nvar isArray = require('./array-helper').isArray;\n\nvar currentElement, currentElementName;\n\nfunction validateOptions(userOptions) {\n var options = helper.copyOptions(userOptions);\n helper.ensureFlagExists('ignoreDeclaration', options);\n helper.ensureFlagExists('ignoreInstruction', options);\n helper.ensureFlagExists('ignoreAttributes', options);\n helper.ensureFlagExists('ignoreText', options);\n helper.ensureFlagExists('ignoreComment', options);\n helper.ensureFlagExists('ignoreCdata', options);\n helper.ensureFlagExists('ignoreDoctype', options);\n helper.ensureFlagExists('compact', options);\n helper.ensureFlagExists('indentText', options);\n helper.ensureFlagExists('indentCdata', options);\n helper.ensureFlagExists('indentAttributes', options);\n helper.ensureFlagExists('indentInstruction', options);\n helper.ensureFlagExists('fullTagEmptyElement', options);\n helper.ensureFlagExists('noQuotesForNativeAttributes', options);\n helper.ensureSpacesExists(options);\n if (typeof options.spaces === 'number') {\n options.spaces = Array(options.spaces + 1).join(' ');\n }\n helper.ensureKeyExists('declaration', options);\n helper.ensureKeyExists('instruction', options);\n helper.ensureKeyExists('attributes', options);\n helper.ensureKeyExists('text', options);\n helper.ensureKeyExists('comment', options);\n helper.ensureKeyExists('cdata', options);\n helper.ensureKeyExists('doctype', options);\n helper.ensureKeyExists('type', options);\n helper.ensureKeyExists('name', options);\n helper.ensureKeyExists('elements', options);\n helper.checkFnExists('doctype', options);\n helper.checkFnExists('instruction', options);\n helper.checkFnExists('cdata', options);\n helper.checkFnExists('comment', options);\n helper.checkFnExists('text', options);\n helper.checkFnExists('instructionName', options);\n helper.checkFnExists('elementName', options);\n helper.checkFnExists('attributeName', options);\n helper.checkFnExists('attributeValue', options);\n helper.checkFnExists('attributes', options);\n helper.checkFnExists('fullTagEmptyElement', options);\n return options;\n}\n\nfunction writeIndentation(options, depth, firstLine) {\n return (!firstLine && options.spaces ? '\\n' : '') + Array(depth + 1).join(options.spaces);\n}\n\nfunction writeAttributes(attributes, options, depth) {\n if (options.ignoreAttributes) {\n return '';\n }\n if ('attributesFn' in options) {\n attributes = options.attributesFn(attributes, currentElementName, currentElement);\n }\n var key, attr, attrName, quote, result = [];\n for (key in attributes) {\n if (attributes.hasOwnProperty(key) && attributes[key] !== null && attributes[key] !== undefined) {\n quote = options.noQuotesForNativeAttributes && typeof attributes[key] !== 'string' ? '' : '\"';\n attr = '' + attributes[key]; // ensure number and boolean are converted to String\n attr = attr.replace(/\"/g, '&quot;');\n attrName = 'attributeNameFn' in options ? options.attributeNameFn(key, attr, currentElementName, currentElement) : key;\n result.push((options.spaces && options.indentAttributes? writeIndentation(options, depth+1, false) : ' '));\n result.push(attrName + '=' + quote + ('attributeValueFn' in options ? options.attributeValueFn(attr, key, currentElementName, currentElement) : attr) + quote);\n }\n }\n if (attributes && Object.keys(attributes).length && options.spaces && options.indentAttributes) {\n result.push(writeIndentation(options, depth, false));\n }\n return result.join('');\n}\n\nfunction writeDeclaration(declaration, options, depth) {\n currentElement = declaration;\n currentElementName = 'xml';\n return options.ignoreDeclaration ? '' : '<?' + 'xml' + writeAttributes(declaration[options.attributesKey], options, depth) + '?>';\n}\n\nfunction writeInstruction(instruction, options, depth) {\n if (options.ignoreInstruction) {\n return '';\n }\n var key;\n for (key in instruction) {\n if (instruction.hasOwnProperty(key)) {\n break;\n }\n }\n var instructionName = 'instructionNameFn' in options ? options.instructionNameFn(key, instruction[key], currentElementName, currentElement) : key;\n if (typeof instruction[key] === 'object') {\n currentElement = instruction;\n currentElementName = instructionName;\n return '<?' + instructionName + writeAttributes(instruction[key][options.attributesKey], options, depth) + '?>';\n } else {\n var instructionValue = instruction[key] ? instruction[key] : '';\n if ('instructionFn' in options) instructionValue = options.instructionFn(instructionValue, key, currentElementName, currentElement);\n return '<?' + instructionName + (instructionValue ? ' ' + instructionValue : '') + '?>';\n }\n}\n\nfunction writeComment(comment, options) {\n return options.ignoreComment ? '' : '<!--' + ('commentFn' in options ? options.commentFn(comment, currentElementName, currentElement) : comment) + '-->';\n}\n\nfunction writeCdata(cdata, options) {\n return options.ignoreCdata ? '' : '<![CDATA[' + ('cdataFn' in options ? options.cdataFn(cdata, currentElementName, currentElement) : cdata.replace(']]>', ']]]]><![CDATA[>')) + ']]>';\n}\n\nfunction writeDoctype(doctype, options) {\n return options.ignoreDoctype ? '' : '<!DOCTYPE ' + ('doctypeFn' in options ? options.doctypeFn(doctype, currentElementName, currentElement) : doctype) + '>';\n}\n\nfunction writeText(text, options) {\n if (options.ignoreText) return '';\n text = '' + text; // ensure Number and Boolean are converted to String\n text = text.replace(/&amp;/g, '&'); // desanitize to avoid double sanitization\n text = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n return 'textFn' in options ? options.textFn(text, currentElementName, currentElement) : text;\n}\n\nfunction hasContent(element, options) {\n var i;\n if (element.elements && element.elements.length) {\n for (i = 0; i < element.elements.length; ++i) {\n switch (element.elements[i][options.typeKey]) {\n case 'text':\n if (options.indentText) {\n return true;\n }\n break; // skip to next key\n case 'cdata':\n if (options.indentCdata) {\n return true;\n }\n break; // skip to next key\n case 'instruction':\n if (options.indentInstruction) {\n return true;\n }\n break; // skip to next key\n case 'doctype':\n case 'comment':\n case 'element':\n return true;\n default:\n return true;\n }\n }\n }\n return false;\n}\n\nfunction writeElement(element, options, depth) {\n currentElement = element;\n currentElementName = element.name;\n var xml = [], elementName = 'elementNameFn' in options ? options.elementNameFn(element.name, element) : element.name;\n xml.push('<' + elementName);\n if (element[options.attributesKey]) {\n xml.push(writeAttributes(element[options.attributesKey], options, depth));\n }\n var withClosingTag = element[options.elementsKey] && element[options.elementsKey].length || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n if (!withClosingTag) {\n if ('fullTagEmptyElementFn' in options) {\n withClosingTag = options.fullTagEmptyElementFn(element.name, element);\n } else {\n withClosingTag = options.fullTagEmptyElement;\n }\n }\n if (withClosingTag) {\n xml.push('>');\n if (element[options.elementsKey] && element[options.elementsKey].length) {\n xml.push(writeElements(element[options.elementsKey], options, depth + 1));\n currentElement = element;\n currentElementName = element.name;\n }\n xml.push(options.spaces && hasContent(element, options) ? '\\n' + Array(depth + 1).join(options.spaces) : '');\n xml.push('</' + elementName + '>');\n } else {\n xml.push('/>');\n }\n return xml.join('');\n}\n\nfunction writeElements(elements, options, depth, firstLine) {\n return elements.reduce(function (xml, element) {\n var indent = writeIndentation(options, depth, firstLine && !xml);\n switch (element.type) {\n case 'element': return xml + indent + writeElement(element, options, depth);\n case 'comment': return xml + indent + writeComment(element[options.commentKey], options);\n case 'doctype': return xml + indent + writeDoctype(element[options.doctypeKey], options);\n case 'cdata': return xml + (options.indentCdata ? indent : '') + writeCdata(element[options.cdataKey], options);\n case 'text': return xml + (options.indentText ? indent : '') + writeText(element[options.textKey], options);\n case 'instruction':\n var instruction = {};\n instruction[element[options.nameKey]] = element[options.attributesKey] ? element : element[options.instructionKey];\n return xml + (options.indentInstruction ? indent : '') + writeInstruction(instruction, options, depth);\n }\n }, '');\n}\n\nfunction hasContentCompact(element, options, anyContent) {\n var key;\n for (key in element) {\n if (element.hasOwnProperty(key)) {\n switch (key) {\n case options.parentKey:\n case options.attributesKey:\n break; // skip to next key\n case options.textKey:\n if (options.indentText || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.cdataKey:\n if (options.indentCdata || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.instructionKey:\n if (options.indentInstruction || anyContent) {\n return true;\n }\n break; // skip to next key\n case options.doctypeKey:\n case options.commentKey:\n return true;\n default:\n return true;\n }\n }\n }\n return false;\n}\n\nfunction writeElementCompact(element, name, options, depth, indent) {\n currentElement = element;\n currentElementName = name;\n var elementName = 'elementNameFn' in options ? options.elementNameFn(name, element) : name;\n if (typeof element === 'undefined' || element === null || element === '') {\n return 'fullTagEmptyElementFn' in options && options.fullTagEmptyElementFn(name, element) || options.fullTagEmptyElement ? '<' + elementName + '></' + elementName + '>' : '<' + elementName + '/>';\n }\n var xml = [];\n if (name) {\n xml.push('<' + elementName);\n if (typeof element !== 'object') {\n xml.push('>' + writeText(element,options) + '</' + elementName + '>');\n return xml.join('');\n }\n if (element[options.attributesKey]) {\n xml.push(writeAttributes(element[options.attributesKey], options, depth));\n }\n var withClosingTag = hasContentCompact(element, options, true) || element[options.attributesKey] && element[options.attributesKey]['xml:space'] === 'preserve';\n if (!withClosingTag) {\n if ('fullTagEmptyElementFn' in options) {\n withClosingTag = options.fullTagEmptyElementFn(name, element);\n } else {\n withClosingTag = options.fullTagEmptyElement;\n }\n }\n if (withClosingTag) {\n xml.push('>');\n } else {\n xml.push('/>');\n return xml.join('');\n }\n }\n xml.push(writeElementsCompact(element, options, depth + 1, false));\n currentElement = element;\n currentElementName = name;\n if (name) {\n xml.push((indent ? writeIndentation(options, depth, false) : '') + '</' + elementName + '>');\n }\n return xml.join('');\n}\n\nfunction writeElementsCompact(element, options, depth, firstLine) {\n var i, key, nodes, xml = [];\n for (key in element) {\n if (element.hasOwnProperty(key)) {\n nodes = isArray(element[key]) ? element[key] : [element[key]];\n for (i = 0; i < nodes.length; ++i) {\n switch (key) {\n case options.declarationKey: xml.push(writeDeclaration(nodes[i], options, depth)); break;\n case options.instructionKey: xml.push((options.indentInstruction ? writeIndentation(options, depth, firstLine) : '') + writeInstruction(nodes[i], options, depth)); break;\n case options.attributesKey: case options.parentKey: break; // skip\n case options.textKey: xml.push((options.indentText ? writeIndentation(options, depth, firstLine) : '') + writeText(nodes[i], options)); break;\n case options.cdataKey: xml.push((options.indentCdata ? writeIndentation(options, depth, firstLine) : '') + writeCdata(nodes[i], options)); break;\n case options.doctypeKey: xml.push(writeIndentation(options, depth, firstLine) + writeDoctype(nodes[i], options)); break;\n case options.commentKey: xml.push(writeIndentation(options, depth, firstLine) + writeComment(nodes[i], options)); break;\n default: xml.push(writeIndentation(options, depth, firstLine) + writeElementCompact(nodes[i], key, options, depth, hasContentCompact(nodes[i], options)));\n }\n firstLine = firstLine && !xml.length;\n }\n }\n }\n return xml.join('');\n}\n\nmodule.exports = function (js, options) {\n options = validateOptions(options);\n var xml = [];\n currentElement = js;\n currentElementName = '_root_';\n if (options.compact) {\n xml.push(writeElementsCompact(js, options, 0, true));\n } else {\n if (js[options.declarationKey]) {\n xml.push(writeDeclaration(js[options.declarationKey], options, 0));\n }\n if (js[options.elementsKey] && js[options.elementsKey].length) {\n xml.push(writeElements(js[options.elementsKey], options, 0, !xml.length));\n }\n }\n return xml.join('');\n};\n", "var js2xml = require('./js2xml.js');\r\n\r\nmodule.exports = function (json, options) {\r\n if (json instanceof Buffer) {\r\n json = json.toString();\r\n }\r\n var js = null;\r\n if (typeof (json) === 'string') {\r\n try {\r\n js = JSON.parse(json);\r\n } catch (e) {\r\n throw new Error('The JSON structure is invalid');\r\n }\r\n } else {\r\n js = json;\r\n }\r\n return js2xml(js, options);\r\n};\r\n", "/*jslint node:true */\r\n\r\nvar xml2js = require('./xml2js');\r\nvar xml2json = require('./xml2json');\r\nvar js2xml = require('./js2xml');\r\nvar json2xml = require('./json2xml');\r\n\r\nmodule.exports = {\r\n xml2js: xml2js,\r\n xml2json: xml2json,\r\n js2xml: js2xml,\r\n json2xml: json2xml\r\n};\r\n", null, null, null, null, null, "/**\n * @module @ui5/flexibility-utils/src/changeUtils\n */\n\nlet iIdCounter = 0;\nconst CHANGE_UTILS_PREFIX = \"changeUtils: \";\n\nfunction uid() {\n\treturn \"id-\" + new Date().valueOf() + \"-\" + iIdCounter++;\n}\n\nfunction appendComponentToReference(sComponentName) {\n\tif (sComponentName && sComponentName.indexOf(\".Component\") < 0) {\n\t\tsComponentName += \".Component\";\n\t}\n\treturn sComponentName;\n}\n\nfunction getFlexReference(manifest) {\n\tconst oSapUi5Entry = manifest[\"sap.ui5\"];\n\tif (oSapUi5Entry) {\n\t\tif (oSapUi5Entry.appVariantId) {\n\t\t\treturn oSapUi5Entry.appVariantId;\n\t\t}\n\n\t\tif (oSapUi5Entry.componentName) {\n\t\t\treturn appendComponentToReference(oSapUi5Entry.componentName);\n\t\t}\n\t}\n\n\tconst sapApp = manifest[\"sap.app\"];\n\tif (!sapApp || !sapApp.id) {\n\t\tthrow Error(\"app ID could not be determined\");\n\t}\n\treturn sapApp.id;\n}\n\nfunction getAppVersion(manifest) {\n\tconst sapApp = manifest[\"sap.app\"];\n\tif (!sapApp || !sapApp.applicationVersion || !sapApp.applicationVersion.version) {\n\t\tthrow Error(\"app version could not be determined\");\n\t}\n\treturn sapApp.applicationVersion.version;\n}\n\nfunction getProjectId(manifest, reference) {\n\tif (\n\t\tmanifest &&\n\t\tmanifest[\"sap.app\"] &&\n\t\tmanifest[\"sap.app\"].sourceTemplate &&\n\t\t[\"ui5template.smartTemplate\", \"ui5template.smarttemplate\"].includes(manifest[\"sap.app\"].sourceTemplate.id)\n\t) {\n\t\treturn reference;\n\t}\n\n\treturn \"\";\n}\n\nfunction createString(propertyBag) {\n\treturn JSON.stringify({\n\t\tfileName: propertyBag.id || uid().replace(/-/g, \"_\") + \"_\" + propertyBag.type,\n\t\tfileType: \"change\",\n\t\tchangeType: propertyBag.type,\n\t\tmoduleName: \"\",\n\t\treference: propertyBag.reference,\n\t\tpackageName: \"\",\n\t\tcontent: propertyBag.content || {},\n\t\tselector: {\n\t\t\tid: propertyBag.controlId,\n\t\t\tidIsLocal: false,\n\t\t\ttype: propertyBag.controlType\n\t\t},\n\t\tlayer: propertyBag.isCustomer ? \"CUSTOMER_BASE\" : \"VENDOR\",\n\t\ttexts: {},\n\t\tnamespace: \"apps/\" + propertyBag.reference.replace(\".Component\", \"\") + \"/changes/\",\n\t\tprojectId: propertyBag.projectId,\n\t\tcreation: propertyBag.creation || new Date().valueOf(),\n\t\toriginalLanguage: \"\",\n\t\tsupport: {\n\t\t\tgenerator: CHANGE_UTILS_PREFIX + propertyBag.creatingTool,\n\t\t\tservice: \"\",\n\t\t\tuser: \"\",\n\t\t\tsapui5Version: propertyBag.sapui5Version,\n\t\t\tsourceChangeFileName: \"\",\n\t\t\tcompositeCommand: \"\"\n\t\t},\n\t\toDataInformation: {},\n\t\tdependentSelector: {},\n\t\tvalidAppVersions: {\n\t\t\tfrom: propertyBag.appVersion,\n\t\t\tto: propertyBag.appVersion,\n\t\t\tcreation: propertyBag.appVersion\n\n\t\t},\n\t\tjsOnly: false,\n\t\tvariantReference: \"\",\n\t\tappDescriptorChange: false\n\t});\n}\n\n/**\n * Object containing information for a change update.\n *\n * @typedef {object} \tChangeDefinition\n * @property {string}\tcontrolId - ID of the control containing all prefixes excluding the application ID prefix\n * @property {string}\ttype - Change type, i.e. <code>propertyChange</code>\n * @property {Object}\tcontent - Content of the change needed by the corresponding change handler\n * @property {boolean}\tisCustomer - Flag indicating whether the project is related to a customer project\n * @property {string}\tsapui5Version - SAPUI5 version for which the change is created\n * @property {string}\tcreatingTool - Name of the tool calling this function for support reasons\n * @property {string}\tid - UID of the change;\n * \t\t\t\t\t\t\tDefined on the first <code>toString</code> function call via the <code>manifest</code>\n * @property {string}\treference - Reference to the application;\n * \t\t\t\t\t\t\tDefined on the first <code>toString</code> function call via the <code>manifest</code>\n * @property {string}\tappVersion - Version of the application;\n *\t\t \t\t\t\t\tDefined on the first <code>toString</code> function call via the <code>manifest</code>\n * @property {string}\tcreation - String with the creation timestamp;\n * \t\t\t\t\t\t\tDefined on the first <code>toString</code> function call via the <code>manifest</code>\n */\n\n/**\n * Object containing information for a change creation.\n *\n * @typedef {object} \tChangeDefinitionInCreation\n * @property {string} \tcontrolId - ID of the control containing all prefixes excluding the application ID prefix\n * @property {string} \ttype - Change type, i.e. <code>propertyChange</code>\n * @property {Object} \t[content] - Content of the change needed by the corresponding change handler\n * @property {boolean} \tisCustomer - Flag indicating whether the project is related to a customer project\n * @property {string} \t[sapui5Version] - SAPUI5 version for which the change is created\n * @property {string} \tcreatingTool - Name of the tool calling this function (this is needed for support reasons)\n */\n\nmodule.exports = {\n\t/**\n\t * Parses a string of a change file into a change definition;\n\t * The parsed entities <code>id</code>, <code>reference</code>, <code>appVersion</code>, <code>creation</code>\n\t * must not be changed between <code>toString</code> operations.\n\t *\n\t * @param {string} changeString - Stringified change object stored in the workspace\n\t * @returns {ChangeDefinition}\n\t */\n\tparse: function(changeString) {\n\t\tconst change = JSON.parse(changeString);\n\n\t\tif (\n\t\t\t!change.fileName ||\n\t\t\t!change.changeType ||\n\t\t\t!change.selector ||\n\t\t\t!change.reference ||\n\t\t\t!change.creation ||\n\t\t\t!change.content ||\n\t\t\t!change.layer ||\n\t\t\t!change.support\n\t\t) {\n\t\t\tthrow Error(\"Parsed object does not contain all required parameters\");\n\t\t}\n\n\t\treturn {\n\t\t\tid: change.fileName,\n\t\t\treference: change.reference,\n\t\t\tappVersion: change.validAppVersions ? change.validAppVersions.creation : \"\",\n\t\t\tcreation: change.creation,\n\t\t\tprojectId: change.projectId,\n\t\t\ttype: change.changeType,\n\t\t\tcontrolId: change.selector.id,\n\t\t\tcontrolType: change.selector.type,\n\t\t\tisCustomer: change.layer === \"CUSTOMER_BASE\",\n\t\t\tcreatingTool: change.support.generator.replace(CHANGE_UTILS_PREFIX, \"\"),\n\t\t\tcontent: change.content,\n\t\t\tsapui5Version: change.support.sapui5Version\n\t\t};\n\t},\n\n\t/**\n\t * Generates a string of a change to write it as a file into the workspace.\n\t *\n\t * @param {changeDefinitionInCreation} propertyBag -\n\t * \t\t\tObject containing parameters for the change string creation\n\t * @param {object} manifest - Application manifest\n\t * @returns {string} Stringified change object needed and understood by the SAPUI5 runtime for storing in the workspace\n\t */\n\tcreateChangeString: function (propertyBag, manifest) {\n\t\tif (\n\t\t\t!propertyBag.type ||\n\t\t\t!propertyBag.controlId ||\n\t\t\t!(typeof propertyBag.isCustomer === \"boolean\") ||\n\t\t\t!propertyBag.creatingTool\n\t\t) {\n\t\t\tthrow Error(\"not all property parameters of the change were provided\");\n\t\t}\n\n\t\tif (!manifest) {\n\t\t\tthrow Error(\"no manifest was provided\");\n\t\t}\n\n\t\tpropertyBag.reference = getFlexReference(manifest);\n\t\tpropertyBag.appVersion = getAppVersion(manifest);\n\t\tpropertyBag.projectId = getProjectId(manifest, propertyBag.reference);\n\n\t\treturn createString(propertyBag);\n\t},\n\n\t/**\n\t * Generates a string of a parsed change to write it as a file into the workspace.\n\t *\n\t * @param {ChangeDefinition} propertyBag -\n\t * \t\t\tObject containing parameters for the change string creation\n\t * @returns {string} Stringified change object needed and understood by the SAPUI5 runtime for storing in the workspace\n\t */\n\ttoString: function(propertyBag) {\n\t\tif (\n\t\t\t!propertyBag.type ||\n\t\t\t!propertyBag.controlId ||\n\t\t\t!(typeof propertyBag.isCustomer === \"boolean\") ||\n\t\t\t!propertyBag.creatingTool ||\n\t\t\t!(propertyBag.reference && propertyBag.appVersion)\n\t\t) {\n\t\t\tthrow Error(\"not all parameters of the change were provided\");\n\t\t}\n\n\t\treturn createString(propertyBag);\n\t}\n};\n", "/**\n * @module @ui5/flexibility-utils\n * @public\n */\n\nmodule.exports = {\n\t/**\n\t * @public\n\t * @see module:@ui5/flexibility-utils/src/changeUtils.js\n\t */\n\tchange: require(\"./src/changeUtils\")\n};", "/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n/**\n * Private utility functions\n * @module utils\n * @private\n */\n\n'use strict';\n\nvar regExpChars = /[|\\\\{}()[\\]^$+*?.]/g;\n\n/**\n * Escape characters reserved in regular expressions.\n *\n * If `string` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} string Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\nexports.escapeRegExpChars = function (string) {\n // istanbul ignore if\n if (!string) {\n return '';\n }\n return String(string).replace(regExpChars, '\\\\$&');\n};\n\nvar _ENCODE_HTML_RULES = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&#34;',\n \"'\": '&#39;'\n};\nvar _MATCH_HTML = /[&<>'\"]/g;\n\nfunction encode_char(c) {\n return _ENCODE_HTML_RULES[c] || c;\n}\n\n/**\n * Stringified version of constants used by {@link module:utils.escapeXML}.\n *\n * It is used in the process of generating {@link ClientFunction}s.\n *\n * @readonly\n * @type {String}\n */\n\nvar escapeFuncStr =\n 'var _ENCODE_HTML_RULES = {\\n'\n+ ' \"&\": \"&amp;\"\\n'\n+ ' , \"<\": \"&lt;\"\\n'\n+ ' , \">\": \"&gt;\"\\n'\n+ ' , \\'\"\\': \"&#34;\"\\n'\n+ ' , \"\\'\": \"&#39;\"\\n'\n+ ' }\\n'\n+ ' , _MATCH_HTML = /[&<>\\'\"]/g;\\n'\n+ 'function encode_char(c) {\\n'\n+ ' return _ENCODE_HTML_RULES[c] || c;\\n'\n+ '};\\n';\n\n/**\n * Escape characters reserved in XML.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @implements {EscapeCallback}\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @static\n * @private\n */\n\nexports.escapeXML = function (markup) {\n return markup == undefined\n ? ''\n : String(markup)\n .replace(_MATCH_HTML, encode_char);\n};\nexports.escapeXML.toString = function () {\n return Function.prototype.toString.call(this) + ';\\n' + escapeFuncStr;\n};\n\n/**\n * Naive copy of properties from one object to another.\n * Does not recurse into non-scalar properties\n * Does not check to see if the property has a value before copying\n *\n * @param {Object} to Destination object\n * @param {Object} from Source object\n * @return {Object} Destination object\n * @static\n * @private\n */\nexports.shallowCopy = function (to, from) {\n from = from || {};\n if ((to !== null) && (to !== undefined)) {\n for (var p in from) {\n to[p] = from[p];\n }\n }\n return to;\n};\n\n/**\n * Naive copy of a list of key names, from one object to another.\n * Only copies property if it is actually defined\n * Does not recurse into non-scalar properties\n *\n * @param {Object} to Destination object\n * @param {Object} from Source object\n * @param {Array} list List of properties to copy\n * @return {Object} Destination object\n * @static\n * @private\n */\nexports.shallowCopyFromList = function (to, from, list) {\n list = list || [];\n from = from || {};\n if ((to !== null) && (to !== undefined)) {\n for (var i = 0; i < list.length; i++) {\n var p = list[i];\n if (typeof from[p] != 'undefined') {\n to[p] = from[p];\n }\n }\n }\n return to;\n};\n\n/**\n * Simple in-process cache implementation. Does not implement limits of any\n * sort.\n *\n * @implements {Cache}\n * @static\n * @private\n */\nexports.cache = {\n _data: {},\n set: function (key, val) {\n this._data[key] = val;\n },\n get: function (key) {\n return this._data[key];\n },\n remove: function (key) {\n delete this._data[key];\n },\n reset: function () {\n this._data = {};\n }\n};\n\n/**\n * Transforms hyphen case variable into camel case.\n *\n * @param {String} string Hyphen case string\n * @return {String} Camel case string\n * @static\n * @private\n */\nexports.hyphenToCamel = function (str) {\n return str.replace(/-[a-z]/g, function (match) { return match[1].toUpperCase(); });\n};\n\n/**\n * Returns a null-prototype object in runtimes that support it\n *\n * @return {Object} Object, prototype will be set to null where possible\n * @static\n * @private\n */\nexports.createNullProtoObjWherePossible = (function () {\n if (typeof Object.create == 'function') {\n return function () {\n return Object.create(null);\n };\n }\n if (!({__proto__: null} instanceof Object)) {\n return function () {\n return {__proto__: null};\n };\n }\n // Not possible, just pass through\n return function () {\n return {};\n };\n})();\n\n\n", "/*\n * EJS Embedded JavaScript templates\n * Copyright 2112 Matthew Eernisse (mde@fleegix.org)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n*/\n\n'use strict';\n\n/**\n * @file Embedded JavaScript templating engine. {@link http://ejs.co}\n * @author Matthew Eernisse <mde@fleegix.org>\n * @author Tiancheng \"Timothy\" Gu <timothygu99@gmail.com>\n * @project EJS\n * @license {@link http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0}\n */\n\n/**\n * EJS internal functions.\n *\n * Technically this \"module\" lies in the same file as {@link module:ejs}, for\n * the sake of organization all the private functions re grouped into this\n * module.\n *\n * @module ejs-internal\n * @private\n */\n\n/**\n * Embedded JavaScript templating engine.\n *\n * @module ejs\n * @public\n */\n\n\nvar fs = require('fs');\nvar path = require('path');\nvar utils = require('./utils');\n\nvar scopeOptionWarned = false;\n/** @type {string} */\nvar _VERSION_STRING = require('../package.json').version;\nvar _DEFAULT_OPEN_DELIMITER = '<';\nvar _DEFAULT_CLOSE_DELIMITER = '>';\nvar _DEFAULT_DELIMITER = '%';\nvar _DEFAULT_LOCALS_NAME = 'locals';\nvar _NAME = 'ejs';\nvar _REGEX_STRING = '(<%%|%%>|<%=|<%-|<%_|<%#|<%|%>|-%>|_%>)';\nvar _OPTS_PASSABLE_WITH_DATA = ['delimiter', 'scope', 'context', 'debug', 'compileDebug',\n 'client', '_with', 'rmWhitespace', 'strict', 'filename', 'async'];\n// We don't allow 'cache' option to be passed in the data obj for\n// the normal `render` call, but this is where Express 2 & 3 put it\n// so we make an exception for `renderFile`\nvar _OPTS_PASSABLE_WITH_DATA_EXPRESS = _OPTS_PASSABLE_WITH_DATA.concat('cache');\nvar _BOM = /^\\uFEFF/;\nvar _JS_IDENTIFIER = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/;\n\n/**\n * EJS template function cache. This can be a LRU object from lru-cache NPM\n * module. By default, it is {@link module:utils.cache}, a simple in-process\n * cache that grows continuously.\n *\n * @type {Cache}\n */\n\nexports.cache = utils.cache;\n\n/**\n * Custom file loader. Useful for template preprocessing or restricting access\n * to a certain part of the filesystem.\n *\n * @type {fileLoader}\n */\n\nexports.fileLoader = fs.readFileSync;\n\n/**\n * Name of the object containing the locals.\n *\n * This variable is overridden by {@link Options}`.localsName` if it is not\n * `undefined`.\n *\n * @type {String}\n * @public\n */\n\nexports.localsName = _DEFAULT_LOCALS_NAME;\n\n/**\n * Promise implementation -- defaults to the native implementation if available\n * This is mostly just for testability\n *\n * @type {PromiseConstructorLike}\n * @public\n */\n\nexports.promiseImpl = (new Function('return this;'))().Promise;\n\n/**\n * Get the path to the included file from the parent file path and the\n * specified path.\n *\n * @param {String} name specified path\n * @param {String} filename parent file path\n * @param {Boolean} [isDir=false] whether the parent file path is a directory\n * @return {String}\n */\nexports.resolveInclude = function(name, filename, isDir) {\n var dirname = path.dirname;\n var extname = path.extname;\n var resolve = path.resolve;\n var includePath = resolve(isDir ? filename : dirname(filename), name);\n var ext = extname(name);\n if (!ext) {\n includePath += '.ejs';\n }\n return includePath;\n};\n\n/**\n * Try to resolve file path on multiple directories\n *\n * @param {String} name specified path\n * @param {Array<String>} paths list of possible parent directory paths\n * @return {String}\n */\nfunction resolvePaths(name, paths) {\n var filePath;\n if (paths.some(function (v) {\n filePath = exports.resolveInclude(name, v, true);\n return fs.existsSync(filePath);\n })) {\n return filePath;\n }\n}\n\n/**\n * Get the path to the included file by Options\n *\n * @param {String} path specified path\n * @param {Options} options compilation options\n * @return {String}\n */\nfunction getIncludePath(path, options) {\n var includePath;\n var filePath;\n var views = options.views;\n var match = /^[A-Za-z]+:\\\\|^\\//.exec(path);\n\n // Abs path\n if (match && match.length) {\n path = path.replace(/^\\/*/, '');\n if (Array.isArray(options.root)) {\n includePath = resolvePaths(path, options.root);\n } else {\n includePath = exports.resolveInclude(path, options.root || '/', true);\n }\n }\n // Relative paths\n else {\n // Look relative to a passed filename first\n if (options.filename) {\n filePath = exports.resolveInclude(path, options.filename);\n if (fs.existsSync(filePath)) {\n includePath = filePath;\n }\n }\n // Then look in any views directories\n if (!includePath && Array.isArray(views)) {\n includePath = resolvePaths(path, views);\n }\n if (!includePath && typeof options.includer !== 'function') {\n throw new Error('Could not find the include file \"' +\n options.escapeFunction(path) + '\"');\n }\n }\n return includePath;\n}\n\n/**\n * Get the template from a string or a file, either compiled on-the-fly or\n * read from cache (if enabled), and cache the template if needed.\n *\n * If `template` is not set, the file specified in `options.filename` will be\n * read.\n *\n * If `options.cache` is true, this function reads the file from\n * `options.filename` so it must be set prior to calling this function.\n *\n * @memberof module:ejs-internal\n * @param {Options} options compilation options\n * @param {String} [template] template source\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned.\n * @static\n */\n\nfunction handleCache(options, template) {\n var func;\n var filename = options.filename;\n var hasTemplate = arguments.length > 1;\n\n if (options.cache) {\n if (!filename) {\n throw new Error('cache option requires a filename');\n }\n func = exports.cache.get(filename);\n if (func) {\n return func;\n }\n if (!hasTemplate) {\n template = fileLoader(filename).toString().replace(_BOM, '');\n }\n }\n else if (!hasTemplate) {\n // istanbul ignore if: should not happen at all\n if (!filename) {\n throw new Error('Internal EJS error: no file name or template '\n + 'provided');\n }\n template = fileLoader(filename).toString().replace(_BOM, '');\n }\n func = exports.compile(template, options);\n if (options.cache) {\n exports.cache.set(filename, func);\n }\n return func;\n}\n\n/**\n * Try calling handleCache with the given options and data and call the\n * callback with the result. If an error occurs, call the callback with\n * the error. Used by renderFile().\n *\n * @memberof module:ejs-internal\n * @param {Options} options compilation options\n * @param {Object} data template data\n * @param {RenderFileCallback} cb callback\n * @static\n */\n\nfunction tryHandleCache(options, data, cb) {\n var result;\n if (!cb) {\n if (typeof exports.promiseImpl == 'function') {\n return new exports.promiseImpl(function (resolve, reject) {\n try {\n result = handleCache(options)(data);\n resolve(result);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n else {\n throw new Error('Please provide a callback function');\n }\n }\n else {\n try {\n result = handleCache(options)(data);\n }\n catch (err) {\n return cb(err);\n }\n\n cb(null, result);\n }\n}\n\n/**\n * fileLoader is independent\n *\n * @param {String} filePath ejs file path.\n * @return {String} The contents of the specified file.\n * @static\n */\n\nfunction fileLoader(filePath){\n return exports.fileLoader(filePath);\n}\n\n/**\n * Get the template function.\n *\n * If `options.cache` is `true`, then the template is cached.\n *\n * @memberof module:ejs-internal\n * @param {String} path path for the specified file\n * @param {Options} options compilation options\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `options.client`, either type might be returned\n * @static\n */\n\nfunction includeFile(path, options) {\n var opts = utils.shallowCopy(utils.createNullProtoObjWherePossible(), options);\n opts.filename = getIncludePath(path, opts);\n if (typeof options.includer === 'function') {\n var includerResult = options.includer(path, opts.filename);\n if (includerResult) {\n if (includerResult.filename) {\n opts.filename = includerResult.filename;\n }\n if (includerResult.template) {\n return handleCache(opts, includerResult.template);\n }\n }\n }\n return handleCache(opts);\n}\n\n/**\n * Re-throw the given `err` in context to the `str` of ejs, `filename`, and\n * `lineno`.\n *\n * @implements {RethrowCallback}\n * @memberof module:ejs-internal\n * @param {Error} err Error object\n * @param {String} str EJS source\n * @param {String} flnm file name of the EJS file\n * @param {Number} lineno line number of the error\n * @param {EscapeCallback} esc\n * @static\n */\n\nfunction rethrow(err, str, flnm, lineno, esc) {\n var lines = str.split('\\n');\n var start = Math.max(lineno - 3, 0);\n var end = Math.min(lines.length, lineno + 3);\n var filename = esc(flnm);\n // Error context\n var context = lines.slice(start, end).map(function (line, i){\n var curr = i + start + 1;\n return (curr == lineno ? ' >> ' : ' ')\n + curr\n + '| '\n + line;\n }).join('\\n');\n\n // Alter exception message\n err.path = filename;\n err.message = (filename || 'ejs') + ':'\n + lineno + '\\n'\n + context + '\\n\\n'\n + err.message;\n\n throw err;\n}\n\nfunction stripSemi(str){\n return str.replace(/;(\\s*$)/, '$1');\n}\n\n/**\n * Compile the given `str` of ejs into a template function.\n *\n * @param {String} template EJS template\n *\n * @param {Options} [opts] compilation options\n *\n * @return {(TemplateFunction|ClientFunction)}\n * Depending on the value of `opts.client`, either type might be returned.\n * Note that the return type of the function also depends on the value of `opts.async`.\n * @public\n */\n\nexports.compile = function compile(template, opts) {\n var templ;\n\n // v1 compat\n // 'scope' is 'context'\n // FIXME: Remove this in a future version\n if (opts && opts.scope) {\n if (!scopeOptionWarned){\n console.warn('`scope` option is deprecated and will be removed in EJS 3');\n scopeOptionWarned = true;\n }\n if (!opts.context) {\n opts.context = opts.scope;\n }\n delete opts.scope;\n }\n templ = new Template(template, opts);\n return templ.compile();\n};\n\n/**\n * Render the given `template` of ejs.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String} template EJS template\n * @param {Object} [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @return {(String|Promise<String>)}\n * Return value type depends on `opts.async`.\n * @public\n */\n\nexports.render = function (template, d, o) {\n var data = d || utils.createNullProtoObjWherePossible();\n var opts = o || utils.createNullProtoObjWherePossible();\n\n // No options object -- if there are optiony names\n // in the data, copy them to options\n if (arguments.length == 2) {\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA);\n }\n\n return handleCache(opts, template)(data);\n};\n\n/**\n * Render an EJS file at the given `path` and callback `cb(err, str)`.\n *\n * If you would like to include options but not data, you need to explicitly\n * call this function with `data` being an empty object or `null`.\n *\n * @param {String} path path to the EJS file\n * @param {Object} [data={}] template data\n * @param {Options} [opts={}] compilation and rendering options\n * @param {RenderFileCallback} cb callback\n * @public\n */\n\nexports.renderFile = function () {\n var args = Array.prototype.slice.call(arguments);\n var filename = args.shift();\n var cb;\n var opts = {filename: filename};\n var data;\n var viewOpts;\n\n // Do we have a callback?\n if (typeof arguments[arguments.length - 1] == 'function') {\n cb = args.pop();\n }\n // Do we have data/opts?\n if (args.length) {\n // Should always have data obj\n data = args.shift();\n // Normal passed opts (data obj + opts obj)\n if (args.length) {\n // Use shallowCopy so we don't pollute passed in opts obj with new vals\n utils.shallowCopy(opts, args.pop());\n }\n // Special casing for Express (settings + opts-in-data)\n else {\n // Express 3 and 4\n if (data.settings) {\n // Pull a few things from known locations\n if (data.settings.views) {\n opts.views = data.settings.views;\n }\n if (data.settings['view cache']) {\n opts.cache = true;\n }\n // Undocumented after Express 2, but still usable, esp. for\n // items that are unsafe to be passed along with data, like `root`\n viewOpts = data.settings['view options'];\n if (viewOpts) {\n utils.shallowCopy(opts, viewOpts);\n }\n }\n // Express 2 and lower, values set in app.locals, or people who just\n // want to pass options in their data. NOTE: These values will override\n // anything previously set in settings or settings['view options']\n utils.shallowCopyFromList(opts, data, _OPTS_PASSABLE_WITH_DATA_EXPRESS);\n }\n opts.filename = filename;\n }\n else {\n data = utils.createNullProtoObjWherePossible();\n }\n\n return tryHandleCache(opts, data, cb);\n};\n\n/**\n * Clear intermediate JavaScript cache. Calls {@link Cache#reset}.\n * @public\n */\n\n/**\n * EJS template class\n * @public\n */\nexports.Template = Template;\n\nexports.clearCache = function () {\n exports.cache.reset();\n};\n\nfunction Template(text, opts) {\n opts = opts || utils.createNullProtoObjWherePossible();\n var options = utils.createNullProtoObjWherePossible();\n this.templateText = text;\n /** @type {string | null} */\n this.mode = null;\n this.truncate = false;\n this.currentLine = 1;\n this.source = '';\n options.client = opts.client || false;\n options.escapeFunction = opts.escape || opts.escapeFunction || utils.escapeXML;\n options.compileDebug = opts.compileDebug !== false;\n options.debug = !!opts.debug;\n options.filename = opts.filename;\n options.openDelimiter = opts.openDelimiter || exports.openDelimiter || _DEFAULT_OPEN_DELIMITER;\n options.closeDelimiter = opts.closeDelimiter || exports.closeDelimiter || _DEFAULT_CLOSE_DELIMITER;\n options.delimiter = opts.delimiter || exports.delimiter || _DEFAULT_DELIMITER;\n options.strict = opts.strict || false;\n options.context = opts.context;\n options.cache = opts.cache || false;\n options.rmWhitespace = opts.rmWhitespace;\n options.root = opts.root;\n options.includer = opts.includer;\n options.outputFunctionName = opts.outputFunctionName;\n options.localsName = opts.localsName || exports.localsName || _DEFAULT_LOCALS_NAME;\n options.views = opts.views;\n options.async = opts.async;\n options.destructuredLocals = opts.destructuredLocals;\n options.legacyInclude = typeof opts.legacyInclude != 'undefined' ? !!opts.legacyInclude : true;\n\n if (options.strict) {\n options._with = false;\n }\n else {\n options._with = typeof opts._with != 'undefined' ? opts._with : true;\n }\n\n this.opts = options;\n\n this.regex = this.createRegex();\n}\n\nTemplate.modes = {\n EVAL: 'eval',\n ESCAPED: 'escaped',\n RAW: 'raw',\n COMMENT: 'comment',\n LITERAL: 'literal'\n};\n\nTemplate.prototype = {\n createRegex: function () {\n var str = _REGEX_STRING;\n var delim = utils.escapeRegExpChars(this.opts.delimiter);\n var open = utils.escapeRegExpChars(this.opts.openDelimiter);\n var close = utils.escapeRegExpChars(this.opts.closeDelimiter);\n str = str.replace(/%/g, delim)\n .replace(/</g, open)\n .replace(/>/g, close);\n return new RegExp(str);\n },\n\n compile: function () {\n /** @type {string} */\n var src;\n /** @type {ClientFunction} */\n var fn;\n var opts = this.opts;\n var prepended = '';\n var appended = '';\n /** @type {EscapeCallback} */\n var escapeFn = opts.escapeFunction;\n /** @type {FunctionConstructor} */\n var ctor;\n /** @type {string} */\n var sanitizedFilename = opts.filename ? JSON.stringify(opts.filename) : 'undefined';\n\n if (!this.source) {\n this.generateSource();\n prepended +=\n ' var __output = \"\";\\n' +\n ' function __append(s) { if (s !== undefined && s !== null) __output += s }\\n';\n if (opts.outputFunctionName) {\n if (!_JS_IDENTIFIER.test(opts.outputFunctionName)) {\n throw new Error('outputFunctionName is not a valid JS identifier.');\n }\n prepended += ' var ' + opts.outputFunctionName + ' = __append;' + '\\n';\n }\n if (opts.localsName && !_JS_IDENTIFIER.test(opts.localsName)) {\n throw new Error('localsName is not a valid JS identifier.');\n }\n if (opts.destructuredLocals && opts.destructuredLocals.length) {\n var destructuring = ' var __locals = (' + opts.localsName + ' || {}),\\n';\n for (var i = 0; i < opts.destructuredLocals.length; i++) {\n var name = opts.destructuredLocals[i];\n if (!_JS_IDENTIFIER.test(name)) {\n throw new Error('destructuredLocals[' + i + '] is not a valid JS identifier.');\n }\n if (i > 0) {\n destructuring += ',\\n ';\n }\n destructuring += name + ' = __locals.' + name;\n }\n prepended += destructuring + ';\\n';\n }\n if (opts._with !== false) {\n prepended += ' with (' + opts.localsName + ' || {}) {' + '\\n';\n appended += ' }' + '\\n';\n }\n appended += ' return __output;' + '\\n';\n this.source = prepended + this.source + appended;\n }\n\n if (opts.compileDebug) {\n src = 'var __line = 1' + '\\n'\n + ' , __lines = ' + JSON.stringify(this.templateText) + '\\n'\n + ' , __filename = ' + sanitizedFilename + ';' + '\\n'\n + 'try {' + '\\n'\n + this.source\n + '} catch (e) {' + '\\n'\n + ' rethrow(e, __lines, __filename, __line, escapeFn);' + '\\n'\n + '}' + '\\n';\n }\n else {\n src = this.source;\n }\n\n if (opts.client) {\n src = 'escapeFn = escapeFn || ' + escapeFn.toString() + ';' + '\\n' + src;\n if (opts.compileDebug) {\n src = 'rethrow = rethrow || ' + rethrow.toString() + ';' + '\\n' + src;\n }\n }\n\n if (opts.strict) {\n src = '\"use strict\";\\n' + src;\n }\n if (opts.debug) {\n console.log(src);\n }\n if (opts.compileDebug && opts.filename) {\n src = src + '\\n'\n + '//# sourceURL=' + sanitizedFilename + '\\n';\n }\n\n try {\n if (opts.async) {\n // Have to use generated function for this, since in envs without support,\n // it breaks in parsing\n try {\n ctor = (new Function('return (async function(){}).constructor;'))();\n }\n catch(e) {\n if (e instanceof SyntaxError) {\n throw new Error('This environment does not support async/await');\n }\n else {\n throw e;\n }\n }\n }\n else {\n ctor = Function;\n }\n fn = new ctor(opts.localsName + ', escapeFn, include, rethrow', src);\n }\n catch(e) {\n // istanbul ignore else\n if (e instanceof SyntaxError) {\n if (opts.filename) {\n e.message += ' in ' + opts.filename;\n }\n e.message += ' while compiling ejs\\n\\n';\n e.message += 'If the above error is not helpful, you may want to try EJS-Lint:\\n';\n e.message += 'https://github.com/RyanZim/EJS-Lint';\n if (!opts.async) {\n e.message += '\\n';\n e.message += 'Or, if you meant to create an async function, pass `async: true` as an option.';\n }\n }\n throw e;\n }\n\n // Return a callable function which will execute the function\n // created by the source-code, with the passed data as locals\n // Adds a local `include` function which allows full recursive include\n var returnedFn = opts.client ? fn : function anonymous(data) {\n var include = function (path, includeData) {\n var d = utils.shallowCopy(utils.createNullProtoObjWherePossible(), data);\n if (includeData) {\n d = utils.shallowCopy(d, includeData);\n }\n return includeFile(path, opts)(d);\n };\n return fn.apply(opts.context,\n [data || utils.createNullProtoObjWherePossible(), escapeFn, include, rethrow]);\n };\n if (opts.filename && typeof Object.defineProperty === 'function') {\n var filename = opts.filename;\n var basename = path.basename(filename, path.extname(filename));\n try {\n Object.defineProperty(returnedFn, 'name', {\n value: basename,\n writable: false,\n enumerable: false,\n configurable: true\n });\n } catch (e) {/* ignore */}\n }\n return returnedFn;\n },\n\n generateSource: function () {\n var opts = this.opts;\n\n if (opts.rmWhitespace) {\n // Have to use two separate replace here as `^` and `$` operators don't\n // work well with `\\r` and empty lines don't work well with the `m` flag.\n this.templateText =\n this.templateText.replace(/[\\r\\n]+/g, '\\n').replace(/^\\s+|\\s+$/gm, '');\n }\n\n // Slurp spaces and tabs before <%_ and after _%>\n this.templateText =\n this.templateText.replace(/[ \\t]*<%_/gm, '<%_').replace(/_%>[ \\t]*/gm, '_%>');\n\n var self = this;\n var matches = this.parseTemplateText();\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n\n if (matches && matches.length) {\n matches.forEach(function (line, index) {\n var closing;\n // If this is an opening tag, check for closing tags\n // FIXME: May end up with some false positives here\n // Better to store modes as k/v with openDelimiter + delimiter as key\n // Then this can simply check against the map\n if ( line.indexOf(o + d) === 0 // If it is a tag\n && line.indexOf(o + d + d) !== 0) { // and is not escaped\n closing = matches[index + 2];\n if (!(closing == d + c || closing == '-' + d + c || closing == '_' + d + c)) {\n throw new Error('Could not find matching close tag for \"' + line + '\".');\n }\n }\n self.scanLine(line);\n });\n }\n\n },\n\n parseTemplateText: function () {\n var str = this.templateText;\n var pat = this.regex;\n var result = pat.exec(str);\n var arr = [];\n var firstPos;\n\n while (result) {\n firstPos = result.index;\n\n if (firstPos !== 0) {\n arr.push(str.substring(0, firstPos));\n str = str.slice(firstPos);\n }\n\n arr.push(result[0]);\n str = str.slice(result[0].length);\n result = pat.exec(str);\n }\n\n if (str) {\n arr.push(str);\n }\n\n return arr;\n },\n\n _addOutput: function (line) {\n if (this.truncate) {\n // Only replace single leading linebreak in the line after\n // -%> tag -- this is the single, trailing linebreak\n // after the tag that the truncation mode replaces\n // Handle Win / Unix / old Mac linebreaks -- do the \\r\\n\n // combo first in the regex-or\n line = line.replace(/^(?:\\r\\n|\\r|\\n)/, '');\n this.truncate = false;\n }\n if (!line) {\n return line;\n }\n\n // Preserve literal slashes\n line = line.replace(/\\\\/g, '\\\\\\\\');\n\n // Convert linebreaks\n line = line.replace(/\\n/g, '\\\\n');\n line = line.replace(/\\r/g, '\\\\r');\n\n // Escape double-quotes\n // - this will be the delimiter during execution\n line = line.replace(/\"/g, '\\\\\"');\n this.source += ' ; __append(\"' + line + '\")' + '\\n';\n },\n\n scanLine: function (line) {\n var self = this;\n var d = this.opts.delimiter;\n var o = this.opts.openDelimiter;\n var c = this.opts.closeDelimiter;\n var newLineCount = 0;\n\n newLineCount = (line.split('\\n').length - 1);\n\n switch (line) {\n case o + d:\n case o + d + '_':\n this.mode = Template.modes.EVAL;\n break;\n case o + d + '=':\n this.mode = Template.modes.ESCAPED;\n break;\n case o + d + '-':\n this.mode = Template.modes.RAW;\n break;\n case o + d + '#':\n this.mode = Template.modes.COMMENT;\n break;\n case o + d + d:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(o + d + d, o + d) + '\")' + '\\n';\n break;\n case d + d + c:\n this.mode = Template.modes.LITERAL;\n this.source += ' ; __append(\"' + line.replace(d + d + c, d + c) + '\")' + '\\n';\n break;\n case d + c:\n case '-' + d + c:\n case '_' + d + c:\n if (this.mode == Template.modes.LITERAL) {\n this._addOutput(line);\n }\n\n this.mode = null;\n this.truncate = line.indexOf('-') === 0 || line.indexOf('_') === 0;\n break;\n default:\n // In script mode, depends on type of tag\n if (this.mode) {\n // If '//' is found without a line break, add a line break.\n switch (this.mode) {\n case Template.modes.EVAL:\n case Template.modes.ESCAPED:\n case Template.modes.RAW:\n if (line.lastIndexOf('//') > line.lastIndexOf('\\n')) {\n line += '\\n';\n }\n }\n switch (this.mode) {\n // Just executing code\n case Template.modes.EVAL:\n this.source += ' ; ' + line + '\\n';\n break;\n // Exec, esc, and output\n case Template.modes.ESCAPED:\n this.source += ' ; __append(escapeFn(' + stripSemi(line) + '))' + '\\n';\n break;\n // Exec and output\n case Template.modes.RAW:\n this.source += ' ; __append(' + stripSemi(line) + ')' + '\\n';\n break;\n case Template.modes.COMMENT:\n // Do nothing\n break;\n // Literal <%% mode, append as raw output\n case Template.modes.LITERAL:\n this._addOutput(line);\n break;\n }\n }\n // In string mode, just add the output\n else {\n this._addOutput(line);\n }\n }\n\n if (self.opts.compileDebug && newLineCount) {\n this.currentLine += newLineCount;\n this.source += ' ; __line = ' + this.currentLine + '\\n';\n }\n }\n};\n\n/**\n * Escape characters reserved in XML.\n *\n * This is simply an export of {@link module:utils.escapeXML}.\n *\n * If `markup` is `undefined` or `null`, the empty string is returned.\n *\n * @param {String} markup Input string\n * @return {String} Escaped string\n * @public\n * @func\n * */\nexports.escapeXML = utils.escapeXML;\n\n/**\n * Express.js support.\n *\n * This is an alias for {@link module:ejs.renderFile}, in order to support\n * Express.js out-of-the-box.\n *\n * @func\n */\n\nexports.__express = exports.renderFile;\n\n/**\n * Version of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.VERSION = _VERSION_STRING;\n\n/**\n * Name for detection of EJS.\n *\n * @readonly\n * @type {String}\n * @public\n */\n\nexports.name = _NAME;\n\n/* istanbul ignore if */\nif (typeof window != 'undefined') {\n window.ejs = exports;\n}\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\nfunction baseUnset(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n object = parent(object, path);\n\n var key = toKey(last(path));\n return !(object != null && hasOwnProperty.call(object, key)) || delete object[key];\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\nfunction parent(object, path) {\n return path.length == 1 ? object : baseGet(object, baseSlice(path, 0, -1));\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array ? array.length : 0;\n return length ? array[length - 1] : undefined;\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\nfunction unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n}\n\nmodule.exports = unset;\n", "import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler<UUIDComponents, URIOptions, URNComponents> = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler<URNComponents,URNOptions> = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array<string>,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler<MailtoComponents> = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;", "import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;", "/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler<Components extends URIComponents = URIComponents, Options extends URIOptions = URIOptions, ParentComponents extends URIComponents = URIComponents> {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array<string>(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce<Array<{index:number,length:number}>>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = (<RegExpMatchArray>(\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array<string> = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array<string> = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(<URIComponents>uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(<URIComponents>uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(<URIComponents>uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n", "'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see <https://mathiasbynens.be/notes/javascript-encoding>\n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n", "import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n", "import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n", "export function merge(...sets:Array<string>):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array<any> {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n", "'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n var length = 0\n , len = str.length\n , pos = 0\n , value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n", "'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i<dataTypes.length; i++) {\n var t = dataTypes[i];\n if (COERCE_TO_TYPES[t]) types[types.length] = t;\n else if (optionCoerceTypes === 'array' && t === 'array') types[types.length] = t;\n }\n if (types.length) return types;\n } else if (COERCE_TO_TYPES[dataTypes]) {\n return [dataTypes];\n } else if (optionCoerceTypes === 'array' && dataTypes === 'array') {\n return ['array'];\n }\n}\n\n\nfunction toHash(arr) {\n var hash = {};\n for (var i=0; i<arr.length; i++) hash[arr[i]] = true;\n return hash;\n}\n\n\nvar IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i;\nvar SINGLE_QUOTE = /'|\\\\/g;\nfunction getProperty(key) {\n return typeof key == 'number'\n ? '[' + key + ']'\n : IDENTIFIER.test(key)\n ? '.' + key\n : \"['\" + escapeQuotes(key) + \"']\";\n}\n\n\nfunction escapeQuotes(str) {\n return str.replace(SINGLE_QUOTE, '\\\\$&')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\t/g, '\\\\t');\n}\n\n\nfunction varOccurences(str, dataVar) {\n dataVar += '[^0-9]';\n var matches = str.match(new RegExp(dataVar, 'g'));\n return matches ? matches.length : 0;\n}\n\n\nfunction varReplace(str, dataVar, expr) {\n dataVar += '([^0-9])';\n expr = expr.replace(/\\$/g, '$$$$');\n return str.replace(new RegExp(dataVar, 'g'), expr + '$1');\n}\n\n\nfunction schemaHasRules(schema, rules) {\n if (typeof schema == 'boolean') return !schema;\n for (var key in schema) if (rules[key]) return true;\n}\n\n\nfunction schemaHasRulesExcept(schema, rules, exceptKeyword) {\n if (typeof schema == 'boolean') return !schema && exceptKeyword != 'not';\n for (var key in schema) if (key != exceptKeyword && rules[key]) return true;\n}\n\n\nfunction schemaUnknownRules(schema, rules) {\n if (typeof schema == 'boolean') return;\n for (var key in schema) if (!rules[key]) return key;\n}\n\n\nfunction toQuotedString(str) {\n return '\\'' + escapeQuotes(str) + '\\'';\n}\n\n\nfunction getPathExpr(currentPath, expr, jsonPointers, isNumber) {\n var path = jsonPointers // false by default\n ? '\\'/\\' + ' + expr + (isNumber ? '' : '.replace(/~/g, \\'~0\\').replace(/\\\\//g, \\'~1\\')')\n : (isNumber ? '\\'[\\' + ' + expr + ' + \\']\\'' : '\\'[\\\\\\'\\' + ' + expr + ' + \\'\\\\\\']\\'');\n return joinPaths(currentPath, path);\n}\n\n\nfunction getPath(currentPath, prop, jsonPointers) {\n var path = jsonPointers // false by default\n ? toQuotedString('/' + escapeJsonPointer(prop))\n : toQuotedString(getProperty(prop));\n return joinPaths(currentPath, path);\n}\n\n\nvar JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/;\nvar RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/;\nfunction getData($data, lvl, paths) {\n var up, jsonPointer, data, matches;\n if ($data === '') return 'rootData';\n if ($data[0] == '/') {\n if (!JSON_POINTER.test($data)) throw new Error('Invalid JSON-pointer: ' + $data);\n jsonPointer = $data;\n data = 'rootData';\n } else {\n matches = $data.match(RELATIVE_JSON_POINTER);\n if (!matches) throw new Error('Invalid JSON-pointer: ' + $data);\n up = +matches[1];\n jsonPointer = matches[2];\n if (jsonPointer == '#') {\n if (up >= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i<segments.length; i++) {\n var segment = segments[i];\n if (segment) {\n data += getProperty(unescapeJsonPointer(segment));\n expr += ' && ' + data;\n }\n }\n return expr;\n}\n\n\nfunction joinPaths (a, b) {\n if (a == '\"\"') return b;\n return (a + ' + ' + b).replace(/([^\\\\])' \\+ '/g, '$1');\n}\n\n\nfunction unescapeFragment(str) {\n return unescapeJsonPointer(decodeURIComponent(str));\n}\n\n\nfunction escapeFragment(str) {\n return encodeURIComponent(escapeJsonPointer(str));\n}\n\n\nfunction escapeJsonPointer(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n\n\nfunction unescapeJsonPointer(str) {\n return str.replace(/~1/g, '/').replace(/~0/g, '~');\n}\n", "'use strict';\n\nvar util = require('./util');\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n util.copy(obj, this);\n}\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n", "'use strict';\n\nvar URI = require('uri-js')\n , equal = require('fast-deep-equal')\n , util = require('./util')\n , SchemaObject = require('./schema_obj')\n , traverse = require('json-schema-traverse');\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this Ajv\n * @param {Function} compile reference to schema compilation funciton (localCompile)\n * @param {Object} root object with information about the root schema for the current schema\n * @param {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n /* jshint validthis: true */\n var refVal = this._refs[ref];\n if (typeof refVal == 'string') {\n if (this._refs[refVal]) refVal = this._refs[refVal];\n else return resolve.call(this, compile, root, refVal);\n }\n\n refVal = refVal || this._schemas[ref];\n if (refVal instanceof SchemaObject) {\n return inlineRef(refVal.schema, this._opts.inlineRefs)\n ? refVal.schema\n : refVal.validate || this._compile(refVal);\n }\n\n var res = resolveSchema.call(this, root, ref);\n var schema, v, baseId;\n if (res) {\n schema = res.schema;\n root = res.root;\n baseId = res.baseId;\n }\n\n if (schema instanceof SchemaObject) {\n v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n } else if (schema !== undefined) {\n v = inlineRef(schema, this._opts.inlineRefs)\n ? schema\n : compile.call(this, schema, root, undefined, baseId);\n }\n\n return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param {Object} root root object with properties schema, refVal, refs\n * @param {String} ref reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n /* jshint validthis: true */\n var p = URI.parse(ref)\n , refPath = _getFullPath(p)\n , baseId = getFullPath(this._getId(root.schema));\n if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n var id = normalizeId(refPath);\n var refVal = this._refs[id];\n if (typeof refVal == 'string') {\n return resolveRecursive.call(this, root, refVal, p);\n } else if (refVal instanceof SchemaObject) {\n if (!refVal.validate) this._compile(refVal);\n root = refVal;\n } else {\n refVal = this._schemas[id];\n if (refVal instanceof SchemaObject) {\n if (!refVal.validate) this._compile(refVal);\n if (id == normalizeId(ref))\n return { schema: refVal, root: root, baseId: baseId };\n root = refVal;\n } else {\n return;\n }\n }\n if (!root.schema) return;\n baseId = getFullPath(this._getId(root.schema));\n }\n return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n /* jshint validthis: true */\n var res = resolveSchema.call(this, root, ref);\n if (res) {\n var schema = res.schema;\n var baseId = res.baseId;\n root = res.root;\n var id = this._getId(schema);\n if (id) baseId = resolveUrl(baseId, id);\n return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n /* jshint validthis: true */\n parsedRef.fragment = parsedRef.fragment || '';\n if (parsedRef.fragment.slice(0,1) != '/') return;\n var parts = parsedRef.fragment.split('/');\n\n for (var i = 1; i < parts.length; i++) {\n var part = parts[i];\n if (part) {\n part = util.unescapeFragment(part);\n schema = schema[part];\n if (schema === undefined) break;\n var id;\n if (!PREVENT_SCOPE_CHANGE[part]) {\n id = this._getId(schema);\n if (id) baseId = resolveUrl(baseId, id);\n if (schema.$ref) {\n var $ref = resolveUrl(baseId, schema.$ref);\n var res = resolveSchema.call(this, root, $ref);\n if (res) {\n schema = res.schema;\n root = res.root;\n baseId = res.baseId;\n }\n }\n }\n }\n }\n if (schema !== undefined && schema !== root.schema)\n return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n 'type', 'format', 'pattern',\n 'maxLength', 'minLength',\n 'maxProperties', 'minProperties',\n 'maxItems', 'minItems',\n 'maximum', 'minimum',\n 'uniqueItems', 'multipleOf',\n 'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n if (limit === false) return false;\n if (limit === undefined || limit === true) return checkNoRef(schema);\n else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n var item;\n if (Array.isArray(schema)) {\n for (var i=0; i<schema.length; i++) {\n item = schema[i];\n if (typeof item == 'object' && !checkNoRef(item)) return false;\n }\n } else {\n for (var key in schema) {\n if (key == '$ref') return false;\n item = schema[key];\n if (typeof item == 'object' && !checkNoRef(item)) return false;\n }\n }\n return true;\n}\n\n\nfunction countKeys(schema) {\n var count = 0, item;\n if (Array.isArray(schema)) {\n for (var i=0; i<schema.length; i++) {\n item = schema[i];\n if (typeof item == 'object') count += countKeys(item);\n if (count == Infinity) return Infinity;\n }\n } else {\n for (var key in schema) {\n if (key == '$ref') return Infinity;\n if (SIMPLE_INLINED[key]) {\n count++;\n } else {\n item = schema[key];\n if (typeof item == 'object') count += countKeys(item) + 1;\n if (count == Infinity) return Infinity;\n }\n }\n }\n return count;\n}\n\n\nfunction getFullPath(id, normalize) {\n if (normalize !== false) id = normalizeId(id);\n var p = URI.parse(id);\n return _getFullPath(p);\n}\n\n\nfunction _getFullPath(p) {\n return URI.serialize(p).split('#')[0] + '#';\n}\n\n\nvar TRAILING_SLASH_HASH = /#\\/?$/;\nfunction normalizeId(id) {\n return id ? id.replace(TRAILING_SLASH_HASH, '') : '';\n}\n\n\nfunction resolveUrl(baseId, id) {\n id = normalizeId(id);\n return URI.resolve(baseId, id);\n}\n\n\n/* @this Ajv */\nfunction resolveIds(schema) {\n var schemaId = normalizeId(this._getId(schema));\n var baseIds = {'': schemaId};\n var fullPaths = {'': getFullPath(schemaId, false)};\n var localRefs = {};\n var self = this;\n\n traverse(schema, {allKeys: true}, function(sch, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (jsonPtr === '') return;\n var id = self._getId(sch);\n var baseId = baseIds[parentJsonPtr];\n var fullPath = fullPaths[parentJsonPtr] + '/' + parentKeyword;\n if (keyIndex !== undefined)\n fullPath += '/' + (typeof keyIndex == 'number' ? keyIndex : util.escapeFragment(keyIndex));\n\n if (typeof id == 'string') {\n id = baseId = normalizeId(baseId ? URI.resolve(baseId, id) : id);\n\n var refVal = self._refs[id];\n if (typeof refVal == 'string') refVal = self._refs[refVal];\n if (refVal && refVal.schema) {\n if (!equal(sch, refVal.schema))\n throw new Error('id \"' + id + '\" resolves to more than one schema');\n } else if (id != normalizeId(fullPath)) {\n if (id[0] == '#') {\n if (localRefs[id] && !equal(sch, localRefs[id]))\n throw new Error('id \"' + id + '\" resolves to more than one schema');\n localRefs[id] = sch;\n } else {\n self._refs[id] = fullPath;\n }\n }\n }\n baseIds[jsonPtr] = baseId;\n fullPaths[jsonPtr] = fullPath;\n });\n\n return localRefs;\n}\n", "'use strict';\n\nvar resolve = require('./resolve');\n\nmodule.exports = {\n Validation: errorSubclass(ValidationError),\n MissingRef: errorSubclass(MissingRefError)\n};\n\n\nfunction ValidationError(errors) {\n this.message = 'validation failed';\n this.errors = errors;\n this.ajv = this.validation = true;\n}\n\n\nMissingRefError.message = function (baseId, ref) {\n return 'can\\'t resolve reference ' + ref + ' from id ' + baseId;\n};\n\n\nfunction MissingRefError(baseId, ref, message) {\n this.message = message || MissingRefError.message(baseId, ref);\n this.missingRef = resolve.url(baseId, ref);\n this.missingSchema = resolve.normalizeId(resolve.fullPath(this.missingRef));\n}\n\n\nfunction errorSubclass(Subclass) {\n Subclass.prototype = Object.create(Error.prototype);\n Subclass.prototype.constructor = Subclass;\n return Subclass;\n}\n", "'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n", "'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n var out = '';\n var $async = it.schema.$async === true,\n $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n $id = it.self._getId(it.schema);\n if (it.opts.strictKeywords) {\n var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n if ($unknownKwd) {\n var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n else throw new Error($keywordsMsg);\n }\n }\n if (it.isTop) {\n out += ' var validate = ';\n if ($async) {\n it.async = true;\n out += 'async ';\n }\n out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n }\n }\n if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n var $keyword = 'false schema';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n if (it.schema === false) {\n if (it.isTop) {\n $breakOnError = true;\n } else {\n out += ' var ' + ($valid) + ' = false; ';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'boolean schema is false\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n if (it.isTop) {\n if ($async) {\n out += ' return data; ';\n } else {\n out += ' validate.errors = null; return true; ';\n }\n } else {\n out += ' var ' + ($valid) + ' = true; ';\n }\n }\n if (it.isTop) {\n out += ' }; return validate; ';\n }\n return out;\n }\n if (it.isTop) {\n var $top = it.isTop,\n $lvl = it.level = 0,\n $dataLvl = it.dataLevel = 0,\n $data = 'data';\n it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n it.baseId = it.baseId || it.rootId;\n delete it.isTop;\n it.dataPathArr = [\"\"];\n if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored in the schema root';\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n out += ' var vErrors = null; ';\n out += ' var errors = 0; ';\n out += ' if (rootData === undefined) rootData = data; ';\n } else {\n var $lvl = it.level,\n $dataLvl = it.dataLevel,\n $data = 'data' + ($dataLvl || '');\n if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n if ($async && !it.async) throw new Error('async schema in sync schema');\n out += ' var errs_' + ($lvl) + ' = errors;';\n }\n var $valid = 'valid' + $lvl,\n $breakOnError = !it.opts.allErrors,\n $closingBraces1 = '',\n $closingBraces2 = '';\n var $errorKeyword;\n var $typeSchema = it.schema.type,\n $typeIsArray = Array.isArray($typeSchema);\n if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n if ($typeIsArray) {\n if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n } else if ($typeSchema != 'null') {\n $typeSchema = [$typeSchema, 'null'];\n $typeIsArray = true;\n }\n }\n if ($typeIsArray && $typeSchema.length == 1) {\n $typeSchema = $typeSchema[0];\n $typeIsArray = false;\n }\n if (it.schema.$ref && $refKeywords) {\n if (it.opts.extendRefs == 'fail') {\n throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n } else if (it.opts.extendRefs !== true) {\n $refKeywords = false;\n it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n if (it.schema.$comment && it.opts.$comment) {\n out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n }\n if ($typeSchema) {\n if (it.opts.coerceTypes) {\n var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n }\n var $rulesGroup = it.RULES.types[$typeSchema];\n if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type',\n $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n if ($coerceToTypes) {\n var $dataType = 'dataType' + $lvl,\n $coerced = 'coerced' + $lvl;\n out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; var ' + ($coerced) + ' = undefined; ';\n if (it.opts.coerceTypes == 'array') {\n out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ') && ' + ($data) + '.length == 1) { ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; if (' + (it.util.checkDataType(it.schema.type, $data, it.opts.strictNumbers)) + ') ' + ($coerced) + ' = ' + ($data) + '; } ';\n }\n out += ' if (' + ($coerced) + ' !== undefined) ; ';\n var arr1 = $coerceToTypes;\n if (arr1) {\n var $type, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $type = arr1[$i += 1];\n if ($type == 'string') {\n out += ' else if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n } else if ($type == 'number' || $type == 'integer') {\n out += ' else if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n if ($type == 'integer') {\n out += ' && !(' + ($data) + ' % 1)';\n }\n out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n } else if ($type == 'boolean') {\n out += ' else if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n } else if ($type == 'null') {\n out += ' else if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n out += ' else if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n }\n }\n }\n out += ' else { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } if (' + ($coerced) + ' !== undefined) { ';\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n if (!$dataLvl) {\n out += 'if (' + ($parentData) + ' !== undefined)';\n }\n out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n }\n out += ' } ';\n }\n }\n if (it.schema.$ref && !$refKeywords) {\n out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n if ($breakOnError) {\n out += ' } if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n } else {\n var arr2 = it.RULES;\n if (arr2) {\n var $rulesGroup, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $rulesGroup = arr2[i2 += 1];\n if ($shouldUseGroup($rulesGroup)) {\n if ($rulesGroup.type) {\n out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n }\n if (it.opts.useDefaults) {\n if ($rulesGroup.type == 'object' && it.schema.properties) {\n var $schema = it.schema.properties,\n $schemaKeys = Object.keys($schema);\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ($sch.default !== undefined) {\n var $passData = $data + it.util.getProperty($propertyKey);\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n var arr4 = it.schema.items;\n if (arr4) {\n var $sch, $i = -1,\n l4 = arr4.length - 1;\n while ($i < l4) {\n $sch = arr4[$i += 1];\n if ($sch.default !== undefined) {\n var $passData = $data + '[' + $i + ']';\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n }\n }\n var arr5 = $rulesGroup.rules;\n if (arr5) {\n var $rule, i5 = -1,\n l5 = arr5.length - 1;\n while (i5 < l5) {\n $rule = arr5[i5 += 1];\n if ($shouldUseRule($rule)) {\n var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n if ($code) {\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n $closingBraces1 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces1) + ' ';\n $closingBraces1 = '';\n }\n if ($rulesGroup.type) {\n out += ' } ';\n if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n out += ' else { ';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces2) + ' ';\n }\n if ($top) {\n if ($async) {\n out += ' if (errors === 0) return data; ';\n out += ' else throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; ';\n out += ' return errors === 0; ';\n }\n out += ' }; return validate;';\n } else {\n out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n }\n\n function $shouldUseGroup($rulesGroup) {\n var rules = $rulesGroup.rules;\n for (var i = 0; i < rules.length; i++)\n if ($shouldUseRule(rules[i])) return true;\n }\n\n function $shouldUseRule($rule) {\n return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n }\n\n function $ruleImplementsSomeKeyword($rule) {\n var impl = $rule.implements;\n for (var i = 0; i < impl.length; i++)\n if (it.schema[impl[i]] !== undefined) return true;\n }\n return out;\n}\n", "'use strict';\n\nvar resolve = require('./resolve')\n , util = require('./util')\n , errorClasses = require('./error_classes')\n , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Object} root object with information about the root schema for this schema\n * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n /* jshint validthis: true, evil: true */\n /* eslint no-shadow: 0 */\n var self = this\n , opts = this._opts\n , refVal = [ undefined ]\n , refs = {}\n , patterns = []\n , patternsHash = {}\n , defaults = []\n , defaultsHash = {}\n , customRules = [];\n\n root = root || { schema: schema, refVal: refVal, refs: refs };\n\n var c = checkCompiling.call(this, schema, root, baseId);\n var compilation = this._compilations[c.index];\n if (c.compiling) return (compilation.callValidate = callValidate);\n\n var formats = this._formats;\n var RULES = this.RULES;\n\n try {\n var v = localCompile(schema, root, localRefs, baseId);\n compilation.validate = v;\n var cv = compilation.callValidate;\n if (cv) {\n cv.schema = v.schema;\n cv.errors = null;\n cv.refs = v.refs;\n cv.refVal = v.refVal;\n cv.root = v.root;\n cv.$async = v.$async;\n if (opts.sourceCode) cv.source = v.source;\n }\n return v;\n } finally {\n endCompiling.call(this, schema, root, baseId);\n }\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var validate = compilation.validate;\n var result = validate.apply(this, arguments);\n callValidate.errors = validate.errors;\n return result;\n }\n\n function localCompile(_schema, _root, localRefs, baseId) {\n var isRoot = !_root || (_root && _root.schema == _schema);\n if (_root.schema != root.schema)\n return compile.call(self, _schema, _root, localRefs, baseId);\n\n var $async = _schema.$async === true;\n\n var sourceCode = validateGenerator({\n isTop: true,\n schema: _schema,\n isRoot: isRoot,\n baseId: baseId,\n root: _root,\n schemaPath: '',\n errSchemaPath: '#',\n errorPath: '\"\"',\n MissingRefError: errorClasses.MissingRef,\n RULES: RULES,\n validate: validateGenerator,\n util: util,\n resolve: resolve,\n resolveRef: resolveRef,\n usePattern: usePattern,\n useDefault: useDefault,\n useCustomRule: useCustomRule,\n opts: opts,\n formats: formats,\n logger: self.logger,\n self: self\n });\n\n sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n + sourceCode;\n\n if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n var validate;\n try {\n var makeValidate = new Function(\n 'self',\n 'RULES',\n 'formats',\n 'root',\n 'refVal',\n 'defaults',\n 'customRules',\n 'equal',\n 'ucs2length',\n 'ValidationError',\n sourceCode\n );\n\n validate = makeValidate(\n self,\n RULES,\n formats,\n root,\n refVal,\n defaults,\n customRules,\n equal,\n ucs2length,\n ValidationError\n );\n\n refVal[0] = validate;\n } catch(e) {\n self.logger.error('Error compiling schema, function code:', sourceCode);\n throw e;\n }\n\n validate.schema = _schema;\n validate.errors = null;\n validate.refs = refs;\n validate.refVal = refVal;\n validate.root = isRoot ? validate : _root;\n if ($async) validate.$async = true;\n if (opts.sourceCode === true) {\n validate.source = {\n code: sourceCode,\n patterns: patterns,\n defaults: defaults\n };\n }\n\n return validate;\n }\n\n function resolveRef(baseId, ref, isRoot) {\n ref = resolve.url(baseId, ref);\n var refIndex = refs[ref];\n var _refVal, refCode;\n if (refIndex !== undefined) {\n _refVal = refVal[refIndex];\n refCode = 'refVal[' + refIndex + ']';\n return resolvedRef(_refVal, refCode);\n }\n if (!isRoot && root.refs) {\n var rootRefId = root.refs[ref];\n if (rootRefId !== undefined) {\n _refVal = root.refVal[rootRefId];\n refCode = addLocalRef(ref, _refVal);\n return resolvedRef(_refVal, refCode);\n }\n }\n\n refCode = addLocalRef(ref);\n var v = resolve.call(self, localCompile, root, ref);\n if (v === undefined) {\n var localSchema = localRefs && localRefs[ref];\n if (localSchema) {\n v = resolve.inlineRef(localSchema, opts.inlineRefs)\n ? localSchema\n : compile.call(self, localSchema, root, localRefs, baseId);\n }\n }\n\n if (v === undefined) {\n removeLocalRef(ref);\n } else {\n replaceLocalRef(ref, v);\n return resolvedRef(v, refCode);\n }\n }\n\n function addLocalRef(ref, v) {\n var refId = refVal.length;\n refVal[refId] = v;\n refs[ref] = refId;\n return 'refVal' + refId;\n }\n\n function removeLocalRef(ref) {\n delete refs[ref];\n }\n\n function replaceLocalRef(ref, v) {\n var refId = refs[ref];\n refVal[refId] = v;\n }\n\n function resolvedRef(refVal, code) {\n return typeof refVal == 'object' || typeof refVal == 'boolean'\n ? { code: code, schema: refVal, inline: true }\n : { code: code, $async: refVal && !!refVal.$async };\n }\n\n function usePattern(regexStr) {\n var index = patternsHash[regexStr];\n if (index === undefined) {\n index = patternsHash[regexStr] = patterns.length;\n patterns[index] = regexStr;\n }\n return 'pattern' + index;\n }\n\n function useDefault(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n return '' + value;\n case 'string':\n return util.toQuotedString(value);\n case 'object':\n if (value === null) return 'null';\n var valueStr = stableStringify(value);\n var index = defaultsHash[valueStr];\n if (index === undefined) {\n index = defaultsHash[valueStr] = defaults.length;\n defaults[index] = value;\n }\n return 'default' + index;\n }\n }\n\n function useCustomRule(rule, schema, parentSchema, it) {\n if (self._opts.validateSchema !== false) {\n var deps = rule.definition.dependencies;\n if (deps && !deps.every(function(keyword) {\n return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n }))\n throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n var validateSchema = rule.definition.validateSchema;\n if (validateSchema) {\n var valid = validateSchema(schema);\n if (!valid) {\n var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n if (self._opts.validateSchema == 'log') self.logger.error(message);\n else throw new Error(message);\n }\n }\n }\n\n var compile = rule.definition.compile\n , inline = rule.definition.inline\n , macro = rule.definition.macro;\n\n var validate;\n if (compile) {\n validate = compile.call(self, schema, parentSchema, it);\n } else if (macro) {\n validate = macro.call(self, schema, parentSchema, it);\n if (opts.validateSchema !== false) self.validateSchema(validate, true);\n } else if (inline) {\n validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n } else {\n validate = rule.definition.validate;\n if (!validate) return;\n }\n\n if (validate === undefined)\n throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n var index = customRules.length;\n customRules[index] = validate;\n\n return {\n code: 'customRule' + index,\n validate: validate\n };\n }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var index = compIndex.call(this, schema, root, baseId);\n if (index >= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i<this._compilations.length; i++) {\n var c = this._compilations[i];\n if (c.schema == schema && c.root == root && c.baseId == baseId) return i;\n }\n return -1;\n}\n\n\nfunction patternCode(i, patterns) {\n return 'var pattern' + i + ' = new RegExp(' + util.toQuotedString(patterns[i]) + ');';\n}\n\n\nfunction defaultCode(i) {\n return 'var default' + i + ' = defaults[' + i + '];';\n}\n\n\nfunction refValCode(i, refVal) {\n return refVal[i] === undefined ? '' : 'var refVal' + i + ' = refVal[' + i + '];';\n}\n\n\nfunction customRuleCode(i) {\n return 'var customRule' + i + ' = customRules[' + i + '];';\n}\n\n\nfunction vars(arr, statement) {\n if (!arr.length) return '';\n var code = '';\n for (var i=0; i<arr.length; i++)\n code += statement(i, arr);\n return code;\n}\n", "'use strict';\n\n\nvar Cache = module.exports = function Cache() {\n this._cache = {};\n};\n\n\nCache.prototype.put = function Cache_put(key, value) {\n this._cache[key] = value;\n};\n\n\nCache.prototype.get = function Cache_get(key) {\n return this._cache[key];\n};\n\n\nCache.prototype.del = function Cache_del(key) {\n delete this._cache[key];\n};\n\n\nCache.prototype.clear = function Cache_clear() {\n this._cache = {};\n};\n", "'use strict';\n\nvar util = require('./util');\n\nvar DATE = /^(\\d\\d\\d\\d)-(\\d\\d)-(\\d\\d)$/;\nvar DAYS = [0,31,28,31,30,31,30,31,31,30,31,30,31];\nvar TIME = /^(\\d\\d):(\\d\\d):(\\d\\d)(\\.\\d+)?(z|[+-]\\d\\d(?::?\\d\\d)?)?$/i;\nvar HOSTNAME = /^(?=.{1,253}\\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\\.?$/i;\nvar URI = /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\\?(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\nvar URIREF = /^(?:[a-z][a-z0-9+\\-.]*:)?(?:\\/?\\/(?:(?:[a-z0-9\\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\\.[a-z0-9\\-._~!$&'()*+,;=:]+)\\]|(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)|(?:[a-z0-9\\-._~!$&'\"()*+,;=]|%[0-9a-f]{2})*)(?::\\d*)?(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*|\\/(?:(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})+(?:\\/(?:[a-z0-9\\-._~!$&'\"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\\?(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\\-._~!$&'\"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;\n// uri-template: https://tools.ietf.org/html/rfc6570\nvar URITEMPLATE = /^(?:(?:[^\\x00-\\x20\"'<>%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-)*(?:[0-9a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[a-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+\\-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+\\-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n", "'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $async, $refCode;\n if ($schema == '#' || $schema == '#/') {\n if (it.isRoot) {\n $async = it.async;\n $refCode = 'validate';\n } else {\n $async = it.root.schema.$async === true;\n $refCode = 'root.refVal[0]';\n }\n } else {\n var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n if ($refVal === undefined) {\n var $message = it.MissingRefError.message(it.baseId, $schema);\n if (it.opts.missingRefs == 'fail') {\n it.logger.error($message);\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n } else if (it.opts.missingRefs == 'ignore') {\n it.logger.warn($message);\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n throw new it.MissingRefError(it.baseId, $schema, $message);\n }\n } else if ($refVal.inline) {\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $refVal.schema;\n $it.schemaPath = '';\n $it.errSchemaPath = $schema;\n var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n }\n } else {\n $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n $refCode = $refVal.code;\n }\n }\n if ($refCode) {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n if (it.opts.passContext) {\n out += ' ' + ($refCode) + '.call(this, ';\n } else {\n out += ' ' + ($refCode) + '( ';\n }\n out += ' ' + ($data) + ', (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';\n var __callValidate = out;\n out = $$outStack.pop();\n if ($async) {\n if (!it.async) throw new Error('async schema referenced by sync schema');\n if ($breakOnError) {\n out += ' var ' + ($valid) + '; ';\n }\n out += ' try { await ' + (__callValidate) + '; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = true; ';\n }\n out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = false; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($valid) + ') { ';\n }\n } else {\n out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $schemaDeps = {},\n $propertyDeps = {},\n $ownProperties = it.opts.ownProperties;\n for ($property in $schema) {\n if ($property == '__proto__') continue;\n var $sch = $schema[$property];\n var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n $deps[$property] = $sch;\n }\n out += 'var ' + ($errs) + ' = errors;';\n var $currentErrorPath = it.errorPath;\n out += 'var missing' + ($lvl) + ';';\n for (var $property in $propertyDeps) {\n $deps = $propertyDeps[$property];\n if ($deps.length) {\n out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n if ($breakOnError) {\n out += ' && ( ';\n var arr1 = $deps;\n if (arr1) {\n var $propertyKey, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $propertyKey = arr1[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ')) { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n out += ' ) { ';\n var arr2 = $deps;\n if (arr2) {\n var $propertyKey, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $propertyKey = arr2[i2 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n out += ' } ';\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n var $currentBaseId = $it.baseId;\n for (var $property in $schemaDeps) {\n var $sch = $schemaDeps[$property];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? (typeof $thenSch == 'object' && Object.keys($thenSch).length > 0) || $thenSch === false : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? (typeof $elseSch == 'object' && Object.keys($elseSch).length > 0) || $elseSch === false : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? (typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0) || $additionalItems === false : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $isMax = $keyword == 'maximum',\n $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n $schemaExcl = it.schema[$exclusiveKeyword],\n $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n $op = $isMax ? '<' : '>',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? (typeof $sch == 'object' && Object.keys($sch).length > 0) || $sch === false : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? (typeof $schema == 'object' && Object.keys($schema).length > 0) || $schema === false : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + '<errors; ' + ($i) + '++) { vErrors[' + ($i) + '].propertyName = ' + ($key) + '; } var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('propertyNames') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { propertyName: \\'' + ($invalidName) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'property name \\\\\\'' + ($invalidName) + '\\\\\\' is invalid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n if ($breakOnError) {\n out += ' break; ';\n }\n out += ' } }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_required(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $vSchema = 'schema' + $lvl;\n if (!$isData) {\n if ($schema.length < it.opts.loopRequired && it.schema.properties && Object.keys(it.schema.properties).length) {\n var $required = [];\n var arr1 = $schema;\n if (arr1) {\n var $property, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $property = arr1[i1 += 1];\n var $propertySch = it.schema.properties[$property];\n if (!($propertySch && (it.opts.strictKeywords ? (typeof $propertySch == 'object' && Object.keys($propertySch).length > 0) || $propertySch === false : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n", "'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n", "'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n", "'use strict';\n\nvar ruleModules = require('../dotjs')\n , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n var RULES = [\n { type: 'number',\n rules: [ { 'maximum': ['exclusiveMaximum'] },\n { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n { type: 'string',\n rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n { type: 'array',\n rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n { type: 'object',\n rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n ];\n\n var ALL = [ 'type', '$comment' ];\n var KEYWORDS = [\n '$schema', '$id', 'id', '$data', '$async', 'title',\n 'description', 'default', 'definitions',\n 'examples', 'readOnly', 'writeOnly',\n 'contentMediaType', 'contentEncoding',\n 'additionalItems', 'then', 'else'\n ];\n var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n RULES.all = toHash(ALL);\n RULES.types = toHash(TYPES);\n\n RULES.forEach(function (group) {\n group.rules = group.rules.map(function (keyword) {\n var implKeywords;\n if (typeof keyword == 'object') {\n var key = Object.keys(keyword)[0];\n implKeywords = keyword[key];\n keyword = key;\n implKeywords.forEach(function (k) {\n ALL.push(k);\n RULES.all[k] = true;\n });\n }\n ALL.push(keyword);\n var rule = RULES.all[keyword] = {\n keyword: keyword,\n code: ruleModules[keyword],\n implements: implKeywords\n };\n return rule;\n });\n\n RULES.all.$comment = {\n keyword: '$comment',\n code: ruleModules.$comment\n };\n\n if (group.type) RULES.types[group.type] = group;\n });\n\n RULES.keywords = toHash(ALL.concat(KEYWORDS));\n RULES.custom = {};\n\n return RULES;\n};\n", "'use strict';\n\nvar KEYWORDS = [\n 'multipleOf',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'additionalItems',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'maxProperties',\n 'minProperties',\n 'required',\n 'additionalProperties',\n 'enum',\n 'format',\n 'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n for (var i=0; i<keywordsJsonPointers.length; i++) {\n metaSchema = JSON.parse(JSON.stringify(metaSchema));\n var segments = keywordsJsonPointers[i].split('/');\n var keywords = metaSchema;\n var j;\n for (j=1; j<segments.length; j++)\n keywords = keywords[segments[j]];\n\n for (j=0; j<KEYWORDS.length; j++) {\n var key = KEYWORDS[j];\n var schema = keywords[key];\n if (schema) {\n keywords[key] = {\n anyOf: [\n schema,\n { $ref: 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n ]\n };\n }\n }\n }\n\n return metaSchema;\n};\n", "'use strict';\n\nvar MissingRefError = require('./error_classes').MissingRef;\n\nmodule.exports = compileAsync;\n\n\n/**\n * Creates validating function for passed schema with asynchronous loading of missing schemas.\n * `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} meta optional true to compile meta-schema; this parameter can be skipped\n * @param {Function} callback an optional node-style callback, it is called with 2 parameters: error (or null) and validating function.\n * @return {Promise} promise that resolves with a validating function.\n */\nfunction compileAsync(schema, meta, callback) {\n /* eslint no-shadow: 0 */\n /* global Promise */\n /* jshint validthis: true */\n var self = this;\n if (typeof this._opts.loadSchema != 'function')\n throw new Error('options.loadSchema should be a function');\n\n if (typeof meta == 'function') {\n callback = meta;\n meta = undefined;\n }\n\n var p = loadMetaSchemaOf(schema).then(function () {\n var schemaObj = self._addSchema(schema, undefined, meta);\n return schemaObj.validate || _compileAsync(schemaObj);\n });\n\n if (callback) {\n p.then(\n function(v) { callback(null, v); },\n callback\n );\n }\n\n return p;\n\n\n function loadMetaSchemaOf(sch) {\n var $schema = sch.$schema;\n return $schema && !self.getSchema($schema)\n ? compileAsync.call(self, { $ref: $schema }, true)\n : Promise.resolve();\n }\n\n\n function _compileAsync(schemaObj) {\n try { return self._compile(schemaObj); }\n catch(e) {\n if (e instanceof MissingRefError) return loadMissingSchema(e);\n throw e;\n }\n\n\n function loadMissingSchema(e) {\n var ref = e.missingSchema;\n if (added(ref)) throw new Error('Schema ' + ref + ' is loaded but ' + e.missingRef + ' cannot be resolved');\n\n var schemaPromise = self._loadingSchemas[ref];\n if (!schemaPromise) {\n schemaPromise = self._loadingSchemas[ref] = self._opts.loadSchema(ref);\n schemaPromise.then(removePromise, removePromise);\n }\n\n return schemaPromise.then(function (sch) {\n if (!added(ref)) {\n return loadMetaSchemaOf(sch).then(function () {\n if (!added(ref)) self.addSchema(sch, ref, undefined, meta);\n });\n }\n }).then(function() {\n return _compileAsync(schemaObj);\n });\n\n function removePromise() {\n delete self._loadingSchemas[ref];\n }\n\n function added(ref) {\n return self._refs[ref] || self._schemas[ref];\n }\n }\n }\n}\n", "'use strict';\nmodule.exports = function generate_custom(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $rule = this,\n $definition = 'definition' + $lvl,\n $rDef = $rule.definition,\n $closingBraces = '';\n var $compile, $inline, $macro, $ruleValidate, $validateCode;\n if ($isData && $rDef.$data) {\n $validateCode = 'keywordValidate' + $lvl;\n var $validateSchema = $rDef.validateSchema;\n out += ' var ' + ($definition) + ' = RULES.custom[\\'' + ($keyword) + '\\'].definition; var ' + ($validateCode) + ' = ' + ($definition) + '.validate;';\n } else {\n $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);\n if (!$ruleValidate) return;\n $schemaValue = 'validate.schema' + $schemaPath;\n $validateCode = $ruleValidate.code;\n $compile = $rDef.compile;\n $inline = $rDef.inline;\n $macro = $rDef.macro;\n }\n var $ruleErrs = $validateCode + '.errors',\n $i = 'i' + $lvl,\n $ruleErr = 'ruleErr' + $lvl,\n $asyncKeyword = $rDef.async;\n if ($asyncKeyword && !it.async) throw new Error('async keyword in sync schema');\n if (!($inline || $macro)) {\n out += '' + ($ruleErrs) + ' = null;';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($isData && $rDef.$data) {\n $closingBraces += '}';\n out += ' if (' + ($schemaValue) + ' === undefined) { ' + ($valid) + ' = true; } else { ';\n if ($validateSchema) {\n $closingBraces += '}';\n out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') { ';\n }\n }\n if ($inline) {\n if ($rDef.statements) {\n out += ' ' + ($ruleValidate.validate) + ' ';\n } else {\n out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';\n }\n } else if ($macro) {\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $ruleValidate.validate;\n $it.schemaPath = '';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it).replace(/validate\\.schema/g, $validateCode);\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($code);\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n out += ' ' + ($validateCode) + '.call( ';\n if (it.opts.passContext) {\n out += 'this';\n } else {\n out += 'self';\n }\n if ($compile || $rDef.schema === false) {\n out += ' , ' + ($data) + ' ';\n } else {\n out += ' , ' + ($schemaValue) + ' , ' + ($data) + ' , validate.schema' + (it.schemaPath) + ' ';\n }\n out += ' , (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData ) ';\n var def_callRuleValidate = out;\n out = $$outStack.pop();\n if ($rDef.errors === false) {\n out += ' ' + ($valid) + ' = ';\n if ($asyncKeyword) {\n out += 'await ';\n }\n out += '' + (def_callRuleValidate) + '; ';\n } else {\n if ($asyncKeyword) {\n $ruleErrs = 'customErrors' + $lvl;\n out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = await ' + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';\n } else {\n out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';\n }\n }\n }\n if ($rDef.modifying) {\n out += ' if (' + ($parentData) + ') ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';\n }\n out += '' + ($closingBraces);\n if ($rDef.valid) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n out += ' if ( ';\n if ($rDef.valid === undefined) {\n out += ' !';\n if ($macro) {\n out += '' + ($nextValid);\n } else {\n out += '' + ($valid);\n }\n } else {\n out += ' ' + (!$rDef.valid) + ' ';\n }\n out += ') { ';\n $errorKeyword = $rule.keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n var def_customError = out;\n out = $$outStack.pop();\n if ($inline) {\n if ($rDef.errors) {\n if ($rDef.errors != 'full') {\n out += ' for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n if (it.opts.verbose) {\n out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n }\n out += ' } ';\n }\n } else {\n if ($rDef.errors === false) {\n out += ' ' + (def_customError) + ' ';\n } else {\n out += ' if (' + ($errs) + ' == errors) { ' + (def_customError) + ' } else { for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; if (' + ($ruleErr) + '.schemaPath === undefined) { ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; } ';\n if (it.opts.verbose) {\n out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n }\n out += ' } } ';\n }\n }\n } else if ($macro) {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'custom') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \\'' + ($rule.keyword) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should pass \"' + ($rule.keyword) + '\" keyword validation\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n } else {\n if ($rDef.errors === false) {\n out += ' ' + (def_customError) + ' ';\n } else {\n out += ' if (Array.isArray(' + ($ruleErrs) + ')) { if (vErrors === null) vErrors = ' + ($ruleErrs) + '; else vErrors = vErrors.concat(' + ($ruleErrs) + '); errors = vErrors.length; for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '<errors; ' + ($i) + '++) { var ' + ($ruleErr) + ' = vErrors[' + ($i) + ']; if (' + ($ruleErr) + '.dataPath === undefined) ' + ($ruleErr) + '.dataPath = (dataPath || \\'\\') + ' + (it.errorPath) + '; ' + ($ruleErr) + '.schemaPath = \"' + ($errSchemaPath) + '\"; ';\n if (it.opts.verbose) {\n out += ' ' + ($ruleErr) + '.schema = ' + ($schemaValue) + '; ' + ($ruleErr) + '.data = ' + ($data) + '; ';\n }\n out += ' } } else { ' + (def_customError) + ' } ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n return out;\n}\n", "'use strict';\n\nvar metaSchema = require('./refs/json-schema-draft-07.json');\n\nmodule.exports = {\n $id: 'https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js',\n definitions: {\n simpleTypes: metaSchema.definitions.simpleTypes\n },\n type: 'object',\n dependencies: {\n schema: ['validate'],\n $data: ['validate'],\n statements: ['inline'],\n valid: {not: {required: ['macro']}}\n },\n properties: {\n type: metaSchema.properties.type,\n schema: {type: 'boolean'},\n statements: {type: 'boolean'},\n dependencies: {\n type: 'array',\n items: {type: 'string'}\n },\n metaSchema: {type: 'object'},\n modifying: {type: 'boolean'},\n valid: {type: 'boolean'},\n $data: {type: 'boolean'},\n async: {type: 'boolean'},\n errors: {\n anyOf: [\n {type: 'boolean'},\n {const: 'full'}\n ]\n }\n }\n};\n", "'use strict';\n\nvar IDENTIFIER = /^[a-z_$][a-z0-9_$-]*$/i;\nvar customRuleCode = require('./dotjs/custom');\nvar definitionSchema = require('./definition_schema');\n\nmodule.exports = {\n add: addKeyword,\n get: getKeyword,\n remove: removeKeyword,\n validate: validateKeyword\n};\n\n\n/**\n * Define custom keyword\n * @this Ajv\n * @param {String} keyword custom keyword, should be unique (including different from all standard, custom and macro keywords).\n * @param {Object} definition keyword definition object with properties `type` (type(s) which the keyword applies to), `validate` or `compile`.\n * @return {Ajv} this for method chaining\n */\nfunction addKeyword(keyword, definition) {\n /* jshint validthis: true */\n /* eslint no-shadow: 0 */\n var RULES = this.RULES;\n if (RULES.keywords[keyword])\n throw new Error('Keyword ' + keyword + ' is already defined');\n\n if (!IDENTIFIER.test(keyword))\n throw new Error('Keyword ' + keyword + ' is not a valid identifier');\n\n if (definition) {\n this.validateKeyword(definition, true);\n\n var dataType = definition.type;\n if (Array.isArray(dataType)) {\n for (var i=0; i<dataType.length; i++)\n _addRule(keyword, dataType[i], definition);\n } else {\n _addRule(keyword, dataType, definition);\n }\n\n var metaSchema = definition.metaSchema;\n if (metaSchema) {\n if (definition.$data && this._opts.$data) {\n metaSchema = {\n anyOf: [\n metaSchema,\n { '$ref': 'https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#' }\n ]\n };\n }\n definition.validateSchema = this.compile(metaSchema, true);\n }\n }\n\n RULES.keywords[keyword] = RULES.all[keyword] = true;\n\n\n function _addRule(keyword, dataType, definition) {\n var ruleGroup;\n for (var i=0; i<RULES.length; i++) {\n var rg = RULES[i];\n if (rg.type == dataType) {\n ruleGroup = rg;\n break;\n }\n }\n\n if (!ruleGroup) {\n ruleGroup = { type: dataType, rules: [] };\n RULES.push(ruleGroup);\n }\n\n var rule = {\n keyword: keyword,\n definition: definition,\n custom: true,\n code: customRuleCode,\n implements: definition.implements\n };\n ruleGroup.rules.push(rule);\n RULES.custom[keyword] = rule;\n }\n\n return this;\n}\n\n\n/**\n * Get keyword\n * @this Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Object|Boolean} custom keyword definition, `true` if it is a predefined keyword, `false` otherwise.\n */\nfunction getKeyword(keyword) {\n /* jshint validthis: true */\n var rule = this.RULES.custom[keyword];\n return rule ? rule.definition : this.RULES.keywords[keyword] || false;\n}\n\n\n/**\n * Remove keyword\n * @this Ajv\n * @param {String} keyword pre-defined or custom keyword.\n * @return {Ajv} this for method chaining\n */\nfunction removeKeyword(keyword) {\n /* jshint validthis: true */\n var RULES = this.RULES;\n delete RULES.keywords[keyword];\n delete RULES.all[keyword];\n delete RULES.custom[keyword];\n for (var i=0; i<RULES.length; i++) {\n var rules = RULES[i].rules;\n for (var j=0; j<rules.length; j++) {\n if (rules[j].keyword == keyword) {\n rules.splice(j, 1);\n break;\n }\n }\n }\n return this;\n}\n\n\n/**\n * Validate keyword definition\n * @this Ajv\n * @param {Object} definition keyword definition object.\n * @param {Boolean} throwError true to throw exception if definition is invalid\n * @return {boolean} validation result\n */\nfunction validateKeyword(definition, throwError) {\n validateKeyword.errors = null;\n var v = this._validateKeyword = this._validateKeyword\n || this.compile(definitionSchema, true);\n\n if (v(definition)) return true;\n validateKeyword.errors = v.errors;\n if (throwError)\n throw new Error('custom keyword definition is invalid: ' + this.errorsText(v.errors));\n else\n return false;\n}\n", "'use strict';\n\nvar compileSchema = require('./compile')\n , resolve = require('./compile/resolve')\n , Cache = require('./cache')\n , SchemaObject = require('./compile/schema_obj')\n , stableStringify = require('fast-json-stable-stringify')\n , formats = require('./compile/formats')\n , rules = require('./compile/rules')\n , $dataMetaSchema = require('./data')\n , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n\n this._cache = opts.cache || new Cache;\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n var v;\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)){\n for (var i=0; i<schema.length; i++) this.addSchema(schema[i], undefined, _skipValidation, _meta);\n return this;\n }\n var id = this._getId(schema);\n if (id !== undefined && typeof id != 'string')\n throw new Error('schema id must be string');\n key = resolve.normalizeId(key || id);\n checkUnique(this, key);\n this._schemas[key] = this._addSchema(schema, _skipValidation, _meta, true);\n return this;\n}\n\n\n/**\n * Add schema that will be used to validate other schemas\n * options in META_IGNORE_OPTIONS are alway set to false\n * @this Ajv\n * @param {Object} schema schema object\n * @param {String} key optional schema key\n * @param {Boolean} skipValidation true to skip schema validation, can be used to override validateSchema option for meta-schema\n * @return {Ajv} this for method chaining\n */\nfunction addMetaSchema(schema, key, skipValidation) {\n this.addSchema(schema, key, skipValidation, true);\n return this;\n}\n\n\n/**\n * Validate schema\n * @this Ajv\n * @param {Object} schema schema to validate\n * @param {Boolean} throwOrLogError pass true to throw (or log) an error if invalid\n * @return {Boolean} true if schema is valid\n */\nfunction validateSchema(schema, throwOrLogError) {\n var $schema = schema.$schema;\n if ($schema !== undefined && typeof $schema != 'string')\n throw new Error('$schema must be a string');\n $schema = $schema || this._opts.defaultMeta || defaultMeta(this);\n if (!$schema) {\n this.logger.warn('meta-schema not available');\n this.errors = null;\n return true;\n }\n var valid = this.validate($schema, schema);\n if (!valid && throwOrLogError) {\n var message = 'schema is invalid: ' + this.errorsText();\n if (this._opts.validateSchema == 'log') this.logger.error(message);\n else throw new Error(message);\n }\n return valid;\n}\n\n\nfunction defaultMeta(self) {\n var meta = self._opts.meta;\n self._opts.defaultMeta = typeof meta == 'object'\n ? self._getId(meta) || meta\n : self.getSchema(META_SCHEMA_ID)\n ? META_SCHEMA_ID\n : undefined;\n return self._opts.defaultMeta;\n}\n\n\n/**\n * Get compiled schema from the instance by `key` or `ref`.\n * @this Ajv\n * @param {String} keyRef `key` that was passed to `addSchema` or full schema reference (`schema.id` or resolved id).\n * @return {Function} schema validating function (with property `schema`).\n */\nfunction getSchema(keyRef) {\n var schemaObj = _getSchemaObj(this, keyRef);\n switch (typeof schemaObj) {\n case 'object': return schemaObj.validate || this._compile(schemaObj);\n case 'string': return this.getSchema(schemaObj);\n case 'undefined': return _getSchemaFragment(this, keyRef);\n }\n}\n\n\nfunction _getSchemaFragment(self, ref) {\n var res = resolve.schema.call(self, { schema: {} }, ref);\n if (res) {\n var schema = res.schema\n , root = res.root\n , baseId = res.baseId;\n var v = compileSchema.call(self, schema, root, undefined, baseId);\n self._fragments[ref] = new SchemaObject({\n ref: ref,\n fragment: true,\n schema: schema,\n root: root,\n baseId: baseId,\n validate: v\n });\n return v;\n }\n}\n\n\nfunction _getSchemaObj(self, keyRef) {\n keyRef = resolve.normalizeId(keyRef);\n return self._schemas[keyRef] || self._refs[keyRef] || self._fragments[keyRef];\n}\n\n\n/**\n * Remove cached schema(s).\n * If no parameter is passed all schemas but meta-schemas are removed.\n * If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n * Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n * @this Ajv\n * @param {String|Object|RegExp} schemaKeyRef key, ref, pattern to match key/ref or schema object\n * @return {Ajv} this for method chaining\n */\nfunction removeSchema(schemaKeyRef) {\n if (schemaKeyRef instanceof RegExp) {\n _removeAllSchemas(this, this._schemas, schemaKeyRef);\n _removeAllSchemas(this, this._refs, schemaKeyRef);\n return this;\n }\n switch (typeof schemaKeyRef) {\n case 'undefined':\n _removeAllSchemas(this, this._schemas);\n _removeAllSchemas(this, this._refs);\n this._cache.clear();\n return this;\n case 'string':\n var schemaObj = _getSchemaObj(this, schemaKeyRef);\n if (schemaObj) this._cache.del(schemaObj.cacheKey);\n delete this._schemas[schemaKeyRef];\n delete this._refs[schemaKeyRef];\n return this;\n case 'object':\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schemaKeyRef) : schemaKeyRef;\n this._cache.del(cacheKey);\n var id = this._getId(schemaKeyRef);\n if (id) {\n id = resolve.normalizeId(id);\n delete this._schemas[id];\n delete this._refs[id];\n }\n }\n return this;\n}\n\n\nfunction _removeAllSchemas(self, schemas, regex) {\n for (var keyRef in schemas) {\n var schemaObj = schemas[keyRef];\n if (!schemaObj.meta && (!regex || regex.test(keyRef))) {\n self._cache.del(schemaObj.cacheKey);\n delete schemas[keyRef];\n }\n }\n}\n\n\n/* @this Ajv */\nfunction _addSchema(schema, skipValidation, meta, shouldAddSchema) {\n if (typeof schema != 'object' && typeof schema != 'boolean')\n throw new Error('schema should be object or boolean');\n var serialize = this._opts.serialize;\n var cacheKey = serialize ? serialize(schema) : schema;\n var cached = this._cache.get(cacheKey);\n if (cached) return cached;\n\n shouldAddSchema = shouldAddSchema || this._opts.addUsedSchema !== false;\n\n var id = resolve.normalizeId(this._getId(schema));\n if (id && shouldAddSchema) checkUnique(this, id);\n\n var willValidate = this._opts.validateSchema !== false && !skipValidation;\n var recursiveMeta;\n if (willValidate && !(recursiveMeta = id && id == resolve.normalizeId(schema.$schema)))\n this.validateSchema(schema, true);\n\n var localRefs = resolve.ids.call(this, schema);\n\n var schemaObj = new SchemaObject({\n id: id,\n schema: schema,\n localRefs: localRefs,\n cacheKey: cacheKey,\n meta: meta\n });\n\n if (id[0] != '#' && shouldAddSchema) this._refs[id] = schemaObj;\n this._cache.put(cacheKey, schemaObj);\n\n if (willValidate && recursiveMeta) this.validateSchema(schema, true);\n\n return schemaObj;\n}\n\n\n/* @this Ajv */\nfunction _compile(schemaObj, root) {\n if (schemaObj.compiling) {\n schemaObj.validate = callValidate;\n callValidate.schema = schemaObj.schema;\n callValidate.errors = null;\n callValidate.root = root ? root : callValidate;\n if (schemaObj.schema.$async === true)\n callValidate.$async = true;\n return callValidate;\n }\n schemaObj.compiling = true;\n\n var currentOpts;\n if (schemaObj.meta) {\n currentOpts = this._opts;\n this._opts = this._metaOpts;\n }\n\n var v;\n try { v = compileSchema.call(this, schemaObj.schema, root, schemaObj.localRefs); }\n catch(e) {\n delete schemaObj.validate;\n throw e;\n }\n finally {\n schemaObj.compiling = false;\n if (schemaObj.meta) this._opts = currentOpts;\n }\n\n schemaObj.validate = v;\n schemaObj.refs = v.refs;\n schemaObj.refVal = v.refVal;\n schemaObj.root = v.root;\n return v;\n\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var _validate = schemaObj.validate;\n var result = _validate.apply(this, arguments);\n callValidate.errors = _validate.errors;\n return result;\n }\n}\n\n\nfunction chooseGetId(opts) {\n switch (opts.schemaId) {\n case 'auto': return _get$IdOrId;\n case 'id': return _getId;\n default: return _get$Id;\n }\n}\n\n/* @this Ajv */\nfunction _getId(schema) {\n if (schema.$id) this.logger.warn('schema $id ignored', schema.$id);\n return schema.id;\n}\n\n/* @this Ajv */\nfunction _get$Id(schema) {\n if (schema.id) this.logger.warn('schema id ignored', schema.id);\n return schema.$id;\n}\n\n\nfunction _get$IdOrId(schema) {\n if (schema.$id && schema.id && schema.$id != schema.id)\n throw new Error('schema $id is different from id');\n return schema.$id || schema.id;\n}\n\n\n/**\n * Convert array of error message objects to string\n * @this Ajv\n * @param {Array<Object>} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i<errors.length; i++) {\n var e = errors[i];\n if (e) text += dataVar + e.dataPath + ' ' + e.message + separator;\n }\n return text.slice(0, -separator.length);\n}\n\n\n/**\n * Add custom format\n * @this Ajv\n * @param {String} name format name\n * @param {String|RegExp|Function} format string is converted to RegExp; function should return boolean (true when valid)\n * @return {Ajv} this for method chaining\n */\nfunction addFormat(name, format) {\n if (typeof format == 'string') format = new RegExp(format);\n this._formats[name] = format;\n return this;\n}\n\n\nfunction addDefaultMetaSchema(self) {\n var $dataSchema;\n if (self._opts.$data) {\n $dataSchema = require('./refs/data.json');\n self.addMetaSchema($dataSchema, $dataSchema.$id, true);\n }\n if (self._opts.meta === false) return;\n var metaSchema = require('./refs/json-schema-draft-07.json');\n if (self._opts.$data) metaSchema = $dataMetaSchema(metaSchema, META_SUPPORT_DATA);\n self.addMetaSchema(metaSchema, META_SCHEMA_ID, true);\n self._refs['http://json-schema.org/schema'] = META_SCHEMA_ID;\n}\n\n\nfunction addInitialSchemas(self) {\n var optsSchemas = self._opts.schemas;\n if (!optsSchemas) return;\n if (Array.isArray(optsSchemas)) self.addSchema(optsSchemas);\n else for (var key in optsSchemas) self.addSchema(optsSchemas[key], key);\n}\n\n\nfunction addInitialFormats(self) {\n for (var name in self._opts.formats) {\n var format = self._opts.formats[name];\n self.addFormat(name, format);\n }\n}\n\n\nfunction addInitialKeywords(self) {\n for (var name in self._opts.keywords) {\n var keyword = self._opts.keywords[name];\n self.addKeyword(name, keyword);\n }\n}\n\n\nfunction checkUnique(self, id) {\n if (self._schemas[id] || self._refs[id])\n throw new Error('schema with key or id \"' + id + '\" already exists');\n}\n\n\nfunction getMetaSchemaOptions(self) {\n var metaOpts = util.copy(self._opts);\n for (var i=0; i<META_IGNORE_OPTIONS.length; i++)\n delete metaOpts[META_IGNORE_OPTIONS[i]];\n return metaOpts;\n}\n\n\nfunction setLogger(self) {\n var logger = self._opts.logger;\n if (logger === false) {\n self.logger = {log: noop, warn: noop, error: noop};\n } else {\n if (logger === undefined) logger = console;\n if (!(typeof logger == 'object' && logger.log && logger.warn && logger.error))\n throw new Error('logger must implement log, warn and error methods');\n self.logger = logger;\n }\n}\n\n\nfunction noop() {}\n", "export * from './specification/common';\nexport * from './sync/common/types';\nexport * from './api';\nexport * from './apiTypes';\nexport * from './specification/schemaAccess';\nexport * from './extensionLogger';\nexport * from './project';\n", "import type { FlexibleColumnLayoutType, ManifestSettingsType } from '../common/types';\n\nexport enum PageType {\n ObjectPage = 'ObjectPage',\n ListReport = 'ListReport',\n OverviewPage = 'OverviewPage',\n CustomPage = 'CustomPage',\n AnalyticalListPage = 'AnalyticalListPage'\n}\n\nexport interface PageConfig {\n $schema?: string;\n}\n\nexport interface PageBase {\n name?: string;\n entitySet?: string;\n navigationProperty?: string;\n config?: PageConfig;\n navigation?: { [property: string]: string | object };\n variantManagement?: string;\n defaultLayoutType?: FlexibleColumnLayoutType;\n}\n\nexport enum FioriElementsVersion {\n v2 = 'v2',\n v4 = 'v4'\n}\nexport enum OdataVersion {\n v2 = 'v2',\n v4 = 'v4'\n}\nexport interface Target {\n fioriElements: FioriElementsVersion;\n odata: OdataVersion;\n}\n\nexport interface PagesBase {\n [key: string]: PageBase;\n}\nexport interface SapUiGenericAppPageSettings {\n [key: string]: ManifestSettingsType;\n}\n\nexport const PAGETYPE_VIEW_EXTENSION_TEMPLATE_MAP: Map<PageType, string> = new Map([\n [PageType.ListReport, 'sap.suite.ui.generic.template.ListReport.view.ListReport'],\n [PageType.AnalyticalListPage, 'sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage'],\n [PageType.ObjectPage, 'sap.suite.ui.generic.template.ObjectPage.view.Details']\n]);\n", "import type { SapUiAppV2 } from '../../../v2/webapp/manifest/sapUiPageV2';\nimport type { SapUi5 as SapUi5V2 } from '../../../v2/webapp/manifest/sapUi5';\nimport type { SapUi as SapUiV2 } from '../../../v2/webapp/manifest/sapUi';\nimport type { SapOvp } from './sapOvp';\nimport type { ManifestSettingsType } from '../../types';\n\nexport enum DataSourceType {\n OData = 'OData',\n ODataAnnotation = 'ODataAnnotation'\n}\nexport interface SapApp {\n id?: string;\n title?: string;\n description?: string;\n dataSources?: SapAppDataSources;\n offline?: boolean;\n}\n\nexport interface SapAppDataSources {\n [key: string]: SapAppDataSource;\n mainService: SapAppDataSource;\n}\n\nexport interface SapAppDataSource {\n uri: string;\n type: DataSourceType;\n settings: SapAppDataSourceSettings;\n}\n\nexport type ODataVersionType = '2.0' | '4.0';\nexport interface SapAppDataSourceSettings {\n [key: string]: ManifestSettingsType;\n annotations?: string[];\n localUri?: string;\n odataVersion?: ODataVersionType;\n}\n\nexport enum ManifestSection {\n ui = 'sap.ui',\n app = 'sap.app',\n generic = 'sap.ui.generic.app',\n ovp = 'sap.ovp',\n ui5 = 'sap.ui5'\n}\n\nexport const GENERICAPPSETTINGS = `${ManifestSection.generic}/settings`;\n\nexport interface Manifest {\n _version?: string;\n 'sap.ui'?: SapUiV2;\n 'sap.app'?: SapApp;\n 'sap.ui.generic.app'?: SapUiAppV2;\n 'sap.ovp'?: SapOvp;\n 'sap.ui5'?: SapUi5V2;\n}\n", "import type { FlexibleColumnLayoutType } from '../../../common/types';\n\nexport const FIORI_FCL_ROOT_VIEW_NAME = 'sap.fe.templates.RootContainer.view.Fcl';\n\nexport const FIORI_FCL_ROOT_ID = 'appRootView';\n\nexport enum ViewTypes {\n XML = 'XML',\n HTML = 'HTML',\n JS = 'JS',\n JSON = 'JSON'\n}\n\nexport interface SapUi5RootView {\n viewName: typeof FIORI_FCL_ROOT_VIEW_NAME | string;\n type: ViewTypes;\n id: typeof FIORI_FCL_ROOT_ID | string;\n async?: boolean;\n}\n\nexport interface SapUi5OdataModel {\n preload?: boolean;\n dataSource: string;\n settings?: object;\n}\n\nexport interface SapUi5ResourceModel {\n type: string;\n uri?: string;\n}\n\nexport type SapUi5RoutingRouteTarget = string | string[];\n\nexport interface SapUi5RoutingRoute {\n name: string;\n pattern: string;\n target: SapUi5RoutingRouteTarget;\n layout?: FlexibleColumnLayoutType;\n}\n\nexport const SAPUI5_VIEW_CLASS = 'sap.ui.core.mvc.View';\nexport const SAPUI5_FRAGMENT_CLASS = 'sap.ui.core.Fragment';\n", "import { readFile } from 'fs';\nimport { join } from 'path';\nimport type { FioriElementsVersion } from './common';\n\n/**\n * Type for all available schema types, e.g. Application, ListReport, ObjectPage, ...\n */\nexport enum SchemaType {\n Application = 'Application',\n ObjectPage = 'ObjectPage',\n ListReport = 'ListReport',\n OverviewPage = 'OverviewPage',\n AnalyticalListPage = 'AnalyticalListPage'\n}\n\n/**\n * Return the path to the generic JSON schema\n * @param version - Fiori elements version\n * @param schemaType - Type of the schema, e.g Application, ListReport, ObjectPage, ...\n */\nexport const getPathToGenericSchema = (\n version: FioriElementsVersion,\n schemaType: SchemaType,\n directory: string = __dirname\n): string | undefined => {\n const fileName =\n schemaType === SchemaType.Application\n ? `${SchemaType.Application}${version.toUpperCase()}.json`\n : `${schemaType}Config.json`;\n if (directory.endsWith('dist')) {\n return join(directory, 'schemas', version, fileName);\n } else if (directory.endsWith(join('specification', 'packages', 'specification'))) {\n return join(directory, 'dist', 'schemas', version, fileName);\n } else if (directory.endsWith(join('src', 'specification'))) {\n return join(directory, '..', '..', 'dist', 'schemas', version, fileName);\n } else if (directory.indexOf('node_modules') > -1) {\n const moduleRoot = directory.substring(0, directory.indexOf('node_modules') + 12);\n return join(moduleRoot, '@sap', 'ux-specification', 'dist', 'schemas', version, fileName);\n }\n return undefined;\n};\n\n/**\n * Read JSON schema from given path\n * @param path - path to schema file\n */\nconst readJsonSchema = async (path: string): Promise<JSON> => {\n return new Promise((resolve, reject): void => {\n readFile(path, { encoding: 'utf8' }, (err, data): void => {\n if (err) {\n reject(err);\n } else {\n resolve(JSON.parse(data));\n }\n });\n });\n};\n\n/**\n * Return the generic schema for a given version and type\n * @param version - Fiori elements version, e.g. v2 or v4\n * @param schemaType - Type of the schema, e.g Application, ListReport, ObjectPage, ...\n */\nexport const getGenericSchema = async (version: FioriElementsVersion, schemaType: SchemaType): Promise<JSON> => {\n try {\n const path = getPathToGenericSchema(version, schemaType, __dirname);\n return await readJsonSchema(path);\n } catch (error) {\n throw new Error(`No schema available for type: ${schemaType}, version: ${version}. Error was ${error.message}`);\n }\n};\n", "export enum FlexibleColumnLayoutType {\n OneColumn = 'OneColumn',\n TwoColumnsBeginExpanded = 'TwoColumnsBeginExpanded',\n TwoColumnsMidExpanded = 'TwoColumnsMidExpanded',\n MidColumnFullScreen = 'MidColumnFullScreen',\n ThreeColumnsMidExpanded = 'ThreeColumnsMidExpanded',\n ThreeColumnsEndExpanded = 'ThreeColumnsEndExpanded',\n ThreeColumnsMidExpandedEndHidden = 'ThreeColumnsMidExpandedEndHidden',\n ThreeColumnsBeginExpandedEndHidden = 'ThreeColumnsBeginExpandedEndHidden',\n EndColumnFullScreen = 'EndColumnFullScreen'\n}\n\nexport const enum FlexChangeLayer {\n Vendor = 'VENDOR',\n Customer = 'CUSTOMER_BASE'\n}\n\nexport type ManifestSettingsType = boolean | number | string | object;\n\nexport const enum ExportType {\n GW = 'GW',\n UI5Client = 'UI5Client'\n}\n", "import type { Manifest } from '../../specification/common/webapp/manifest';\nimport type { AnnotationTerm, EntityType } from '@sap-ux/vocabularies-types';\nimport type { CollectionFacet, ReferenceFacet, ReferenceURLFacet } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport type { ManifestSettingsType } from '../../specification/common/types';\n\nexport type anyFacetType =\n | AnnotationTerm<CollectionFacet>\n | AnnotationTerm<ReferenceFacet>\n | AnnotationTerm<ReferenceURLFacet>;\n\nexport enum ExportArtifacts {\n flex = 'flex',\n manifest = 'manifest'\n}\n\nexport enum ALPViewType {\n Primary = 'primary',\n Secondary = 'secondary'\n}\n\nexport enum DirName {\n Sapux = 'src',\n Schemas = '.schemas',\n Pages = 'pages',\n Webapp = 'webapp',\n Temp = '.tmp',\n Changes = 'changes',\n LocalService = 'localService',\n Controller = 'controller',\n View = 'view',\n Fragment = 'fragment',\n Ext = 'ext',\n VSCode = '.vscode'\n}\nexport enum FileName {\n App = 'app.json'\n}\nexport const FacetTitlePrefix = 'Facet ID: ';\nexport const ActionTitlePrefix = 'Action ID: ';\n\nexport interface ExportResults {\n flexChanges: string[];\n manifest: Manifest;\n fragments: FileData[];\n}\n\nexport enum SectionType {\n Section = 'Section',\n SubSection = 'SubSection',\n HeaderSection = 'HeaderSection'\n}\n\nexport enum ArtifactType {\n Manifest = 'Manifest',\n FlexChange = 'FlexChange',\n Annotation = 'Annotation'\n}\n\nexport enum ControlType {\n Table = 'sap.m.Table',\n TableColumn = 'sap.m.Column',\n SmartTable = 'sap.ui.comp.smarttable.SmartTable',\n SmartFilterBar = 'sap.ui.comp.smartfilterbar.SmartFilterBar',\n SmartChart = 'sap.ui.comp.smartchart.SmartChart',\n Group = 'sap.ui.comp.smartform.Group',\n GroupElement = 'sap.ui.comp.smartform.GroupElement',\n Button = 'sap.m.Button',\n ToolbarButton = 'sap.m.OverflowToolbarButton',\n Avatar = 'sap.f.Avatar',\n ObjectPageDynamicHeaderTitle = 'sap.uxap.ObjectPageDynamicHeaderTitle',\n ObjectPageGridProperties = 'sap.ui.layout.GridData',\n ObjectPageHeader = 'sap.uxap.ObjectPageHeader',\n ObjectPageLayout = 'sap.uxap.ObjectPageLayout',\n HeaderAction = 'sap.uxap.ObjectPageHeaderActionButton',\n DynamicPage = 'sap.f.DynamicPage',\n Form = 'sap.ui.layout.form',\n Chart = 'sap.suite.ui.microchart',\n Section = 'sap.uxap.ObjectPageSection',\n SubSection = 'sap.uxap.ObjectPageSubSection'\n}\nexport interface ChangeContent {\n property: string;\n newValue?: ManifestSettingsType;\n newBinding?: string | object;\n}\n\n/**\n * Taken over from https://github.com/sap-staging/ui5-flexibility-utils/blob/origin/master/src/changeUtils.js\n */\nexport interface ChangeDefinition {\n controlId: string; // ID of the control containing all prefixes excluding the application ID prefix\n controlType: string; // This is NOT in the API so far, but we need it\n type: string; // Change type, i.e. <code>propertyChange</code>\n content: ChangeContent; // Content of the change needed by the corresponding change handler\n isCustomer: boolean; // Flag indicating whether the project is related to a customer project\n sapui5Version: string; // SAPUI5 version for which the change is created\n creatingTool: string; // Name of the tool calling this function for support reasons\n id: string; // UID of the change;\n reference: string; // Reference to the application;\n appVersion: string; // Version of the application;\n creation: string; // String with the creation timestamp;\n}\n/**\n * Taken over from https://github.com/sap-staging/ui5-flexibility-utils/blob/origin/master/src/changeUtils.js\n */\nexport interface ChangeDefinitionInCreation {\n controlId: string; // ID of the control containing all prefixes excluding the application ID prefix\n controlType: string; // This is NOT in the API so far, but we need it\n type?: string; // Change type, i.e. <code>propertyChange</code>\n content: ChangeContent; // Content of the change needed by the corresponding change handler\n isCustomer?: boolean; // Flag indicating whether the project is related to a customer project\n sapui5Version?: string; // SAPUI5 version for which the change is created\n creatingTool?: string; // Name of the tool calling this function (this is needed for support reasons)\n}\n\nexport type CreateFlexChange = (change: ChangeDefinitionInCreation, manifest: Manifest) => string;\nexport type exportFlexValue = (flexChange: ChangeDefinitionInCreation, configObject: object, key: string) => void;\nexport type importFlexValue = (flexChange: ChangeDefinitionInCreation, configObject: object, key: string) => void;\n\nexport type ControlTypeFunction = () => ControlType;\nexport type ControlIdFunction = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n controlType?: ControlTypeFunction,\n title?: string\n) => string;\n\nexport interface FlexAdapter {\n controlId: ControlIdFunction;\n controlType: ControlTypeFunction;\n createFlexChange: CreateFlexChange;\n exportFlexValue?: exportFlexValue;\n importFlexValue?: importFlexValue;\n}\n\nexport type ManifestPath = (pageKeys?: string[], manifest?: Manifest, ...pathParts: string[]) => string;\n\nexport type ExportHandlerFunction = (\n manifestSection: unknown,\n configObject: unknown,\n key: string,\n manifestKey?: string,\n ...pathParts: string[]\n) => unknown;\n\nexport interface ManifestConverter {\n path: ManifestPath;\n key?: string;\n import?:\n | ((manifestSection: unknown, sectionId?: string, propertyKey?: string, breadcrumbs?: string[]) => unknown)\n | boolean;\n export?: ExportHandlerFunction | boolean;\n delete?:\n | ((\n manifestSection: unknown,\n configObject: unknown,\n key: string,\n manifestKey: string,\n syncRuleKey?: string\n ) => unknown)\n | boolean;\n}\n\nexport interface SyncRule {\n flex?: FlexAdapter;\n manifest?: ManifestConverter;\n generate?: (schema: object, definition: object, propertyName: string) => unknown;\n}\n\nexport interface Content {\n property: string;\n oldValue?: ManifestSettingsType;\n newValue: ManifestSettingsType;\n}\nexport interface Selector {\n id: string;\n type: string;\n idIsLocal?: boolean;\n}\n\nexport interface PageLayoutInformation {\n id: string;\n pageId: string;\n}\n\nexport interface FakeLRepSettings {\n isKeyUser: boolean;\n isAtoAvailable: boolean;\n isProductiveSystem: boolean;\n}\n\nexport interface ValidityInformation {\n since: string;\n deprecated?: Deprecated;\n}\n\nexport interface DeprecatedProperties {\n [key: string]: ValidityInformation;\n}\n\nexport interface Deprecated {\n since: string;\n text?: string;\n}\n\nexport interface FileData {\n dataSourceUri: string;\n fileContent: string;\n}\n\nexport enum Visualization {\n LineItem = 'LineItem',\n Chart = 'Chart'\n}\n\nexport enum FacetBase {\n LineItem = 'LineItem',\n CollectionFacet = 'CollectionFacet',\n Chart = 'Chart',\n Form = 'Form',\n Identification = 'Identification',\n DataPoint = 'DataPoint',\n Address = 'Address',\n Contact = 'Contact',\n Unknown = ''\n}\n\nexport interface FacetConfig {\n base: FacetBase;\n lineItem?: string[];\n Label?: string;\n ID?: string;\n entityType?: EntityType;\n annotationPath?: string;\n target?: object;\n facets?: FacetConfigs;\n}\n\nexport interface SubSectionConfig {\n base: FacetBase;\n Label?: string;\n ID?: string;\n facets: FacetConfigs;\n annotationPath?: string;\n entityType?: EntityType;\n target?: object;\n}\n\nexport interface FacetConfigs {\n [key: string]: FacetConfig | SubSectionConfig;\n}\n\nexport interface File {\n dataSourceUri: string;\n fileContent: string;\n}\n\nexport interface Files {\n [name: string]: object;\n}\n\nexport interface FacetSection {\n key: string;\n label?: string;\n ID?: string;\n custom?: boolean;\n entityType?: EntityType;\n}\n\nexport interface SchemaFilePath {\n filename: string;\n path: string;\n}\n\nexport interface ObjectPageSectionData {\n target: string;\n key?: string;\n}\n\nexport const BindingPropertyRegexAsString = \"^{[A-Za-z0-9{}&$!@#%? _|,<>'()[\\\\]\\\\/:=.]+}$\";\n\nexport enum ViewTemplateType {\n ResponsiveTableColumnsExtension = 'ResponsiveTableColumnsExtension',\n AnalyticalTableColumnsExtension = 'AnalyticalTableColumnsExtension',\n TreeTableColumnsExtension = 'TreeTableColumnsExtension',\n GridTableColumnsExtension = 'GridTableColumnsExtension',\n ResponsiveTableCellsExtension = 'ResponsiveTableCellsExtension'\n}\n\n//Definitions for elements in app schema\nexport enum DefinitionName {\n Action = 'Action',\n Actions = 'Actions',\n ActionsLR = 'Actions<LineItems>',\n ALPChart = 'ALPChart',\n ALPChartView = 'ALPChartView',\n ALPTable = 'ALPTable',\n ALPTableView = 'ALPTableView',\n AnalyticalListPageFilterBar = 'AnalyticalListPageFilterBar',\n AnnotationPathAsObject = 'AnnotationPathAsObject',\n ChartToolBarAction = 'ChartToolBarAction',\n CommonHeaderFacetSettings = 'CommonHeaderFacetSettings',\n CustomColumn = 'TableCustomColumn',\n CustomColumnOP = 'TableCustomColumnOP',\n CustomColumns = 'TableCustomColumns',\n CustomSections = 'CustomSections',\n FieldPath = 'FieldPath',\n Field = 'Field',\n Fields = 'Fields',\n Fields4Dialog = 'Fields4Dialog',\n Footer = 'Footer',\n FooterAction = 'FooterAction',\n FooterActions = 'FooterActions',\n FooterActionsLR = 'FooterActions<LineItems>',\n Form = 'Form',\n FormAction = 'FormAction',\n GenericActions = 'GenericActions',\n GenericColumnsOP = 'GenericColumnsOP',\n GenericFooter = 'GenericFooter',\n GenericSections = 'GenericSections',\n HeaderActions = 'HeaderActions',\n HeaderSections = 'HeaderSections',\n LineItems = 'LineItems',\n LineItemsOfView = 'LineItemsOfView',\n ListReportFilterBar = 'ListReportFilterBar',\n LRTableView = 'LRTableView',\n LRChartView = 'LRChartView',\n MultiTableModeV4 = 'MultiTableModeV4',\n ObjectPageChart = 'ObjectPageChart',\n ObjectPageCustomSectionFragment = 'ObjectPageCustomSectionFragment',\n ObjectPageFooter = 'ObjectPageFooter',\n ObjectPageFooterAction = 'ObjectPageFooterAction',\n ObjectPageFooterActions = 'ObjectPageFooterActions',\n ObjectPageHeader = 'ObjectPageHeader',\n ObjectPageHeaderSectionForm = 'ObjectPageHeaderSectionForm',\n ObjectPageHeaderSectionChart = 'ObjectPageHeaderSectionChart',\n ObjectPageHeaderSectionDataPoint = 'ObjectPageHeaderSectionDataPoint',\n ObjectPageHeaderSectionContact = 'ObjectPageHeaderSectionContact',\n ObjectPageHeaderSectionAddress = 'ObjectPageHeaderSectionAddress',\n ObjectPageLayout = 'ObjectPageLayout',\n ObjectPagePresentationVariant = 'ObjectPagePresentationVariant',\n ObjectPageSectionAddress = 'ObjectPageSectionAddress',\n ObjectPageSectionChart = 'ObjectPageSectionChart',\n ObjectPageSectionContact = 'ObjectPageSectionContact',\n ObjectPageSectionDataPoint = 'ObjectPageSectionDataPoint',\n ObjectPageSectionForm = 'ObjectPageSectionForm',\n ObjectPageSectionPresentationVariant = 'ObjectPageSectionPresentationVariant',\n ObjectPageSectionTableV4 = 'ObjectPageSectionTableV4',\n ObjectPageSubSections = 'ObjectPageSubSections',\n ObjectPageTable = 'ObjectPageTable',\n ObjectPageTableColumn = 'ObjectPageTableColumn',\n ObjectPageToolBar = 'ObjectPageToolBar',\n ObjectPageToolBarAction = 'ObjectPageToolBarAction',\n ObjectPageToolBarActions = 'ObjectPageToolBarActions',\n Position = 'Position',\n PositionOP = 'PositionOP',\n QuickVariant = 'QuickVariant',\n QuickVariantSelectionOP = 'QuickVariantSelectionOP',\n QuickVariantSelectionV4OP = 'QuickVariantSelectionV4OP',\n RelatedFacetKeys = 'RelatedFacetKeys',\n Sections = 'Sections',\n SelectionFields = 'SelectionFields',\n Table = 'Table',\n TableSPV = 'TableSPV',\n TableColumn = 'TableColumn',\n TableViewExtension = 'TableViewExtension',\n ToolBarAction = 'ToolBarAction',\n ToolBarLR = 'ToolBar<LineItems>',\n ToolBar = 'ToolBar',\n ViewTableColumn = 'ViewTableColumn',\n ViewCustomColumn = 'ViewTableCustomColumn',\n ViewChartToolBar = 'ViewChartToolBar',\n ViewToolBarAction = 'ViewToolBarAction'\n}\n\nexport enum PropertyName {\n actions = 'actions',\n annotationPath = 'annotationPath',\n chart = 'chart',\n defaultPath = 'defaultPath',\n defaultTemplateAnnotationPath = 'defaultTemplateAnnotationPath',\n sections = 'sections',\n table = 'table',\n views = 'views'\n}\n\nexport enum SchemaTag {\n hidden = 'hidden',\n isViewNode = 'isViewNode',\n annotationPath = 'annotationPath',\n annotationType = 'annotationType',\n artifactType = 'artifactType',\n controlType = 'controlType',\n dataType = 'dataType',\n propertyIndex = 'propertyIndex',\n key = 'key'\n}\n\nexport const METADATAPATH = 'webapp/localService/metadata.xml';\nexport const MANIFESTPATH = 'webapp/manifest.json';\nexport const VOCWITHSLASH = '/@com.sap.vocabularies';\nexport const VOCWITHCOLONS = '::@com.sap.vocabularies';\nexport const UIVOCABULARY = 'com.sap.vocabularies.UI.v1';\nexport const UIVOCABULARYDOT = 'com.sap.vocabularies.UI.v1.';\nexport const UIVOCABULARYALPHADOT = '@com.sap.vocabularies.UI.v1.';\nexport const QUICKVARPATH = '/quickVariantSelection';\nexport const QUICKVARPATHX = '/quickVariantSelectionX';\nexport const DATESETTINGSPATH = '/filterSettings/dateSettings';\nexport const FRAGMENTNAMEPART = '.fragment.';\n", "export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}", "export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}", "import defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}", "export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}", "function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}", "export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}", "import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}", "export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}", "export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}", "import setPrototypeOf from \"@babel/runtime/helpers/esm/setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}", "import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n '/': '&#x2F;'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread({}, options, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, fallbackValue) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n return this.getSuffixes(code).map(function (suffix) {\n return key + suffix;\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var rule = this.getRule(code);\n\n if (!rule) {\n return [];\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread({}, options, data, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread({}, options, data, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += safeValue.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread({}, options, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: false\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n", "import type { FacetConfigs, FileData, FacetConfig, FacetSection, SchemaFilePath, anyFacetType } from './types';\nimport type { Manifest } from '../../specification/common';\nimport { ManifestSection, FioriElementsVersion, PageType } from '../../specification/common';\nimport type { MetadataInstanceInterface } from './decoration/factory';\nimport type {\n CollectionFacet,\n DataField,\n DataFieldAbstractTypes,\n DataFieldForAction,\n DataFieldForAnnotation,\n DataFieldWithIntentBasedNavigation,\n DataFieldWithUrl,\n ReferenceFacet,\n ReferenceURLFacet\n} from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport type {\n AnnotationTerm,\n ConvertedMetadata,\n EntityType,\n RawMetadata,\n PropertyPath\n} from '@sap-ux/vocabularies-types';\nimport i18next from 'i18next';\nimport merge from 'deepmerge';\nimport { FE_TEMPLATE_V2 } from '../../specification/v2';\nimport type { ExtensionLogger } from '../../apiTypes';\nimport { DirName, FacetTitlePrefix, FacetBase, MANIFESTPATH, VOCWITHSLASH, UIVOCABULARY, SchemaTag } from './types';\nimport { convert } from '@sap-ux/annotation-converter';\nimport { merge as mergeParser, parse } from '@sap-ux/edmx-parser';\nimport { UIAnnotationTypes, UIAnnotationTerms } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport { SchemaType } from '../../specification/schemaAccess';\nimport { LogSeverity, log } from '../../extensionLogger';\nimport type { PropertyAnnotations } from '@sap-ux/vocabularies-types/vocabularies/Edm_Types';\nimport type { Definition } from 'typescript-json-schema';\n\nexport enum TemplateType {\n ListReportObjectPageV2 = 'ListReportObjectPageV2',\n ListReportObjectPageV4 = 'ListReportObjectPageV4',\n OverviewPageV2 = 'OverviewPageV2',\n AnalyticalListPageV2 = 'AnalyticalListPageV2'\n}\n\nexport const DEFINITION_LINK_PREFIX = '#/definitions/';\n\n/**\n * Function returns annotation path for schema based on received params.\n * @param entityTypeName - Entity type name.\n * @param term - Annotation term.\n * @param qualifier - Annotation qualifier.\n * @returns Annotation path based on received params\n */\nexport const createAnnotationPath = (entityTypeName: string, term: string, qualifier?: string): string => {\n let annotationPath = `/${entityTypeName}/@${term}`;\n if (qualifier) {\n annotationPath += `#${qualifier}`;\n }\n return annotationPath;\n};\n\n/**\n * Parses, merges, and converts a list of annotation files with aid of tools from annotation-vocabularies-tools\n * @param annotationFiles - The list of all annotation files, in JSON format\n * @returns the complete service information\n */\nexport function parseAndMergeAndConvert(annotationFiles: FileData[], logger: ExtensionLogger): ConvertedMetadata {\n const parseResult: RawMetadata[] = [];\n let converterOutput: ConvertedMetadata;\n try {\n if (annotationFiles) {\n annotationFiles.forEach(function (annotationData: FileData) {\n parseResult.push(parse(annotationData.fileContent, annotationData.dataSourceUri));\n });\n }\n if (parseResult.length > 0) {\n converterOutput = convert(mergeParser(...parseResult));\n }\n if (logger && converterOutput?.diagnostics) {\n for (const converterMessage of converterOutput.diagnostics) {\n log(logger, {\n severity: LogSeverity.Error,\n message: converterMessage.message\n });\n }\n }\n } catch (error) {\n log(\n logger,\n {\n severity: LogSeverity.Error,\n message: i18next.t('ANNOERR')\n },\n ...error\n );\n }\n return converterOutput;\n}\n\nexport const getAnnotationPropertyValue = (annotationProperty: DataField['Value']): string =>\n annotationProperty?.value || annotationProperty?.path;\n\n/**\n * Checks for Common.Label and overwrites the label from it if present\n * @param {PropertyAnnotations} annotations - property annotations\n * @param {EntityType} entityType - entity type\n * @param {string} label - label, to be actualized\n */\nexport function evaluateCommonLabel(annotations: PropertyAnnotations, entityType: EntityType, label: string): string {\n if (annotations?.Common?.Label) {\n if (typeof annotations.Common.Label === 'string') {\n label = annotations.Common.Label;\n } else if (annotations.Common.Label['type'] === 'Path') {\n const targetProperty = entityType.resolvePath(annotations.Common.Label['path']);\n if (targetProperty.value) {\n label = targetProperty.value;\n } else if (typeof targetProperty.Common?.Label === 'string') {\n label = targetProperty.annotations.Common.Label;\n }\n } else if (typeof annotations.Common?.Label?.toString() === 'string') {\n label = annotations.Common.Label.toString();\n }\n }\n return label;\n}\n\n/**\n * Determines the label for a property path\n * @param {PropertyPath} propertyPath - property path\n * @param {EntityType} entityType - entity type\n * @returns label, derived from Common.Label or from property value\n */\nexport function getLabelForPropertyPath(propertyPath: PropertyPath, entityType: EntityType): string {\n let label = propertyPath.value;\n if (propertyPath.$target) {\n label = evaluateCommonLabel(propertyPath.$target.annotations, entityType, label);\n }\n return label;\n}\n\n/**\n * Determines the label for a LineItem record\n * @param {DataFieldAbstractType} field - Line item record\n * @param {EntityType} entityType - entity type\n * @returns label, derived from Common.Label or from property value\n */\nexport function getLabelForDataField(field: DataFieldAbstractTypes, entityType: EntityType): string {\n let label: string, property;\n if (field['Value']) {\n if (typeof field['Value'] === 'string') {\n property = entityType.entityProperties.find((ep) => ep.name === field['Value']);\n } else {\n property = entityType.resolvePath(field['Value'].path);\n if (!property) {\n property = field['Value'].$target;\n }\n }\n } else if (field['Target'] && field['Target'].$target && field['Target'].$target.Value) {\n property = field['Target'].$target.Value.$target;\n }\n if (property?.annotations?.Common?.Label) {\n label = evaluateCommonLabel(property.annotations, entityType, label);\n }\n return label;\n}\n\n/**\n * Function to resolve the dataField label\n * @param dataFieldLabel - Given dataField label; might be of type string, or an object in case of a path reference\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n * @returns undefined or the right string value\n */\nfunction getLabel(dataFieldLabel: any, entityType: EntityType): string {\n if (typeof dataFieldLabel === 'string') {\n return dataFieldLabel;\n } else if (typeof dataFieldLabel === 'object' && dataFieldLabel.path) {\n const property = entityType.resolvePath(dataFieldLabel.path);\n if (!property || property.length === 0) {\n return undefined;\n } else {\n const singleProperty = property[0];\n if (singleProperty?.annotations?.Common?.Label) {\n const label: string = dataFieldLabel;\n return evaluateCommonLabel(singleProperty.annotations, entityType, label);\n }\n }\n } else {\n return undefined;\n }\n}\n\nfunction getTitleForDataField(dataField: DataField, entityType: EntityType, dataFieldLabel: string): string {\n const propertyCommonLabel = getLabelForDataField(dataField as DataFieldAbstractTypes, entityType);\n return (\n dataFieldLabel ||\n propertyCommonLabel ||\n (dataField.Value.$target ? dataField.Value.$target.name : dataField.Value.value || dataField.Value.path)\n );\n}\n\n/**\n * Determines the description of a data field, e.g. for the column header\n * @param dataFieldAbstract - the given record of the line item annotation\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n */\nexport function getDatafieldDescription(dataFieldAbstract: DataFieldAbstractTypes, entityType: EntityType): string {\n let title = '',\n propertyCommonLabel,\n dataField;\n const dataFieldLabel = getLabel(dataFieldAbstract.Label, entityType);\n\n switch (dataFieldAbstract.$Type) {\n case UIAnnotationTypes.DataField:\n dataField = dataFieldAbstract as DataField;\n title = getTitleForDataField(dataField, entityType, dataFieldLabel);\n break;\n case UIAnnotationTypes.DataFieldWithUrl:\n dataField = dataFieldAbstract as DataFieldWithUrl;\n propertyCommonLabel = getLabelForDataField(dataFieldAbstract, entityType);\n title =\n dataFieldLabel ||\n propertyCommonLabel ||\n (typeof dataField.Value === 'string' ? dataField.Value : dataField.Value.path);\n break;\n case UIAnnotationTypes.DataFieldForAnnotation:\n dataField = dataFieldAbstract as DataFieldForAnnotation;\n propertyCommonLabel = getLabelForDataField(dataFieldAbstract, entityType);\n title = dataFieldLabel || propertyCommonLabel || dataField.Target.$target.Title || dataField.Target.value;\n break;\n case UIAnnotationTypes.DataFieldForAction:\n case UIAnnotationTypes.DataFieldForIntentBasedNavigation:\n dataField = dataFieldAbstract as DataFieldForAction;\n if (dataFieldLabel) {\n title = typeof dataFieldLabel === 'string' ? dataFieldLabel : (dataField.Action as string);\n } else {\n title = dataFieldAbstract.Action as string;\n }\n break;\n case UIAnnotationTypes.DataFieldWithIntentBasedNavigation:\n dataField = dataFieldAbstract as DataFieldWithIntentBasedNavigation;\n propertyCommonLabel = getLabelForDataField(dataFieldAbstract, entityType);\n title = propertyCommonLabel || dataField.Value.path;\n break;\n case UIAnnotationTypes.DataFieldWithNavigationPath:\n dataField = dataFieldAbstract;\n title = getTitleForDataField(dataField, entityType, dataFieldLabel);\n break;\n default:\n break;\n }\n return title;\n}\n\n/**\n * Return the page type for a given V2 page in manifest\n * @param name - page component name\n */\nexport function getPageTypeV2(name: string): PageType | undefined {\n if (name) {\n const templatePart = `${FE_TEMPLATE_V2}.`;\n return name.split(templatePart)[1] as PageType;\n }\n}\n\nfunction getTargetAnnotationName(targetAnnotation: any, keyForRelatedFacetKeys = false): string {\n const termWithQualifier = `${targetAnnotation.term}#${targetAnnotation.qualifier}`;\n return `${!keyForRelatedFacetKeys ? '@' : ''}${\n targetAnnotation.qualifier ? termWithQualifier : targetAnnotation.term\n }`;\n}\n\n/**\n * Finds the alias for a given namespace in the references' section of the converted service metadata\n * @param {string} namespace - complete namespace, e.g. 'com.sap.vocabularies.UI.v1'\n * @param {ConvertedMetadata} oDataServiceAVT - combined service metadata, as returned by annotation vocabularies tools\n * @returns alias for the given namespace\n */\nexport function findAlias(namespace: string, oDataServiceAVT: ConvertedMetadata): string {\n let aliasReference = oDataServiceAVT.references.find((reference) => {\n return reference.namespace === namespace;\n });\n if (!aliasReference) {\n aliasReference = oDataServiceAVT.references.find((reference) => {\n return reference.alias === namespace;\n });\n }\n if (!aliasReference) {\n aliasReference = oDataServiceAVT.references.find((reference) => {\n return (\n reference.alias.toUpperCase() ===\n namespace.split('SAP__')[namespace.split('SAP__').length - 1].toUpperCase()\n );\n });\n }\n return aliasReference?.alias;\n}\n\n/**\n * Determines the target annotation\n * @param navigationParts - parts of the target annotation path\n * @param entityType - entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @returns the target annotation\n */\nfunction determineTargetAnnotation(\n navigationParts: string[],\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata\n): any {\n const lastNavigationPart = navigationParts[navigationParts.length - 1];\n const annotation = lastNavigationPart.substring(lastNavigationPart.lastIndexOf('.') + 1, lastNavigationPart.length);\n const alias = findAlias(\n lastNavigationPart.substring(0, lastNavigationPart.lastIndexOf('.')).replace('@', ''),\n oDataServiceAVT\n );\n return entityType?.annotations[alias]?.[annotation];\n}\n\n/**\n * Adjust key by considering navigation\n * @param key - given key\n * @param keyForRelatedFacetKeys - construct key for 'keyForRelatedFacetKeys' property(used to define custom sections) - we should not add '@' symbol there.\n * @param navigationParts - parts of the target annotation path\n */\nfunction adjustKey(key: string, navigationParts: string[], keyForRelatedFacetKeys: boolean): string {\n const uiClass = navigationParts[navigationParts.length - 1].split('#')[0];\n if (uiClass.includes('.LineItem')) {\n const pathParts = key.split('::');\n pathParts[pathParts.length - 1] = `${!keyForRelatedFacetKeys ? '@' : ''}${UIAnnotationTerms.LineItem}`;\n key = pathParts.join('::');\n } else {\n key = uiClass.replace('@UI', `${!keyForRelatedFacetKeys ? '@' : ''}com.sap.vocabularies.UI.v1`);\n }\n return key;\n}\n\nfunction getKeyAndEntityTypeOfReferenceFacet(\n oDataServiceAVT: ConvertedMetadata,\n key: string,\n entityType: EntityType,\n propertyValue: string,\n oDataVersion = FioriElementsVersion.v2,\n keyForRelatedFacetKeys = false\n): { key: string; entityType: EntityType; stopProcessing: boolean } {\n let stopProcessing = false;\n const navigationParts = propertyValue.split('/');\n const navigation = navigationParts.length > 1;\n if (navigation) {\n entityType = entityType.resolvePath(propertyValue.substring(0, propertyValue.lastIndexOf('/')))?.targetType;\n }\n key = adjustKey(key, navigationParts, keyForRelatedFacetKeys);\n\n const targetAnnotation = determineTargetAnnotation(navigationParts, entityType, oDataServiceAVT);\n if (targetAnnotation) {\n const separator = oDataVersion === FioriElementsVersion.v2 ? '::' : '#';\n key = getTargetAnnotationName(targetAnnotation, keyForRelatedFacetKeys).replace('#', separator);\n } else {\n stopProcessing = true;\n return { key, entityType, stopProcessing };\n }\n\n if (navigation) {\n const navSeparator = oDataVersion === FioriElementsVersion.v2 ? '::' : '/';\n navigationParts.pop();\n const navigationIDs = [...navigationParts].join(navSeparator);\n key = `${navigationIDs}${navSeparator}${key}`;\n }\n return { key, entityType, stopProcessing };\n}\n\n/**\n * Resolve page section(get key and label->description).\n * @param facetDefinition - the actual annotation record\n * @param keyForRelatedFacetKeys - construct key for 'keyForRelatedFacetKeys' property(used to define custom sections) - we should not add '@' symbol there.\n * @param {FioriElementsVersion} oDataVersion - OData version\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {ExtensionLogger} logger - Logger class for logging messages\n * @returns {FacetSection} - object comprising the relevant facet information\n */\nexport function getSectionFacet(\n facetDefinition: anyFacetType,\n sourceEntityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n logger?: ExtensionLogger,\n oDataVersion = FioriElementsVersion.v2,\n keyForRelatedFacetKeys = false\n): FacetSection | undefined {\n //Take facet ID as fallback\n const facetName = facetDefinition.fullyQualifiedName.substring(facetDefinition.fullyQualifiedName.lastIndexOf('@'));\n let key: string = facetDefinition.ID ? facetDefinition.ID.toString() : facetName;\n\n let entityType = sourceEntityType; //default\n\n //If reference facet: overwrite with target annotation if present\n if (facetDefinition.$Type !== UIAnnotationTypes.CollectionFacet && 'Target' in facetDefinition) {\n const propertyValue = getAnnotationPropertyValue(facetDefinition.Target);\n if (!propertyValue) {\n log(logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOTARGET', { target: facetDefinition.Target })\n });\n return;\n }\n const {\n key: newKey,\n entityType: newEntityType,\n stopProcessing\n } = getKeyAndEntityTypeOfReferenceFacet(\n oDataServiceAVT,\n key,\n entityType,\n propertyValue,\n oDataVersion,\n keyForRelatedFacetKeys\n );\n if (stopProcessing) {\n return;\n }\n key = newKey;\n entityType = newEntityType;\n }\n key = key.replace(/\\//gi, '::');\n return key\n ? {\n key,\n ...(facetDefinition.Label && { label: facetDefinition.Label.toString() }),\n ...(facetDefinition.ID && { ID: facetDefinition.ID.toString() }),\n entityType\n }\n : undefined;\n}\n\n/**\n * Finds the alias for a given namespace in the references' section of the converted service metadata.\n * An empty object is created if the path element does not exist yet.\n * Exception: if an empty array is the next element of the 'path' definition, an empty array is created instead of an empty object.\n * @param {object} manifest - manifest that is being modified during export\n * @param {string} path - path of the property in the manifest\n * @param {string} targetAnnotation - target annotation (optional)\n * @param {string} targetAnnotationEncoded - target annotation in its encoded form, as used in manifest settings\n * @param {boolean} importScenario - indicates if the function is called for the import, else it is the export\n * @returns returns section of the manifest based on path, generates an empty object in case it does not exists\n */\nexport const getManifestSectionByPathV4 = (\n manifest: object,\n path: string,\n targetAnnotation?: string,\n targetAnnotationEncoded?: string\n): object | undefined => {\n if (!path) {\n return undefined;\n }\n let manifestSection = manifest;\n const pathElements = path.split('/');\n for (let index = 0; index < pathElements.length; index++) {\n const element = pathElements[index];\n if (element === '[]') {\n continue;\n }\n const decodedElement =\n targetAnnotationEncoded && targetAnnotationEncoded === element\n ? targetAnnotation\n : element.replace('??', '/');\n //?? can be used in path functions to encode /\n if (!manifestSection[decodedElement]) {\n if (pathElements[index + 1] === '[]') {\n manifestSection[decodedElement] = [];\n } else {\n manifestSection[decodedElement] = {};\n }\n }\n manifestSection = manifestSection[decodedElement];\n }\n return manifestSection;\n};\n\nexport function getSchemaKeyOfLineItemRecord(lineItemRecord: DataFieldAbstractTypes): string {\n let schemaKey, target, value;\n switch (lineItemRecord.$Type) {\n case UIAnnotationTypes.DataField:\n schemaKey = getAnnotationPropertyValue(lineItemRecord.Value);\n break;\n case UIAnnotationTypes.DataFieldWithUrl:\n schemaKey =\n typeof lineItemRecord.Value === 'string'\n ? lineItemRecord.Value\n : getAnnotationPropertyValue(lineItemRecord.Value);\n break;\n case UIAnnotationTypes.DataFieldForAnnotation:\n target = lineItemRecord.Target.value;\n if (target) {\n schemaKey =\n 'DataFieldForAnnotation:::sTarget::' +\n target\n .replace('@UI', '@com.sap.vocabularies.UI.v1')\n .replace('@Communication', '@com.sap.vocabularies.Communication.v1')\n .replace('@Contact', '@com.sap.vocabularies.Contact.v1');\n }\n break;\n case UIAnnotationTypes.DataFieldForAction:\n if (lineItemRecord.Inline) {\n schemaKey = `DataFieldForAction:::sAction::${prepareRef(lineItemRecord.Action as string)}`;\n }\n break;\n case UIAnnotationTypes.DataFieldWithIntentBasedNavigation:\n value = getAnnotationPropertyValue(lineItemRecord.Value);\n schemaKey = `DataFieldWithIntentBasedNavigation:::sProperty::${value}:::sSemanticObject::${lineItemRecord.SemanticObject}:::sAction::${lineItemRecord.Action}`;\n break;\n case UIAnnotationTypes.DataFieldForIntentBasedNavigation:\n if (lineItemRecord.Inline) {\n schemaKey = `DataFieldForIntentBasedNavigation:::sSemanticObject::${\n lineItemRecord.SemanticObject\n }:::sAction::${prepareRef(lineItemRecord.Action as string)}`;\n }\n break;\n case UIAnnotationTypes.DataFieldWithNavigationPath:\n value = getAnnotationPropertyValue(lineItemRecord.Value);\n target = getAnnotationPropertyValue(lineItemRecord.Target);\n schemaKey = 'DataFieldWithNavigationPath:::sProperty::' + value + ':::sTarget::' + target;\n break;\n default:\n break;\n }\n\n return schemaKey;\n}\n\n/**\n * Evaluates the target annotation of a reference facet and actualizes the facets for the config\n * @param {AnnotationTerm} annotationRecord - the actual annotation record\n * @param {FacetConfigs} facets - list of facets in config format, to be updated\n * @param {string} serviceName - name of the service of the app\n * @param {string} entityName - the entity (type) name\n * @param {ConverterOutput} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n */\n/**\n * Evaluates the target annotation of a reference facet and actualizes the facets for the config\n * @param {AnnotationTerm} annotationRecord - the actual annotation record\n * @param {FacetConfigs} facets - list of facets in config format, to be updated\n * @param {EntityType} entityType - the entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {FioriElementsVersion} oDataVersion - OData version\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nfunction evaluateTargetAnnotation(\n section: FacetSection,\n annotationRecord: AnnotationTerm<ReferenceFacet>,\n facets: FacetConfigs,\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n oDataVersion = FioriElementsVersion.v2,\n logger?: ExtensionLogger\n): void {\n const alias = findAlias(UIVOCABULARY, oDataServiceAVT);\n let path = section ? section.key : '';\n const targetEntityType = section.entityType;\n let annotation: string, targetAnnotation;\n\n if (path.includes(UIAnnotationTerms.Chart) || path.includes(alias + '.Chart')) {\n facets[path] = { base: FacetBase.Chart };\n facets[path].entityType = targetEntityType;\n } else if (path.includes(UIAnnotationTerms.Identification) || path.includes(alias + '.Identification')) {\n annotation = path.split('.')[path.split('.').length - 1];\n targetAnnotation = targetEntityType.annotations[alias][annotation];\n facets[path] = { base: FacetBase.Identification };\n facets[path].entityType = targetEntityType;\n facets[path].target = targetAnnotation;\n } else if (entityType && (path.includes(UIAnnotationTerms.LineItem) || path.includes(alias + '.LineItem'))) {\n if (!path.includes(UIAnnotationTerms.LineItem) && path.includes('.LineItem')) {\n const pathParts = path.split('::');\n pathParts[pathParts.length - 1] = `@${UIAnnotationTerms.LineItem}`;\n path = pathParts.join('::');\n }\n facets[path] = { base: FacetBase.LineItem };\n facets[path].target = annotationRecord?.Target?.$target;\n facets[path].entityType = targetEntityType;\n } else if (path.includes(UIAnnotationTerms.FieldGroup) || path.includes(alias + '.FieldGroup')) {\n facets[path] = { base: FacetBase.Form };\n facets[path].target = annotationRecord?.Target?.$target;\n facets[path].entityType = targetEntityType;\n } else if (path.includes(UIAnnotationTerms.DataPoint) || path.includes(alias + '.DataPoint')) {\n facets[path] = { base: FacetBase.DataPoint };\n facets[path].target = annotationRecord?.Target?.$target;\n facets[path].entityType = targetEntityType;\n facets[path].Label = annotationRecord?.Target?.$target['Title'];\n } else if (path.includes('com.sap.vocabularies.Communication.v1.Contact') || path.includes(alias + '.Contact')) {\n facets[path] = { base: FacetBase.Contact };\n facets[path].target = annotationRecord?.Target?.$target;\n facets[path].entityType = targetEntityType;\n } else if (path.includes('com.sap.vocabularies.Communication.v1.Address') || path.includes(alias + '.Address')) {\n facets[path] = { base: FacetBase.Address };\n facets[path].target = annotationRecord?.Target?.$target;\n facets[path].entityType = targetEntityType;\n } else {\n facets[path] = { base: FacetBase.Unknown };\n }\n if (facets[path]) {\n facets[path].annotationPath = `/${annotationRecord.fullyQualifiedName.replace(\n '@com.sap.vocabularies',\n VOCWITHSLASH\n )}`;\n if (annotationRecord.Label) {\n facets[path].Label = annotationRecord.Label as string;\n }\n // Add Facet ID\n if (annotationRecord.ID) {\n facets[path]['ID'] = annotationRecord.ID as string;\n } else if (oDataVersion === FioriElementsVersion.v4) {\n log(logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOID4SECTION', { facet: annotationRecord.fullyQualifiedName })\n });\n }\n if (section && section.entityType) {\n facets[path].entityType = section.entityType;\n }\n }\n}\n\n/**\n * Adds the information from facets to the config\n * @param {AnnotationTerm} annotationRecord - the actual annotation record\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {string} serviceName - name of the service of the app\n * @param {string} entityName - the entity (type) name\n * @param {FacetConfigs} facets - list of facets in config format, to be updated\n * @param {FioriElementsVersion} oDataVersion - OData version\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nfunction addFacetToConfig(\n annotationRecord:\n | AnnotationTerm<CollectionFacet>\n | AnnotationTerm<ReferenceFacet>\n | AnnotationTerm<ReferenceURLFacet>,\n oDataServiceAVT: ConvertedMetadata,\n serviceName: string,\n entityType: EntityType,\n facets: FacetConfigs,\n oDataVersion = FioriElementsVersion.v2,\n logger?: ExtensionLogger\n): void {\n const section: FacetSection = getSectionFacet(\n annotationRecord,\n entityType,\n oDataServiceAVT,\n logger,\n oDataVersion,\n false\n );\n if (section) {\n switch (annotationRecord.$Type) {\n case UIAnnotationTypes.ReferenceFacet: {\n evaluateTargetAnnotation(\n section,\n annotationRecord,\n facets,\n entityType,\n oDataServiceAVT,\n oDataVersion,\n logger\n );\n break;\n }\n case UIAnnotationTypes.CollectionFacet: {\n const annotationPath = `/${entityType.fullyQualifiedName}/${\n annotationRecord.fullyQualifiedName.split(entityType.fullyQualifiedName)[1]\n }`;\n const facet = (facets[section.key] = {\n base: FacetBase.CollectionFacet,\n facets: {},\n ID: section.ID,\n annotationPath: annotationPath,\n Label: section.label\n });\n annotationRecord.Facets?.forEach((collectionItem) => {\n addFacetToConfig(\n collectionItem,\n oDataServiceAVT,\n serviceName,\n entityType,\n facet.facets,\n oDataVersion,\n logger\n );\n });\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve header facet configurations that can be used to generate ObjectPage schemas\n * @param {QualifiedName} entityTypeName - the name of the actual entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {FioriElementsVersion} oDataVersion - OData version\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nexport function getObjectPageHeaderFacets(\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n oDataVersion = FioriElementsVersion.v2,\n logger?: ExtensionLogger\n): FacetConfigs | undefined {\n const facets: FacetConfigs = {};\n if (!entityType || !entityType.annotations) {\n return;\n }\n const alias = findAlias(UIVOCABULARY, oDataServiceAVT);\n const facetAnnotation = alias && entityType.annotations[alias] && entityType.annotations[alias].HeaderFacets;\n if (facetAnnotation) {\n const lastDot = entityType.fullyQualifiedName.lastIndexOf('.');\n const serviceName = entityType.fullyQualifiedName.substring(0, lastDot);\n\n // Add facets to configuration\n facetAnnotation.forEach((item) => {\n addFacetToConfig(item, oDataServiceAVT, serviceName, entityType, facets, oDataVersion, logger);\n });\n }\n return facets;\n}\n\n/**\n * Retrieve facet configurations that can be used to generate ObjectPage schemas\n * @param {QualifiedName} entityTypeName - the name of the actual entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {FioriElementsVersion} oDataVersion - OData version\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nexport function getObjectPageFacets(\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n oDataVersion = FioriElementsVersion.v2,\n logger?: ExtensionLogger\n): FacetConfigs | undefined {\n const facets: FacetConfigs = {};\n if (!entityType || !entityType.annotations) {\n return;\n }\n const alias = findAlias(UIVOCABULARY, oDataServiceAVT);\n const facetAnnotation = alias && entityType.annotations[alias] && entityType.annotations[alias].Facets;\n if (facetAnnotation) {\n const lastDot = entityType.fullyQualifiedName.lastIndexOf('.');\n const serviceName = entityType.fullyQualifiedName.substring(0, lastDot);\n\n // Add facets to configuration\n facetAnnotation.forEach((item) => {\n addFacetToConfig(item, oDataServiceAVT, serviceName, entityType, facets, oDataVersion, logger);\n });\n }\n return facets;\n}\n\n/**\n * Returns the version of Fiori elements (v2/v4) from a given manifest\n * @param manifest - the manifest.json file\n */\nexport function getVersionFromManifest(manifest: Manifest): FioriElementsVersion {\n if (manifest[ManifestSection.generic] || manifest[ManifestSection.ovp]) {\n return FioriElementsVersion.v2;\n } else {\n return FioriElementsVersion.v4;\n }\n}\n\n/**\n * Determines the template type of a V2 app\n * @param manifest - the manifest.json file\n * @param {ExtensionLogger} logger - Logger class for logging messages\n * @returns {TemplateType} the template type\n */\nexport function determineV2Template(manifest: Manifest, logger: ExtensionLogger): TemplateType | undefined {\n let templateType: TemplateType;\n if (manifest[ManifestSection.generic]) {\n const v2Pages = manifest[ManifestSection.generic].pages;\n if (!v2Pages) {\n log(logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOPAGES', { appId: manifest['sap.app']['id'] }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n for (const pageKey in v2Pages) {\n const v2Page = v2Pages[pageKey];\n if (getPageTypeV2(v2Page.component.name) === PageType.AnalyticalListPage) {\n templateType = TemplateType.AnalyticalListPageV2;\n break;\n } else if (getPageTypeV2(v2Page.component.name) === PageType.ListReport) {\n templateType = TemplateType.ListReportObjectPageV2;\n break;\n }\n }\n } else {\n if (!templateType) {\n log(logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOTEMPLATE', { section: ManifestSection.generic }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n }\n }\n return templateType;\n}\n\n/**\n * Determines the template type, based on the given manifest entries of the app\n * @param manifest - the manifest.json file\n * @param {FioriElementsVersion} fioriElementsVersion - OData or FE version\n * @param {ExtensionLogger} logger - Logger class for logging messages\n * @returns {TemplateType} the template type\n */\nexport function getTemplateTypeFromManifest(\n manifest: Manifest,\n fioriElementsVersion: FioriElementsVersion,\n logger: ExtensionLogger\n): TemplateType | undefined {\n let templateType: TemplateType;\n if (manifest[ManifestSection.ovp]) {\n templateType = TemplateType.OverviewPageV2;\n } else if (fioriElementsVersion === FioriElementsVersion.v2) {\n templateType = determineV2Template(manifest, logger);\n }\n return templateType;\n}\n\n/**\n * Adds title and description to a section or header section in an app schema\n * @param facet - intermediate facet structure comprising annotation information\n * @param section - section in the app schema\n * @param facetKey - key of the facet\n */\nexport function addSectionTitleAndDescription(facet: FacetConfig, section: Definition, facetKey: string): void {\n if (facet?.ID) {\n section.title = FacetTitlePrefix + facet.ID;\n } else {\n section.title = facetKey.replace(/@com.sap/g, 'com.sap');\n }\n // Description\n if (facet?.Label) {\n section.description = facet.Label;\n } else if (facet?.ID) {\n section.description = facet.ID;\n } else {\n section.description = facetKey.substring(facetKey.lastIndexOf('.') + 1);\n }\n}\n\n/**\n * Adds target title or description to a section or header section in an app schema\n * @param facet - intermediate facet structure comprising annotation information\n * @param section - section in the app schema\n * @param facetKey - key of the facet\n */\nexport function addTargetTitleAndSectionDescription(facet: FacetConfig, section: Definition, facetKey: string): void {\n addSectionTitleAndDescription(facet, section, facetKey);\n if (facet?.Label) {\n section.description = facet?.Label;\n } else if (facet?.['Title']) {\n section.description = facet['Title'];\n } else if (facet?.target?.['Title']) {\n section.description = facet.target['Title'];\n }\n}\n\n/**\n * Creates a default object for a new section or subsection, and adds the ID as title if present.\n * @param facet Facet configuration, to be analyzed\n * @returns the new section object\n */\nexport function createDefaultSection(appSchema: Definition, facet: FacetConfig, facetKey: string): Definition {\n if (!facet) {\n return undefined;\n }\n let section: Definition;\n if (appSchema.definitions.ObjectPageSection) {\n //base type in V2, with properties\n section = JSON.parse(JSON.stringify(appSchema.definitions.ObjectPageSection));\n } else {\n section = {\n type: 'object',\n properties: {},\n additionalProperties: false\n };\n section[SchemaTag.isViewNode] = true;\n }\n section[SchemaTag.annotationPath] = facet.annotationPath;\n addSectionTitleAndDescription(facet, section, facetKey);\n return section;\n}\n\n/**\n * Retrieve page section data(so far id/key and label/description).\n * @param {EntityType} entityType The actual entityType\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {ExtensionLogger} logger - Logger class for logging messages\n * @param {FioriElementsVersion} oDataVersion - OData version\n * @param {boolean} [checkUnresolvableFacets=false] - Check and avoid facets and sections without ID and Target.\n * @returns {FacetSection[]} - Array of facets or sections\n */\nexport function getObjectPageFacetSection(\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n logger?: ExtensionLogger,\n oDataVersion = FioriElementsVersion.v2,\n checkUnresolvableFacets = false\n): FacetSection[] {\n const alias = findAlias(UIVOCABULARY, oDataServiceAVT);\n let sections: FacetSection[] = [];\n if (entityType) {\n const facetAnnotation =\n alias && entityType.annotations && entityType.annotations[alias] && entityType.annotations[alias].Facets;\n\n if (facetAnnotation) {\n sections = facetAnnotation.reduce(function (\n result: FacetSection[],\n item:\n | AnnotationTerm<CollectionFacet>\n | AnnotationTerm<ReferenceFacet>\n | AnnotationTerm<ReferenceURLFacet>\n ) {\n if (checkUnresolvableFacets && !item['ID'] && !('Target' in item && item['Target'])) {\n return result;\n }\n const section: FacetSection = getSectionFacet(\n item,\n entityType,\n oDataServiceAVT,\n logger,\n oDataVersion,\n true\n );\n if (section) {\n result.push(section);\n }\n return result;\n },\n sections);\n }\n return sections;\n }\n}\n\n/**\n * Cleans empty sub-structures from the export result for manifest\n * @param manifest - manifest.json part of the export result\n * @param path - path in the manifest\n * @param targetAnnotation - target annotation (optional, in case of sections, subsections)\n * @param targetAnnotationEncoded - encoded version of the target annotation, as represented in the manifest\n */\nexport const deleteEmptyStructure = (\n manifest: object,\n path: string,\n targetAnnotation?: string,\n targetAnnotationEncoded?: string\n): void => {\n if (!path) {\n return;\n }\n let manifestSection = manifest;\n const pathArray = path.split('/');\n pathArray.forEach(function (element) {\n const decodedElement =\n targetAnnotationEncoded && targetAnnotationEncoded === element\n ? targetAnnotation\n : element.replace('??', '/');\n if (!manifestSection[decodedElement]) {\n return;\n }\n if (Object.keys(manifestSection[decodedElement]).length === 0) {\n if (Array.isArray(manifestSection)) {\n manifestSection.splice(Number(decodedElement), 1);\n } else {\n delete manifestSection[decodedElement];\n }\n pathArray.pop();\n deleteEmptyStructure(manifest, pathArray.join('/'), targetAnnotation, targetAnnotationEncoded);\n return;\n }\n manifestSection = manifestSection && manifestSection[decodedElement];\n });\n};\n\n/**\n * Method which returns generic schema file name.\n * @param {SchemaType | PageType} schemaType Schema type or Page type.\n * @return {string} File name of generic schema.\n */\nconst getGenericSchemaFileName = (schemaType: SchemaType | PageType): string => {\n return `${schemaType}`;\n};\n\n/**\n * Method which returns schema file name and path depending on passed schema or page type.\n * @param {SchemaType | PageType} schemaType Schema type or Page type.\n * @param {string} [entitySet] Entity set string.\n * @return {SchemaFilePath} File path info.\n */\nexport const getSchemaFilePath = (schemaType: SchemaType | PageType, entitySet?: string): SchemaFilePath => {\n const schemaFile: SchemaFilePath = {\n filename: '',\n path: ''\n };\n switch (schemaType) {\n // Application schema\n case SchemaType.Application: {\n // File name\n schemaFile.filename = `App`;\n // Full path\n schemaFile.path = `./${DirName.Schemas}/${schemaFile.filename}`;\n break;\n }\n // List report and object page\n case SchemaType.ListReport:\n case SchemaType.ObjectPage: {\n // File name\n schemaFile.filename = entitySet ? `${schemaType}_${entitySet}` : getGenericSchemaFileName(schemaType);\n // Full path\n schemaFile.path = `../${DirName.Schemas}/${schemaFile.filename}`;\n break;\n }\n // Other page configs\n default: {\n // File name\n schemaFile.filename = getGenericSchemaFileName(schemaType);\n // Full path\n schemaFile.path = `../${DirName.Schemas}/${schemaFile.filename}`;\n break;\n }\n }\n schemaFile.path += '.json';\n return schemaFile;\n};\n\n/**\n * Method which generates id of page according to passed parameters.\n * @param appVersion - Fiori Elements version - V2 or V4.\n * @param pageType - Page type.\n * @param entitySet - Entity Set.\n * @param viewId - Custom page's viewId (optional).\n * @returns {string} Generated page id\n */\n\nexport function generatePageId(pageType: PageType, entitySet: string, viewId?: string): string {\n if (pageType === PageType.CustomPage) {\n const names = viewId && viewId.split('.');\n return names && names[names.length - 1] + 'Page';\n }\n const parts: string[] = [];\n parts.push(pageType);\n if (entitySet) {\n parts.push(entitySet);\n }\n return parts.join('_');\n}\n\nexport type NextDefinition = {\n configObject?: object;\n targetDefinition?: object;\n title?: string;\n};\n\nfunction fillArrayFromAnyOfReference(\n element: Definition,\n appSchema: Definition,\n currentConfigObject: object,\n definitionArray: any[]\n) {\n const $ref = element.$ref;\n if ($ref) {\n const definitionKey = $ref.split(DEFINITION_LINK_PREFIX)[1];\n if (appSchema.definitions[definitionKey]) {\n const controlProperty = appSchema.definitions[definitionKey]['controlProperty'];\n if ($ref.includes(currentConfigObject[controlProperty])) {\n definitionArray.push(definitionKey);\n }\n }\n }\n}\n\n/**\n * Fills an array of next definitions from given references in the JSON schema\n * @param propertyDefinition - Definition of the current property in schema\n * @param currentConfigObject - Current object in the config JSON. Evaluated to get the right value of a cntrolling property,\n * for making the right choice in case of multiple options (anyOf)\n * @param appSchema - app-spcific JSON schema\n * @returns an array of definitions to proceed with\n */\nfunction fillArrayFromPropertyDefinition(\n propertyDefinition: Definition,\n currentConfigObject: object,\n appSchema: Definition\n): any[] {\n const definitionArray = [];\n if (propertyDefinition.$ref) {\n definitionArray.push(propertyDefinition.$ref.split(DEFINITION_LINK_PREFIX)[1]);\n } else if (propertyDefinition.anyOf) {\n if (currentConfigObject) {\n propertyDefinition.anyOf.forEach((element) => {\n fillArrayFromAnyOfReference(element as Definition, appSchema, currentConfigObject, definitionArray);\n });\n }\n if (definitionArray.length === 0) {\n return undefined;\n }\n }\n return definitionArray;\n}\n\n/**\n * Determines the next definition to be handled, based on the definition array.\n * It also creates the Metadata instance for the next definition, to subsequently access metadata like the syncRule\n * @param definitionArray - Array of definitions, as determined by fillArrayFromNextDefinition\n * @param appSchema - app-specific JSON schema\n * @param title - default title\n * @param currentConfigObject - Current object in the config JSON.\n * @param key - actual key\n * @param {MetadataInstanceInterface} factory - factory for creating metadata instances\n * @param pageType - page type\n * @param propertyDefinition - Definition of the current property in schema\n * @returns {NextDefinition} - Next target definition to process\n */\nfunction determineNextDefinitionFromDefinitionArray(\n definitionArray: any[],\n appSchema: object,\n title: string,\n currentConfigObject: object,\n key: string,\n factory: MetadataInstanceInterface,\n pageType: PageType,\n propertyDefinition: object\n): NextDefinition {\n let nextDefinition: NextDefinition = {\n configObject: undefined,\n targetDefinition: {},\n title: ''\n };\n if (definitionArray.length) {\n const lastDefinition = definitionArray[definitionArray.length - 1];\n nextDefinition.targetDefinition = appSchema['definitions'][lastDefinition];\n\n if (nextDefinition?.targetDefinition?.['$ref'] || nextDefinition?.targetDefinition?.['type'] === 'array') {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n nextDefinition = getNextTargetDefinition(\n appSchema,\n title,\n currentConfigObject,\n nextDefinition.targetDefinition,\n key,\n factory,\n pageType\n );\n return nextDefinition;\n }\n if (definitionArray.length > 1) {\n definitionArray.forEach((element) => {\n if (element !== '') {\n nextDefinition.targetDefinition['properties'] = {\n ...nextDefinition.targetDefinition['properties'],\n ...appSchema['definitions'][element]['properties']\n };\n }\n });\n }\n nextDefinition.title = nextDefinition?.targetDefinition?.['title']\n ? nextDefinition.targetDefinition['title']\n : title;\n const factoryKey = lastDefinition?.split('<')[0];\n const targetObject = currentConfigObject ? currentConfigObject : {};\n nextDefinition.configObject = factory.createInstance(\n pageType,\n factoryKey,\n targetObject,\n nextDefinition?.targetDefinition?.['controlProperty']\n );\n } else {\n //e.g. sections ==> loop over all properties = subsections or other\n nextDefinition.targetDefinition = propertyDefinition;\n nextDefinition.title = nextDefinition.targetDefinition['title']\n ? nextDefinition.targetDefinition['title']\n : key;\n nextDefinition.configObject = currentConfigObject;\n }\n return nextDefinition;\n}\n\n/**\n * Recursive function to determine the next config part, next definition in the app schema and the title\n * @param appSchema - app-spcific JSON schema\n * @param title - default title\n * @param currentConfigObject - current part of the configuration that gets traversed\n * @param propertyDefinition - definition of a given property in the app schema\n * @param key - actual key\n * @param {MetadataInstanceInterface} factory - factory for creating metadata instances\n * @param pageType - page type\n */\nexport function getNextTargetDefinition(\n appSchema: object,\n title: string,\n currentConfigObject: object,\n propertyDefinition: object,\n key: string,\n factory: MetadataInstanceInterface,\n pageType: PageType\n): NextDefinition {\n let nextDefinition: NextDefinition;\n if (propertyDefinition['type'] === 'array') {\n nextDefinition = getNextTargetDefinition(\n appSchema,\n title,\n currentConfigObject,\n propertyDefinition['items'],\n key,\n factory,\n pageType\n );\n return nextDefinition;\n }\n const definitionArray = fillArrayFromPropertyDefinition(propertyDefinition, currentConfigObject, appSchema);\n if (!definitionArray) {\n return undefined;\n }\n nextDefinition = determineNextDefinitionFromDefinitionArray(\n definitionArray,\n appSchema,\n title,\n currentConfigObject,\n key,\n factory,\n pageType,\n propertyDefinition\n );\n return nextDefinition;\n}\n\nexport function prepareRef(refInput: string): string {\n return refInput.replace('#', '::').replace(/\\//g, ':2f');\n}\n\n/**\n * Custom array merge function called by deepmerge's merge function\n *\n * @param {*} target Target array\n * @param {*} source Source array\n * @param {*} options options object provided by deepmerge's merge function\n * @returns\n */\nexport const arrayCombineMerge = (target, source, options): string[] => {\n const destination = target.slice();\n source.forEach((item, index) => {\n if (typeof destination[index] === 'undefined') {\n destination[index] = options.cloneUnlessOtherwiseSpecified(item, options);\n } else if (options.isMergeableObject(item)) {\n destination[index] = merge(target[index], item, options);\n } else if (target.indexOf(item) === -1) {\n destination.push(item);\n }\n });\n return destination;\n};\n\n/**\n * Converts an enum into a CSV\n * @param {object} manifestSection - manifestSection where the key exists\n * @param {object} configPart - Property as mentioned in config file\n * @param {string} key - Property to be exported to manifest\n */\nexport function convertEnumToCSV(manifestSection, configPart, key: string): void {\n manifestSection[key] = JSON.parse(JSON.stringify(configPart[key]));\n // convert enum array to joined string\n const field = configPart[key];\n manifestSection[key] = field.join();\n}\n\n/**\n * Converts an action ID from the internal format (schema, config) to the stable ID representation\n * @param actionId - the (unique) internal format of the action ID\n * @returns the converted action ID\n */\nexport function convertActionKeyToStableId(actionId: string): string {\n return (actionId.indexOf('??') > -1 ? actionId.split('??')[1] : actionId).replace(/@/g, '::');\n}\n", "/**\n * Represents the card default grid size in columns and rows\n */\nexport type DefaultSpanDef =\n | {\n /**\n * Represents the number of the number of grid columns.\n */\n cols: number;\n /**\n * Represents the number of the number of grid rows.\n */\n rows: number;\n /**\n * Represents if user wants to show only header part of card in resizable layout.\n */\n showOnlyHeader?: boolean;\n /**\n * If the user wants to show more text in title then he or she can configure no of lines to be shown in title(Maximum allowed 3 lines).\n */\n minimumTitleRow?: number;\n /**\n * If the user wants to show more text in title then he or she can configure no of lines to be shown in sub-title(Maximum allowed 2 lines).\n */\n minimumSubTitleRow?: number;\n }\n | 'auto';\n\nexport interface TabSetting {\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n /**\n * Represents the selection annotation path.\n */\n selectionAnnotationPath?: string;\n /**\n * Represents the chart annotation path.\n */\n chartAnnotationPath?: string;\n /**\n * Represents the presentation annotation path.\n */\n presentationAnnotationPath?: string;\n /**\n * Represents the data point annotation path.\n */\n dataPointAnnotationPath?: string;\n /**\n * Represents the identification annotation path.\n */\n identificationAnnotationPath?: string;\n /**\n * Represents the dynamic subtitle annotation path\n */\n dynamicSubtitleAnnotationPath?: string;\n /**\n * Represents the drop down value to be shown\n */\n value?: string;\n /**\n * This property is responsible for setting specific chart settings.\n */\n chartProperties?: {\n plotArea?: PlotAreaDef;\n };\n /**\n * Represents the configuration to customize the column stacked chart.\n */\n colorPalette?:\n | {\n [k: string]: any;\n }[]\n | {\n [k: string]: any;\n };\n [k: string]: any;\n}\n\nexport interface CommonCardSettings {\n /**\n * Represents the dominant entity set that will be displayed in the given card.\n */\n entitySet?: string;\n /**\n * The language-dependent title of the card, used in the card header.\n * @i18nClassification TIT: Title of the card, used in the card header\n */\n title: string;\n /**\n * The language-dependent subtitle of the card, used in the card header.\n * @i18nClassification TIT: Subtitle of the card, used in the card header\n */\n subTitle?: string;\n /**\n * Represents the identification annotation path.\n */\n identificationAnnotationPath?: string;\n /**\n * Represents the selection annotation path.\n */\n selectionAnnotationPath?: string;\n /**\n * Represents the presentation annotation path.\n */\n presentationAnnotationPath?: string;\n /**\n * The category of the card, as used in the card header.\n */\n category?: string;\n /**\n * To load cards with specific requirements, define a default size as part of the card definition in the descriptor file.\n */\n defaultSpan?: DefaultSpanDef;\n /**\n * Define an authorization check at card level.\n */\n requireAppAuthorization?: string;\n /**\n * Represents the card with view switch control.\n */\n tabs?: [TabSetting, ...TabSetting[]];\n /**\n * add $Select parameter in data fetch URL\n */\n addODataSelect?: boolean;\n}\n\nexport enum ChartCardType {\n cardBubble = 'cardBubble',\n cardchartsline = 'cardchartsline',\n cardchartsdonut = 'cardchartsdonut'\n}\n\nexport enum CardTemplateType {\n analytical = 'sap.ovp.cards.charts.analytical',\n list = 'sap.ovp.cards.list',\n linklist = 'sap.ovp.cards.linklist',\n table = 'sap.ovp.cards.table',\n stack = 'sap.ovp.cards.stack'\n}\n\nexport const cardTemplateTypeMap = {\n 'sap.ovp.cards.charts.analytical': 'AnalyticalCard',\n 'sap.ovp.cards.list': 'ListCard',\n 'sap.ovp.cards.linklist': 'LinklistCard',\n 'sap.ovp.cards.table': 'TableCard',\n 'sap.ovp.cards.stack': 'StackCard'\n};\n\nexport enum CardSettingsType {\n analyticalCardSettings = 'analyticalCardSettings',\n listCardSettings = 'listCardSettings',\n stackCardSettings = 'stackCardSettings',\n linkListCardSettings = 'linkListCardSettings',\n tableCardSettings = 'tableCardSettings'\n}\n\n/**\n * Custom Card\n * @isViewNode true\n */\nexport interface CustomCard {\n /**\n * Represents the model for the card\n */\n model?: string;\n /**\n * Represents the card component path to use for this card.\n * @TJS-pattern ^(?!(sap.ovp.cards.charts.analytical|sap.ovp.cards.linklist|sap.ovp.cards.list|sap.ovp.cards.stack|sap.ovp.cards.table)$).*$\n */\n template: string; // due the extension concept for cards, this can be any string\n /**\n * Represents the properties that are passed to the custom card.\n */\n settings?: CustomCardSettings;\n}\n/**\n * List Card\n * @isViewNode true\n * @controlProperty template\n */\nexport interface ListCard {\n /**\n * Represents the model for the List Card\n */\n model: string;\n /**\n * Represents the card component path to use for this List Card.\n */\n template: CardTemplateType.list;\n /**\n * Represents the properties that are passed to the list card.\n */\n listCardSettings: ListCardSettings;\n}\n\n/**\n * Stack Card\n * @isViewNode true\n * @controlProperty template\n */\nexport interface StackCard {\n /**\n * Represents the model for the StackCard.\n */\n model: string;\n /**\n * Represents the Stack Card component path to use for this card.\n */\n template: CardTemplateType.stack;\n /**\n * Represents the properties that are passed to the stack card.\n */\n stackCardSettings: StackCardSettings;\n}\n\n/**\n * Link List Card\n * @isViewNode true\n * @controlProperty template\n */\nexport interface LinklistCard {\n /**\n * Represents the model for the Link list Card.\n */\n model?: string;\n /**\n * Represents the Link list Card component path to use for this card.\n */\n template: CardTemplateType.linklist;\n /**\n * Represents the properties that are passed to the link list card.\n */\n linkListCardSettings: LinkListCardSettings;\n}\n\n/**\n * Table Card\n * @isViewNode true\n * @controlProperty template\n */\nexport interface TableCard {\n /**\n * Represents the model for the TableCard.\n */\n model: string;\n /**\n * Represents the Table Card component path to use for this card.\n */\n template: CardTemplateType.table;\n /**\n * Represents the properties that are passed to the table card.\n */\n tableCardSettings: TableCardSettings;\n /**\n * If you set disableTableCardFlexibility to true, then at runtime, DataField records are sorted according to the importance set in the com.sap.vocabularies.UI.v1.ImportanceType annotation, and their order of entry.\n * If you set disableTableCardFlexibility to false, then at runtime, table columns are sorted according to the importance set in the com.sap.vocabularies.UI.v1.ImportanceType annotation, and their order of entry.\n */\n disableTableCardFlexibility?: boolean;\n}\n\n/**\n * Analytical Card\n * @isViewNode true\n * @controlProperty template\n */\nexport interface AnalyticalCard {\n /**\n * Represents the model for the Analytical Card\n */\n model: string;\n /**\n * Represents the Analytical Card component path to use for this card.\n */\n template: CardTemplateType.analytical;\n /**\n * Represents the properties that are passed to the analytical card.\n */\n analyticalCardSettings?: AnalyticalCardSettings;\n}\n\nexport type CustomCardNavigationType = 'dataPointNav' | 'chartNav' | 'headerNav' | 'noHeaderNav';\n\n/**\n * @displayName settings\n */\nexport interface CustomCardSettings extends CommonCardSettings {\n /**\n * Represents the user defined string in placeholder card.\n */\n itemText?: string;\n /**\n * Represents things like people, number of items.\n */\n valueSelectionInfo?: string;\n /**\n * Represents the static content that will be displayed in this card.\n */\n staticContent?: {\n [k: string]: any;\n }[];\n /**\n * Represents the flavor of the list to use in this card. The flavor can be bar chart, carousel or standard.\n */\n listFlavor?: 'standard' | 'bar' | 'carousel';\n /**\n * Represents the type of list to use for this card. The list can be extended to display more information or condensed to take up less space on the card.\n */\n listType?: 'extended' | 'condensed';\n /**\n * Represents the sort key for the entity set.\n */\n sortBy?: string;\n /**\n * Represents the sort order for the entity set.\n */\n sortOrder?: 'ascending' | 'descending';\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n /**\n * Represents the chart annotation path.\n */\n chartAnnotationPath?: string;\n /**\n * Represents the data point annotation path.\n */\n dataPointAnnotationPath?: string;\n /**\n * Represents the KPI annotation path.\n */\n kpiAnnotationPath?: string;\n /**\n * Represents the selection presentation annotation path.\n */\n selectionPresentationAnnotationPath?: string;\n /**\n * Represents the dynamic subtitle annotation path.\n */\n dynamicSubtitleAnnotationPath?: string;\n /**\n * Represents the flag to indicate priority of number formatting over sap text.\n */\n ignoreSapText?: boolean;\n /**\n * Represents the Object Stream properties - properties that are passed to the Object Stream cards.\n */\n objectStreamCardsSettings?: {\n /**\n * If this flag is set to true, the first action on the footer of the quick view card will be a navigation action.\n * If the flag is set to false, the navigation action on the footer of the quick view card isn't displayed. Other actions are shown instead.\n * The default value of the flag is false.\n */\n showFirstActionInFooter?: boolean;\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n };\n /**\n * Represents the flag to indicate the use of object number/smart field.\n */\n enableLocaleCurrencyFormatting?: boolean;\n /**\n * Represents the configuration to alter the navigation mode in OVP Analytical Cards.\n */\n navigation?: CustomCardNavigationType;\n /**\n * Represents a switch to Show or Hide Filters in Cards Headers in OVP application.\n */\n showFilterInHeader?: boolean;\n /**\n * Represents a switch to Show or Hide Sorting in Cards Headers in OVP application.\n */\n showSortingInHeader?: boolean;\n /**\n * Flag for enabling images in a condensed list card.\n */\n imageSupported?: boolean;\n /**\n * Flag for show line item detail in list and table card.\n */\n showLineItemDetail?: boolean;\n /**\n * This property is responsible for showing and hiding text labels on the geo spots.\n */\n showLabelText?: boolean;\n /**\n * This property is responsible for passing custom parameters present in the entity set to the navigating application.\n */\n customParams?: string;\n /**\n * This property is responsible for setting specific chart settings.\n */\n chartProperties?: {\n plotArea?: PlotAreaDef;\n };\n /**\n * Represents the configuration to customize the column stacked chart.\n */\n colorPalette?:\n | {\n [k: string]: any;\n }[]\n | {\n [k: string]: any;\n };\n [k: string]: any;\n}\n\n/**\n * @displayName settings\n */\nexport interface AnalyticalCardSettings extends CommonCardSettings {\n /**\n * Represents the chart annotation path.\n */\n chartAnnotationPath?: string;\n /**\n * Represents the data point annotation path.\n */\n dataPointAnnotationPath?: string;\n /**\n * Represents things like people, number of items.\n */\n valueSelectionInfo?: string;\n}\n\nexport enum ListFlavorType {\n standard = 'standard',\n bar = 'bar',\n carousel = 'carousel'\n}\n\nexport enum ListTypeType {\n extended = 'extended',\n condensed = 'condensed'\n}\n\nexport enum SortOrderType {\n ascending = 'ascending',\n descending = 'descending'\n}\n\n/**\n * @displayName settings\n */\nexport interface ListCardSettings extends CommonCardSettings {\n /**\n * Represents the flavor of the list to use in this card. The flavor can be bar chart, carousel or standard.\n */\n listFlavor?: ListFlavorType;\n /**\n * Represents the type of list to use for this card. The list can be extended to display more information or condensed to take up less space on the card.\n */\n listType?: ListTypeType;\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n /**\n * Represents things like people, number of items.\n */\n valueSelectionInfo?: string;\n /**\n * Defines the property by which the list shall be sorted.\n */\n sortBy?: string;\n /**\n * Defines the sort order.\n */\n sortOrder?: SortOrderType;\n /**\n * Represents the data point annotation path.\n */\n dataPointAnnotationPath?: string;\n /**\n * Flag for show line item detail in list and table card.\n */\n showLineItemDetail?: boolean;\n}\n\n/**\n * @displayName settings\n */\nexport interface StackCardSettings extends CommonCardSettings {\n /**\n * Represents the user defined string in placeholder card.\n */\n itemText?: string;\n /**\n * The navigation property used to display information from a secondary entity set.\n */\n objectStreamCardsNavigationProperty?: string;\n /**\n * Configures additional settings for the cards displayed in the object stream.\n */\n objectStreamCardsSettings?: {\n /**\n * If this flag is set to true, the first action on the footer of the quick view card will be a navigation action.\n * If the flag is set to false, the navigation action on the footer of the quick view card isn't displayed. Other actions are shown instead.\n * The default value of the flag is false.\n */\n showFirstActionInFooter?: boolean;\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n };\n}\n\n/**\n * @displayName settings\n */\nexport interface TableCardSettings extends CommonCardSettings {\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n /**\n * Represents the flavor of the list to use in this card. The flavor can be bar chart, carousel or standard.\n */\n listFlavor?: ListFlavorType;\n /**\n * Represents the type of list to use for this card. The list can be extended to display more information or condensed to take up less space on the card.\n */\n listType?: ListTypeType;\n /**\n * Represents the data point annotation path.\n */\n dataPointAnnotationPath?: string;\n /**\n * Represents the selection presentation annotation path.\n */\n selectionPresentationAnnotationPath?: string;\n /**\n * Represents things like people, number of items.\n */\n valueSelectionInfo?: string;\n /**\n * Defines the property by which the list shall be sorted.\n */\n sortBy?: string;\n /**\n * Defines the sort order.\n */\n sortOrder?: SortOrderType;\n /**\n * Flag for show line item detail in list and table card.\n */\n showLineItemDetail?: boolean;\n}\n\nexport enum LinkListFlavorType {\n standard = 'standard',\n carousel = 'carousel'\n}\n\n/**\n * @displayName settings\n */\nexport interface LinkListCardSettings extends CommonCardSettings {\n /**\n * The targetUri is a URI defining the link to a quick view, related application or external resource.\n */\n targetUri?: string;\n /**\n * listFlavor represents the flavor of the list to use in this card. The flavor can be bar chart, carousel or standard.\n */\n listFlavor?: LinkListFlavorType;\n /**\n * sortBy defines the property by which the list shall be sorted.\n */\n sortBy?: string;\n /**\n * sortOrder defines the sort order. Valid values are 'ascending' or 'descending'\n */\n sortOrder?: SortOrderType;\n /**\n * headerAnnotationPath represents the path to a HeaderInfo annotation.\n */\n headerAnnotationPath?: string;\n /**\n * staticContent represents the static content of a static link list card.\n */\n staticContent?: StaticContent[];\n /**\n * Represents the annotation path.\n */\n annotationPath?: string;\n}\n\nexport interface StaticContent {\n /**\n * The language-dependent title of the StaticContent.\n * @i18nClassification TIT: Title of the StaticContent\n */\n title: string;\n /**\n * The language-dependent subtitle of the StaticContent.\n * @i18nClassification TIT: Subtitle of the StaticContent\n */\n subTitle?: string;\n /**\n * The uri for the image of the StaticContent.\n */\n imageUri?: string;\n /**\n * The uri for the target of the StaticContent.\n */\n targetUri?: string;\n /**\n * The alternative text for the image of the StaticContent.\n * @i18nClassification ALT: The alternative text for the image of the StaticContent\n */\n imageAltText?: string;\n /**\n * Used to provide intent based navigation.\n */\n semanticObject?: string;\n /**\n * Used to provide intent based navigation.\n */\n action?: string;\n /**\n * Open static content in a new window.\n */\n openInNewWindow?: boolean;\n}\n/**\n * Plot area is a parent property which defines multiple other properties for smoothness and marker size.\n */\nexport interface PlotAreaDef {\n /**\n * isSmoothed represents whether smoother curves are required or not.\n */\n isSmoothed?: boolean;\n /**\n * markerSize represents the size of the markers in scatter plots.\n */\n markerSize?: number;\n /**\n * dataLabel is a parent property that defines other properties for type.\n */\n dataLabel?: {\n /**\n * The data label type defines whether to display percentage values or actual counts in the donut chart.\n */\n type?: 'value' | 'percentage';\n };\n}\n", "import type { ExportType } from '../../common/types';\nimport type { SAPUI5_FRAGMENT_CLASS } from '../../common/webapp/manifest/sapUi5';\nimport type { ToolBar } from './ToolBar';\nimport type { Action } from './Action';\n\nexport enum HAlign {\n initial = 'Initial',\n left = 'Left',\n center = 'Center',\n right = 'Right',\n begin = 'Begin',\n end = 'End'\n}\n\n/**\n * Column\n * @isViewNode true\n */\nexport interface TableColumn {\n /**\n * The width property defines the width of the column.\n */\n width?: string;\n /**\n * The hAlign property defines the horizontal alignment of the column content.\n */\n hAlign?: HAlign;\n}\n\n/**\n * Column Action\n * @isViewNode true\n */\nexport interface TableColumnAction extends Action, TableColumn {}\n\n/**\n * Custom Column\n * @isViewNode true\n */\nexport interface TableCustomColumn {\n /**\n * In case the fragment needs to be re-used for multiple tabs, the id property must be set to make the ids unique.\n */\n id?: string;\n /**\n * The label of the custom column, preferably as an i18n key.\n * @i18nClassification COL: Custom column header text\n */\n text?: string;\n /**\n * The column key\n */\n columnKey: string;\n /**\n * The index of the column in the overall collection; if undefined, the custom column will be added at the end of the table.\n * @minimum 0\n * @hidden true\n */\n columnIndex?: number;\n /**\n * If the content of your custom column refers to a property (such as{Price}), you need to include a corresponding 'leadingProperty' entry in the column definition.\n */\n leadingProperty?: string;\n /**\n * The UI5 control used for your extension\n */\n className: typeof SAPUI5_FRAGMENT_CLASS;\n /**\n * The relative path to your fragment with path segments separated by '.'. The first element is the app ID.\n */\n fragmentName: string;\n /**\n * In case of a responsive table, you additionally need to specify a fragment for the table cells.\n */\n cellsFragmentName?: string;\n /**\n * If you use QuickVariantSelectionX, you need to define the extensions per tab. 'tabKey' is the key provided when defining the QuickVariantSelectionX.\n */\n tabKey?: string;\n /**\n * Type of custom column view extension.\n */\n extensionType: TableColumnExtensionTypeV2;\n}\n\nexport enum customColumnViewTypes {\n XML = 'XML'\n}\n\nexport enum TableTypeV2 {\n ResponsiveTable = 'ResponsiveTable',\n GridTable = 'GridTable',\n AnalyticalTable = 'AnalyticalTable',\n TreeTable = 'TreeTable'\n}\n\nexport enum TableColumnExtensionTypeV2 {\n ResponsiveTableColumnsExtension = 'ResponsiveTableColumnsExtension',\n AnalyticalTableColumnsExtension = 'AnalyticalTableColumnsExtension',\n TreeTableColumnsExtension = 'TreeTableColumnsExtension',\n GridTableColumnsExtension = 'GridTableColumnsExtension'\n}\n\n/**\n * Custom Columns\n * @isViewNode true\n */\nexport type TableCustomColumns = Array<TableCustomColumn>;\n\nexport interface GenericColumns {\n [key: string]: TableColumn | TableCustomColumns | TableColumnAction;\n}\n\nexport enum PopinLayout {\n Block = 'Block',\n GridLarge = 'GridLarge',\n GridSmall = 'GridSmall'\n}\n\nexport interface QuickVariant {\n /**\n * A key entry that is used for initializing the corresponding SegmentedButton item. This entry is mandatory.\n */\n key: string;\n /**\n * Use annotationPath to define a specific variant that points to a SelectionVariant or SelectionPresentationVariant annotation.\n */\n annotationPath: string;\n}\n\nexport interface QuickVariantX extends QuickVariant {\n /**\n * Represents the entity set that will be displayed in this variant\n */\n entitySet: string;\n /**\n * To enable navigation for charts, you have to set the property to \"true\" and maintain an internal navigation target in the manifest.\n */\n showItemNavigationOnChart?: boolean;\n}\n\nexport interface QuickVariantSelection {\n /**\n * To show the number of records available, set showCounts to true.\n */\n showCounts?: boolean;\n /**\n * The variants section contains a set of entries that point to SelectionVariants or SelectionPresentationVariants defined in the annotations.\n */\n variants: {\n [key: number]: QuickVariant;\n };\n}\n\nexport interface QuickVariantSelectionX extends QuickVariantSelection {\n /**\n * When set to true, this enables automatic binding of the table with either the tableBindingPath (if it exists) or the entitySet property.\n */\n enableAutoBinding?: boolean;\n /**\n * The variants section contains a set of entries that point to SelectionVariants or SelectionPresentationVariants defined in the annotations.\n */\n variants: {\n [key: number]: QuickVariantX;\n };\n}\n\nexport interface CreateWithFilters {\n /**\n * For the new create action to use the filter settings as input, set strategy to \"extension\" and implement the extension function as mentioned in help.sap.com for SAP S/4 HANA, section \u201CPrefilling Fields When Creating a New Entity Using an Extension Point\u201C.\n */\n strategy: Strategy;\n}\n\nexport enum Strategy {\n extension = 'extension'\n}\n\nexport enum DefaultContentView {\n charttable = 'charttable',\n chart = 'chart',\n table = 'table'\n}\n\nexport enum DefaultFilterMode {\n visual = 'visual',\n compact = 'compact'\n}\n\nexport interface CommonTableSettings<COLS = GenericColumns> {\n /**\n * Single selection in tables is enabled by default. If you want, you can enable multi-select.\n */\n multiSelect?: boolean;\n /**\n * The 'Select All' button is disabled by default. To enable it, set selectAll to true.\n */\n selectAll?: boolean;\n /**\n * If new data needs to be loaded from the back-end system for this, the number of lines to be loaded is restricted to the specified limit. The default value for this limit is 200. If selectAll is true, the selection limit is not evaluated.\n */\n selectionLimit?: number;\n /**\n * The showTablePersonalisation attribute can be set to false to hide the table personalization button.\n */\n showTablePersonalisation?: boolean;\n /**\n * useExportToExcel must be set to true if you want to export data to a spreadsheet application, for example Microsoft Excel.\n */\n useExportToExcel?: boolean;\n /**\n * Specifies the type of export to be used in the SmartTable control. UI5Client is the default option.\n */\n exportType?: ExportType;\n /**\n * Set to false if the table does not occupy the entire space available in the container.\n */\n fitContainer?: boolean;\n /**\n * With quickVariantSelection you can switch on the multiple view feature. It links to variants you must have added to your annotations beforehand.\n */\n quickVariantSelection?: QuickVariantSelection;\n /**\n * Switch on the multiple view feature (Multiple table mode with charts) and link to the variants you have added to your annotations.\n */\n quickVariantSelectionX?: QuickVariantSelectionX;\n /**\n * When set to true, this enables automatic binding of the table with either the tableBindingPath (if it exists) or the entitySet property.\n */\n enableAutoBinding?: boolean;\n /**\n * For analytical tables, grid tables and tree tables you can define a condensed table layout by setting condensedTableLayout to true.\n */\n condensedTableLayout?: boolean;\n /**\n * If you have enabled harmonized variant management, by default, you cannot set a filter in the table personalization settings.\n * To enable filtering, set the enableTableFilterInPageVariant property to true.\n */\n enableTableFilterInPageVariant?: boolean;\n /**\n * Tool Bar\n */\n toolBar?: ToolBar;\n /**\n * Columns\n * @isViewNode true\n */\n columns?: COLS;\n}\n\n/**\n * @isViewNode true\n */\nexport interface ResponsiveTable extends CommonTableSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.ResponsiveTable;\n /**\n * Set includeItemInSelection to true if you want items to be selectable when they are clicked rather than after the selection control has been set.\n */\n includeItemInSelection?: boolean;\n /**\n * popinLayout defines the layout in which the table pop-in rows are rendered.\n */\n popinLayout?: PopinLayout;\n /**\n * createWithFilters adds a new create action that uses the filter settings as input.\n */\n createWithFilters?: CreateWithFilters;\n /**\n * In the list report and on the object page, you can enable buttons to display and hide draft values. By default, these buttons are hidden. To enable them, set the showDraftToggle flag to true.\n */\n showDraftToggle?: boolean;\n /**\n * growingThreshold defines the number of items to be requested from the model for each grow. This property can only be used if the growing property is set to true.\n */\n growingThreshold?: number;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface TreeTable extends CommonTableSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.TreeTable;\n /**\n * In the list report and on the object page, you can enable buttons to display and hide draft values. By default, these buttons are hidden. To enable them, set the showDraftToggle flag to true.\n */\n showDraftToggle?: boolean;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface AnalyticalTable extends CommonTableSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.AnalyticalTable;\n /**\n * Represents the SelectionPresentationVariant qualifier. ALP looks for SelectionPresentationVariant with this qualifier and if not found, it looks for PresentationVariant with this qualifier.\n */\n qualifier?: string;\n /**\n * Determines the visualization of content area\n */\n defaultContentView?: DefaultContentView;\n /**\n * Determines the filter mode that is used\n */\n defaultFilterMode?: DefaultFilterMode;\n /**\n * Lets you define title for the content area\n * @i18nClassification TIT: Title for the content area\n */\n contentTitle?: string;\n //TODO keyPerformanceIndicators\n /**\n * createWithFilters adds a new create action that uses the filter settings as input.\n */\n createWithFilters?: CreateWithFilters;\n /**\n * In the list report and on the object page, you can enable buttons to display and hide draft values. By default, these buttons are hidden. To enable them, set the showDraftToggle flag to true.\n */\n showDraftToggle?: boolean;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface TableALPCommonSettings extends CommonTableSettings {\n /**\n * Represents the SelectionPresentationVariant qualifier. ALP looks for SelectionPresentationVariant with this qualifier and if not found, it looks for PresentationVariant with this qualifier.\n */\n qualifier?: string;\n /**\n * Determines the visualization of content area\n */\n defaultContentView?: DefaultContentView;\n /**\n * Determines the filter mode that is used\n */\n defaultFilterMode?: DefaultFilterMode;\n /**\n * Lets you define title for the content area\n * @i18nClassification TIT: Title for the content area\n */\n contentTitle?: string;\n /**\n * This setting allows developer to determine chart / table interaction. 'true' would mean chart act as filter for table, 'false' would mean that matching table rows are highlighted but table is not filtered.\n */\n autoHide?: boolean;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface ALPResponsiveTable extends TableALPCommonSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.ResponsiveTable;\n /**\n * growingThreshold defines the number of items to be requested from the model for each grow. This property can only be used if the growing property is set to true.\n */\n growingThreshold?: number;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface ALPGridTable extends TableALPCommonSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.GridTable;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface ALPAnalyticalTable extends TableALPCommonSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.AnalyticalTable;\n}\n\nexport interface TableALP extends ALPResponsiveTable, ALPGridTable, ALPAnalyticalTable {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.ResponsiveTable & TableTypeV2.GridTable & TableTypeV2.AnalyticalTable;\n}\n\n/**\n * Table\n * @isViewNode true\n * @controlProperty type\n */\nexport interface GridTable extends CommonTableSettings {\n /**\n * Use type to define the table type. Note: Grid tables, analytical tables, and tree tables cannot be rendered on smartphones. Instead, responsive tables always show on smartphones.\n */\n type?: TableTypeV2.GridTable;\n /**\n * createWithFilters adds a new create action that uses the filter settings as input.\n */\n createWithFilters?: CreateWithFilters;\n /**\n * In the list report and on the object page, you can enable buttons to display and hide draft values. By default, these buttons are hidden. To enable them, set the showDraftToggle flag to true.\n */\n showDraftToggle?: boolean;\n}\n", "import type {\n ObjectPageAnalyticalTable,\n ObjectPageGridTable,\n ObjectPageTreeTable,\n ObjectPageChart,\n ObjectPageForm,\n ObjectPageResponsiveTable\n} from './index';\nimport type { ViewTypes, SAPUI5_FRAGMENT_CLASS, SAPUI5_VIEW_CLASS } from '../../common/webapp/manifest/sapUi5';\n\n/**\n * Section\n * @isViewNode true\n */\nexport interface ObjectPageSectionV2 {\n /**\n * Whether the section should be visible on the screen.\n */\n visible?: boolean;\n}\n\n/**\n * Form\n * @isViewNode true\n */\nexport interface ObjectPageSectionFormV2 extends ObjectPageSectionV2 {\n form?: ObjectPageForm;\n}\n\nexport type AnyObjectPageTableType =\n | ObjectPageResponsiveTable\n | ObjectPageAnalyticalTable\n | ObjectPageGridTable\n | ObjectPageTreeTable;\n\n/**\n * Table\n * @isViewNode true\n */\nexport interface ObjectPageSectionTableV2 extends ObjectPageSectionV2 {\n table?: AnyObjectPageTableType;\n}\n\n/**\n * Chart\n * @isViewNode true\n */\nexport interface ObjectPageSectionChartV2 extends ObjectPageSectionV2 {\n chart?: ObjectPageChart;\n}\n\nexport interface ObjectPageSectionContactV2 extends ObjectPageSectionV2 {\n /**\n * Contact\n * @isViewNode true\n */\n contact?: object;\n}\n\nexport interface ObjectPageSectionAddressV2 extends ObjectPageSectionV2 {\n /**\n * Address\n * @isViewNode true\n */\n address?: object;\n}\n\nexport interface ObjectPageSubSectionContactV2 extends ObjectPageSectionV2 {\n /**\n * Contact\n * @isViewNode true\n */\n contact?: object;\n}\n\nexport interface ObjectPageSubSectionAddressV2 extends ObjectPageSectionV2 {\n /**\n * Address\n * @isViewNode true\n */\n address?: object;\n}\n\nexport type AnySubSectionType =\n | ObjectPageSectionTableV2\n | ObjectPageSectionChartV2\n | ObjectPageSectionFormV2\n | ObjectPageSubSectionContactV2\n | ObjectPageSubSectionAddressV2;\n\nexport interface GenericSubSections {\n [key: string]: AnySubSectionType;\n}\n\n/**\n * Subsection\n * @isViewNode true\n */\nexport interface ObjectPageSubSectionV2 extends ObjectPageSectionV2 {\n subsections?: GenericSubSections;\n}\n\nexport type AnySectionType =\n | ObjectPageSectionTableV2\n | ObjectPageSectionChartV2\n | ObjectPageSectionFormV2\n | ObjectPageSectionContactV2\n | ObjectPageSectionAddressV2\n | ObjectPageSectionV2\n | ObjectPageSubSectionV2;\n\nexport interface GenericSections {\n [key: string]: AnySectionType;\n}\n\nexport type CustomSectionTypeV2 = ObjectPageCustomSectionView | ObjectPageCustomSectionFragment;\n\n/**\n * Custom Sections\n * @isViewNode true\n */\nexport interface CustomSections {\n custom?: CustomSectionTypeV2[];\n}\n\nexport interface ObjectPageCustomSectionBase {\n relatedFacet: string;\n relativePosition: SectionPosition;\n /**\n * The label of the custom section, preferably as an i18n key\n * @i18nClassification TIT: Custom section title\n */\n title: string;\n}\n\n/**\n * View\n * @isViewNode true\n */\nexport interface ObjectPageCustomSectionView extends ObjectPageCustomSectionBase {\n className: typeof SAPUI5_VIEW_CLASS;\n viewName: string;\n type: ViewTypes;\n}\n\n/**\n * Fragment\n * @isViewNode true\n */\nexport interface ObjectPageCustomSectionFragment extends ObjectPageCustomSectionBase {\n className: typeof SAPUI5_FRAGMENT_CLASS;\n fragmentName: string;\n type: ExtensionFragmentTypes;\n}\n\nexport enum SectionPosition {\n AfterFacet = 'AfterFacet',\n BeforeFacet = 'BeforeFacet',\n ReplaceFacet = 'ReplaceFacet'\n}\n\nexport enum ExtensionFragmentTypes {\n XML = 'XML'\n}\n", "import type { SapUiGenericAppPageSettings } from '../../../common/page';\nimport type { FlexibleColumnLayout, FlexibleColumnLayoutType } from '../../../common';\n\nexport interface SapUiAppV2 {\n pages: SapUiAppPagesV2;\n _version?: string;\n settings?: SapUiAppSettingsV2;\n}\n\nexport interface SapUiAppPagesV2 {\n [key: string]: SapUiAppPageV2;\n}\n\nexport const FE_TEMPLATE_V2 = 'sap.suite.ui.generic.template';\nexport const FE_TEMPLATE_V2_OBJECT_PAGE = 'sap.suite.ui.generic.template.ObjectPage';\nexport const FE_TEMPLATE_V2_LIST_REPORT = 'sap.suite.ui.generic.template.ListReport';\nexport const FE_TEMPLATE_V2_ALP = 'sap.suite.ui.generic.template.AnalyticalListPage';\n\nexport interface SapUiAppPageV2 {\n entitySet?: string;\n navigationProperty?: string;\n component?: {\n name: string;\n list?: boolean;\n settings?: SapUiGenericAppPageSettings;\n sections?: {\n sectionIds?: SapUiGenericAppPageSettings;\n };\n };\n pages?: SapUiAppPagesV2;\n defaultLayoutType?: FlexibleColumnLayoutType;\n}\n\nexport interface SapUiAppSettingsV2 {\n flexibleColumnLayout?: FlexibleColumnLayout;\n}\n", "import type { ManifestSection } from '../../../common';\nimport type {\n SapUi5RootView,\n SapUi5OdataModel,\n SapUi5ResourceModel,\n SapUi5RoutingRoute,\n SAPUI5_FRAGMENT_CLASS,\n SAPUI5_VIEW_CLASS,\n ViewTypes\n} from '../../../common/webapp/manifest/sapUi5';\n\nexport interface SapUi5 {\n flexEnabled?: boolean;\n resources?: object;\n dependencies?: object;\n models?: { [key: string]: SapUi5OdataModel | SapUi5ResourceModel };\n routing?: SapUi5RoutingV2;\n [key: string]: string | object | boolean;\n rootView?: SapUi5RootView;\n extends?: SapUi5Extends;\n}\n\nexport interface SapUi5RoutingV2 {\n routes?: SapUi5RoutingRoute[];\n targets: SapUi5RoutingTargetsV2;\n}\n\nexport interface SapUi5RoutingTargetsV2 {\n [key: string]: SapUi5RoutingTargetV2 | SapUi5RoutingTargetCustomPageV2;\n}\n\nexport interface SapUi5RoutingTargetBaseV2 {\n options?: {\n settings?: SapUi5RoutingTargetSettingsV2;\n };\n}\n\nexport interface SapUi5RoutingTargetV2 extends SapUi5RoutingTargetBaseV2 {\n type: string;\n id: string;\n name: string;\n}\n\nexport interface SapUi5RoutingTargetCustomPageV2 extends SapUi5RoutingTargetBaseV2 {\n viewId: string;\n viewName: string;\n viewLevel?: number;\n title?: string;\n}\nexport interface SapUi5RoutingTargetNavigationV2 {\n detail?: {\n route?: string;\n };\n}\n\nexport interface SapUi5RoutingTargetSettingsV2 {\n entitySet?: string;\n navigation?: { [key: string]: SapUi5RoutingTargetNavigationV2 };\n variantManagement?: string;\n}\n\n// SAPUI5 EXTENDS\nexport const SAPUI5_VIEW_EXTENSION = 'sap.ui.viewExtensions';\nexport const SAPUI5_CONTROLLER_EXTENSION = 'sap.ui.controllerExtensions';\n\nexport interface SapUi5Extends {\n extensions?: SapUi5Extensions;\n}\n\nexport interface SapUi5Extensions {\n [SAPUI5_VIEW_EXTENSION]?: SapUi5ViewExtensions;\n // Added it here, but sync logic is not supported yet\n [SAPUI5_CONTROLLER_EXTENSION]?: SapUi5ControllerExtensions;\n}\nexport const SAPUI5_VIEW_EXTENSION_OBJECT_PAGE = 'sap.suite.ui.generic.template.ObjectPage.view.Details';\nexport const SAPUI5_VIEW_EXTENSION_LIST_REPORT = 'sap.suite.ui.generic.template.ListReport.view.ListReport';\nexport const SAPUI5_VIEW_EXTENSION_ANALYTICAL_LIST_PAGE =\n 'sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage';\n\n// VIEW EXTENDS\nexport interface SapUi5PageViewExtensions {\n [key: string]: SapUi5ViewExtensionView | SapUi5ViewExtensionFragment;\n}\n\nexport interface SapUi5ViewExtensions {\n [SAPUI5_VIEW_EXTENSION_OBJECT_PAGE]?: SapUi5PageViewExtensions;\n [SAPUI5_VIEW_EXTENSION_LIST_REPORT]?: SapUi5PageViewExtensions;\n}\n\nexport interface SapUi5ViewExtensionBase {\n type: ViewTypes;\n}\n\nexport interface SapUi5ViewExtensionView extends SapUi5ViewExtensionBase {\n className: typeof SAPUI5_VIEW_CLASS;\n viewName: string;\n}\n\nexport interface SapUi5ViewExtensionFragment extends SapUi5ViewExtensionBase {\n className: typeof SAPUI5_FRAGMENT_CLASS;\n fragmentName: string;\n}\n\n// CONTROLLER EXTENDS\nexport interface SapUi5ControllerExtensions {\n [SAPUI5_VIEW_EXTENSION_OBJECT_PAGE]?: SapUi5PageControllerExtensions;\n [SAPUI5_VIEW_EXTENSION_LIST_REPORT]?: SapUi5PageControllerExtensions;\n}\n\nexport interface SapUi5PageControllerExtensions {\n [key: string]: SapUi5ControllerExtension;\n}\n\nexport interface SapUi5ControllerExtension {\n controllerName: string;\n [ManifestSection.generic]: { [key: string]: SapUi5ControllerExtensionSettings };\n}\n\n// Currently sync does not support controller extensions\nexport interface SapUi5ControllerExtensionSettings {\n EntitySet: string;\n Actions?: unknown;\n Header?: unknown;\n Sections?: unknown;\n}\n", "import type { ExtensionLogger } from './apiTypes';\n\nexport const enum LogSeverity {\n Error = 'error',\n Warning = 'warning',\n Info = 'info'\n}\n\nexport const LogSeverityLabel = {\n [LogSeverity.Error]: 'Error',\n [LogSeverity.Warning]: 'Warning',\n [LogSeverity.Info]: 'Information'\n};\n\nexport type LogMessage = string | object | undefined;\n\nexport interface RangePosition {\n line: number;\n character: number;\n}\nexport interface Range {\n start: RangePosition;\n end: RangePosition;\n}\n\nexport interface Location {\n path: string;\n range?: Range | string[];\n}\n\n/**\n * Internal representation of one log entry\n */\ninterface LogEntry {\n severity: LogSeverity;\n message: string;\n location?: Location;\n}\n\n/**\n * Function to create a new log entry and add it to the logger.\n * If no logger is passed, puts the message to the console\n * @param logger - the logger instance\n * @param message - the log message\n * @param meta - option list of strings/objects\n */\nexport const log = (logger: ExtensionLogger, logEntry: LogEntry, ...meta: (object | string | number)[]): void => {\n if (logger) {\n logger[logEntry.severity](logEntry.message, logEntry.location, ...meta);\n } else {\n if (logEntry.location) {\n console.log(\n `${LogSeverityLabel[logEntry.severity]}: ${logEntry.message}; location: ${logEntry.location}`,\n ...meta\n );\n } else {\n console.log(`${LogSeverityLabel[logEntry.severity]}: '${logEntry.message}`, ...meta);\n }\n }\n};\n", "import type { AnnotationTerm, ConvertedMetadata, EntityType } from '@sap-ux/vocabularies-types';\nimport type { LineItem } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport { UIAnnotationTerms, UIAnnotationTypes } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport type { SapUiAppPagesV2 } from '../../../specification/v2/webapp';\nimport type { FacetConfigs, FacetConfig, FileData } from '../../common';\nimport {\n getObjectPageFacets,\n createDefaultSection,\n FacetTitlePrefix,\n getObjectPageFacetSection,\n DEFINITION_LINK_PREFIX,\n addDefinitionForRelatedFacetKeys,\n METADATAPATH,\n addSectionTitleAndDescription,\n handleAddressContact,\n handleForm,\n addPatternForBindingChangeOfEnumOP,\n getActionNameAndId,\n addFooterActions,\n addHeaderActions,\n replaceAlias,\n addCommonHeaderSchema,\n prepareRef,\n DefinitionName,\n determineEntitySetOfFacet,\n addEnumForSingleTabVariant,\n ArtifactType\n} from '../../common';\nimport { addLineItemsType, addTableColumnExtensions } from './utils';\nimport { findObjectPageV2 } from '../import';\nimport type { ExtensionLogger, GenerateAppSchemaParameters } from '../../../v2';\nimport { FacetBase, ControlType, PropertyName, SectionType, MANIFESTPATH, SchemaTag } from '../../../v2';\nimport { LogSeverity, log } from '../../../extensionLogger';\nimport { FioriElementsVersion, ManifestSection } from '../../../specification/common';\nimport i18next from 'i18next';\nimport { initI18n } from '../../../i18n/i18n';\nimport { SectionTypeV2 } from '../types';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Adds flexChange properties for sub(sections)\n * @param appSchema - app schema in general\n * @param schemaSection - current section\n * @param property - property that will be enhanced\n * @param sectionType - type of section\n */\nfunction addFlexChangeForSection(\n appSchema: Definition,\n schemaSection: Definition,\n property: string,\n sectionType: SectionTypeV2\n) {\n schemaSection.properties[property][SchemaTag.artifactType] = ArtifactType.FlexChange;\n let controlType: ControlType;\n switch (sectionType) {\n case SectionTypeV2.Section:\n case SectionTypeV2.SectionForm:\n case SectionTypeV2.SectionChart:\n case SectionTypeV2.SectionTable:\n controlType = ControlType.Section;\n break;\n case SectionTypeV2.SubSection:\n controlType = ControlType.SubSection;\n break;\n case SectionTypeV2.SubSectionForm:\n controlType = ControlType.Group;\n break;\n case SectionTypeV2.SubSectionChart:\n controlType = ControlType.SmartChart;\n break;\n case SectionTypeV2.SubSectionTable:\n controlType = ControlType.SmartTable;\n break;\n }\n if (!controlType) {\n return;\n }\n addPatternForBindingChangeOfEnumOP(appSchema, schemaSection, property);\n schemaSection.properties[property][SchemaTag.controlType] = controlType;\n}\n\n/**\n * Callback for adding a single action to headerActions of V2\n * @param {EntityType} entityType - current entity type\n * @param {object} appSchema Schema of the app\n * @param actionAnnotation - annotation as present in AVT ConvertedMetadata\n * @param headerActions - list of header actions, to be enhanced\n */\nfunction addHeaderActionCallBackV2(\n entityType,\n appSchema: Definition,\n actionAnnotation: any,\n headerActions: {\n type: string;\n properties: {};\n description: string;\n additionalProperties: boolean;\n isViewNode: boolean;\n },\n oDataServiceAVT: ConvertedMetadata\n): any {\n return (item, index) => {\n if (!item['Determining'] && item.$Type === UIAnnotationTypes.DataFieldForAction) {\n const action = replaceAlias(item.Action, oDataServiceAVT);\n const { actionName, actionId } = getActionNameAndId(action, entityType);\n const description = item.Label || actionName;\n const actionDefinitionKey = `HeaderAction<${prepareRef(actionId)}>`;\n appSchema.definitions[actionDefinitionKey] = JSON.parse(\n JSON.stringify(appSchema.definitions['HeaderAction'])\n );\n const convertedIdentification = actionAnnotation.fullyQualifiedName.replace(\n `@${UIAnnotationTerms.Identification}`,\n `/@${UIAnnotationTerms.Identification}`\n );\n appSchema.definitions[actionDefinitionKey][\n SchemaTag.annotationPath\n ] = `/${convertedIdentification}/${index}`;\n appSchema.definitions[actionDefinitionKey]['description'] = description;\n\n headerActions.properties[actionId] = {\n $ref: `${DEFINITION_LINK_PREFIX}${actionDefinitionKey}`\n };\n }\n };\n}\n\n/**\n * Method ensures that definitions for custom columns are created for passed entitySet.\n * @param {object} appSchema App schema in general\n * @param {object} manifest manifest.json of the app\n * @param {string} entitySetName Entity set name.\n * @param {string} entityTypeName Entity type name.\n * @param {ConvertedMetadata} oDataServiceAVT Complete service information, as returned by annotation vocabularies tool\n * @param {FacetConfig} facet information\n * @param {string} facetKey - key of the facet, as listed in FacetConfigs\n * @param {FileData[]} [fragments] Array with XML fragments.\n * @return {string} Name of custom columns definition.\n */\nfunction ensureCustomColumnDefinitionExists(\n appSchema: Definition,\n manifest: object,\n entitySetName: string,\n entityTypeName: string,\n oDataServiceAVT: ConvertedMetadata,\n facet: FacetConfig,\n facetKey: string,\n fragments?: FileData[]\n): string {\n let suffix, customColumnsDefinitionName;\n if (facet.ID && facet.Label) {\n suffix = facet.ID + facet.Label.replace(/\\s+/g, '');\n } else if (facet.ID) {\n suffix = facet.ID;\n } else if (facet.Label) {\n suffix = facet.Label.replace(/\\s+/g, '');\n }\n if (suffix) {\n customColumnsDefinitionName = `${DefinitionName.CustomColumns}<${entitySetName}><${facetKey}><${suffix}>`;\n } else {\n customColumnsDefinitionName = `${DefinitionName.CustomColumns}<${entitySetName}><${facetKey}>`;\n }\n\n if (appSchema.definitions[customColumnsDefinitionName]) {\n // Definition is already created - we do not need to create it again\n return customColumnsDefinitionName;\n }\n // Create type specific 'TableCustomColumn' definition - use entity set as type.\n const customColumnDefinitionName = `${DefinitionName.CustomColumn}<${entitySetName}>`;\n const customColumnDefinition = JSON.parse(JSON.stringify(appSchema.definitions['TableCustomColumn']));\n appSchema.definitions[customColumnDefinitionName] = customColumnDefinition;\n // Update definitions for type specific custom columns\n const pageKeys = [];\n const entityType = oDataServiceAVT.entityTypes.find((et) => et.name === entityTypeName);\n const v2Page = findObjectPageV2(manifest[ManifestSection.generic].pages, entitySetName, pageKeys);\n addTableColumnExtensions(\n appSchema,\n entityType,\n v2Page,\n manifest,\n fragments,\n customColumnsDefinitionName,\n customColumnDefinitionName\n );\n return customColumnsDefinitionName;\n}\n\n/**\n * Method fills new app schema section with properties.\n * @param {Definition} appSchema App schema in general\n * @param {object} appSchemaSection app schema section to be filled\n * @param {SectionTypeV2} sectionType (sub)section type\n * @param {SectionTypeV2} mainSectionType main section type, used to fill app schema section\n */\nfunction addAppSchemaDefinition(\n appSchema: Definition,\n appSchemaSection: Definition,\n sectionType: SectionTypeV2,\n mainSectionType: SectionTypeV2\n): void {\n appSchemaSection.properties = JSON.parse(\n JSON.stringify((appSchema.definitions[mainSectionType] as Definition).properties)\n );\n if (appSchemaSection.properties.visible) {\n addFlexChangeForSection(appSchema, appSchemaSection, 'visible', sectionType);\n }\n}\n\n/**\n * Method adds reference to section property key.\n * @param {object} sections - schema of current sections definition\n * @param {string} key section key which will contain the reference\n * @param {string} definitionKey key which the section should point to\n */\nfunction addSectionReference(sections: Definition, key: string, definitionKey: string) {\n sections.properties[key] = { $ref: `${DEFINITION_LINK_PREFIX}${definitionKey}` };\n}\n\n/**\n * Reuse function for all table types, copies and adapts the generic definition\n * @param tableType - Table type\n * @param facetId - facet ID, as derived for the given section\n * @param facet - facet or section information\n * @param appSchema - app-specific schema, to be updated\n */\nfunction addTableDefinition(tableType: string, facetId: string, facet: FacetConfig, appSchema: Definition): void {\n const schemaId = prepareRef(`${tableType}<${facetId}>`);\n appSchema.definitions[schemaId] = JSON.parse(JSON.stringify(appSchema.definitions[tableType]));\n appSchema.definitions[schemaId]['properties']['columns']['$ref'] = DEFINITION_LINK_PREFIX + facetId;\n (appSchema.definitions[schemaId] as Definition).properties.toolBar[\n '$ref'\n ] = `${DEFINITION_LINK_PREFIX}ObjectPageToolBar<${facetId}>`;\n appSchema.definitions[schemaId][SchemaTag.annotationPath] = facet.annotationPath;\n if (facet.ID !== undefined) {\n (appSchema.definitions[schemaId] as Definition).title = FacetTitlePrefix + facet.ID;\n }\n (appSchema.definitions[schemaId] as Definition).description = DefinitionName.Table;\n\n //adjust quickVariantSelection\n (appSchema.definitions[schemaId] as Definition).properties['quickVariantSelection'][\n '$ref'\n ] = `${DEFINITION_LINK_PREFIX}QuickVariantSelectionOP<${facetId}>`;\n appSchema.definitions[`QuickVariantSelectionOP<${facetId}>`] = JSON.parse(\n JSON.stringify(appSchema.definitions['QuickVariantSelectionOP'])\n );\n appSchema.definitions[`QuickVariant<${facetId}>`] = JSON.parse(\n JSON.stringify(appSchema.definitions['QuickVariant'])\n );\n (\n (appSchema.definitions[`QuickVariantSelectionOP<${facetId}>`] as Definition).properties.variants as Definition\n ).patternProperties['^[0-9]+$']['$ref'] = `${DEFINITION_LINK_PREFIX}QuickVariant<${facetId}>`;\n\n addEnumForSingleTabVariant(facet.entityType, appSchema, `QuickVariant<${facetId}>`);\n}\n\n/**\n * Adds definitions for line items in object page sections to the app schema\n * @param {GenerateSchemaParameters} generateParameters - list of API input parameters\n * @param {string} facetKey - key of the facet, as listed in FacetConfigs\n * @param {Definition} appSchema - app schema in general\n * @param {FacetConfig} facet - the given facet from the UI annotations\n * @param {FacetConfigs} facets - list of all facets\n * @param {SectionTypeV2} sectionType (sub)section type\n */\nfunction handleLineItem(\n generateParameters: GenerateAppSchemaParameters,\n facetKey: string,\n appSchema: Definition,\n facet: FacetConfig,\n facets: FacetConfigs,\n sectionType?: SectionTypeV2\n): void {\n if (facet.base !== FacetBase.LineItem || !facetKey) {\n //no properties\n return;\n }\n const navigationProperty = facetKey.split('::')[0];\n const schemaIdForOpSection = `${sectionType}<${facetKey}>`;\n\n appSchema.definitions[schemaIdForOpSection] = createDefaultSection(appSchema, facet, facetKey);\n const appSchemaSection = appSchema.definitions[schemaIdForOpSection] as Definition;\n addAppSchemaDefinition(appSchema, appSchemaSection, sectionType, SectionTypeV2.SectionTable);\n appSchemaSection.properties.table = JSON.parse(\n JSON.stringify(appSchema.definitions[SectionTypeV2.SectionTable]['properties'][PropertyName.table])\n );\n (appSchemaSection.properties.table as Definition).anyOf = [\n {\n $ref: `${DEFINITION_LINK_PREFIX}ObjectPageResponsiveTable<${facetKey}>`\n },\n {\n $ref: `${DEFINITION_LINK_PREFIX}ObjectPageAnalyticalTable<${facetKey}>`\n },\n {\n $ref: `${DEFINITION_LINK_PREFIX}ObjectPageGridTable<${facetKey}>`\n },\n {\n $ref: `${DEFINITION_LINK_PREFIX}ObjectPageTreeTable<${facetKey}>`\n }\n ];\n appSchemaSection[SchemaTag.annotationPath] = facet.annotationPath;\n addSectionTitleAndDescription(facet, appSchemaSection, facetKey);\n\n addTableDefinition('ObjectPageResponsiveTable', facetKey, facet, appSchema);\n addTableDefinition('ObjectPageGridTable', facetKey, facet, appSchema);\n addTableDefinition('ObjectPageTreeTable', facetKey, facet, appSchema);\n addTableDefinition('ObjectPageAnalyticalTable', facetKey, facet, appSchema);\n\n let customColumnDefinitionKey;\n // Find target entity\n const targetEntitySet = determineEntitySetOfFacet(facet, generateParameters.serviceAVT);\n if (targetEntitySet) {\n // Make sure that custom columns definitions are created for passed entity\n customColumnDefinitionKey = ensureCustomColumnDefinitionExists(\n appSchema,\n generateParameters.manifest,\n targetEntitySet.name,\n facet.entityType.name,\n generateParameters?.serviceAVT,\n facet,\n facetKey,\n generateParameters.fragments\n );\n }\n for (const facetItem in facets) {\n if (facets[facetItem].base === FacetBase.LineItem && facetItem.includes(navigationProperty)) {\n addLineItemsType(\n appSchema,\n facets[facetItem].target as AnnotationTerm<LineItem>,\n facets[facetItem].entityType,\n facetItem,\n customColumnDefinitionKey\n );\n }\n }\n}\n\n/**\n * Adds definitions for subsections in object page sections to the app schema\n * @param {Definition} appSchema - app schema in general\n * @param {string} definitionKey - key of app schema definition to be filled\n * @param {FacetConfig} facet facet or section information\n * @param {string} facetId - key of the facet, as listed in FacetConfigs\n * @param {SectionTypeV2} sectionType (sub)section type\n */\nfunction handleSubSection(\n appSchema: Definition,\n definitionKey: string,\n facet: FacetConfig,\n facetId: string,\n sectionType: SectionTypeV2\n): void {\n appSchema.definitions[definitionKey] = createDefaultSection(appSchema, facet, facetId);\n const appSchemaSection = appSchema.definitions[definitionKey] as Definition;\n addAppSchemaDefinition(appSchema, appSchemaSection, sectionType, SectionTypeV2.SubSection);\n appSchemaSection.properties.subsections = {\n type: 'object',\n description: 'Subsections',\n properties: {},\n additionalProperties: false\n };\n appSchemaSection.properties.subsections[SchemaTag.isViewNode] = true;\n}\n\n/**\n * Method fills new chart section with properties.\n * @param {Definition} appSchema App schema in general\n * @param {string} definitionKey - key of app schema definition to be filled\n * @param {FacetConfig} facet facet or section information\n * @param {string} facetKey - facet key.\n * @param {SectionTypeV2} sectionType (sub)section type\n */\nfunction handleSectionChart(\n appSchema: Definition,\n definitionKey: string,\n facet: FacetConfig,\n facetKey: string,\n sectionType: SectionTypeV2\n) {\n appSchema.definitions[definitionKey] = createDefaultSection(appSchema, facet, facetKey);\n const appSchemaSection = appSchema.definitions[definitionKey] as Definition;\n addAppSchemaDefinition(appSchema, appSchemaSection, sectionType, SectionTypeV2.SectionChart);\n}\n\n/**\n * Method fills new form section in app schema with properties.\n * @param {Definition} appSchema App schema in general\n * @param {string} definitionKey - key of app schema definition to be filled\n * @param {FacetConfig} facet facet or section information\n * @param {string} facetKey - facet key.\n * @param {SectionTypeV2} sectionType (sub)section type\n * @return {object} returns filled form section in app schema.\n */\nfunction handleAppSchemaFormSection(\n appSchema: Definition,\n definitionKey: string,\n facet: FacetConfig,\n facetKey: string,\n sectionType: SectionTypeV2\n) {\n appSchema.definitions[definitionKey] = createDefaultSection(appSchema, facet, facetKey);\n const appSchemaSection = appSchema.definitions[definitionKey] as Definition;\n addAppSchemaDefinition(appSchema, appSchemaSection, sectionType, SectionTypeV2.SectionForm);\n appSchemaSection[SchemaTag.annotationPath] = facet.annotationPath;\n appSchemaSection[SchemaTag.isViewNode] = true;\n return appSchemaSection;\n}\n\n/**\n * Mapping of facet type to (sub)section type to enable correct further handling\n * @param {FacetBase} facetType - facet type to be mapped\n * @param {boolean} isSubSection - if section is subsection of section\n * @return {SectionTypeV2} sectionType (sub)section type\n */\nfunction getSectionType(facetType: FacetBase, isSubSection: boolean) {\n const sectionTypeMapping = new Map<FacetBase, SectionTypeV2>([\n [FacetBase.CollectionFacet, SectionTypeV2.Section],\n [FacetBase.LineItem, SectionTypeV2.SectionTable],\n [FacetBase.Chart, SectionTypeV2.SectionChart],\n [FacetBase.Address, SectionTypeV2.SectionAddress],\n [FacetBase.Contact, SectionTypeV2.SectionContact],\n [FacetBase.Form, SectionTypeV2.SectionForm],\n [FacetBase.Identification, SectionTypeV2.SectionForm]\n ]);\n const subSectionTypeMapping = new Map<FacetBase, SectionTypeV2>([\n [FacetBase.CollectionFacet, SectionTypeV2.SubSection],\n [FacetBase.LineItem, SectionTypeV2.SubSectionTable],\n [FacetBase.Chart, SectionTypeV2.SubSectionChart],\n [FacetBase.Address, SectionTypeV2.SubSectionAddress],\n [FacetBase.Contact, SectionTypeV2.SubSectionContact],\n [FacetBase.Form, SectionTypeV2.SubSectionForm],\n [FacetBase.Identification, SectionTypeV2.SubSectionForm]\n ]);\n if (isSubSection) {\n return subSectionTypeMapping.get(facetType);\n } else {\n return sectionTypeMapping.get(facetType);\n }\n}\n\n/**\n * Method returns reference key, special handling of (sub)sections\n * @param {FacetConfig} facet facet or section information\n * @param {string} facetKey - facet key.\n * @param {SectionTypeV2} sectionType (sub)section type\n * @return {string} reference key\n */\nfunction getReferenceKey(facet, facetKey, sectionType): string {\n let referenceKey = facetKey;\n if (sectionType === (SectionTypeV2.Section || SectionTypeV2.SubSection)) {\n referenceKey = referenceKey.replace(`@${UIAnnotationTerms.Facets}`, facet.base);\n }\n return `${referenceKey}`;\n}\n\n/**\n * Creates a section definition in app schema.\n * @param {GenerateSchemaParameters} generateParameters - list of API input parameters\n * @param {FacetConfigs} facets - list of all facets.\n * @param {string} facetKey - facet key.\n * @param {object} sections - schema of current sections definition.\n * @param {Definition} appSchema - app specific schema that potentially gets enhanced.\n * @param {boolean} isSubSection - if section is subsection of section\n */\nfunction addSection(\n generateParameters: GenerateAppSchemaParameters,\n facets: FacetConfigs,\n facetKey: string,\n sections: Definition,\n appSchema: Definition,\n isSubSection = false\n): void {\n const facet: FacetConfig = facets[facetKey];\n const sectionType = getSectionType(facet.base, isSubSection);\n const referenceKey = getReferenceKey(facet, facetKey, sectionType);\n const definitionKey = `${sectionType}<${referenceKey}>`;\n addSectionReference(sections, referenceKey, definitionKey);\n switch (sectionType) {\n case SectionTypeV2.Section:\n case SectionTypeV2.SubSection: {\n //handle collection facets\n isSubSection = true;\n handleSubSection(appSchema, definitionKey, facet, facetKey, sectionType);\n const subSections = (appSchema.definitions[definitionKey] as Definition).properties\n .subsections as Definition;\n for (const key in facet.facets) {\n addSection(generateParameters, facet.facets, key, subSections, appSchema, isSubSection);\n }\n break;\n }\n case SectionTypeV2.SectionTable:\n case SectionTypeV2.SubSectionTable: {\n handleLineItem(generateParameters, facetKey, appSchema, facet, facets, sectionType);\n break;\n }\n case SectionTypeV2.SectionChart:\n case SectionTypeV2.SubSectionChart: {\n //handle reference facet (if comprising chart)\n handleSectionChart(appSchema, definitionKey, facet, facetKey, sectionType);\n\n break;\n }\n case SectionTypeV2.SectionForm:\n case SectionTypeV2.SubSectionForm: {\n const withActions = facet.base !== FacetBase.Identification;\n const appSchemaSection = handleAppSchemaFormSection(appSchema, definitionKey, facet, facetKey, sectionType);\n handleForm(SectionType.Section, facet, appSchemaSection, appSchema, FioriElementsVersion.v2, withActions);\n break;\n }\n case SectionTypeV2.SectionAddress:\n case SectionTypeV2.SectionContact: {\n handleAddressContact(facet, facetKey, sections, appSchema, SectionType.Section, undefined, 'V2');\n break;\n }\n case SectionTypeV2.SubSectionAddress:\n case SectionTypeV2.SubSectionContact: {\n handleAddressContact(\n facet,\n facetKey,\n sections,\n appSchema,\n SectionType.Section,\n SectionType.SubSection,\n 'V2'\n );\n break;\n }\n default: {\n // Other facets -> only default properties of ObjectPageSection\n sections.properties[facetKey] = createDefaultSection(appSchema, facet, facetKey);\n }\n }\n}\n\n/**\n * Adds the sections to the app schema\n * @param {GenerateSchemaParameters} generateParameters - list of API input parameters\n * @param {Definition} appSchema - app specific schema that potentially gets enhanced\n * @param {EntityType} entityType - current entity type\n * @param {string} entitySetName Entity set name\n * @param {SapUiAppPagesV2} pages - list of (manifest) pages\n */\nfunction addSections(\n generateParameters: GenerateAppSchemaParameters,\n appSchema: Definition,\n entityType: EntityType,\n entitySetName: string,\n pages: SapUiAppPagesV2\n): void {\n const sections = appSchema.definitions[DefinitionName.Sections] as Definition;\n sections[SchemaTag.isViewNode] = true;\n if (entityType) {\n sections[SchemaTag.annotationPath] = `/${entityType.fullyQualifiedName}/@${UIAnnotationTerms.Facets}`;\n }\n\n if (!pages) {\n return;\n }\n // Get facet annotations\n const facets: FacetConfigs = getObjectPageFacets(\n entityType,\n generateParameters?.serviceAVT,\n FioriElementsVersion.v2,\n generateParameters.logger\n );\n if (!facets || Object.keys(facets).length === 0) {\n return;\n }\n\n // Loop on all pages, look for the right entity set\n for (const key in pages) {\n const element = pages[key];\n if (entitySetName.includes(element.entitySet)) {\n // Loop on all facets (of the given entitySet)\n for (const facetKey in facets) {\n addSection(generateParameters, facets, facetKey, sections, appSchema);\n }\n } else {\n addSections(generateParameters, appSchema, entityType, entitySetName, element.pages);\n }\n }\n\n // Add custom sections\n const customSections = appSchema.definitions['CustomSections'] as Definition;\n for (const name in customSections.properties) {\n sections.properties[name] = customSections.properties[name];\n }\n}\n\n/**\n * Add Object Page Header to app-specific schema\n *\n * @param {object} appSchema Schema of the app\n * @param {EntityType} entityType - current entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n */\nfunction addHeader(appSchema: object, entityType: EntityType, oDataServiceAVT: ConvertedMetadata): void {\n addCommonHeaderSchema(appSchema, entityType);\n\n //Add header actions\n addHeaderActions(appSchema, entityType, oDataServiceAVT, addHeaderActionCallBackV2);\n}\n\n/**\n * Adds the related facets keys 'enum' to the app schema\n * @param schema - app specific schema that potentially gets enhanced\n * @param {EntityType} entityType - current entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nfunction addRelatedFacetKeysType(\n schema: object,\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n logger?: ExtensionLogger\n): void {\n // Find sections from annotation\n // And create new definition in schema as enum with description\n const facetSections = getObjectPageFacetSection(entityType, oDataServiceAVT, logger, undefined, true);\n if (facetSections) {\n addDefinitionForRelatedFacetKeys(\n schema,\n ['ObjectPageCustomSectionFragment', 'ObjectPageCustomSectionView'],\n facetSections,\n ['ID', 'key']\n );\n }\n}\n\n/**\n * Generates an app specific schema out of the generic schema.\n * @param {GenerateSchemaParameters} generateParameters - list of API input parameters\n * @param genericSchema - generic JSON schema of an object page\n * @param entityTypeName - the base entity type of the given page\n *\n * @returns the app specific JSON schema\n */\nexport function generateObjectPageSchemaV2(\n generateParameters: GenerateAppSchemaParameters,\n genericSchema: object,\n entityTypeName: string\n): object {\n // Initialize i18next\n initI18n();\n\n const appSchema = JSON.parse(JSON.stringify(genericSchema)) as Definition;\n\n // Custom sections as part of sections\n const additionalSections = {};\n for (const name in appSchema.definitions['CustomSections']['properties']) {\n additionalSections[name] = (appSchema.definitions['CustomSections'] as Definition).properties[name];\n }\n\n // Change reference to generated sections\n appSchema.properties[PropertyName.sections] = {\n $ref: DEFINITION_LINK_PREFIX + 'Sections'\n };\n\n const entitySet =\n generateParameters?.serviceAVT.entitySets &&\n generateParameters?.serviceAVT.entitySets.find(\n (es) => es.entityType.name === entityTypeName || es.name === entityTypeName\n );\n if (!entitySet) {\n log(generateParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOENTITYSET4NAME', { entityType: entityTypeName }),\n location: {\n path: METADATAPATH\n }\n });\n return appSchema;\n }\n const entityType = entitySet?.entityType;\n generateParameters.entitySet = entitySet;\n const pages = generateParameters.manifest[ManifestSection.generic].pages;\n if (!pages) {\n log(generateParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOPAGES', { appId: generateParameters.manifest['sap.app']['id'] }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return appSchema;\n }\n\n // Add header\n addHeader(appSchema, entityType, generateParameters?.serviceAVT);\n\n // Add sections\n appSchema.definitions[DefinitionName.Sections] = {\n type: 'object',\n properties: {},\n description: 'Sections',\n additionalProperties: false\n };\n addSections(generateParameters, appSchema, entityType, entitySet.name, pages);\n\n // Custom section facets\n addRelatedFacetKeysType(appSchema, entityType, generateParameters?.serviceAVT, generateParameters.logger);\n\n if (!appSchema.definitions.Sections) {\n if (appSchema.definitions.RelatedFacetKeys && appSchema.definitions.RelatedFacetKeys['oneOf'].length) {\n // If related facets exists - then we need sections definition\n appSchema.definitions.Sections = {\n type: 'object',\n properties: additionalSections,\n additionalProperties: false\n };\n appSchema.definitions.Sections[SchemaTag.isViewNode] = true;\n } else {\n delete appSchema.properties[PropertyName.sections];\n }\n }\n addFooterActions(appSchema, generateParameters);\n\n // Eliminate generic definitions\n delete appSchema.definitions['GenericSections'];\n delete appSchema.definitions['GenericSubSections'];\n delete appSchema.definitions['ObjectPageSectionTableV2'];\n delete appSchema.definitions['GenericColumns'];\n delete appSchema.definitions['TableColumnAction'];\n delete appSchema.definitions['ObjectPageSectionFormV2'];\n delete appSchema.definitions['ObjectPageSectionTableV2'];\n delete appSchema.definitions['ObjectPageSubSectionV2'];\n delete appSchema.definitions['ObjectPageResponsiveTable'];\n delete appSchema.definitions['ObjectPageAnalyticalTable'];\n delete appSchema.definitions['ObjectPageTreeTable'];\n delete appSchema.definitions['ObjectPageGridTable'];\n delete appSchema.definitions['ObjectPageToolBar'];\n delete appSchema.definitions['ObjectPageToolBarActions'];\n delete appSchema.definitions['ObjectPageForm'];\n delete appSchema.definitions['ObjectPageFormFields'];\n delete appSchema.definitions['ObjectPageFormActions'];\n\n return appSchema;\n}\n", "import type { ControlTypeFunction } from '../types';\nimport { FacetBase, FacetTitlePrefix, BindingPropertyRegexAsString, VOCWITHSLASH, PropertyName } from '../types';\nimport { DEFINITION_LINK_PREFIX } from '../utils';\n\n/**\n * General export rule, joining all given breadcrumbs to the base ID\n * @param baseId - base ID, first part of the stable ID\n * @param idBreadcrumbs - array of ID parts\n */\nexport const buildControlIdFromParent = (baseId: string, idBreadcrumbs: string[]): string => {\n return baseId + idBreadcrumbs.join('::');\n};\n\n/**\n * Export rule for pages\n * @param baseId - base ID, first part of the stable ID\n * @param idBreadcrumbs - array of ID parts\n * @param breadcrumbs - array of breadcrumbs\n */\nexport const buildControlIdForPage = (baseId: string, idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n return baseId + idBreadcrumbs.join('::') + breadcrumbs[0];\n};\n\n/**\n * Converts the section id to the right string for the stable id:\n * If the corresponsing facet has ID maintained, we must take this ID. If ID is not present, take the navigation path.\n * @param sectionId - old ID that shall get converted\n * @param breadcrumbs - array of breadcrumbs\n * @param title - title from JSON schema, comprising the facet ID\n */\nexport const convertSectionId = (sectionId: string, title: string): string => {\n let convertedSectionId: string;\n const prefix: string = FacetTitlePrefix;\n if (title !== undefined && title.includes(prefix)) {\n convertedSectionId = title.split(prefix)[1];\n } else {\n convertedSectionId = sectionId.replace(new RegExp('/@', 'g'), '::').replace(/@com.sap/g, 'com.sap');\n }\n return convertedSectionId;\n};\n\nexport function escapeId(sParam: string): string {\n /* escape all characters not allowed in stable ids with :<hexcode>\n * as we use : as escape character, also escape :\n */\n return sParam.replace(/[^-A-Za-z0-9_.:]/g, function (c) {\n const sCode = c.charCodeAt(0).toString(16);\n return `:${sCode.length === 1 ? '0' : ''}${sCode}`;\n });\n}\n\n/**\n * Binding Change values, will be added on object pages */\nexport enum BindingValue {\n Editable = '{ui>/editable}',\n NotEditable = '{= !${ui>/editable}}'\n}\n\n/**\n * Consolidates the list of id's and other breadcrumbs into one list, for finding the right stable ID for a column\n * @param idBreadcrumbs - array of ID parts\n * @param localBreadcrumbs - array of breadcrumbs\n * @param title - (section) title = facet ID\n * @returns the consolidated breadcrumbs' list\n */\nfunction mapBreadcrumbs(idBreadcrumbs: string[], localBreadcrumbs: string[], title: string) {\n let sectionId: string;\n idBreadcrumbs = idBreadcrumbs.map(function (item) {\n if (item === PropertyName.sections) {\n for (let index = 0; index < localBreadcrumbs.length; index++) {\n const breadcrumb = localBreadcrumbs[index];\n if (breadcrumb === PropertyName.sections) {\n sectionId = localBreadcrumbs[index + 1];\n if (sectionId.indexOf(FacetBase.LineItem) !== -1) {\n localBreadcrumbs[index + 1] = convertSectionId(sectionId, title) + '::Table';\n return localBreadcrumbs[index + 1];\n }\n }\n }\n }\n return item;\n });\n return { idBreadcrumbs };\n}\n\n/**\n * Export rule for table columns\n * @param baseId - base ID, first part of the stable ID\n * @param idBreadcrumbs - array of ID parts\n * @param breadcrumbs - array of breadcrumbs\n * @param controlType - controlType function of ecorators, not used here\n * @param title - title from JSON schema, comprising the facet ID\n */\nexport const buildColumnControlId = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType: ControlTypeFunction,\n title: string\n): string => {\n let tableId = 'listReport'; //default\n const localBreadcrumbs = [...breadcrumbs];\n\n ({ idBreadcrumbs } = mapBreadcrumbs(idBreadcrumbs, localBreadcrumbs, title));\n if (localBreadcrumbs[0] === PropertyName.sections) {\n tableId = localBreadcrumbs[1]\n .replace(/::com.sap.vocabularies/g, VOCWITHSLASH)\n .replace(/::@com.sap.vocabularies/g, VOCWITHSLASH);\n } else if (idBreadcrumbs[0] === PropertyName.table) {\n tableId = idBreadcrumbs[0];\n }\n const lastIdPart = localBreadcrumbs[localBreadcrumbs.length - 1]\n .replace(/::com.sap.vocabularies/g, VOCWITHSLASH)\n .replace(/::@com.sap.vocabularies/g, VOCWITHSLASH)\n .replace('sTarget/@', 'sTarget::@')\n .replace('/', ':2f');\n let fullId: string;\n const splitPoint = lastIdPart.indexOf(':::');\n if (lastIdPart.startsWith('DataField') && splitPoint > -1) {\n fullId = `${baseId}template:::TableColumn:::${lastIdPart.substring(\n 0,\n splitPoint\n )}:::sSmartTableId::${tableId.replace('::Table', ':3a:3aTable')}:::${lastIdPart.substring(splitPoint + 3)}`;\n } else {\n fullId = `${baseId}${idBreadcrumbs.join('::')}-${lastIdPart}`;\n }\n return escapeId(fullId);\n};\n\n/**\n * Split up action breadcrumb and return different parts from it\n * @param breadcrumbs - array of breadcrumbs\n * @returns {object} - actionType, semanticObjectId, actionId of action\n */\nexport const getActionBreadcrumbParts = (\n breadcrumbs: string[]\n): { actionType: string | undefined; semanticObjectId: string | undefined; actionId: string } => {\n const actionIdParts = breadcrumbs[breadcrumbs.length - 1].split(':::');\n let actionType, semanticObjectId, actionId;\n if (actionIdParts.length > 2) {\n actionType = actionIdParts[0];\n semanticObjectId = actionIdParts[1].split('::')[1];\n actionId = actionIdParts[2].split('::')[1];\n } else if (actionIdParts.length === 2) {\n actionType = actionIdParts[0];\n actionId = actionIdParts[1].split('sAction::')[1];\n } else {\n actionId = actionIdParts[0];\n }\n return { actionType, semanticObjectId, actionId };\n};\n\n/**\n * Determines the valid pattern for a binding change\n * @param schemaDefinition - definition in the JSON schema\n * @returns the pattern as string\n */\nfunction determinePattern(schemaDefinition: any): string {\n let pattern = BindingPropertyRegexAsString;\n if (schemaDefinition.enum) {\n let enumPattern;\n schemaDefinition.enum.forEach((enumValue) => {\n if (!enumValue.toString().startsWith('{')) {\n enumPattern = enumPattern ? `${enumPattern}|${enumValue.toString()}` : enumValue.toString();\n }\n });\n pattern = `^(${enumPattern})$|${pattern}`;\n }\n if (schemaDefinition['type'] && schemaDefinition['type'] === 'boolean') {\n pattern = `^(false|true)$|${pattern}`;\n }\n return pattern;\n}\n\n/**\n * Reuseable function for strings that allow binding changes\n * @param schema - the complete JSON schema\n * @param definition - definition in the JSON schema, to be updated\n * @param propertyName - property in the properties' list of the given definition\n * @param bindingValues - values that shall be added to the resulting enum\n */\nconst addPatternForBindingChangeOfEnum = (\n schema: object,\n definition: object,\n propertyName: string,\n bindingValues?: BindingValue[]\n): void => {\n const propertyList = definition && definition['properties'];\n if (propertyList[propertyName].pattern) {\n return; //as already processed\n }\n const originalDefinition = propertyList[propertyName];\n let resultDefinition = originalDefinition;\n const targetDefinition = originalDefinition.$ref\n ? schema['definitions'][originalDefinition.$ref.split(DEFINITION_LINK_PREFIX)[1]]\n : originalDefinition;\n const description = originalDefinition.description ? originalDefinition.description : targetDefinition.description;\n const pattern = determinePattern(targetDefinition);\n if (targetDefinition['type'] && targetDefinition['type'] === 'boolean') {\n resultDefinition = { enum: [false, true] };\n }\n if (bindingValues && resultDefinition['enum']) {\n bindingValues.forEach((value) => {\n if (resultDefinition['enum'].indexOf(value) === -1) {\n resultDefinition['enum'].push(value);\n }\n });\n }\n propertyList[propertyName] = {\n pattern: pattern,\n anyOf: [\n resultDefinition,\n {\n type: 'string'\n }\n ]\n };\n if (description) {\n propertyList[propertyName].description = description;\n delete originalDefinition.description;\n }\n};\n\nexport const addPatternForBindingChangeOfEnumLR = (schema: object, definition: object, propertyName: string): void => {\n addPatternForBindingChangeOfEnum(schema, definition, propertyName);\n};\n\nexport const addPatternForBindingChangeOfEnumOP = (schema: object, definition: object, propertyName: string): void => {\n const bindingValues = Object.values(BindingValue);\n addPatternForBindingChangeOfEnum(schema, definition, propertyName, bindingValues);\n};\n", "/*! *****************************************************************************\nCopyright (C) Microsoft. All rights reserved.\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\nthis file except in compliance with the License. You may obtain a copy of the\nLicense at http://www.apache.org/licenses/LICENSE-2.0\n\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\nMERCHANTABLITY OR NON-INFRINGEMENT.\n\nSee the Apache Version 2.0 License for specific language governing permissions\nand limitations under the License.\n***************************************************************************** */\nvar Reflect;\n(function (Reflect) {\n // Metadata Proposal\n // https://rbuckton.github.io/reflect-metadata/\n (function (factory) {\n var root = typeof global === \"object\" ? global :\n typeof self === \"object\" ? self :\n typeof this === \"object\" ? this :\n Function(\"return this;\")();\n var exporter = makeExporter(Reflect);\n if (typeof root.Reflect === \"undefined\") {\n root.Reflect = Reflect;\n }\n else {\n exporter = makeExporter(root.Reflect, exporter);\n }\n factory(exporter);\n function makeExporter(target, previous) {\n return function (key, value) {\n if (typeof target[key] !== \"function\") {\n Object.defineProperty(target, key, { configurable: true, writable: true, value: value });\n }\n if (previous)\n previous(key, value);\n };\n }\n })(function (exporter) {\n var hasOwn = Object.prototype.hasOwnProperty;\n // feature test for Symbol support\n var supportsSymbol = typeof Symbol === \"function\";\n var toPrimitiveSymbol = supportsSymbol && typeof Symbol.toPrimitive !== \"undefined\" ? Symbol.toPrimitive : \"@@toPrimitive\";\n var iteratorSymbol = supportsSymbol && typeof Symbol.iterator !== \"undefined\" ? Symbol.iterator : \"@@iterator\";\n var supportsCreate = typeof Object.create === \"function\"; // feature test for Object.create support\n var supportsProto = { __proto__: [] } instanceof Array; // feature test for __proto__ support\n var downLevel = !supportsCreate && !supportsProto;\n var HashMap = {\n // create an object in dictionary mode (a.k.a. \"slow\" mode in v8)\n create: supportsCreate\n ? function () { return MakeDictionary(Object.create(null)); }\n : supportsProto\n ? function () { return MakeDictionary({ __proto__: null }); }\n : function () { return MakeDictionary({}); },\n has: downLevel\n ? function (map, key) { return hasOwn.call(map, key); }\n : function (map, key) { return key in map; },\n get: downLevel\n ? function (map, key) { return hasOwn.call(map, key) ? map[key] : undefined; }\n : function (map, key) { return map[key]; },\n };\n // Load global or shim versions of Map, Set, and WeakMap\n var functionPrototype = Object.getPrototypeOf(Function);\n var usePolyfill = typeof process === \"object\" && process.env && process.env[\"REFLECT_METADATA_USE_MAP_POLYFILL\"] === \"true\";\n var _Map = !usePolyfill && typeof Map === \"function\" && typeof Map.prototype.entries === \"function\" ? Map : CreateMapPolyfill();\n var _Set = !usePolyfill && typeof Set === \"function\" && typeof Set.prototype.entries === \"function\" ? Set : CreateSetPolyfill();\n var _WeakMap = !usePolyfill && typeof WeakMap === \"function\" ? WeakMap : CreateWeakMapPolyfill();\n // [[Metadata]] internal slot\n // https://rbuckton.github.io/reflect-metadata/#ordinary-object-internal-methods-and-internal-slots\n var Metadata = new _WeakMap();\n /**\n * Applies a set of decorators to a property of a target object.\n * @param decorators An array of decorators.\n * @param target The target object.\n * @param propertyKey (Optional) The property key to decorate.\n * @param attributes (Optional) The property descriptor for the target key.\n * @remarks Decorators are applied in reverse order.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Example = Reflect.decorate(decoratorsArray, Example);\n *\n * // property (on constructor)\n * Reflect.decorate(decoratorsArray, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.decorate(decoratorsArray, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Object.defineProperty(Example, \"staticMethod\",\n * Reflect.decorate(decoratorsArray, Example, \"staticMethod\",\n * Object.getOwnPropertyDescriptor(Example, \"staticMethod\")));\n *\n * // method (on prototype)\n * Object.defineProperty(Example.prototype, \"method\",\n * Reflect.decorate(decoratorsArray, Example.prototype, \"method\",\n * Object.getOwnPropertyDescriptor(Example.prototype, \"method\")));\n *\n */\n function decorate(decorators, target, propertyKey, attributes) {\n if (!IsUndefined(propertyKey)) {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsObject(target))\n throw new TypeError();\n if (!IsObject(attributes) && !IsUndefined(attributes) && !IsNull(attributes))\n throw new TypeError();\n if (IsNull(attributes))\n attributes = undefined;\n propertyKey = ToPropertyKey(propertyKey);\n return DecorateProperty(decorators, target, propertyKey, attributes);\n }\n else {\n if (!IsArray(decorators))\n throw new TypeError();\n if (!IsConstructor(target))\n throw new TypeError();\n return DecorateConstructor(decorators, target);\n }\n }\n exporter(\"decorate\", decorate);\n // 4.1.2 Reflect.metadata(metadataKey, metadataValue)\n // https://rbuckton.github.io/reflect-metadata/#reflect.metadata\n /**\n * A default metadata decorator factory that can be used on a class, class member, or parameter.\n * @param metadataKey The key for the metadata entry.\n * @param metadataValue The value for the metadata entry.\n * @returns A decorator function.\n * @remarks\n * If `metadataKey` is already defined for the target and target key, the\n * metadataValue for that key will be overwritten.\n * @example\n *\n * // constructor\n * @Reflect.metadata(key, value)\n * class Example {\n * }\n *\n * // property (on constructor, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticProperty;\n * }\n *\n * // property (on prototype, TypeScript only)\n * class Example {\n * @Reflect.metadata(key, value)\n * property;\n * }\n *\n * // method (on constructor)\n * class Example {\n * @Reflect.metadata(key, value)\n * static staticMethod() { }\n * }\n *\n * // method (on prototype)\n * class Example {\n * @Reflect.metadata(key, value)\n * method() { }\n * }\n *\n */\n function metadata(metadataKey, metadataValue) {\n function decorator(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey) && !IsPropertyKey(propertyKey))\n throw new TypeError();\n OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n return decorator;\n }\n exporter(\"metadata\", metadata);\n /**\n * Define a unique metadata entry on the target.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param metadataValue A value that contains attached metadata.\n * @param target The target object on which to define metadata.\n * @param propertyKey (Optional) The property key for the target.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * Reflect.defineMetadata(\"custom:annotation\", options, Example);\n *\n * // property (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticProperty\");\n *\n * // property (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"property\");\n *\n * // method (on constructor)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example, \"staticMethod\");\n *\n * // method (on prototype)\n * Reflect.defineMetadata(\"custom:annotation\", options, Example.prototype, \"method\");\n *\n * // decorator factory as metadata-producing annotation.\n * function MyAnnotation(options): Decorator {\n * return (target, key?) => Reflect.defineMetadata(\"custom:annotation\", options, target, key);\n * }\n *\n */\n function defineMetadata(metadataKey, metadataValue, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryDefineOwnMetadata(metadataKey, metadataValue, target, propertyKey);\n }\n exporter(\"defineMetadata\", defineMetadata);\n /**\n * Gets a value indicating whether the target object or its prototype chain has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object or its prototype chain; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasMetadata\", hasMetadata);\n /**\n * Gets a value indicating whether the target object has the provided metadata key defined.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata key was defined on the target object; otherwise, `false`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.hasOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function hasOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryHasOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"hasOwnMetadata\", hasOwnMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object or its prototype chain.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getMetadata\", getMetadata);\n /**\n * Gets the metadata value for the provided metadata key on the target object.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns The metadata value for the metadata key if found; otherwise, `undefined`.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function getOwnMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryGetOwnMetadata(metadataKey, target, propertyKey);\n }\n exporter(\"getOwnMetadata\", getOwnMetadata);\n /**\n * Gets the metadata keys defined on the target object or its prototype chain.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryMetadataKeys(target, propertyKey);\n }\n exporter(\"getMetadataKeys\", getMetadataKeys);\n /**\n * Gets the unique metadata keys defined on the target object.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns An array of unique metadata keys.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.getOwnMetadataKeys(Example);\n *\n * // property (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.getOwnMetadataKeys(Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.getOwnMetadataKeys(Example.prototype, \"method\");\n *\n */\n function getOwnMetadataKeys(target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n return OrdinaryOwnMetadataKeys(target, propertyKey);\n }\n exporter(\"getOwnMetadataKeys\", getOwnMetadataKeys);\n /**\n * Deletes the metadata entry from the target object with the provided key.\n * @param metadataKey A key used to store and retrieve metadata.\n * @param target The target object on which the metadata is defined.\n * @param propertyKey (Optional) The property key for the target.\n * @returns `true` if the metadata entry was found and deleted; otherwise, false.\n * @example\n *\n * class Example {\n * // property declarations are not part of ES6, though they are valid in TypeScript:\n * // static staticProperty;\n * // property;\n *\n * constructor(p) { }\n * static staticMethod(p) { }\n * method(p) { }\n * }\n *\n * // constructor\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example);\n *\n * // property (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticProperty\");\n *\n * // property (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"property\");\n *\n * // method (on constructor)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example, \"staticMethod\");\n *\n * // method (on prototype)\n * result = Reflect.deleteMetadata(\"custom:annotation\", Example.prototype, \"method\");\n *\n */\n function deleteMetadata(metadataKey, target, propertyKey) {\n if (!IsObject(target))\n throw new TypeError();\n if (!IsUndefined(propertyKey))\n propertyKey = ToPropertyKey(propertyKey);\n var metadataMap = GetOrCreateMetadataMap(target, propertyKey, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n if (!metadataMap.delete(metadataKey))\n return false;\n if (metadataMap.size > 0)\n return true;\n var targetMetadata = Metadata.get(target);\n targetMetadata.delete(propertyKey);\n if (targetMetadata.size > 0)\n return true;\n Metadata.delete(target);\n return true;\n }\n exporter(\"deleteMetadata\", deleteMetadata);\n function DecorateConstructor(decorators, target) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsConstructor(decorated))\n throw new TypeError();\n target = decorated;\n }\n }\n return target;\n }\n function DecorateProperty(decorators, target, propertyKey, descriptor) {\n for (var i = decorators.length - 1; i >= 0; --i) {\n var decorator = decorators[i];\n var decorated = decorator(target, propertyKey, descriptor);\n if (!IsUndefined(decorated) && !IsNull(decorated)) {\n if (!IsObject(decorated))\n throw new TypeError();\n descriptor = decorated;\n }\n }\n return descriptor;\n }\n function GetOrCreateMetadataMap(O, P, Create) {\n var targetMetadata = Metadata.get(O);\n if (IsUndefined(targetMetadata)) {\n if (!Create)\n return undefined;\n targetMetadata = new _Map();\n Metadata.set(O, targetMetadata);\n }\n var metadataMap = targetMetadata.get(P);\n if (IsUndefined(metadataMap)) {\n if (!Create)\n return undefined;\n metadataMap = new _Map();\n targetMetadata.set(P, metadataMap);\n }\n return metadataMap;\n }\n // 3.1.1.1 OrdinaryHasMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasmetadata\n function OrdinaryHasMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return true;\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryHasMetadata(MetadataKey, parent, P);\n return false;\n }\n // 3.1.2.1 OrdinaryHasOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryhasownmetadata\n function OrdinaryHasOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return false;\n return ToBoolean(metadataMap.has(MetadataKey));\n }\n // 3.1.3.1 OrdinaryGetMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetmetadata\n function OrdinaryGetMetadata(MetadataKey, O, P) {\n var hasOwn = OrdinaryHasOwnMetadata(MetadataKey, O, P);\n if (hasOwn)\n return OrdinaryGetOwnMetadata(MetadataKey, O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (!IsNull(parent))\n return OrdinaryGetMetadata(MetadataKey, parent, P);\n return undefined;\n }\n // 3.1.4.1 OrdinaryGetOwnMetadata(MetadataKey, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarygetownmetadata\n function OrdinaryGetOwnMetadata(MetadataKey, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return undefined;\n return metadataMap.get(MetadataKey);\n }\n // 3.1.5.1 OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarydefineownmetadata\n function OrdinaryDefineOwnMetadata(MetadataKey, MetadataValue, O, P) {\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ true);\n metadataMap.set(MetadataKey, MetadataValue);\n }\n // 3.1.6.1 OrdinaryMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinarymetadatakeys\n function OrdinaryMetadataKeys(O, P) {\n var ownKeys = OrdinaryOwnMetadataKeys(O, P);\n var parent = OrdinaryGetPrototypeOf(O);\n if (parent === null)\n return ownKeys;\n var parentKeys = OrdinaryMetadataKeys(parent, P);\n if (parentKeys.length <= 0)\n return ownKeys;\n if (ownKeys.length <= 0)\n return parentKeys;\n var set = new _Set();\n var keys = [];\n for (var _i = 0, ownKeys_1 = ownKeys; _i < ownKeys_1.length; _i++) {\n var key = ownKeys_1[_i];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n for (var _a = 0, parentKeys_1 = parentKeys; _a < parentKeys_1.length; _a++) {\n var key = parentKeys_1[_a];\n var hasKey = set.has(key);\n if (!hasKey) {\n set.add(key);\n keys.push(key);\n }\n }\n return keys;\n }\n // 3.1.7.1 OrdinaryOwnMetadataKeys(O, P)\n // https://rbuckton.github.io/reflect-metadata/#ordinaryownmetadatakeys\n function OrdinaryOwnMetadataKeys(O, P) {\n var keys = [];\n var metadataMap = GetOrCreateMetadataMap(O, P, /*Create*/ false);\n if (IsUndefined(metadataMap))\n return keys;\n var keysObj = metadataMap.keys();\n var iterator = GetIterator(keysObj);\n var k = 0;\n while (true) {\n var next = IteratorStep(iterator);\n if (!next) {\n keys.length = k;\n return keys;\n }\n var nextValue = IteratorValue(next);\n try {\n keys[k] = nextValue;\n }\n catch (e) {\n try {\n IteratorClose(iterator);\n }\n finally {\n throw e;\n }\n }\n k++;\n }\n }\n // 6 ECMAScript Data Typ0es and Values\n // https://tc39.github.io/ecma262/#sec-ecmascript-data-types-and-values\n function Type(x) {\n if (x === null)\n return 1 /* Null */;\n switch (typeof x) {\n case \"undefined\": return 0 /* Undefined */;\n case \"boolean\": return 2 /* Boolean */;\n case \"string\": return 3 /* String */;\n case \"symbol\": return 4 /* Symbol */;\n case \"number\": return 5 /* Number */;\n case \"object\": return x === null ? 1 /* Null */ : 6 /* Object */;\n default: return 6 /* Object */;\n }\n }\n // 6.1.1 The Undefined Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-undefined-type\n function IsUndefined(x) {\n return x === undefined;\n }\n // 6.1.2 The Null Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-null-type\n function IsNull(x) {\n return x === null;\n }\n // 6.1.5 The Symbol Type\n // https://tc39.github.io/ecma262/#sec-ecmascript-language-types-symbol-type\n function IsSymbol(x) {\n return typeof x === \"symbol\";\n }\n // 6.1.7 The Object Type\n // https://tc39.github.io/ecma262/#sec-object-type\n function IsObject(x) {\n return typeof x === \"object\" ? x !== null : typeof x === \"function\";\n }\n // 7.1 Type Conversion\n // https://tc39.github.io/ecma262/#sec-type-conversion\n // 7.1.1 ToPrimitive(input [, PreferredType])\n // https://tc39.github.io/ecma262/#sec-toprimitive\n function ToPrimitive(input, PreferredType) {\n switch (Type(input)) {\n case 0 /* Undefined */: return input;\n case 1 /* Null */: return input;\n case 2 /* Boolean */: return input;\n case 3 /* String */: return input;\n case 4 /* Symbol */: return input;\n case 5 /* Number */: return input;\n }\n var hint = PreferredType === 3 /* String */ ? \"string\" : PreferredType === 5 /* Number */ ? \"number\" : \"default\";\n var exoticToPrim = GetMethod(input, toPrimitiveSymbol);\n if (exoticToPrim !== undefined) {\n var result = exoticToPrim.call(input, hint);\n if (IsObject(result))\n throw new TypeError();\n return result;\n }\n return OrdinaryToPrimitive(input, hint === \"default\" ? \"number\" : hint);\n }\n // 7.1.1.1 OrdinaryToPrimitive(O, hint)\n // https://tc39.github.io/ecma262/#sec-ordinarytoprimitive\n function OrdinaryToPrimitive(O, hint) {\n if (hint === \"string\") {\n var toString_1 = O.toString;\n if (IsCallable(toString_1)) {\n var result = toString_1.call(O);\n if (!IsObject(result))\n return result;\n }\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n else {\n var valueOf = O.valueOf;\n if (IsCallable(valueOf)) {\n var result = valueOf.call(O);\n if (!IsObject(result))\n return result;\n }\n var toString_2 = O.toString;\n if (IsCallable(toString_2)) {\n var result = toString_2.call(O);\n if (!IsObject(result))\n return result;\n }\n }\n throw new TypeError();\n }\n // 7.1.2 ToBoolean(argument)\n // https://tc39.github.io/ecma262/2016/#sec-toboolean\n function ToBoolean(argument) {\n return !!argument;\n }\n // 7.1.12 ToString(argument)\n // https://tc39.github.io/ecma262/#sec-tostring\n function ToString(argument) {\n return \"\" + argument;\n }\n // 7.1.14 ToPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-topropertykey\n function ToPropertyKey(argument) {\n var key = ToPrimitive(argument, 3 /* String */);\n if (IsSymbol(key))\n return key;\n return ToString(key);\n }\n // 7.2 Testing and Comparison Operations\n // https://tc39.github.io/ecma262/#sec-testing-and-comparison-operations\n // 7.2.2 IsArray(argument)\n // https://tc39.github.io/ecma262/#sec-isarray\n function IsArray(argument) {\n return Array.isArray\n ? Array.isArray(argument)\n : argument instanceof Object\n ? argument instanceof Array\n : Object.prototype.toString.call(argument) === \"[object Array]\";\n }\n // 7.2.3 IsCallable(argument)\n // https://tc39.github.io/ecma262/#sec-iscallable\n function IsCallable(argument) {\n // NOTE: This is an approximation as we cannot check for [[Call]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.4 IsConstructor(argument)\n // https://tc39.github.io/ecma262/#sec-isconstructor\n function IsConstructor(argument) {\n // NOTE: This is an approximation as we cannot check for [[Construct]] internal method.\n return typeof argument === \"function\";\n }\n // 7.2.7 IsPropertyKey(argument)\n // https://tc39.github.io/ecma262/#sec-ispropertykey\n function IsPropertyKey(argument) {\n switch (Type(argument)) {\n case 3 /* String */: return true;\n case 4 /* Symbol */: return true;\n default: return false;\n }\n }\n // 7.3 Operations on Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-objects\n // 7.3.9 GetMethod(V, P)\n // https://tc39.github.io/ecma262/#sec-getmethod\n function GetMethod(V, P) {\n var func = V[P];\n if (func === undefined || func === null)\n return undefined;\n if (!IsCallable(func))\n throw new TypeError();\n return func;\n }\n // 7.4 Operations on Iterator Objects\n // https://tc39.github.io/ecma262/#sec-operations-on-iterator-objects\n function GetIterator(obj) {\n var method = GetMethod(obj, iteratorSymbol);\n if (!IsCallable(method))\n throw new TypeError(); // from Call\n var iterator = method.call(obj);\n if (!IsObject(iterator))\n throw new TypeError();\n return iterator;\n }\n // 7.4.4 IteratorValue(iterResult)\n // https://tc39.github.io/ecma262/2016/#sec-iteratorvalue\n function IteratorValue(iterResult) {\n return iterResult.value;\n }\n // 7.4.5 IteratorStep(iterator)\n // https://tc39.github.io/ecma262/#sec-iteratorstep\n function IteratorStep(iterator) {\n var result = iterator.next();\n return result.done ? false : result;\n }\n // 7.4.6 IteratorClose(iterator, completion)\n // https://tc39.github.io/ecma262/#sec-iteratorclose\n function IteratorClose(iterator) {\n var f = iterator[\"return\"];\n if (f)\n f.call(iterator);\n }\n // 9.1 Ordinary Object Internal Methods and Internal Slots\n // https://tc39.github.io/ecma262/#sec-ordinary-object-internal-methods-and-internal-slots\n // 9.1.1.1 OrdinaryGetPrototypeOf(O)\n // https://tc39.github.io/ecma262/#sec-ordinarygetprototypeof\n function OrdinaryGetPrototypeOf(O) {\n var proto = Object.getPrototypeOf(O);\n if (typeof O !== \"function\" || O === functionPrototype)\n return proto;\n // TypeScript doesn't set __proto__ in ES5, as it's non-standard.\n // Try to determine the superclass constructor. Compatible implementations\n // must either set __proto__ on a subclass constructor to the superclass constructor,\n // or ensure each class has a valid `constructor` property on its prototype that\n // points back to the constructor.\n // If this is not the same as Function.[[Prototype]], then this is definately inherited.\n // This is the case when in ES6 or when using __proto__ in a compatible browser.\n if (proto !== functionPrototype)\n return proto;\n // If the super prototype is Object.prototype, null, or undefined, then we cannot determine the heritage.\n var prototype = O.prototype;\n var prototypeProto = prototype && Object.getPrototypeOf(prototype);\n if (prototypeProto == null || prototypeProto === Object.prototype)\n return proto;\n // If the constructor was not a function, then we cannot determine the heritage.\n var constructor = prototypeProto.constructor;\n if (typeof constructor !== \"function\")\n return proto;\n // If we have some kind of self-reference, then we cannot determine the heritage.\n if (constructor === O)\n return proto;\n // we have a pretty good guess at the heritage.\n return constructor;\n }\n // naive Map shim\n function CreateMapPolyfill() {\n var cacheSentinel = {};\n var arraySentinel = [];\n var MapIterator = /** @class */ (function () {\n function MapIterator(keys, values, selector) {\n this._index = 0;\n this._keys = keys;\n this._values = values;\n this._selector = selector;\n }\n MapIterator.prototype[\"@@iterator\"] = function () { return this; };\n MapIterator.prototype[iteratorSymbol] = function () { return this; };\n MapIterator.prototype.next = function () {\n var index = this._index;\n if (index >= 0 && index < this._keys.length) {\n var result = this._selector(this._keys[index], this._values[index]);\n if (index + 1 >= this._keys.length) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n else {\n this._index++;\n }\n return { value: result, done: false };\n }\n return { value: undefined, done: true };\n };\n MapIterator.prototype.throw = function (error) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n throw error;\n };\n MapIterator.prototype.return = function (value) {\n if (this._index >= 0) {\n this._index = -1;\n this._keys = arraySentinel;\n this._values = arraySentinel;\n }\n return { value: value, done: true };\n };\n return MapIterator;\n }());\n return /** @class */ (function () {\n function Map() {\n this._keys = [];\n this._values = [];\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n Object.defineProperty(Map.prototype, \"size\", {\n get: function () { return this._keys.length; },\n enumerable: true,\n configurable: true\n });\n Map.prototype.has = function (key) { return this._find(key, /*insert*/ false) >= 0; };\n Map.prototype.get = function (key) {\n var index = this._find(key, /*insert*/ false);\n return index >= 0 ? this._values[index] : undefined;\n };\n Map.prototype.set = function (key, value) {\n var index = this._find(key, /*insert*/ true);\n this._values[index] = value;\n return this;\n };\n Map.prototype.delete = function (key) {\n var index = this._find(key, /*insert*/ false);\n if (index >= 0) {\n var size = this._keys.length;\n for (var i = index + 1; i < size; i++) {\n this._keys[i - 1] = this._keys[i];\n this._values[i - 1] = this._values[i];\n }\n this._keys.length--;\n this._values.length--;\n if (key === this._cacheKey) {\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n }\n return true;\n }\n return false;\n };\n Map.prototype.clear = function () {\n this._keys.length = 0;\n this._values.length = 0;\n this._cacheKey = cacheSentinel;\n this._cacheIndex = -2;\n };\n Map.prototype.keys = function () { return new MapIterator(this._keys, this._values, getKey); };\n Map.prototype.values = function () { return new MapIterator(this._keys, this._values, getValue); };\n Map.prototype.entries = function () { return new MapIterator(this._keys, this._values, getEntry); };\n Map.prototype[\"@@iterator\"] = function () { return this.entries(); };\n Map.prototype[iteratorSymbol] = function () { return this.entries(); };\n Map.prototype._find = function (key, insert) {\n if (this._cacheKey !== key) {\n this._cacheIndex = this._keys.indexOf(this._cacheKey = key);\n }\n if (this._cacheIndex < 0 && insert) {\n this._cacheIndex = this._keys.length;\n this._keys.push(key);\n this._values.push(undefined);\n }\n return this._cacheIndex;\n };\n return Map;\n }());\n function getKey(key, _) {\n return key;\n }\n function getValue(_, value) {\n return value;\n }\n function getEntry(key, value) {\n return [key, value];\n }\n }\n // naive Set shim\n function CreateSetPolyfill() {\n return /** @class */ (function () {\n function Set() {\n this._map = new _Map();\n }\n Object.defineProperty(Set.prototype, \"size\", {\n get: function () { return this._map.size; },\n enumerable: true,\n configurable: true\n });\n Set.prototype.has = function (value) { return this._map.has(value); };\n Set.prototype.add = function (value) { return this._map.set(value, value), this; };\n Set.prototype.delete = function (value) { return this._map.delete(value); };\n Set.prototype.clear = function () { this._map.clear(); };\n Set.prototype.keys = function () { return this._map.keys(); };\n Set.prototype.values = function () { return this._map.values(); };\n Set.prototype.entries = function () { return this._map.entries(); };\n Set.prototype[\"@@iterator\"] = function () { return this.keys(); };\n Set.prototype[iteratorSymbol] = function () { return this.keys(); };\n return Set;\n }());\n }\n // naive WeakMap shim\n function CreateWeakMapPolyfill() {\n var UUID_SIZE = 16;\n var keys = HashMap.create();\n var rootKey = CreateUniqueKey();\n return /** @class */ (function () {\n function WeakMap() {\n this._key = CreateUniqueKey();\n }\n WeakMap.prototype.has = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.has(table, this._key) : false;\n };\n WeakMap.prototype.get = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? HashMap.get(table, this._key) : undefined;\n };\n WeakMap.prototype.set = function (target, value) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ true);\n table[this._key] = value;\n return this;\n };\n WeakMap.prototype.delete = function (target) {\n var table = GetOrCreateWeakMapTable(target, /*create*/ false);\n return table !== undefined ? delete table[this._key] : false;\n };\n WeakMap.prototype.clear = function () {\n // NOTE: not a real clear, just makes the previous data unreachable\n this._key = CreateUniqueKey();\n };\n return WeakMap;\n }());\n function CreateUniqueKey() {\n var key;\n do\n key = \"@@WeakMap@@\" + CreateUUID();\n while (HashMap.has(keys, key));\n keys[key] = true;\n return key;\n }\n function GetOrCreateWeakMapTable(target, create) {\n if (!hasOwn.call(target, rootKey)) {\n if (!create)\n return undefined;\n Object.defineProperty(target, rootKey, { value: HashMap.create() });\n }\n return target[rootKey];\n }\n function FillRandomBytes(buffer, size) {\n for (var i = 0; i < size; ++i)\n buffer[i] = Math.random() * 0xff | 0;\n return buffer;\n }\n function GenRandomBytes(size) {\n if (typeof Uint8Array === \"function\") {\n if (typeof crypto !== \"undefined\")\n return crypto.getRandomValues(new Uint8Array(size));\n if (typeof msCrypto !== \"undefined\")\n return msCrypto.getRandomValues(new Uint8Array(size));\n return FillRandomBytes(new Uint8Array(size), size);\n }\n return FillRandomBytes(new Array(size), size);\n }\n function CreateUUID() {\n var data = GenRandomBytes(UUID_SIZE);\n // mark as random - RFC 4122 \u00A7 4.4\n data[6] = data[6] & 0x4f | 0x40;\n data[8] = data[8] & 0xbf | 0x80;\n var result = \"\";\n for (var offset = 0; offset < UUID_SIZE; ++offset) {\n var byte = data[offset];\n if (offset === 4 || offset === 6 || offset === 8)\n result += \"-\";\n if (byte < 16)\n result += \"0\";\n result += byte.toString(16).toLowerCase();\n }\n return result;\n }\n }\n // uses a heuristic used by v8 and chakra to force an object into dictionary mode.\n function MakeDictionary(obj) {\n obj.__ = undefined;\n delete obj.__;\n return obj;\n }\n });\n})(Reflect || (Reflect = {}));\n", "import 'reflect-metadata';\nimport type { SyncRule, PageLayoutInformation, ValidityInformation } from '../types';\n\nexport const reflectMetadataKey = Symbol('specificationMetadataKey');\nexport const syncRule = (propSpec: SyncRule): any => {\n return Reflect.metadata(reflectMetadataKey, propSpec);\n};\n\nexport function getReflectMetadata(target: object, propertyName: string): SyncRule | undefined {\n let rule: SyncRule;\n if (target) {\n rule = Reflect.getMetadata(reflectMetadataKey, target, propertyName);\n }\n return rule;\n}\n\nexport const pageLayoutInformation =\n (pageInfo: PageLayoutInformation) =>\n (constructor: Function): void => {\n constructor.prototype.pageLayoutInformation = pageInfo;\n };\n\nconst childIdKey = Symbol('childId');\nexport const childId = (id: string): any => {\n return Reflect.metadata(childIdKey, id);\n};\n\nexport const getChildId = (target: any, propertyName: string): string => {\n return Reflect.getMetadata(childIdKey, target, propertyName);\n};\n\nexport const getPageLayoutInformation = (target: any): PageLayoutInformation => {\n return Object.getPrototypeOf(target).pageLayoutInformation;\n};\n\n/*\n * Validity decorator and functions for it\n */\n\nexport const validityMetadataKey = Symbol('validityMetadataKey');\nexport const validity = (propSpec: ValidityInformation): any => {\n return Reflect.metadata(validityMetadataKey, propSpec);\n};\n\nexport function getTextForDeprecated(key: string, validityInformation?: ValidityInformation): string {\n let text = `${key} is deprecated`;\n if (validityInformation && validityInformation.deprecated) {\n text = validityInformation.deprecated.since ? `${text} since ${validityInformation.deprecated.since}` : text;\n text = validityInformation.deprecated.text ? `${text}. ${validityInformation.deprecated.text}` : text;\n }\n\n return text;\n}\n", "import type { ChangeDefinition, ChangeDefinitionInCreation } from './types';\nimport * as flexUtils from '@ui5/flexibility-utils';\nimport type { Manifest as ManifestV2, UI5Version } from '../../../src';\nimport { FlexChangeLayer } from '../../../src';\nimport type { SyncRule } from '../common';\n\ntype Manifest = ManifestV2;\n\nconst changesUtils = flexUtils.default.change;\n\nconst defaultValues = {\n isCustomer: false,\n sapui5Version: ' ', // UI5 version should be set via exportConfig(). This is the fallback in case it's missing\n creatingTool: 'SAPFioriTools',\n type: 'propertyChange'\n};\n\n/**\n * Create a change as string (calls changeUtils from ui5-flexibility-utils)\n * @param change - properties required to create the change\n * @param manifest - the manifest.json file\n */\nexport function createChangeString(change: ChangeDefinitionInCreation, manifest: Manifest): string {\n let changeString = '';\n try {\n for (const defaultValue in defaultValues) {\n if (change[defaultValue] === undefined) {\n change[defaultValue] = defaultValues[defaultValue];\n }\n }\n changeString = changesUtils.createChangeString(change, manifest);\n } catch (error) {\n console.error(`Error while create flex change.`, error);\n }\n return changeString;\n}\n\n/**\n * Parse string and return the change as object (calls changeUtils from ui5-flexibility-utils)\n * @param changeString - string with serialized change\n */\nexport function parseChangeString(changeString: string): ChangeDefinition | boolean {\n try {\n return changesUtils.parse(changeString);\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Creates a flex change based on the given config information\n * @param configObject - current (sub)object of the configuration file\n * @param breadcrumbs - list of breadcrumbs, i.e. ID parts for building the stable ID\n * @param syncRule - export rule from the object classes decorator\n * @param ui5Version - SAP UI5 version\n * @param baseId - selector id of the current page\n * @param ids - list of parent & child ids\n * @param title - title from the app schema (comprising for instance the facet ID)\n * @param key - key of the given property\n * @param layer - layer\n * @returns {ChangeDefinitionInCreation} - the newly created flex change\n */\nexport function fillFlexChangeContent(\n configObject: object,\n syncRule: SyncRule,\n ui5Version: UI5Version,\n key: string,\n controlId: string\n): ChangeDefinitionInCreation {\n const isCustomer = ui5Version.layer ? ui5Version.layer === FlexChangeLayer.Customer : true;\n\n const flexChange: ChangeDefinitionInCreation = {\n controlId, //syncRule.flex.controlId(baseId, ids, breadcrumbs, syncRule.flex.controlType, title),\n controlType: syncRule.flex.controlType(),\n content: {\n property: key\n },\n sapui5Version: ui5Version.ui5Version,\n isCustomer\n };\n if (configObject[key] !== undefined) {\n if (syncRule.flex.exportFlexValue) {\n syncRule.flex.exportFlexValue(flexChange, configObject, key);\n } else if (configObject[key].toString().startsWith('{')) {\n flexChange.content.newBinding = configObject[key];\n flexChange.type = 'propertyBindingChange';\n } else {\n flexChange.content.newValue = configObject[key];\n }\n } else {\n flexChange.content.newValue = null;\n }\n return flexChange;\n}\n", "import { createChangeString } from '../flexUtils';\nimport type { ChangeDefinitionInCreation } from '../types';\nimport type { Manifest as ManifestV2 } from '../../../v2';\n\ntype Manifest = ManifestV2;\n\nexport function exportToFlexChange(change: ChangeDefinitionInCreation, manifest: Manifest): string {\n return createChangeString(change, manifest);\n}\n", "import type { DeprecatedProperties, SyncRule } from '../';\nimport { DefinitionName, DEFINITION_LINK_PREFIX, FacetTitlePrefix, getTextForDeprecated } from '../';\nimport { LogSeverity, log } from '../../../extensionLogger';\nimport type { ExtensionLogger } from '../../../apiTypes';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Transfers the value of a single manifest setting to the config\n * @param syncRule - Metadata rule\n * @param manifestSection - Section in manifest.json\n * @param propertyKey - Key of the property or setting\n * @param configPart - Part of the config JSON\n * @param sectionId - Section or facet ID\n * @param breadcrumbs - list of breadcrumbs or id's describing the keys of all hierarchy levels\n */\nexport function importProperty(\n syncRule: SyncRule,\n manifestSection: {},\n propertyKey: string,\n configPart: { [key: string]: any },\n sectionId?: string,\n breadcrumbs?: string[]\n): void {\n const manifestKey = syncRule.manifest.key || propertyKey;\n const importHandler = syncRule.manifest.import;\n if (importHandler && typeof importHandler === 'function') {\n const value = importHandler(manifestSection, sectionId, propertyKey, breadcrumbs);\n if (value !== undefined) {\n configPart[propertyKey] = value;\n }\n } else if (manifestSection[manifestKey] !== undefined) {\n configPart[propertyKey] = manifestSection[manifestKey];\n }\n}\n\n/**\n * Validation during import: check if properties are marked as deprecated.\n * If so, log them.\n * @param deprecatedProperties - existing list, to be actualized\n * @param manifestSection - Section in manifest.json\n * @param path - path to the section in manifest\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nexport function checkDeprecatedProperties(\n deprecatedProperties: DeprecatedProperties | undefined,\n manifestSection: {},\n path: string,\n logger?: ExtensionLogger\n): void {\n if (manifestSection && deprecatedProperties) {\n for (const key in manifestSection) {\n const deprecated = deprecatedProperties[key];\n if (deprecated) {\n log(logger, {\n severity: LogSeverity.Warning,\n message: getTextForDeprecated(key, deprecated),\n location: {\n path: 'webapp/manifest.json/',\n range: path.split('/')\n }\n });\n delete deprecatedProperties[key];\n }\n }\n }\n}\n\n/**\n * Determines the title of a section representation in the app schema, main aspect is checking the facet ID\n * @param schemaSection - Section in manifest.json\n * @param jsonSchema - app specific schema\n */\nexport function getSectionTitle(schemaSection: Definition, jsonSchema: Definition): string | undefined {\n if (schemaSection.$ref && !schemaSection.title) {\n const refTitle = jsonSchema.definitions[schemaSection.$ref.split(DEFINITION_LINK_PREFIX)[1]] as Definition;\n return getSectionTitle(refTitle, jsonSchema);\n } else if (schemaSection.title) {\n if (schemaSection.title.startsWith(FacetTitlePrefix)) {\n return schemaSection.title.split(FacetTitlePrefix)[1].replace(/com.sap/g, '@com.sap');\n } else {\n return schemaSection.title.replace(/com.sap/g, '@com.sap');\n }\n } else {\n return undefined;\n }\n}\n\n/**\n * Method returns target by resolving custom column reference name.\n * For example - 'TableCustomColumns<dummyTarget>' is resolved as 'dummyTarget'.\n * @param {string} ref Reference key.\n * @returns {string | undefined} Resolved target.\n */\nexport function getTargetFromCustomColumnRef(ref: string): string | undefined {\n const refParts = ref.split(`${DefinitionName.CustomColumns}<`);\n if (refParts[1]) {\n return refParts[1].split('>')[0];\n }\n return undefined;\n}\n", "import type { ConvertedMetadata, EntitySet, EntityType } from '@sap-ux/vocabularies-types';\nimport type { DataFieldAbstractTypes } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport { UIAnnotationTerms, UIAnnotationTypes } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport { getStableIdPartFromDataField } from '../../v4/utils/StableIdHelper';\nimport { FioriElementsVersion } from '../../../specification/common';\nimport type { FacetConfig } from '..';\nimport {\n DEFINITION_LINK_PREFIX,\n DefinitionName,\n SchemaTag,\n getDatafieldDescription,\n createAnnotationPath,\n PropertyName,\n SectionType,\n FacetBase,\n findAlias,\n UIVOCABULARY,\n prepareRef,\n addDataTypeToDefinition\n} from '..';\nimport type { Definition } from 'typescript-json-schema';\nimport type { GenerateAppSchemaParameters } from '../../../apiTypes';\n\n/**\n * Determines the name for a field definition in app schema\n * @param {FioriElementsVersion} version - Fiori Elements version\n * @param fieldReferenceId - the stable ID representation of the field\n * @param {string} targetID - unique ID, identifies the parent object (form)\n * @param fieldReference - the reference to the field definition in schema\n * @returns the field definition name in schema\n */\nfunction determineFieldDefinitionName(\n version: FioriElementsVersion,\n fieldReferenceId: string,\n targetID: string,\n fieldReference: string\n): string {\n const fieldReferenceType =\n version === FioriElementsVersion.v2 && fieldReferenceId && fieldReferenceId.includes('::')\n ? fieldReferenceId.split('::')[0].replace('DataField', 'Field')\n : undefined;\n if (version === FioriElementsVersion.v2) {\n return `${fieldReferenceType}<${targetID}::${fieldReference}>`;\n } else {\n return `${targetID}::${fieldReference}`;\n }\n}\n\n/**\n * Adds a field definition to the app specific schema\n * @param {string} sectionType - prefix to distinguish Section and HeaderSection\n * @param {object} appSchema - App schema in general\n * @param {DataFieldAbstractTypes} field - field definition in parser output (AVT)\n * @param {string} targetID - unique ID, identifies the parent object (form)\n * @param {string} key - current field key\n * @param {SectionType} section - current section of the object page\n * @param {FioriElementsVersion} version - Fiori Elements version\n */\nfunction addField(\n sectionType: SectionType,\n appSchema: Definition,\n field: DataFieldAbstractTypes,\n targetID: string,\n key: string,\n section: FacetConfig,\n version: FioriElementsVersion,\n withActions = true\n): void {\n // Calculate field reference\n const fieldReferenceId = getStableIdPartFromDataField(field);\n const fieldReference =\n version === FioriElementsVersion.v2 && fieldReferenceId && fieldReferenceId.includes('::')\n ? fieldReferenceId.split('::').splice(1).join('::')\n : fieldReferenceId;\n // Determine field definition name\n const fieldDefinition = determineFieldDefinitionName(version, fieldReferenceId, targetID, fieldReference);\n\n // Evaluate field type, set field reference of properties of fields' or actions' definition\n if (!field || !field.$Type) {\n return;\n } else if (\n field.$Type === UIAnnotationTypes.DataFieldForAction ||\n field.$Type === UIAnnotationTypes.DataFieldForIntentBasedNavigation\n ) {\n if (withActions && sectionType === SectionType.Section) {\n const actionsDefinition = prepareRef(`${sectionType}${DefinitionName.Actions}<${targetID}>`);\n const fieldInSchema = ((appSchema.definitions[actionsDefinition] as Definition).properties[fieldReference] =\n {\n $ref: `${DEFINITION_LINK_PREFIX}${fieldDefinition}`\n });\n fieldInSchema[SchemaTag.propertyIndex] = parseInt(key);\n }\n } else {\n const fieldsDefinition = prepareRef(`${sectionType}${DefinitionName.Fields}<${targetID}>`);\n appSchema.definitions[fieldsDefinition]['properties'][fieldReference] = {\n $ref: `${DEFINITION_LINK_PREFIX}${fieldDefinition}`,\n propertyIndex: parseInt(key)\n };\n }\n\n // Now set up the field definition\n appSchema.definitions[fieldDefinition] = {\n type: 'object',\n properties: {},\n description: getDatafieldDescription(field, section.entityType),\n additionalProperties: false\n };\n //Add tags\n appSchema.definitions[fieldDefinition][SchemaTag.annotationPath] = `/${section.entityType.fullyQualifiedName}/${\n field.fullyQualifiedName.split(section.entityType.fullyQualifiedName)[1]\n }`;\n appSchema.definitions[fieldDefinition][SchemaTag.annotationType] = field.$Type;\n appSchema.definitions[fieldDefinition][SchemaTag.isViewNode] = true;\n\n addDataTypeToDefinition(appSchema.definitions[fieldDefinition] as Definition, field);\n\n if (version === FioriElementsVersion.v2 && appSchema['definitions']['Field']) {\n switch (field.$Type) {\n case UIAnnotationTypes.DataField:\n case UIAnnotationTypes.DataFieldForAnnotation:\n case UIAnnotationTypes.DataFieldWithUrl: {\n appSchema['definitions'][fieldDefinition]['properties'] =\n appSchema['definitions']['Field']['properties'];\n break;\n }\n }\n }\n if (field.$Type === UIAnnotationTypes.DataFieldForAction && appSchema['definitions']?.['FormAction']) {\n appSchema['definitions'][fieldDefinition]['properties'] = appSchema['definitions']['FormAction']['properties'];\n }\n}\n\n/**\n * The function determines the target ID that shall be used in the app schema for a form\n * @param section - object describing the section or facet\n * @returns the target ID (string)\n */\nfunction determineTargetIdOfForm(section: FacetConfig) {\n let targetID: string;\n if (section.target && section.target['qualifier'] && section.entityType) {\n targetID = `${section.entityType.name}::${section.base}::${section.target['qualifier']}`;\n } else if (section.entityType) {\n targetID = `${section.entityType.name}::${section.base}`;\n } else {\n targetID = section.ID;\n }\n return targetID;\n}\n\n/**\n * Adds definitions for forms in object page sections to the app schema\n * @param {SectionType} sectionType - prefix to distinguish Section and HeaderSection\n * @param {FacetConfig} section - facet or section in the FE core model\n * @param {object} appSchemaSection - current definition of facet or section in the JSON schema\n * @param {object} appSchema - app specific schema that gets enhanced\n * @param {FioriElementsVersion} version - Fiori Elements version\n */\nexport function handleForm(\n sectionType: SectionType,\n section: FacetConfig,\n appSchemaSection: Definition,\n appSchema: Definition,\n version: FioriElementsVersion,\n withActions = true\n): void {\n if (!section.target) {\n return;\n }\n const targetID: string = determineTargetIdOfForm(section);\n const formDefinition = prepareRef(`${sectionType}${DefinitionName.Form}<${targetID}>`);\n const fieldsDefinition = prepareRef(`${sectionType}${DefinitionName.Fields}<${targetID}>`);\n const actionsDefinition = prepareRef(`${sectionType}${DefinitionName.Actions}<${targetID}>`);\n\n // Form definition\n appSchemaSection.properties['form'] = { $ref: `${DEFINITION_LINK_PREFIX}${formDefinition}` };\n\n if (sectionType === SectionType.Section && withActions) {\n appSchema['definitions'][formDefinition] = {\n type: 'object',\n properties: {\n actions: {\n $ref: `${DEFINITION_LINK_PREFIX}${actionsDefinition}`\n },\n fields: { $ref: `${DEFINITION_LINK_PREFIX}${fieldsDefinition}` }\n },\n description: 'Form',\n additionalProperties: false\n };\n appSchema['definitions'][actionsDefinition] = {\n type: 'object',\n properties: {},\n description: 'Actions',\n additionalProperties: false\n };\n appSchema['definitions'][actionsDefinition][SchemaTag.isViewNode] = true;\n } else {\n appSchema['definitions'][formDefinition] = {\n type: 'object',\n properties: {\n fields: { $ref: `${DEFINITION_LINK_PREFIX}${fieldsDefinition}` }\n },\n description: 'Form',\n additionalProperties: false\n };\n }\n appSchema.definitions[formDefinition][SchemaTag.isViewNode] = true;\n\n if (section.entityType?.name) {\n appSchema.definitions[formDefinition][SchemaTag.annotationPath] = createAnnotationPath(\n section.entityType.fullyQualifiedName,\n section.target['term'],\n section.target['qualifier']\n );\n }\n\n // Fields definition\n appSchema.definitions[fieldsDefinition] = {\n type: 'object',\n properties: {},\n description: 'Fields',\n additionalProperties: false\n };\n appSchema.definitions[fieldsDefinition][SchemaTag.isViewNode] = true;\n // Add fields\n if (section.base === FacetBase.Identification) {\n for (const key in section.target) {\n const field = section.target[key];\n if (field) {\n addField(sectionType, appSchema, field, targetID, key, section, version, withActions);\n }\n }\n } else {\n for (const key in section.target['Data']) {\n const field = section.target['Data'][key];\n addField(sectionType, appSchema, field, targetID, key, section, version);\n }\n }\n}\n\n/**\n * Replaces an alias in an annotation ID or reference, based on the AVT references' list\n * @param annotationIdentifier - annotation ID or reference\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n * @returns the converted string\n */\nexport function replaceAlias(annotationIdentifier: string, oDataServiceAVT: ConvertedMetadata): string {\n const potentialAlias = annotationIdentifier.indexOf('.') > -1 ? annotationIdentifier.split('.')[0] : undefined;\n let result = annotationIdentifier;\n if (potentialAlias) {\n const searchTerm = potentialAlias.replace('SAP__', '');\n const reference = oDataServiceAVT.references.find((ref) => {\n return ref.alias === searchTerm;\n });\n if (reference) {\n result = annotationIdentifier.replace(potentialAlias, reference.namespace);\n }\n }\n return result;\n}\n\n/**\n * Common routine to determine the name and the ID of a header action\n * @param action - action as given by AVT\n * @param entityType - entity type by AVT\n * @returns an object comprising action name and action id\n */\nexport function getActionNameAndId(action: string, entityType: EntityType): { actionName: string; actionId: string } {\n let separatorIndex = action.lastIndexOf('/');\n if (separatorIndex === -1) {\n separatorIndex = action.lastIndexOf('.');\n }\n let actionName, actionId;\n if (separatorIndex > -1) {\n actionName = action.substring(separatorIndex + 1);\n actionId = `${action.substring(0, separatorIndex)}::${actionName}`;\n } else {\n actionName = action;\n const namespace = entityType.fullyQualifiedName.split(entityType.name)[0];\n actionId = `${namespace.substring(0, namespace.length - 1)}::${actionName}`;\n }\n return { actionName, actionId };\n}\n\n/**\n * Add Object Page Footer Action Buttons to app-specific schema\n *\n * @param {object} appSchema Schema of the app\n * @param {EntityType} entityType - current entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n */\nexport function addFooterActions(appSchema: Definition, generateParameters: GenerateAppSchemaParameters): void {\n appSchema.definitions[DefinitionName.ObjectPageFooter] = JSON.parse(\n JSON.stringify(appSchema.definitions[`${DefinitionName.ObjectPageFooter}<ObjectPageFooterActions>`])\n );\n // Change reference of footer\n appSchema.properties['footer'] = {\n $ref: `${DEFINITION_LINK_PREFIX}${DefinitionName.ObjectPageFooter}`\n };\n // Add action to configuration\n (appSchema.definitions[DefinitionName.ObjectPageFooter] as Definition).properties[PropertyName.actions] = {\n $ref: `${DEFINITION_LINK_PREFIX}${DefinitionName.FooterActions}`\n };\n const footerActions = (appSchema.definitions[DefinitionName.FooterActions] = {\n type: 'object',\n properties: {},\n description: 'Actions',\n additionalProperties: false\n });\n footerActions[SchemaTag.isViewNode] = true;\n\n const alias = findAlias(UIVOCABULARY, generateParameters.serviceAVT);\n const entityType = generateParameters.entitySet.entityType;\n const actionAnnotation = alias && entityType.annotations?.[alias]?.Identification;\n if (actionAnnotation) {\n const convertedIdentification = actionAnnotation.fullyQualifiedName.replace(\n `@${UIAnnotationTerms.Identification}`,\n `/@${UIAnnotationTerms.Identification}`\n );\n footerActions[SchemaTag.annotationPath] = `/${convertedIdentification}`;\n actionAnnotation.forEach((item, index) => {\n if (item['Determining'] && item.$Type === UIAnnotationTypes.DataFieldForAction) {\n const { actionName, actionId } = getActionNameAndId(item.Action, entityType);\n const description = item.Label || actionName;\n const actionDefinitionKey = prepareRef(`${DefinitionName.ObjectPageFooterAction}<${actionId}>`);\n if (appSchema.definitions[DefinitionName.ObjectPageFooterAction]) {\n appSchema.definitions[actionDefinitionKey] = {\n ...JSON.parse(JSON.stringify(appSchema.definitions[DefinitionName.ObjectPageFooterAction])),\n description,\n annotationPath: `/${convertedIdentification}/${index}`\n };\n } else {\n appSchema.definitions[actionDefinitionKey] = {\n type: 'object',\n properties: {},\n description: description\n };\n appSchema.definitions[actionDefinitionKey][SchemaTag.isViewNode] = true;\n appSchema.definitions[actionDefinitionKey][\n SchemaTag.annotationPath\n ] = `/${convertedIdentification}/${index}`;\n }\n footerActions.properties[actionId] = {\n $ref: `${DEFINITION_LINK_PREFIX}${actionDefinitionKey}`\n };\n }\n });\n } else {\n footerActions[\n SchemaTag.annotationPath\n ] = `/${entityType.fullyQualifiedName}/@${UIAnnotationTerms.Identification}`;\n }\n delete appSchema.definitions[DefinitionName.ObjectPageFooterActions];\n delete appSchema.definitions[`${DefinitionName.ObjectPageFooter}<${DefinitionName.ObjectPageFooterActions}>`];\n}\n\n/**\n * Add Object Page Header Action Buttons to app-specific schema\n * @param {object} appSchema Schema of the app\n * @param {EntityType} entityType - current entity type\n * @param {ConvertedMetadata} oDataServiceAVT - complete service information, as returned by annotation vocabularies tool\n */\nexport function addHeaderActions(\n appSchema: Definition,\n entityType: EntityType,\n oDataServiceAVT: ConvertedMetadata,\n addHeaderActionCallBack\n): void {\n (appSchema.definitions[DefinitionName.ObjectPageHeader] as Definition).properties[PropertyName.actions] = {\n $ref: `${DEFINITION_LINK_PREFIX}${DefinitionName.HeaderActions}`\n };\n const headerActions = (appSchema.definitions[DefinitionName.HeaderActions] = {\n type: 'object',\n properties: {},\n description: 'Actions',\n additionalProperties: false\n });\n headerActions[SchemaTag.isViewNode] = true;\n\n const alias = findAlias(UIVOCABULARY, oDataServiceAVT);\n const identification =\n alias &&\n entityType.annotations &&\n entityType.annotations[alias] &&\n entityType.annotations[alias].Identification;\n\n if (identification) {\n headerActions[SchemaTag.annotationPath] =\n '/' +\n identification.fullyQualifiedName.replace(\n `@${UIAnnotationTerms.Identification}`,\n `/@${UIAnnotationTerms.Identification}`\n );\n identification.forEach(\n addHeaderActionCallBack(entityType, appSchema, identification, headerActions, oDataServiceAVT)\n );\n } else {\n headerActions[\n SchemaTag.annotationPath\n ] = `/${entityType.fullyQualifiedName}/@${UIAnnotationTerms.Identification}`;\n }\n delete appSchema.definitions[DefinitionName.GenericActions];\n delete appSchema.definitions[`${DefinitionName.ObjectPageHeader}<${DefinitionName.GenericActions}>`];\n}\n\n/**\n * Adds common Object Page Header definitions to the app schema\n * @param appSchema - app-specific JSOn schema\n * @param entityType - current entity Type\n */\nexport function addCommonHeaderSchema(appSchema: Definition, entityType: EntityType): void {\n appSchema.properties['header'] = {\n $ref: `${DEFINITION_LINK_PREFIX}${DefinitionName.ObjectPageHeader}`\n };\n appSchema.definitions[DefinitionName.ObjectPageHeader] = JSON.parse(\n JSON.stringify(appSchema.definitions[`${DefinitionName.ObjectPageHeader}<${DefinitionName.GenericActions}>`])\n );\n appSchema.definitions[DefinitionName.ObjectPageHeader][\n SchemaTag.annotationPath\n ] = `/${entityType.fullyQualifiedName}/@${UIAnnotationTerms.HeaderInfo}`;\n}\n\n/**\n * Common logic to determine the EntitySet of a facet\n * @param facet - current facet or section\n * @param serviceAVT - AVT converter output, comprising all annotation information\n * @returns the entity set as defined in AVT, if found\n */\nexport function determineEntitySetOfFacet(facet: FacetConfig, serviceAVT: ConvertedMetadata): EntitySet | undefined {\n return facet.entityType\n ? serviceAVT.entitySets.find(\n (es) => es.entityType.name === facet.entityType.name || es.name === facet.entityType.name\n )\n : undefined;\n}\n", "import { UIAnnotationTypes } from '@sap-ux/vocabularies-types/vocabularies/UI';\n\n/**\n * Stable Id helper (parts copied from sap.fe.core/helpers/StableIdHelper.ts)\n */\n\n/**\n * Copy for the Core.isValid function to be independent.\n *\n * @param {string} vValue string to validate\n * @returns {boolean} the validate\n */\nfunction isValid(vValue: string): boolean {\n return /^([A-Za-z_][-A-Za-z0-9_.:]*)$/.test(vValue);\n}\n\nexport function replaceSpecialChars(sId: string): string {\n if (typeof sId !== 'string') {\n return;\n }\n if (sId.indexOf(' ') >= 0) {\n throw sId + ' - Spaces are not allowed in ID parts.';\n }\n sId = sId\n .replace(/^\\/|^@|^#|^\\*/, '') // remove special characters from the beginning of the string\n .replace(/\\/$|@$|#$|\\*$/, '') // remove special characters from the end of the string\n .replace(/\\/|@|\\(|\\)|#|\\*/g, '::'); // replace special characters with ::\n\n // Replace double occurrences of the separator with a single separator\n while (sId.indexOf('::::') > -1) {\n sId = sId.replace('::::', '::');\n }\n\n // If there is a :: at the end of the ID remove it\n if (sId.slice(-2) === '::') {\n sId = sId.slice(0, -2);\n }\n\n return sId;\n}\n\nfunction removeNamespaces(sId: string): string {\n sId = sId.replace('com.sap.vocabularies.UI.v1.', '');\n sId = sId.replace('com.sap.vocabularies.Communication.v1.', '');\n return sId;\n}\n\nexport const prepareId = function (sId: string): string {\n sId = replaceSpecialChars(removeNamespaces(sId));\n if (isValid(sId)) {\n return sId;\n } else {\n throw sId + ' - Stable Id could not be generated due to insufficient information.';\n }\n};\n\nfunction evaluateConcat(oValue: any) {\n let sPathConcat = '';\n for (const applyValue of oValue.$Apply) {\n if (applyValue.$Path) {\n if (sPathConcat) {\n sPathConcat += '::';\n }\n sPathConcat += applyValue.$Path;\n }\n }\n return sPathConcat;\n}\n\nfunction getStableIdPartFromValue(oValue: any): string | undefined {\n if (oValue?.$Path || oValue?.path) {\n return oValue.$Path || oValue.path;\n }\n\n if (oValue?.$Apply && oValue.$Function === 'odata.concat') {\n return evaluateConcat(oValue);\n }\n\n if (oValue) {\n if (typeof oValue === 'string') {\n //old AVT format\n return replaceSpecialChars(oValue.replace(/ /g, '_'));\n } else {\n //new AVT format\n return replaceSpecialChars(oValue?.value?.String?.replace(/ /g, '_'));\n }\n }\n}\n\nexport const getStableIdPartFromSemanticObjectAndAction = function (oDataField: any): string {\n let sIdPart = '';\n if (typeof oDataField.SemanticObject === 'string') {\n sIdPart += oDataField.SemanticObject;\n } else if (oDataField.SemanticObject.$Path) {\n sIdPart += oDataField.SemanticObject.$Path;\n }\n if (typeof oDataField.Action === 'string') {\n sIdPart += '::' + oDataField.Action;\n } else if (oDataField.Action && oDataField.Action.$Path) {\n sIdPart += '::' + oDataField.Action.$Path;\n }\n if (oDataField['RequiresContext'] && oDataField['RequiresContext'] == true) {\n sIdPart += '::RequiresContext';\n }\n return sIdPart;\n};\n\nexport const getStableIdPartFromDataField = function (oDataField: any): string | undefined {\n let sIdPart = '';\n\n if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldForAction) {\n sIdPart = 'DataFieldForAction::';\n sIdPart += oDataField.Action;\n return prepareId(sIdPart);\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldForIntentBasedNavigation) {\n sIdPart = 'DataFieldForIntentBasedNavigation::';\n sIdPart += getStableIdPartFromSemanticObjectAndAction(oDataField);\n return sIdPart;\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldForAnnotation) {\n sIdPart = 'DataFieldForAnnotation::';\n sIdPart += prepareId(oDataField.Target.$AnnotationPath || oDataField.Target.value);\n return sIdPart;\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldWithAction) {\n sIdPart = 'DataFieldWithAction::';\n if (oDataField.Value) {\n sIdPart += getStableIdPartFromValue(oDataField.Value) + '::';\n }\n sIdPart += oDataField.Action;\n return prepareId(sIdPart);\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataField) {\n sIdPart = 'DataField::';\n sIdPart += getStableIdPartFromValue(oDataField.Value);\n return prepareId(sIdPart);\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldWithIntentBasedNavigation) {\n sIdPart = 'DataFieldWithIntentBasedNavigation::';\n sIdPart += getStableIdPartFromValue(oDataField.Value) + '::';\n sIdPart += getStableIdPartFromSemanticObjectAndAction(oDataField);\n return prepareId(sIdPart);\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldWithNavigationPath) {\n sIdPart = 'DataFieldWithNavigationPath::';\n sIdPart += getStableIdPartFromValue(oDataField.Value);\n if (oDataField.Target && oDataField.Target['$NavigationPropertyPath']) {\n sIdPart += '::' + oDataField.Target['$NavigationPropertyPath'];\n }\n return prepareId(sIdPart);\n } else if (oDataField.$Type && oDataField.$Type === UIAnnotationTypes.DataFieldWithUrl) {\n sIdPart = 'DataFieldWithUrl::';\n sIdPart += getStableIdPartFromValue(oDataField.Value);\n return prepareId(sIdPart);\n } else {\n // In case of a string or unknown property\n // Log.error(\"Stable ID Helper: Unable to create a stable ID. Please check the annotations.\");\n }\n return undefined;\n};\n", "import type { AnnotationTerm, ConvertedMetadata, EntitySet, EntityType } from '@sap-ux/vocabularies-types';\nimport type { LineItem } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport type { Definition } from 'typescript-json-schema';\nimport type { FacetConfig, FacetSection, SectionType } from '..';\nimport type { SectionTypeV2 } from '../../v2/types';\nimport { UIAnnotationTerms } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport {\n DefinitionName,\n SchemaTag,\n DEFINITION_LINK_PREFIX,\n UIVOCABULARY,\n createAnnotationPath,\n prepareRef,\n addSectionTitleAndDescription\n} from '..';\n\n/**\n * Adds an enum filled with existing UI annotations of the given list (validAnnotations)\n * @param {EntityType} entityType\n * @param {UIAnnotationTerms[]} validAnnotations\n * @param {Definition} annoPath - the annotation path property in the app schema where the enum shall be added\n */\nexport function addEnumForValidAnnotations(\n entityType: EntityType,\n validAnnotations: UIAnnotationTerms[],\n annoPath: Definition\n): void {\n const UiAnnotations = entityType.annotations.UI;\n if (!UiAnnotations) {\n return;\n }\n const enumEntries = annoPath['enum'] ? annoPath['enum'] : [];\n for (const key in UiAnnotations) {\n const annotation = UiAnnotations[key];\n if (validAnnotations.indexOf(annotation.term) > -1) {\n const enumEntry = annotation.qualifier\n ? `${annotation.term}#${annotation.qualifier}`\n : `${annotation.term}`;\n if (enumEntries.indexOf(enumEntry) === -1) {\n enumEntries.push(enumEntry);\n }\n }\n }\n if (enumEntries.length > 0) {\n annoPath['enum'] = enumEntries;\n }\n}\n\n/**\n * Adds an enum filled with existing UI annotations for single-tab variants of a table\n * @param {EntityType} entityType\n * @param {Definition} appSchema - app specific JSON schema\n * @param definitionName - name of the definition in the app schema\n */\nexport function addEnumForSingleTabVariant(\n entityType: EntityType,\n appSchema: Definition,\n definitionName: string\n): void {\n const annoPath = (appSchema.definitions[definitionName] as Definition).properties.annotationPath as Definition;\n const validAnnotations = [UIAnnotationTerms.SelectionVariant, UIAnnotationTerms.SelectionPresentationVariant];\n addEnumForValidAnnotations(entityType, validAnnotations, annoPath);\n}\n\n/**\n * Adds an enum filled with existing UI annotations for multi-tab variants of a table\n * @param appSchema - app specific JSOn schema\n * @param definitionName - name of the definition in the app schema\n * @param {EntitySet} entitySet - current entity set of the page or view\n */\nexport function addEnumForMultiTabVariant(appSchema: Definition, definitionName: string, entitySet: EntitySet): void {\n const annoPath = (appSchema.definitions[definitionName] as Definition)?.properties.annotationPath;\n const validAnnotations = [UIAnnotationTerms.SelectionVariant, UIAnnotationTerms.SelectionPresentationVariant];\n addEnumForValidAnnotations(entitySet.entityType, validAnnotations, annoPath as Definition);\n}\n\n/**\n * Adds the enum values for entitySet as part of the multiple view scenario\n * @param {ConvertedMetadata} oDataServiceAVT - combined service metadata, as returned by annotation vocabularies tools\n * @param appSchema - app specific JSON schema\n * @param definitionName - name of the definition in the app schema\n */\nexport function addEnumForVariantEntitySet(\n oDataServiceAVT: ConvertedMetadata,\n appSchema: Definition,\n definitionName: string\n): void {\n const entitySet = (appSchema.definitions[definitionName] as Definition).properties.entitySet;\n const enumEntries = [];\n\n oDataServiceAVT.entitySets.forEach((es: EntitySet) => {\n enumEntries.push(es.name);\n });\n if (enumEntries.length > 0) {\n entitySet['enum'] = enumEntries;\n }\n}\n\n/**\n * Method adds definition for 'RelatedFacetKeys' as enum with describtion and adds references to 'RelatedFacetKeys' for custom section definitions.\n * @param {object} appSchema App specific schema that potentially gets enhanced\n * @param {string[]>} sectionDefinitions array of section definitions which should be updated with new reference to 'RelatedFacetKeys' enum.\n * @param {FacetSection[]} facetSections Array of facet section objects which is used to generate enum values.\n * @param {Array<keyof Omit<FacetSection, 'custom'>>} idProperties Array of property names which should be looked up in 'FacetSection' object.\n * Please note that method depends on order and takes first non empty value associated to passed properties.\n */\nexport function addDefinitionForRelatedFacetKeys(\n appSchema: object,\n sectionDefinitions: string[],\n facetSections: FacetSection[],\n idProperties: Array<keyof Omit<FacetSection, 'custom'>>\n): void {\n const oneOfSections = facetSections.map((section: FacetSection) => {\n // Loop accaptable properties in received order and find first entry with value\n const propertyName = idProperties.find((property) => !!section[property]);\n const schemaIdForSection = section[propertyName];\n return {\n const: schemaIdForSection,\n ...(section.label && { description: section.label }),\n ...(section.custom && { custom: section.custom })\n };\n });\n // Change 'relatedFacet' only when we have entries for sections - otherwise use generic.\n if (oneOfSections.length) {\n // Create new definition in schema as 'oneOf'.\n // Simpler way would be to use 'enum', but then there no option to pass description.\n appSchema['definitions']['RelatedFacetKeys'] = {\n type: 'string',\n oneOf: oneOfSections\n };\n\n // Add enum definition\n for (const name of sectionDefinitions) {\n const definition = appSchema['definitions'][name] as Definition;\n const property = definition.properties['relatedFacet'];\n definition.properties['relatedFacet'] = {\n anyOf: [\n {\n $ref: DEFINITION_LINK_PREFIX + 'RelatedFacetKeys'\n },\n property\n ]\n };\n }\n }\n}\n\n/**\n * Receives a facet key and returns the key as used in schema\n * @param facetKey - key of the facet, as used in annotation\n * @returns facetKeyInSchema - key of the facet, as used in schema\n */\nexport function getFacetKeyInSchema(facetKey: string): string {\n return facetKey.replace('#', '::');\n}\n\n/**\n * Returns the name of a facet and definition, as key in definition\n * @param definition name of definition, as used in schema\n * @param facetKey - key of the facet, as used in annotation\n * @returns definition key of facet, as used in definition\n */\nfunction getFacetDefinitionKey(definition: string, facetKey: string): string {\n return `${definition}<${getFacetKeyInSchema(facetKey)}>`;\n}\n\n/**\n * Adds an existing schema definition to a new definition in the app schema\n * @param definition name of definition, as used in schema\n * @param facetKey - key of the facet, as used in annotation\n * @param {Definition} appSchema App schema in general\n * @param {boolean} useDefinitionAsKey If set to false, facet key will solely be used as key, else encapsulated within definition key `definition<facetKey>`\n * @param subDefinitionName - sub definition, if different from the definition (e.g. subsection vs. section)\n * @returns {Definition} part of app schema that has been added and filled\n */\nexport function parseSchemaDefinition(\n definition: string,\n facetKey: string,\n appSchema: Definition,\n useDefinitionAsKey = true,\n subDefinitionName?: DefinitionName\n): Definition {\n let facetDefinitionKey = facetKey;\n if (useDefinitionAsKey) {\n facetDefinitionKey = getFacetDefinitionKey(subDefinitionName ? subDefinitionName : definition, facetKey);\n }\n if (definition && definition !== facetDefinitionKey) {\n const schemaDefinition = JSON.parse(JSON.stringify(appSchema.definitions[definition])) as Definition;\n appSchema.definitions[facetDefinitionKey] = schemaDefinition;\n }\n return appSchema.definitions[facetDefinitionKey] as Definition;\n}\n\n/**\n * Functions used both by V2 and V4 to add the common definitions for a line item to the app schema\n * @param appSchema - the app specific schema that shall get enhanced\n * @param lineItemAnnotation - the UI.LineItem annotation, comprising all records\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n * @param lineItemId - line item ID, as comprise in stable ID\n * @returns the actions definition plus the annotation path to the given line item\n */\nexport function addCommonLineItemDefinitions(\n appSchema: Definition,\n lineItemAnnotation: AnnotationTerm<LineItem>,\n entityType: EntityType,\n lineItemId: string\n): { actions: object; footerActions: object; lineItemPath: string } {\n let lineItemPath: string;\n\n appSchema.definitions[lineItemId] = {\n type: 'object',\n properties: {},\n description: 'Columns'\n };\n (appSchema.definitions[lineItemId] as Definition).additionalProperties = false;\n appSchema.definitions[lineItemId][SchemaTag.isViewNode] = true;\n // Copy toolbar\n const toolBar = lineItemId.startsWith(DefinitionName.LineItems) ? 'ToolBar' : 'ObjectPageToolBar';\n const schemaIdForToolBar = `${toolBar}<${lineItemId}>`;\n appSchema.definitions[schemaIdForToolBar] = JSON.parse(JSON.stringify(appSchema.definitions[`${toolBar}`]));\n\n const schemaIdForActions = `Actions<${prepareRef(lineItemId)}>`;\n (appSchema.definitions[schemaIdForToolBar] as Definition).properties.actions['$ref'] =\n DEFINITION_LINK_PREFIX + schemaIdForActions;\n\n const actionId = lineItemId.startsWith(DefinitionName.LineItems) ? 'Actions' : 'ObjectPageToolBarActions';\n const actions = (appSchema.definitions[schemaIdForActions] = JSON.parse(\n JSON.stringify(appSchema.definitions[actionId])\n ));\n actions.properties = {};\n actions.additionalProperties = false;\n\n // Copy LR footer\n let footerActions, schemaIdForFooter;\n if (lineItemId === DefinitionName.LineItems && appSchema.properties['footer']) {\n schemaIdForFooter = `Footer<${lineItemId}>`;\n (appSchema.properties['footer'] as Definition).$ref = DEFINITION_LINK_PREFIX + schemaIdForFooter;\n\n appSchema.definitions[schemaIdForFooter] = JSON.parse(JSON.stringify(appSchema.definitions[`GenericFooter`]));\n const schemaIdForFooterActions = `FooterActions<${prepareRef(lineItemId)}>`;\n (appSchema.definitions[schemaIdForFooter] as Definition).properties.actions['$ref'] =\n DEFINITION_LINK_PREFIX + schemaIdForFooterActions;\n\n footerActions = appSchema.definitions[schemaIdForFooterActions] = JSON.parse(\n JSON.stringify(appSchema.definitions[`Actions`])\n );\n footerActions.properties = {};\n footerActions.additionalProperties = false;\n }\n //Determine annotation path\n if (lineItemAnnotation) {\n lineItemPath = createAnnotationPath(\n entityType.fullyQualifiedName,\n lineItemAnnotation.term,\n lineItemAnnotation.qualifier\n );\n appSchema.definitions[lineItemId][SchemaTag.annotationPath] = appSchema.definitions[schemaIdForToolBar][\n SchemaTag.annotationPath\n ] = lineItemPath;\n if (footerActions) {\n appSchema.definitions[schemaIdForFooter][SchemaTag.annotationPath] = lineItemPath;\n }\n }\n\n return { actions, footerActions, lineItemPath };\n}\n\n/**\n * Add schema definitions for fields of createWithParameterDialog\n * @param {object} appSchema - Application-specific schema, to be enhanced\n * @param {EntityType} entityType - Given entity type for which entries shall get generated\n * @param {string=} floorplanSuffix - floorplan specific suffix (optional)\n */\nexport function addFieldsType(appSchema: Definition, entityType: EntityType, floorplanSuffix = ''): void {\n const propertyNameArray = [],\n propertyObject = {};\n const fieldPathRef = `FieldPath${prepareRef(floorplanSuffix)}`;\n for (const key of entityType.entityProperties) {\n const propertyName = key.name;\n propertyNameArray.push(propertyName);\n propertyObject[propertyName] = {\n $ref: `${DEFINITION_LINK_PREFIX}${fieldPathRef}`\n };\n }\n appSchema.definitions[entityType.name] = {\n enum: propertyNameArray\n };\n (appSchema.definitions[fieldPathRef] as Definition).properties.path = {\n $ref: `${DEFINITION_LINK_PREFIX}${entityType.name}`\n };\n const creationFieldsRef = `CreationFieldKeys${prepareRef(floorplanSuffix)}`;\n appSchema.definitions[creationFieldsRef] = {\n type: 'object',\n properties: propertyObject,\n additionalProperties: false\n };\n const fields4Dialog = appSchema['definitions'][`Fields4Dialog${floorplanSuffix}`] as Definition;\n (fields4Dialog.properties.fields as Definition).$ref = `${DEFINITION_LINK_PREFIX}${creationFieldsRef}`;\n}\n\nexport enum DataType {\n String = 'String',\n Rating = 'Rating',\n Progress = 'Progress',\n DataPoint = 'DataPoint',\n Contact = 'Contact',\n Address = 'Address',\n Chart = 'Chart',\n FieldGroup = 'FieldGroup',\n IntentBasedNavigation = 'IntentBasedNavigation'\n}\n\nfunction determineDataTypeOfTarget(field: object): string | undefined {\n let dataType: string;\n\n const target = field['Target'].$target;\n if (!target) {\n return dataType;\n }\n if (target.Value) {\n if (target.Visualization === 'UI.VisualizationType/Rating') {\n dataType = DataType.Rating;\n } else if (target.Visualization === 'UI.VisualizationType/Progress') {\n dataType = DataType.Progress;\n } else if (target.$Type === 'com.sap.vocabularies.UI.v1.DataPointType') {\n dataType = DataType.DataPoint;\n } else {\n dataType = target.Value?.$target?.type.replace('Edm.', '');\n }\n } else if (target.$Type === 'com.sap.vocabularies.Communication.v1.ContactType') {\n dataType = DataType.Contact;\n } else if (target.$Type === 'com.sap.vocabularies.Communication.v1.AddressType') {\n dataType = DataType.Address;\n } else if (target.$Type === 'com.sap.vocabularies.UI.v1.ChartDefinitionType') {\n dataType = DataType.Chart;\n } else if (target.$Type === 'com.sap.vocabularies.UI.v1.FieldGroupType') {\n dataType = DataType.FieldGroup;\n }\n return dataType;\n}\n\n/**\n * Determines the dataType that shall be added to a property in schema, for any kind of field like\n * - feld of a field group\n * - line item record\n * - selection field\n * @param field - the given field\n * @returns - the dataType as string\n */\nexport function determineDataType(field: object): string | undefined {\n let dataType: string;\n\n if (field['Value']) {\n if (field['Value'].$target?.type) {\n dataType = field['Value'].$target.type.replace('Edm.', '');\n } else {\n dataType = DataType.String;\n }\n } else if (field['Target']) {\n dataType = determineDataTypeOfTarget(field);\n } else if (field['$target']) {\n dataType = field['$target'].type.replace('Edm.', '');\n } else if (field['$Type'] === 'com.sap.vocabularies.UI.v1.DataFieldForAction') {\n dataType = 'Action';\n } else if (field['$Type'] === 'com.sap.vocabularies.UI.v1.DataFieldWithUrl') {\n dataType = 'Url';\n } else if (field['$Type'] === 'com.sap.vocabularies.UI.v1.DataFieldForIntentBasedNavigation') {\n dataType = DataType.IntentBasedNavigation;\n } else if (field['type']) {\n dataType = field['type'];\n }\n\n return dataType;\n}\n\n/**\n * Adds the dataType to the given schema field definition, if the data type cane be determined\n * @param definition - given schema definition\n * @param field - given field definition = annotation property, at AVT\n */\nexport function addDataTypeToDefinition(definition: object, field: object): void {\n const dataType = determineDataType(field);\n if (dataType) {\n definition[SchemaTag.dataType] = dataType;\n }\n}\n\n/**\n * Creates a definition link for a facet and definition name\n * @param definition name of definition, as used in schema\n * @param facetKey - key of the facet, as used in annotation\n * @returns definition link of facet, as used in definition\n */\nexport function getFacetDefinitionLink(definition: DefinitionName | SectionTypeV2, facetKey: string): string {\n return `${DEFINITION_LINK_PREFIX}${getFacetDefinitionKey(definition, facetKey)}`;\n}\n\n/**\n * Extracts annotationPath from facet or Chart/LineItem fullyQualifiedName\n * @param facet facet or Chart/LineItem\n * @returns {string} annotationPath\n */\nexport function getFacetAnnotationPath(facet: FacetConfig | object): string | undefined {\n if ((facet as FacetConfig).annotationPath) {\n return (facet as FacetConfig).annotationPath;\n } else if (facet['fullyQualifiedName']) {\n const [namespace, target] = facet['fullyQualifiedName'].split(`@${UIVOCABULARY}`);\n return `/${namespace}/@${UIVOCABULARY}${target}`;\n }\n return undefined;\n}\n\n/**\n * Adds definitions for Address and Contact items in object page sections to the app schema\n * @param {FacetConfig} facet - current facet.\n * @param {string} facetKey - facet key.\n * @param {object} sections - schema of current sections definition.\n * @param {object} appSchema - app specific schema that potentially gets enhanced.\n * @param {SectionType} sectionPrefix - prefix to distinguish Section and HeaderSection\n */\nexport function handleAddressContact(\n facet: FacetConfig,\n facetKey: string,\n sections: Definition,\n appSchema: Definition,\n sectionPrefix: SectionType,\n subSectionPrefix?: SectionType,\n versionPostfix = ''\n) {\n const definitionName = `ObjectPage${sectionPrefix}${facet.base}${versionPostfix}` as DefinitionName;\n const subDefinitionName = `ObjectPage${subSectionPrefix}${facet.base}${versionPostfix}` as DefinitionName;\n sections.properties[facetKey] = {\n $ref: getFacetDefinitionLink(subSectionPrefix ? subDefinitionName : definitionName, facetKey)\n };\n const definition = parseSchemaDefinition(\n subSectionPrefix ? subDefinitionName : definitionName,\n facetKey,\n appSchema,\n true,\n subSectionPrefix ? subDefinitionName : undefined\n );\n addSectionTitleAndDescription(facet, definition, facetKey);\n definition[SchemaTag.annotationPath] = facet.annotationPath;\n definition[SchemaTag.isViewNode] = true;\n}\n", "import type { ConvertedMetadata, EntitySet } from '@sap-ux/vocabularies-types';\nimport { UIAnnotationTypes } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport type { ImportProjectParameters, GenerateAppSchemaParameters } from '../../apiTypes';\nimport type { Manifest } from '../../specification/common';\nimport { FioriElementsVersion, ManifestSection, SchemaType } from '../../specification/common';\nimport { getGenericSchema } from '../../specification/schemaAccess';\nimport * as pageV2 from '../../specification/v2/webapp/manifest/sapUiPageV2';\nimport {\n generateAnalyticalListReportSchemaV2,\n generateListReportSchemaV2,\n generateObjectPageSchemaV2,\n generateOVPInterfaceV2\n} from '../v2/generate';\nimport { getPages as getPagesV2, V2AppProvider } from '../v2/import/app/appProvider';\nimport { V2OvpProvider } from '../v2/import/app/ovpProvider';\nimport type { AppProvider } from './appProvider';\nimport type { File } from './types';\nimport { DirName, FileName, UIVOCABULARY } from './types';\nimport {\n findAlias,\n getSchemaFilePath,\n getTemplateTypeFromManifest,\n getVersionFromManifest,\n parseAndMergeAndConvert,\n TemplateType\n} from './utils';\nimport type { FileData } from '../common';\nimport { initI18n } from '../../i18n/i18n';\n\ninterface UiEntityTypes {\n Facets: string[];\n LineItems: string[];\n}\n\ninterface Schemas {\n [type: string]: object;\n}\n\n/**\n * Generates an object comprising all generic schemas\n * @param {TemplateType} templateType - Template type\n * @param {FioriElementsVersion} fioriElementsVersion - Fiori Elements version\n * @returns {Object} genericSchemas\n */\nasync function getGenericSchemas(\n templateType: TemplateType,\n fioriElementsVersion: FioriElementsVersion\n): Promise<Schemas> {\n const genericSchemas: Schemas = {};\n let schemaTypes = [];\n schemaTypes = [SchemaType.Application];\n switch (templateType) {\n case TemplateType.ListReportObjectPageV2:\n schemaTypes.push(SchemaType.ListReport, SchemaType.ObjectPage);\n break;\n case TemplateType.AnalyticalListPageV2:\n schemaTypes.push(SchemaType.AnalyticalListPage, SchemaType.ObjectPage);\n break;\n case TemplateType.OverviewPageV2:\n schemaTypes.push(SchemaType.OverviewPage);\n break;\n default:\n break;\n }\n for (const schemaType of schemaTypes) {\n const schemaFile = getSchemaFilePath(schemaType);\n genericSchemas[schemaFile.filename] = await getGenericSchema(fioriElementsVersion, schemaType);\n }\n return genericSchemas;\n}\n\n/**\n * Get the relevant UI.ListItem and UI.Facet entity sets\n * @param {ConvertedMetadata} oDataServiceAVT - Annotations as converted by AVT\n * @returns a fitered list of facet and line item annotations\n */\nfunction getAnnotationsForUi(oDataServiceAVT: ConvertedMetadata): UiEntityTypes {\n const filteredEntityTypes: UiEntityTypes = {\n Facets: [],\n LineItems: []\n };\n const allEntityTypes = oDataServiceAVT?.entityTypes;\n if (!allEntityTypes) {\n return filteredEntityTypes;\n }\n const alias = findAlias(UIVOCABULARY, oDataServiceAVT);\n for (const entity of allEntityTypes) {\n if (!entity.annotations || !entity.annotations[alias]) {\n continue;\n }\n const name = entity.name || entity.fullyQualifiedName.split('.').pop();\n const { LineItem, Facets } = entity.annotations[alias];\n if (\n LineItem &&\n !LineItem.qualifier &&\n LineItem.find(\n (li) =>\n li.$Type === UIAnnotationTypes.DataField || li.$Type === UIAnnotationTypes.DataFieldForAnnotation\n )\n ) {\n filteredEntityTypes.LineItems.push(name);\n }\n if (Facets && !Facets.qualifier) {\n filteredEntityTypes.Facets.push(name);\n }\n }\n return filteredEntityTypes;\n}\n\nexport function getEntitySetByEntitySetName(entitySetName: string, oDataServiceAVT: ConvertedMetadata): EntitySet {\n return oDataServiceAVT?.entitySets && oDataServiceAVT.entitySets.find((es) => es.name === entitySetName);\n}\n\n/**\n * The function generates one app schema per entitySet that is linked with an object page in V2\n * @param {GenerateSchemaParameters} generateParameters - list of API input parameters\n * @param {Schema} genericSchemas - The generic schemas\n * @param {Schema} appSchemas - the list of app schemas that shall get extended\n */\nfunction generateObjectPageSchemasV2(\n generateParameters: GenerateAppSchemaParameters,\n genericSchemas: Schemas,\n appSchemas: Schemas\n): void {\n const allPages = getPagesV2(\n generateParameters.manifest[ManifestSection.generic].pages,\n pageV2.FE_TEMPLATE_V2_OBJECT_PAGE\n );\n for (const page in allPages) {\n const entitySetName = allPages[page].entitySet;\n const entitySet = getEntitySetByEntitySetName(entitySetName, generateParameters?.serviceAVT);\n const entityTypeName = entitySet?.entityType?.name;\n const schemaFile = getSchemaFilePath(SchemaType.ObjectPage, entitySet?.name || entitySetName);\n const genericSchemaFile = getSchemaFilePath(SchemaType.ObjectPage);\n appSchemas[schemaFile.filename] = generateObjectPageSchemaV2(\n generateParameters,\n genericSchemas[genericSchemaFile.filename],\n entityTypeName\n );\n }\n}\n\n/**\n * Generates all app specific schemas for a Fiori Elements V2 application\n * @param {GenerateSchemaParameters} generateParameters - list of API input parameters\n * @param {Schemas} genericSchemas - The generic schemas\n * @param {UiEntityTypes} uiEntityTypes - list of all entity types, as comprised in oDataServiceAVT\n * @param {TemplateType} templateType - the given Fiori Elements' template type\n */\nfunction generateAppSchemasV2(\n generateParameters: GenerateAppSchemaParameters,\n genericSchemas: Schemas,\n uiEntityTypes: UiEntityTypes,\n templateType: TemplateType\n): Schemas {\n const appSchemas: Schemas = {};\n if (templateType === TemplateType.ListReportObjectPageV2 && uiEntityTypes) {\n /*--- List Report ----*/\n const allPages = getPagesV2(\n generateParameters.manifest[ManifestSection.generic].pages,\n pageV2.FE_TEMPLATE_V2_LIST_REPORT\n );\n\n for (const page in allPages) {\n const entitySetName = allPages[page].entitySet;\n const entitySet = getEntitySetByEntitySetName(entitySetName, generateParameters?.serviceAVT);\n const entityTypeName = entitySet?.entityType?.name;\n const schemaFile = getSchemaFilePath(SchemaType.ListReport, entitySet?.name || entitySetName);\n const genericSchemaFile = getSchemaFilePath(SchemaType.ListReport);\n appSchemas[schemaFile.filename] = generateListReportSchemaV2(\n generateParameters,\n genericSchemas[genericSchemaFile.filename],\n entityTypeName\n );\n }\n /*--- Object Pages ----*/\n generateObjectPageSchemasV2(generateParameters, genericSchemas, appSchemas);\n } else if (templateType === TemplateType.AnalyticalListPageV2 && uiEntityTypes) {\n /*--- Analytical List Page ----*/\n const allPages = getPagesV2(\n generateParameters.manifest[ManifestSection.generic].pages,\n pageV2.FE_TEMPLATE_V2_ALP\n );\n\n for (const page in allPages) {\n const entitySetName = allPages[page].entitySet;\n const entitySet = getEntitySetByEntitySetName(entitySetName, generateParameters?.serviceAVT);\n const entityTypeName = entitySet?.entityType?.name;\n const schemaFile = getSchemaFilePath(SchemaType.AnalyticalListPage, entitySet?.name || entitySetName);\n const genericSchemaFile = getSchemaFilePath(SchemaType.AnalyticalListPage);\n appSchemas[schemaFile.filename] = generateAnalyticalListReportSchemaV2(\n generateParameters,\n genericSchemas[genericSchemaFile.filename],\n entityTypeName\n );\n }\n /*--- Object Pages ----*/\n generateObjectPageSchemasV2(generateParameters, genericSchemas, appSchemas);\n } else if (templateType === TemplateType.OverviewPageV2) {\n /*--- Overview Page ----*/\n const schemaFile = getSchemaFilePath(SchemaType.OverviewPage);\n const genericSchemaFile = getSchemaFilePath(SchemaType.OverviewPage);\n appSchemas[schemaFile.filename] = generateOVPInterfaceV2(\n genericSchemas[genericSchemaFile.filename],\n generateParameters.manifest\n );\n }\n return { ...genericSchemas, ...appSchemas };\n}\n\n/**\n * Generates app specific schemas by adding annotation information to copies of the generic schemas, thus replacing all generic definitions.\n * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters\n * @param {UiEntityTypes} uiEntityTypes - list of all entity types from the service metadata\n * @param templateType - type of the Fiori Elements' template\n */\nasync function generateAppSchemas(\n generateParameters: GenerateAppSchemaParameters,\n uiEntityTypes: UiEntityTypes,\n templateType: TemplateType\n): Promise<Schemas> {\n if (generateParameters.fioriElementsVersion === FioriElementsVersion.v2) {\n const genericSchemas = await getGenericSchemas(templateType, generateParameters.fioriElementsVersion);\n return generateAppSchemasV2(generateParameters, genericSchemas, uiEntityTypes, templateType);\n }\n}\n\n/**\n * Imports manifest and flex changes into configuration files with aid of the relevant app provider\n * @param {Manifest} manifest - manifest.json file content of the app in JSON format\n * @param {string[]} flex - list of all UI flexibility changes\n * @param {Schemas} appSchemas - list of app-specific schemas\n * @param {TemplateType} templateType - type of the Fiori Elements' template\n * @returns {File[]} a list of all configuration files as generated by the function\n */\nfunction importConfigs(\n manifest: Manifest,\n flex: string[],\n appSchemas: Schemas,\n templateType: TemplateType,\n fragments: FileData[]\n): File[] {\n let provider: AppProvider;\n const files: File[] = [];\n\n switch (templateType) {\n case TemplateType.ListReportObjectPageV2:\n case TemplateType.AnalyticalListPageV2:\n provider = new V2AppProvider(manifest, flex, appSchemas, fragments);\n break;\n case TemplateType.OverviewPageV2:\n provider = new V2OvpProvider(manifest, appSchemas);\n break;\n default:\n break;\n }\n if (provider) {\n const { appConfig, pageConfigs } = provider.createConfigFiles();\n for (const app in appConfig) {\n files.push({ dataSourceUri: app, fileContent: JSON.stringify(appConfig[app], null, 4) });\n }\n for (const config in pageConfigs) {\n files.push({ dataSourceUri: config, fileContent: JSON.stringify(pageConfigs[config], null, 4) });\n }\n }\n return files;\n}\n\nfunction getFileList(schema: Schemas, configs?: File[]): File[] {\n let files: File[] = [];\n for (const schemaName of Object.keys(schema).sort()) {\n let dataSourceUri;\n if (schemaName === SchemaType.Application) {\n dataSourceUri = `${DirName.Schemas}/${FileName.App[0].toUpperCase()}${FileName.App.slice(1)}`;\n } else {\n dataSourceUri = `${DirName.Schemas}/${schemaName}.json`;\n }\n files.push({ dataSourceUri, fileContent: JSON.stringify(schema[schemaName], null, 4) });\n }\n if (configs) {\n files = files.concat(configs);\n }\n return files;\n}\n\n/**\n * Import the schema and config files for a given project\n * @param importParameters - files of the project: manifest, flex changes, odata files\n */\nexport async function importProjectSchema(importProjectParameters: ImportProjectParameters): Promise<File[]> {\n // Initialize i18next\n initI18n();\n\n const fioriElementsVersion = getVersionFromManifest(importProjectParameters.manifest);\n const service = parseAndMergeAndConvert(importProjectParameters.annotations, importProjectParameters.logger);\n const uiEntityTypes = getAnnotationsForUi(service);\n const templateType = getTemplateTypeFromManifest(\n importProjectParameters.manifest,\n fioriElementsVersion,\n importProjectParameters.logger\n );\n const generateParameters: GenerateAppSchemaParameters = {\n templateType,\n manifest: importProjectParameters.manifest,\n serviceAVT: service,\n fragments: importProjectParameters.fragments,\n fioriElementsVersion,\n logger: importProjectParameters.logger\n };\n\n const appSchemas = await generateAppSchemas(generateParameters, uiEntityTypes, templateType);\n return getFileList(appSchemas);\n}\n\n/**\n * Import the schema and config files for a given project\n * @param importParameters - files of the project: manifest, flex changes, odata files\n */\nexport async function importProjectSchemaAndConfig(importProjectParameters: ImportProjectParameters): Promise<File[]> {\n // Initialize i18next\n initI18n();\n\n let configFiles: File[] = [];\n const { manifest, annotations, flex, fragments, logger } = importProjectParameters;\n const fioriElementsVersion = getVersionFromManifest(manifest);\n const oDataServiceAVT = parseAndMergeAndConvert(annotations, logger);\n const templateType = getTemplateTypeFromManifest(manifest, fioriElementsVersion, logger);\n\n const generateParameters: GenerateAppSchemaParameters = {\n templateType,\n manifest: importProjectParameters.manifest,\n serviceAVT: oDataServiceAVT,\n fragments: importProjectParameters.fragments,\n fioriElementsVersion,\n logger: importProjectParameters.logger\n };\n const uiEntityTypes = getAnnotationsForUi(oDataServiceAVT);\n const appSchemas = await generateAppSchemas(generateParameters, uiEntityTypes, templateType);\n configFiles = importConfigs(manifest, flex, appSchemas, templateType, fragments);\n return getFileList(appSchemas, configFiles);\n}\n", "import type { Application, Manifest as ManifestV2, PagesBase } from '../../specification/common';\nimport { FioriElementsVersion, OdataVersion, PageType } from '../../specification/common';\nimport type { AppSettings as AppSettingsV2, Page as PageV2 } from '../../specification/v2';\nimport type { Files } from './types';\nimport { DirName, FileName } from './types';\nimport { getSchemaFilePath } from './utils';\nimport { SchemaType } from '../../specification/schemaAccess';\nimport type { ExtensionLogger } from '../..';\n\nexport interface Controllers {\n [key: string]: string;\n}\n\nexport abstract class AppProvider {\n public readonly app: Application;\n public readonly logger: ExtensionLogger;\n public readonly schemas: Files;\n // Store controller names which should be handled latelly\n public unhandledControllers: Array<string> = [];\n\n protected constructor(\n manifest: ManifestV2,\n schemas: Files,\n home: string,\n pages: PagesBase,\n version: FioriElementsVersion,\n settings?: AppSettingsV2,\n logger?: ExtensionLogger\n ) {\n const schemaFile = getSchemaFilePath(SchemaType.Application);\n this.app = {\n $schema: schemaFile.path,\n id: manifest['sap.app'].id,\n pages,\n home,\n target: {\n fioriElements: version,\n odata: version === FioriElementsVersion.v2 ? OdataVersion.v2 : OdataVersion.v4\n },\n ...(settings && { settings })\n };\n this.schemas = schemas;\n this.logger = logger;\n }\n\n /**\n * Create config files for app (app.json) and pages (pages/{name}.json).\n * This is basically a copy of createFiles optimized to be used in FTFS:\n * it always uses posix path notation with forward slash (/)\n * @param {ConvertedMetadata} oDataServiceAVT - Complete service information, as returned by annotation vocabularies tool\n * @returns app and page files as separate objects\n */\n public createConfigFiles(): { appConfig: Files; pageConfigs: Files } {\n const pageConfigs: Files = {};\n const appConfig: Files = {};\n let page: PageV2;\n // add schema reference to all pages\n for (const pageId in this.app.pages) {\n page = this.app.pages[pageId];\n if (page.config) {\n const config = page.config;\n if (page.pageType !== PageType.CustomPage) {\n const schemaFile = getSchemaFilePath(page.pageType, page.entitySet);\n if (this.schemas[schemaFile.filename]) {\n config.$schema = schemaFile.path;\n } else {\n const genericSchemaFile = getSchemaFilePath(page.pageType);\n config.$schema = genericSchemaFile.path;\n }\n pageConfigs[`${DirName.Pages}/${pageId}.json`] = config;\n }\n }\n }\n // remove config before converting to JSON\n const app: Application = JSON.parse(JSON.stringify(this.app));\n for (const pageId in app.pages) {\n delete app.pages[pageId].config;\n }\n appConfig[FileName.App] = app;\n\n return { appConfig, pageConfigs };\n }\n}\n", "import { ControlType, DefinitionName, VOCWITHCOLONS } from '../../../common/types';\nimport type {\n TreeTable,\n ResponsiveTable,\n AnalyticalTable,\n GridTable,\n TableALP\n} from '../../../../specification/v2/index';\nimport type { Definition } from 'typescript-json-schema';\n\nexport type FlexForTransfer = {\n controlId: string;\n controlType: string;\n propertyId: string;\n facetId?: string;\n newValue: any;\n creation: string;\n};\n\nexport interface FlexChangesForTransfer {\n [controlId: string]: FlexForTransfer;\n}\n\nexport type ConfigTableType = ResponsiveTable | TreeTable | AnalyticalTable | GridTable | TableALP;\n\nexport function addFlexForTable(config: ConfigTableType, change: FlexForTransfer, jsonSchema: Definition): void {\n if (change.controlType.endsWith(DefinitionName.Table)) {\n config[change.propertyId] = change.newValue;\n } else if (change.controlType === ControlType.TableColumn) {\n const schemaProperty = (jsonSchema?.definitions[DefinitionName.TableColumn] as Definition).properties[\n change.propertyId\n ];\n if (!schemaProperty) {\n return;\n }\n const idParts = change.controlId.split('-');\n const lastIdPart = idParts[idParts.length - 1];\n // As the last stable Id part is still too long in some cases, strip off the fixed parts.\n // It must the be added again by the export!\n const annotationPart = lastIdPart.split('template:::TableColumn:::');\n const colId = annotationPart[annotationPart.length - 1]\n .replace(/sSmartTableId.+?:::/, '')\n .replace('::com.sap.vocabularies', VOCWITHCOLONS)\n .replace('/', ':2f');\n if (!config.columns) {\n config.columns = {};\n }\n if (!config.columns[colId]) {\n config.columns[colId] = {};\n }\n config.columns[colId][change.propertyId] = change.newValue;\n }\n}\n", "import { PageType } from '../../../specification/common';\nimport { FE_TEMPLATE_V2_OBJECT_PAGE } from '../../../specification/v2';\nimport type { Page, Pages, SapUiAppPagesV2, SapUiAppPageV2 } from '../../../specification/v2';\n\n/**\n * Method searches in manifest object by passed path and returns found value.\n * If value was not found in manifest object,\n * then method created empty object in manifest object within passed path.\n * @param manifest - target manifest object\n * @param path - path to lookup in manifest\n * @returns Found or created value\n */\nexport const ensureManifestSectionByPathV2 = (manifest: object, path: string): object => {\n let manifestSection = manifest;\n path.split('/').forEach(function (element) {\n if (!manifestSection[element]) {\n manifestSection[element] = {};\n }\n manifestSection = manifestSection && manifestSection[element];\n });\n return manifestSection ? manifestSection : {};\n};\n\n/**\n * Method searches in manifest object by passed path and returns found value.\n * If value was not found in manifest object, then 'undefined' is returned.\n * @param manifest - target manifest file\n * @param path - path to lookup in manifest\n * @returns Found value\n */\nexport const getManifestSectionByPathV2 = (manifest: object, path: string): object | undefined => {\n let manifestSection = manifest;\n const elements = path.split('/');\n for (const element of elements) {\n if (!manifestSection[element]) {\n return undefined;\n }\n manifestSection = manifestSection && manifestSection[element];\n }\n return manifestSection ? manifestSection : {};\n};\n\nexport const deleteEmptyStructure = (manifest: object, path: string): void => {\n let manifestSection = manifest;\n path.split('/').forEach(function (element) {\n if (!manifestSection[element]) {\n return;\n }\n if (Object.keys(manifestSection[element]).length === 0) {\n delete manifestSection[element];\n return;\n }\n manifestSection = manifestSection && manifestSection[element];\n });\n};\n\nexport const deleteManifestSectionByPathV2 = (manifest: object, path: string): void => {\n let manifestSection = manifest;\n for (let index = 0; index < path.split('/').length; index++) {\n const element = path.split('/')[index];\n if (index === path.split('/').length - 1) {\n delete manifestSection[element];\n } else {\n manifestSection = manifestSection && manifestSection[element];\n }\n }\n};\n\nfunction getNewPageTemplate(pageType: PageType): object {\n return {\n component: {\n name: 'sap.suite.ui.generic.template.' + pageType\n }\n };\n}\n\n/**\n * Method finds matching pages by 'entitySet' and 'navigationProperty' in passed pages object.\n * @param {SapUiAppPagesV2} pages Object with pages.\n * @param {string} [entitySet] Entity set.\n * @param {string} [navigationProperty] Navigation property.\n * @returns {SapUiAppPageV2 | undefined} Matching page object.\n */\nfunction findPageInManifest(\n pages: SapUiAppPagesV2,\n entitySet?: string,\n navigationProperty?: string\n): SapUiAppPageV2 | undefined {\n if (!pages) {\n return;\n }\n for (const pageId in pages) {\n const page = pages[pageId];\n if (page.entitySet === entitySet && page.navigationProperty === navigationProperty) {\n return page;\n }\n }\n}\n\nfunction transformPageFromAssociation(configPages: Pages, association: string, manifestPage: object) {\n //Handling partial deletion of a page\n if (!configPages[association]) {\n return;\n }\n if (manifestPage['pages'] && !Object.values(manifestPage['pages'])[0]) {\n manifestPage['pages'][`${configPages[association].pageType}|${configPages[association].entitySet}`] =\n getNewPageTemplate(configPages[association].pageType);\n }\n if (!manifestPage['pages']) {\n manifestPage['pages'] = {\n [`${configPages[association].pageType}|${configPages[association].entitySet}`]: getNewPageTemplate(\n configPages[association].pageType\n )\n };\n }\n if (!Array.isArray(manifestPage['pages'])) {\n let associatedManifestPage = findPageInManifest(\n manifestPage['pages'],\n configPages[association].entitySet,\n configPages[association].navigationProperty\n );\n\n if (!associatedManifestPage) {\n manifestPage['pages'][`${configPages[association].pageType}|${configPages[association].entitySet}`] =\n associatedManifestPage = getNewPageTemplate(configPages[association].pageType);\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n transformPageToNewManifestV2(association, configPages, associatedManifestPage);\n }\n}\n\nfunction deletePage(manifestPage: object, configPages: Pages, configPage: Page) {\n if (manifestPage['pages']) {\n Object.keys(manifestPage['pages']).forEach((key) => {\n const currentPage = manifestPage['pages'][key];\n if (currentPage.component.name === FE_TEMPLATE_V2_OBJECT_PAGE) {\n const configKey = `ObjectPage_${currentPage.entitySet}`;\n if (!configPages[configKey]) {\n delete manifestPage['pages'][key];\n }\n }\n });\n }\n if (\n (configPage.pageType === PageType.ListReport || configPage.pageType === PageType.AnalyticalListPage) &&\n Object.keys(configPage.navigation).length === 0\n ) {\n delete manifestPage['pages'];\n }\n}\n\n/**\n * Transfers pages and routings from manifest to the config pages\n * @param pageId - page ID\n * @param configPages - config definitions of each page\n * @param manifestPage - top page definition in manifest\n */\nexport function transformPageToNewManifestV2(pageId: string, configPages: Pages, manifestPage: object): void {\n const configPage = configPages[pageId];\n if (!configPage) {\n return;\n }\n if (configPage.entitySet) {\n manifestPage['entitySet'] = configPage.entitySet;\n }\n if (configPage.pageType === PageType.ListReport) {\n manifestPage['component']['list'] = true;\n }\n if (configPage.navigationProperty) {\n manifestPage['navigationProperty'] = configPage.navigationProperty;\n }\n if (configPage.defaultLayoutType) {\n manifestPage['defaultLayoutType'] = configPage.defaultLayoutType;\n } else if ('defaultLayoutType' in manifestPage) {\n delete manifestPage['defaultLayoutType'];\n }\n if (configPage.navigation) {\n for (const association in configPage.navigation) {\n transformPageFromAssociation(configPages, association, manifestPage);\n }\n // Delete page\n if (!Array.isArray(manifestPage['pages'])) {\n deletePage(manifestPage, configPages, configPage);\n }\n }\n}\n", "import { PageType, PAGETYPE_VIEW_EXTENSION_TEMPLATE_MAP } from '../../../../specification/common/page';\nimport type { ListReportConfig, AnalyticalListPageConfig, ObjectPageConfig } from '../../../../specification/v2/pages';\nimport type { FlexForTransfer } from '../controls/table';\nimport { addFlexForTable } from '../controls/table';\nimport type { ChangeDefinition, FileData, ObjectPageSectionData } from '../../../common';\nimport {\n convertActionKeyToStableId,\n checkDeprecatedProperties,\n ControlType,\n FRAGMENTNAMEPART,\n PropertyName,\n importProperty,\n parseChangeString,\n ViewTemplateType\n} from '../../../common';\nimport type { Manifest } from '../../../../specification/common/webapp/manifest/Manifest';\nimport { ManifestSection } from '../../../../specification/common/webapp/manifest/Manifest';\nimport { getReflectMetadata } from '../../../common/decoration/decorators';\nimport { ensureManifestSectionByPathV2 } from '../../export/manifest';\nimport type {\n SapUiAppPageV2,\n TableColumnExtensionTypeV2,\n TableCustomColumns,\n Actions,\n GenericColumns\n} from '../../../../specification/v2';\nimport { TableTypeV2 } from '../../../../specification/v2';\nimport { LogSeverity, log } from '../../../../extensionLogger';\nimport type { ExtensionLogger } from '../../../../apiTypes';\nimport i18next from 'i18next';\nimport { xml2json } from 'xml-js';\nimport type { TableCustomColumn } from '../../export/controls';\nimport { FRAGMENT_DEFINITION, getRootCustomColumnFromFragmentJSON } from '../../export/controls';\nimport { ActionTypeV2 } from '../../types';\nimport type { Definition } from 'typescript-json-schema';\n\nexport type LROPConfigsType = ListReportConfig | AnalyticalListPageConfig | ObjectPageConfig;\n\nexport function convertActionKey(actionProperty: string) {\n return actionProperty.replace('/', '::');\n}\n\n/**\n * Unescapes the selector ID of a flex change\n * @param selectorId - escaped selector ID\n * @returns unescaped ID\n */\nexport function convertSelector(selectorId: string): string {\n return selectorId.replace(/:2f/g, '/').replace(/:23/g, '#').replace(/:40/g, '@');\n}\n\n/**\n * Adds flex changes to Smart Filter Bar in config file\n * @param {ListReportConfig | AnalyticalListPageConfig} config - the configuration to be filled\n * @param {string} changePropertyKey - property key of current change\n * @param {ChangeDefinition} change - change definition\n * @param {object} jsonSchema - application specific schema\n */\nfunction addSmartFilterBarFlex(\n config: ListReportConfig | AnalyticalListPageConfig,\n changePropertyKey: string,\n change: ChangeDefinition,\n jsonSchema: object\n) {\n const schemaProperty =\n jsonSchema['definitions']?.['ListReportFilterBar']?.properties[changePropertyKey] ||\n jsonSchema['definitions']?.['AnalyticalListPageFilterBar']?.properties[changePropertyKey];\n if (schemaProperty) {\n config.filterBar[changePropertyKey] = change.content.newBinding\n ? change.content.newBinding\n : change.content.newValue;\n }\n}\n\n/**\n * Creates a map to connect action types to the correct schema definition and config part\n * @param definitionType action type that will be filtered for\n * @param jsonSchema application specific schema\n * @returns {Map} actionMap - mapping of actionId, id for schema reference and id for config\n */\nfunction filterActions(definitionType: string, jsonSchema) {\n const actions = Object.keys(jsonSchema['definitions']).filter(\n (definition) => definition.startsWith(`${definitionType}`) && definition.includes('<')\n );\n const actionMap: Map<string, string> = new Map();\n actions.forEach((definitionActionId) => {\n const fullActionId = convertActionKeyToStableId(definitionActionId.split('<')[1]?.split('>')[0]);\n const splitPoint = fullActionId.indexOf(':::');\n if (fullActionId.startsWith('DataField') && splitPoint > -1) {\n const actionIdParts = fullActionId.split(':::');\n const sSemanticObject = actionIdParts.find((part) => part.startsWith('sSemanticObject'));\n const sAction = actionIdParts.find((part) => part.startsWith('sAction'));\n const shortAction = sAction.split('sAction::')[1].replace(':2f', '::');\n if (sSemanticObject) {\n const shortActionId = `${sSemanticObject.split('::')[1]}::${shortAction}`;\n const shortDefinitionActionId = `${actionIdParts[0]}:::${sSemanticObject}:::${sAction}`;\n actionMap.set(shortActionId, definitionActionId);\n actionMap.set(definitionActionId, shortDefinitionActionId);\n } else {\n actionMap.set(shortAction, definitionActionId);\n actionMap.set(definitionActionId, fullActionId);\n }\n } else {\n actionMap.set(fullActionId.replace(':2f', '::'), definitionActionId);\n actionMap.set(definitionActionId, fullActionId);\n }\n });\n return actionMap;\n}\n\n/**\n * Adds a new action column to config\n * @param action - action part of config to be filled\n * @param config - the config of ALP/LR\n * @param configId - id of action to be used in config\n */\nfunction addColumnActionConfigPart(\n action: { name: ActionTypeV2; configPart: Actions | GenericColumns; id: string },\n config: ListReportConfig | AnalyticalListPageConfig,\n configId: string\n) {\n if (!action.configPart) {\n action.configPart = config.table.columns = {};\n }\n if (!action.configPart[`${configId}`]) {\n action.configPart[`${configId}`] = {};\n }\n}\n\n/**\n * Adds flex changes to Actions in config file\n * @param {ListReportConfig | AnalyticalListPageConfig} config - the configuration to be filled\n * @param {string} changePropertyKey - property key of current change\n * @param {ChangeDefinition} change - change definition\n * @param {object} jsonSchema - application specific schema\n */\nfunction addActionFlex(\n config: ListReportConfig | AnalyticalListPageConfig,\n changePropertyKey: string,\n change: ChangeDefinition,\n jsonSchema: Definition\n) {\n const controlId = change.controlId.split('--action::')[1];\n if (!controlId) {\n return;\n }\n const actionId = convertSelector(controlId);\n const actionTypes = [\n {\n name: ActionTypeV2.Footer,\n configPart: config.footer.actions,\n id: actionId.includes('Determining') && actionId.split('::Determining')[0]\n },\n { name: ActionTypeV2.ToolBar, configPart: config.table.toolBar.actions, id: actionId },\n { name: ActionTypeV2.Column, configPart: config.table.columns, id: actionId }\n ];\n actionTypes.forEach((action) => {\n const schemaActions = filterActions(action.name, jsonSchema);\n if (schemaActions.has(action.id)) {\n const referenceId = schemaActions.get(action.id);\n const configId = referenceId.split('<')[1]?.split('>')[0];\n if (action.name === ActionTypeV2.Column) {\n addColumnActionConfigPart(action, config, configId);\n }\n const configPart = action.configPart[configId];\n const schemaProperty = (jsonSchema.definitions[referenceId] as Definition)?.properties[changePropertyKey];\n if (schemaProperty && configPart) {\n configPart[changePropertyKey] = change.content.newBinding\n ? change.content.newBinding\n : change.content.newValue;\n }\n }\n });\n}\n\n/**\n * Adds flex changes to Smart Chart in config file\n * @param {ListReportConfig | AnalyticalListPageConfig} config - the configuration to be filled\n * @param {string} changePropertyKey - property key of current change\n * @param {ChangeDefinition} change - change definition\n * @param {object} jsonSchema - application specific schema\n */\nfunction addSmartChartFlex(\n config: ListReportConfig | AnalyticalListPageConfig,\n changePropertyKey: string,\n change: ChangeDefinition,\n jsonSchema: object\n) {\n const schemaProperty = jsonSchema['definitions']['ChartSettings'].properties[changePropertyKey];\n if (schemaProperty) {\n const syncRule = getReflectMetadata(config[PropertyName.chart], changePropertyKey);\n if (syncRule?.flex?.importFlexValue) {\n syncRule.flex.importFlexValue(change, config[PropertyName.chart], changePropertyKey);\n } else {\n config[PropertyName.chart][changePropertyKey] = change.content.newBinding\n ? change.content.newBinding\n : change.content.newValue;\n }\n }\n}\n\n/**\n * Checks and adds further flex changes to in config file\n * @param {ListReportConfig | AnalyticalListPageConfig} config - the configuration to be filled\n * @param {ChangeDefinition} change - change definition\n * @param {object} jsonSchema - application specific schema\n */\nfunction addAdditionalFlexChanges(\n config: ListReportConfig | AnalyticalListPageConfig,\n change: ChangeDefinition,\n jsonSchema: object\n) {\n const flexForTransfer: FlexForTransfer = {\n controlId: change.controlId,\n propertyId: change.content.property,\n newValue: change.content.newBinding ? change.content.newBinding : change.content.newValue,\n controlType: change.controlType,\n creation: change.creation\n };\n let constructorName;\n if (\n (!config.table.type || config.table.type === TableTypeV2.ResponsiveTable) &&\n !flexForTransfer.controlId.includes(PAGETYPE_VIEW_EXTENSION_TEMPLATE_MAP.get(PageType.AnalyticalListPage))\n ) {\n constructorName = 'ResponsiveTable';\n } else {\n constructorName = config.table.constructor.name;\n }\n const schemaProperty =\n jsonSchema['definitions'][`${constructorName}<LineItems>`].properties[flexForTransfer.propertyId];\n if (schemaProperty || flexForTransfer.controlType === ControlType.TableColumn) {\n addFlexForTable(config.table, flexForTransfer, jsonSchema);\n }\n}\n\n/**\n * Adds flex changes to config file\n * @param {ListReportConfig | AnalyticalListPageConfig} config - the configuration to be filled\n * @param {string} changeString - change file as string\n * @param {object} appSchema - application specific schema\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nexport function addFlex(\n config: ListReportConfig | AnalyticalListPageConfig,\n changeString: string,\n appSchema: object,\n logger?: ExtensionLogger\n): void {\n try {\n const change = parseChangeString(changeString) as ChangeDefinition;\n const changePropertyKey = change.content.property;\n if (\n change.controlId?.includes(PageType.ListReport) ||\n change.controlId?.includes(PageType.AnalyticalListPage)\n ) {\n change.controlId = convertSelector(change.controlId);\n switch (change.controlType) {\n case ControlType.SmartFilterBar: {\n addSmartFilterBarFlex(config, changePropertyKey, change, appSchema);\n break;\n }\n case ControlType.DynamicPage: {\n const schemaProperty = appSchema['properties'][changePropertyKey];\n if (schemaProperty) {\n config[change.content.property] = change.content.newValue;\n }\n break;\n }\n case ControlType.Button: {\n addActionFlex(config, changePropertyKey, change, appSchema);\n break;\n }\n case ControlType.SmartChart: {\n addSmartChartFlex(config, changePropertyKey, change, appSchema);\n break;\n }\n default: {\n addAdditionalFlexChanges(config, change, appSchema);\n break;\n }\n }\n }\n } catch (error) {\n log(\n logger,\n {\n severity: LogSeverity.Error,\n message: i18next.t('FLEXERROR')\n },\n ...error\n );\n }\n}\n\n/**\n * Transfers settings from manifest to object page config\n * @param configPart - part of the configuration to be filled\n * @param manifest - manifest.json of the app\n * @param appSchema - app specific schema\n * @param pageID - ID of the given object page\n * @param sectionId (optional) - ID of the given section (optional)\n * @param {ExtensionLogger} logger - Logger class for logging messages\n */\nexport function transferSettingsOfObject(\n configPart: { [key: string]: any },\n manifest: Manifest,\n appSchema: object,\n pageKey: string,\n logger?: ExtensionLogger,\n kpiKey?: string\n): void {\n if (!appSchema) {\n return;\n }\n let manifestSection = {};\n const deprecatedProperties = configPart.getDeprecated ? configPart.getDeprecated() : undefined;\n\n if (appSchema['properties']) {\n for (const propertyKey in appSchema['properties']) {\n const syncRule = getReflectMetadata(configPart, propertyKey);\n if (syncRule?.manifest) {\n const path = syncRule.manifest.path([pageKey], manifest, kpiKey);\n manifestSection = ensureManifestSectionByPathV2(manifest, path);\n importProperty(syncRule, manifestSection, propertyKey, configPart);\n checkDeprecatedProperties(deprecatedProperties, manifestSection, path, logger);\n }\n }\n }\n}\n\n/**\n * Determines the table type for a given LR or ALP table, based on the component name and its table settings\n * This does not exactly reflect the run time behavior of Fiori elements but a best guess and expectation.\n * @param manifest - manifest.json file content of the app\n * @param pageKey - key of the page in the manifest\n */\nexport function determineTableType(manifest: Manifest, pageKey: string): TableTypeV2 {\n const page = manifest[ManifestSection.generic].pages[pageKey];\n let tableType: TableTypeV2 = TableTypeV2.ResponsiveTable;\n if (\n manifest[ManifestSection.generic].pages[pageKey].component.settings &&\n ((manifest[ManifestSection.generic].pages[pageKey].component.settings.tableSettings &&\n manifest[ManifestSection.generic].pages[pageKey].component.settings.tableSettings['type']) ||\n manifest[ManifestSection.generic].pages[pageKey].component.settings['tableType'])\n ) {\n tableType = page.component.settings?.tableSettings?.['type'] || page.component.settings['tableType'];\n } else if (page.component.name === 'sap.suite.ui.generic.template.AnalyticalListPage') {\n tableType = TableTypeV2.AnalyticalTable;\n }\n return tableType;\n}\n\nfunction evaluateFragmentColumn(\n column: any,\n viewExtensionsOfPage: any,\n manifestKey: string,\n keyPart3: string,\n config: ListReportConfig,\n extensionType: TableColumnExtensionTypeV2,\n cellsFragmentName?: string\n): void {\n if (column['customData'] || column['table:customData']) {\n const p13nData = column['customData']\n ? column['customData']['core:CustomData']._attributes.value\n : column['table:customData']['core:CustomData']._attributes.value;\n const columnParts = JSON.parse(p13nData.substr(1, p13nData.length));\n let columnText = column['Text'] && column['Text']._attributes && column['Text']._attributes['text'];\n if (!columnText) {\n columnText = column['Label'] && column['Label']._attributes && column['Label']._attributes['text'];\n }\n const customElement: TableCustomColumn = {\n id: column._attributes && column._attributes['id'],\n text: columnText,\n ...columnParts,\n columnKey: columnParts['columnKey'],\n columnIndex: columnParts['columnIndex'] !== undefined ? Number(columnParts['columnIndex']) : undefined,\n leadingProperty: columnParts['leadingProperty'],\n className: viewExtensionsOfPage[manifestKey].className,\n fragmentName: viewExtensionsOfPage[manifestKey].fragmentName,\n tabKey: keyPart3,\n extensionType\n };\n if (cellsFragmentName) {\n customElement.cellsFragmentName = cellsFragmentName;\n }\n if (!config.table['columns']['custom']) {\n config.table['columns']['custom'] = [];\n }\n const customColumns = config.table['columns']['custom'] as TableCustomColumns;\n customColumns.push(customElement);\n }\n}\n\nfunction determineCellsFragmentName(\n extensionType: any,\n viewExtensionsOfPage: any,\n keyEntitySet: string,\n referenceId: string\n) {\n let cellsFragmentName;\n if (extensionType === ViewTemplateType.ResponsiveTableColumnsExtension) {\n for (const cellsKey of Object.keys(viewExtensionsOfPage)) {\n const [cellsKeyType, cellsKeyEntitySet, cellsKeyTab] = cellsKey.split('|');\n if (\n cellsKeyType === ViewTemplateType.ResponsiveTableCellsExtension &&\n cellsKeyEntitySet === keyEntitySet &&\n cellsKeyTab === referenceId\n ) {\n cellsFragmentName = viewExtensionsOfPage[cellsKey].fragmentName;\n }\n }\n }\n return cellsFragmentName;\n}\n\nfunction analzyeFilteredFragments(\n filteredFragments: FileData[],\n config: LROPConfigsType,\n viewExtensionsOfPage: any,\n manifestKey: string,\n keyTab: string,\n extensionType: any,\n cellsFragmentName: any\n) {\n if (filteredFragments[0]) {\n const fragmentJson = JSON.parse(xml2json(filteredFragments[0].fileContent, { compact: true }));\n const fragmentDefintion = fragmentJson[FRAGMENT_DEFINITION];\n const columnDefinition = getRootCustomColumnFromFragmentJSON(fragmentDefintion);\n if (columnDefinition) {\n if (!config[PropertyName.table]?.['columns']) {\n config[PropertyName.table]['columns'] = {};\n }\n if (Array.isArray(columnDefinition)) {\n for (const def of columnDefinition) {\n evaluateFragmentColumn(\n def,\n viewExtensionsOfPage,\n manifestKey,\n keyTab,\n config,\n extensionType,\n cellsFragmentName\n );\n }\n } else {\n evaluateFragmentColumn(\n columnDefinition,\n viewExtensionsOfPage,\n manifestKey,\n keyTab,\n config,\n extensionType,\n cellsFragmentName\n );\n }\n }\n }\n}\n\nfunction processViewExtensions(\n viewExtensionsOfPage: object,\n targetKeyEntitySet: string,\n objectPageSectionData: ObjectPageSectionData,\n config: LROPConfigsType,\n fragments?: FileData[]\n) {\n for (const manifestKey of Object.keys(viewExtensionsOfPage)) {\n const manifestKeyParts = manifestKey.split('|');\n const [keyExtensionType, keyEntitySet] = manifestKeyParts;\n // If Object Page section have key, then Ignore it as it is not from QuickVariantSelectionX\n const referenceId = manifestKeyParts[2];\n const keyTab = objectPageSectionData && referenceId === objectPageSectionData.key ? undefined : referenceId;\n const extensionType = ViewTemplateType[keyExtensionType];\n if (extensionType && '|' + keyEntitySet === targetKeyEntitySet) {\n const fragmentType = viewExtensionsOfPage[manifestKey].type\n ? viewExtensionsOfPage[manifestKey].type.toLowerCase()\n : 'xml';\n let fragmentName = viewExtensionsOfPage[manifestKey].fragmentName;\n if (!fragmentName) {\n continue;\n }\n // Responsive Table ==> check cells' fragment name\n const cellsFragmentName = determineCellsFragmentName(\n extensionType,\n viewExtensionsOfPage,\n keyEntitySet,\n referenceId\n );\n\n // Retrieve information from fragment\n const fragmentParts = fragmentName.split('.');\n fragmentName = fragmentParts[fragmentParts.length - 1] + FRAGMENTNAMEPART + fragmentType;\n const filteredFragments = fragments.filter((fragment) => fragment['dataSourceUri'].endsWith(fragmentName));\n analzyeFilteredFragments(\n filteredFragments,\n config,\n viewExtensionsOfPage,\n manifestKey,\n keyTab,\n extensionType,\n cellsFragmentName\n );\n }\n }\n}\n\n/**\n * Adds custom column information from manifest and fragments to the configuration\n * @param config - configuration, to be enhanced\n * @param manifest - actual manifest.json\n * @param v2Page - actual page in the manifest\n * @param pageType - type of the page\n * @param fragments - list of all fragments\n * @param objectPageSectionData - optional information, for object page\n */\nexport function addFragments(\n config: LROPConfigsType,\n manifest: object,\n v2Page: SapUiAppPageV2,\n pageType: PageType,\n fragments?: FileData[],\n objectPageSectionData?: ObjectPageSectionData\n): void {\n if (!fragments) {\n return;\n }\n const targetKeyEntitySet =\n '|' + (objectPageSectionData && objectPageSectionData.target ? objectPageSectionData.target : v2Page.entitySet);\n\n if (\n manifest[ManifestSection.ui5] &&\n manifest[ManifestSection.ui5]['extends'] &&\n manifest[ManifestSection.ui5]['extends']['extensions'] &&\n manifest[ManifestSection.ui5]['extends']['extensions']['sap.ui.viewExtensions']\n ) {\n const viewExtension = PAGETYPE_VIEW_EXTENSION_TEMPLATE_MAP.get(pageType);\n const viewExtensionsOfPage =\n manifest[ManifestSection.ui5]['extends']['extensions']['sap.ui.viewExtensions'][viewExtension];\n if (!viewExtensionsOfPage) {\n return;\n }\n processViewExtensions(viewExtensionsOfPage, targetKeyEntitySet, objectPageSectionData, config, fragments);\n }\n}\n", "export * from './Card';\nexport * from './Field';\nexport * from './FilterBar';\nexport * from './FormAction';\nexport * from './Fragment';\nexport * from './Table';\nexport * from './TableColumn';\nexport * from './ToolBar';\nexport * from './Action';\nexport * from './AnalyticalListPageChart';\nexport * from './AnalyticalListPageKPI';\nexport * from './ObjectPageHeader';\nexport * from './ObjectPageHeaderAction';\nexport * from './ObjectPageFooterAction';\nexport * from './ObjectPageLayout';\nexport * from './ObjectPageCustomSection';\nexport * from './ObjectPageSectionsV2';\nexport * from './ObjectPageTable';\nexport * from './ObjectPageToolBarAction';\n", "import { syncRule, childId, validity } from '../common/decoration';\nimport type { AppSettings as CommonSettingsV2, Pages } from '../../specification/v2';\nimport { CardSettingsType, SAPUI5_VIEW_EXTENSION, SAPUI5_VIEW_EXTENSION_OBJECT_PAGE } from '../../specification/v2';\nimport type { Target, Application, FlexibleColumnLayout, Manifest } from '../../specification/common';\nimport { ManifestSection, GENERICAPPSETTINGS } from '../../specification/common';\nimport { VOCWITHCOLONS } from '../common/types';\n\nexport const getAppSettingPathV2 = (pageKeys: string[]): string => {\n return `${ManifestSection.generic}/pages/${pageKeys[0]}/component/settings`;\n};\n\nexport const getTableSettingPathV2 = (pageKeys: string[]): string => {\n return getAppSettingPathV2(pageKeys) + '/tableSettings';\n};\n\nexport const getDataLoadSettingPathV2 = (pageKeys: string[]): string => {\n return getAppSettingPathV2(pageKeys) + '/dataLoadSettings';\n};\n\nexport const getOVPsettingPath = (): string => {\n return ManifestSection.ovp;\n};\n\nexport const getCardSettingsPath = (cardKey: string[]): string => {\n const pathParts: string[] = [ManifestSection.ovp + '/cards'];\n cardKey.forEach((block) => {\n if (block in CardSettingsType) {\n pathParts.push('settings');\n } else {\n pathParts.push(block);\n }\n });\n pathParts.pop();\n return pathParts.join('/');\n};\n\nexport const getGlobalSettingsPath = (cardKey: string[]): string => {\n const pathParts: string[] = [ManifestSection.ovp];\n cardKey.forEach((block) => {\n pathParts.push(block);\n });\n pathParts.pop();\n return pathParts.join('/');\n};\n\nexport const getAppSettingOBJPathV2 = (pageKeys: string[]): string => {\n const pathParts: string[] = ['sap.ui.generic.app'];\n pageKeys.forEach((pageKey) => {\n pathParts.push('pages/' + pageKey);\n });\n pathParts.push('component/settings');\n return pathParts.join('/');\n};\n\n// This corresponds to ALP KPI settings\nexport const getKPISettingsPath = (pageKeys: string[], kpiKey: string): string => {\n return `${ManifestSection.generic}/pages/${pageKeys[0]}/component/settings/keyPerformanceIndicators/${kpiKey}`;\n};\n\n// This corresponds to List Report and Object page global settings\nexport const getAppRootSettingOBJPath = (pageKeys: string[]): string => {\n const pathParts: string[] = [ManifestSection.generic];\n pageKeys.forEach((pageKey) => {\n pathParts.push('pages/' + pageKey);\n });\n return pathParts.join('/');\n};\n\nexport const getAppSettingOBJsectionPathV2 = (pageKeys: string[], manifest: Manifest, sectionId: string): string => {\n const pathParts: string[] = [];\n pathParts.push(getAppRootSettingOBJPath(pageKeys));\n const manifestSectionId = sectionId.replace(VOCWITHCOLONS, '::com.sap.vocabularies');\n pathParts.push('component/settings/sections/' + manifestSectionId);\n return pathParts.join('/');\n};\n\nexport const getTableSettingsOBJsectionPathV2 = (pageKeys: string[], manifest: Manifest, sectionId: string): string => {\n const path = getAppSettingOBJsectionPathV2(pageKeys, {}, sectionId);\n return path + '/tableSettings';\n};\n\nexport const getChartSettingsOBJsectionPathV2 = (pageKeys: string[], manifest: Manifest, sectionId: string): string => {\n const path = getAppSettingOBJsectionPathV2(pageKeys, {}, sectionId);\n return path + '/chartSettings';\n};\n\nexport const getViewExtensionsPath = (): string => {\n return `sap.ui5/extends/extensions/${SAPUI5_VIEW_EXTENSION}/${SAPUI5_VIEW_EXTENSION_OBJECT_PAGE}`;\n};\n\nexport const getObjectPageCustomSectionPath = (\n pageName: string[],\n _manifest: Manifest,\n sectionId: string,\n ...pathParts: string[]\n): string => {\n const separator = '|';\n const sectionIdParts = sectionId.split(separator);\n const pageNameParts = pageName[pageName.length - 1].split(separator);\n let idLastPart = '';\n if (sectionIdParts.length === 4) {\n // Four parts ==> the last one is incremented to avoid getting the same path\n // We need to merge 3 and 4\n idLastPart = [sectionIdParts[2], sectionIdParts[3]].join(separator);\n } else if (sectionIdParts.length === 3) {\n idLastPart = sectionIdParts[2];\n }\n const customSectionId = [sectionIdParts[0], pageNameParts[pageNameParts.length - 1], idLastPart].join(separator);\n // Sub-path parts are passed\n pathParts.unshift(customSectionId);\n\n return `${getViewExtensionsPath()}/${pathParts.join('/')}`;\n};\n\nexport class ApplicationV2 implements Application {\n id?: string;\n pages?: Pages;\n home?: string;\n target?: Target;\n @childId('settings')\n settings?: AppSettings;\n}\n\nexport class AppSettings implements CommonSettingsV2 {\n @syncRule({\n manifest: {\n path: (): string => 'sap.app'\n }\n })\n title?: string;\n\n @syncRule({\n manifest: {\n path: (): string => 'sap.app'\n }\n })\n description?: string;\n\n @syncRule({\n manifest: {\n path: (): string => GENERICAPPSETTINGS\n }\n })\n @validity({\n since: '1.50.0'\n })\n flexibleColumnLayout?: FlexibleColumnLayout;\n\n @syncRule({\n manifest: {\n path: (): string => GENERICAPPSETTINGS\n }\n })\n @validity({\n since: '1.46.0'\n })\n forceGlobalRefresh?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => 'sap.ui5'\n }\n })\n @validity({\n since: '1.56.0'\n })\n flexEnabled?: boolean;\n}\n", "import type {\n CustomCard as CustomCardConfig,\n ListCard as ListCardConfig,\n AnalyticalCard as AnalyticalCardConfig,\n StackCard as StackCardConfig,\n LinklistCard as LinklistCardConfig,\n TableCard as TableCardConfig,\n AnalyticalCardSettings,\n TableCardSettings,\n LinkListCardSettings,\n ListCardSettings,\n StackCardSettings,\n TabSetting,\n CustomCardSettings,\n CommonCardSettings as CommonCardConfig,\n DefaultSpanDef,\n StaticContent,\n CardTemplateType,\n PlotAreaDef\n} from '../../../../specification/v2/controls/Card';\nimport { syncRule } from '../../../common/decoration/decorators';\nimport { getCardSettingsPath } from '../../application';\n\nexport class CommonCardSettings implements CommonCardConfig {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n entitySet?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n title: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n subTitle?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n identificationAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n selectionAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n presentationAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n defaultSpan?: DefaultSpanDef;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n requireAppAuthorization?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n tabs?: [TabSetting];\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n addODataSelect?: boolean;\n}\n\nexport class CustomCard extends CommonCardSettings implements CustomCardConfig, CustomCardSettings {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n template: CardTemplateType;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n settings?: CustomCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n itemText?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n valueSelectionInfo?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n staticContent?: {\n [k: string]: any;\n }[];\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listFlavor?: 'standard' | 'bar' | 'carousel';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listType?: 'extended' | 'condensed';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n sortBy?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n sortOrder?: 'ascending' | 'descending';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n annotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n chartAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n dataPointAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n kpiAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n selectionPresentationAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n dynamicSubtitleAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n ignoreSapText?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n objectStreamCardsSettings?: {\n showFirstActionInFooter?: boolean;\n annotationPath?: string;\n };\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n enableLocaleCurrencyFormatting?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n navigation?: 'dataPointNav' | 'chartNav' | 'headerNav' | 'noHeaderNav';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n showFilterInHeader?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n showSortingInHeader?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n imageSupported?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n showLineItemDetail?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n showLabelText?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n customParams?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n chartProperties?: {\n plotArea?: PlotAreaDef;\n };\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n colorPalette?:\n | {\n [k: string]: any;\n }[]\n | {\n [k: string]: any;\n };\n [k: string]: any;\n}\n\nexport class ListCard extends CommonCardSettings implements ListCardConfig {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n template: CardTemplateType.list;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n settings: ListCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listCardSettings: ListCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listFlavor?: 'standard' | 'bar' | 'carousel';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listType?: 'extended' | 'condensed';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n annotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n valueSelectionInfo?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n sortBy?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n sortOrder?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n dataPointAnnotationPath?: string;\n}\n\nexport class AnalyticalCard extends CommonCardSettings implements AnalyticalCardConfig {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n template: CardTemplateType.analytical;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n settings: AnalyticalCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n analyticalCardSettings?: AnalyticalCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n chartAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n dataPointAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n valueSelectionInfo?: string;\n}\n\nexport class StackCard extends CommonCardSettings implements StackCardConfig {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n template: CardTemplateType.stack;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n settings: StackCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n stackCardSettings: StackCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n itemText?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n objectStreamCardsNavigationProperty?: string;\n}\n\nexport class LinklistCard extends CommonCardSettings implements LinklistCardConfig {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n template: CardTemplateType.linklist;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n settings: LinkListCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n linkListCardSettings: LinkListCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n title: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n subTitle?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n targetUri?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listFlavor?: 'standard' | 'bar' | 'carousel';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n sortBy?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n sortOrder?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n headerAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n identificationAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n defaultSpan?: DefaultSpanDef;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n staticContent?: StaticContent[];\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n requireAppAuthorization?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n annotationPath?: string;\n}\n\nexport class TableCard extends CommonCardSettings implements TableCardConfig {\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n template: CardTemplateType.table;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n disableTableCardFlexibility?: boolean;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n settings: TableCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n tableCardSettings: TableCardSettings;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n annotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listFlavor?: 'standard' | 'bar' | 'carousel';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n listType?: 'extended' | 'condensed';\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n dataPointAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n selectionPresentationAnnotationPath?: string;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getCardSettingsPath(cardKeys)\n }\n })\n valueSelectionInfo?: string;\n}\n", "import type { Field as ObjectPageFieldConfig } from '../../../../specification/v2';\nimport { syncRule, exportToFlexChange, buildControlIdFromParent } from '../../../common/decoration';\nimport type { ControlTypeFunction } from '../../../common';\nimport { ControlType, addPatternForBindingChangeOfEnumOP, convertSectionId } from '../../../common';\n\n/**\n * Create stable ID for Object Page Form Field\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @param {ControlTypeFunction} controlType\n * @param {string} facetID title from the app schema (comprising for instance the facet ID)\n * @returns {string} stable ID of Object Page Form Action button\n */\nconst getSmartFieldControlId = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n controlType: ControlTypeFunction,\n facetId: string\n): string => {\n const convertedId = convertSectionId(breadcrumbs[1], facetId);\n const fieldCrumb = breadcrumbs.slice(-1)[0];\n const breadcrumbsTrail = [convertedId, fieldCrumb, 'GroupElement'];\n return buildControlIdFromParent(baseId, breadcrumbsTrail);\n};\n\nexport class Field implements ObjectPageFieldConfig {\n @syncRule({\n flex: {\n controlId: getSmartFieldControlId,\n controlType: (): ControlType => ControlType.GroupElement,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n", "import { syncRule, validity } from '../../../common/decoration/decorators';\nimport { buildControlIdFromParent, exportToFlexChange } from '../../../common/decoration';\nimport { getAppSettingPathV2 } from '../../application';\nimport { ControlType } from '../../../common';\nimport type {\n ListReportFilterBar as FilterBarConfig,\n AnalyticalListPageFilterBar as AnalyticalListPageFilterBarIF\n} from '../../../../specification/v2';\n\nconst flexRuleForSmartFilterBar = {\n controlId: buildControlIdFromParent,\n controlType: (): ControlType => ControlType.SmartFilterBar,\n createFlexChange: exportToFlexChange\n};\n\nexport class ListReportFilterBar implements FilterBarConfig {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.38.0'\n })\n smartVariantManagement?: boolean;\n\n @syncRule({\n flex: flexRuleForSmartFilterBar\n })\n @validity({\n since: '1.40.0'\n })\n liveMode?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.48.0'\n })\n variantManagementHidden: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.52.0' // Available in 1.52 so exact validity information is not required\n })\n subTitleIfVariantMgmtHidden?: string;\n\n @syncRule({\n flex: {\n controlId: buildControlIdFromParent,\n controlType: (): ControlType => ControlType.SmartFilterBar,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.28.0'\n })\n showClearOnFB?: boolean;\n\n @syncRule({\n flex: flexRuleForSmartFilterBar\n })\n @validity({\n since: '1.38.0'\n })\n showFilterConfiguration?: boolean;\n\n @syncRule({\n flex: flexRuleForSmartFilterBar\n })\n @validity({\n since: '1.28.0'\n })\n showRestoreOnFB?: boolean;\n}\n\nexport class AnalyticalListPageFilterBar extends ListReportFilterBar implements AnalyticalListPageFilterBarIF {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n showGoButtonOnFilterBar?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.60.0'\n })\n filterDefaultsFromSelectionVariant?: boolean;\n}\n", "import type { ButtonType, SapUiCoreURI, FormAction as FormActionConfig } from '../../../../specification/v2';\nimport { syncRule, exportToFlexChange, buildControlIdFromParent, convertSectionId } from '../../../common/decoration';\nimport type { ControlTypeFunction } from '../../../common/types';\nimport { ControlType } from '../../../common/types';\nimport { addPatternForBindingChangeOfEnumOP } from '../../../common';\n\n/**\n * Create stable ID for Object Page Form Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @param {ControlTypeFunction} controlType\n * @param {string} facetID title from the app schema (comprising for instance the facet ID)\n * @returns {string} stable ID of Object Page Form Action button\n */\nconst getFormActionButtonId = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n controlType: ControlTypeFunction,\n facetID: string\n): string => {\n if (controlType() === ControlType.Button) {\n const entity = breadcrumbs[breadcrumbs.length - 1];\n const section = convertSectionId(breadcrumbs[1], facetID);\n return `${baseId}action::${entity}::${section}::FormAction`;\n }\n return buildControlIdFromParent(baseId, idBreadcrumbs);\n};\n\nexport class FormAction implements FormActionConfig {\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible: boolean;\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n tooltip?: string; // sap.ui.core.TooltipBase\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n type?: ButtonType;\n}\n\nexport class FieldForAction implements FormActionConfig {\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible: boolean;\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n tooltip?: string; // sap.ui.core.TooltipBase\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: {\n controlId: getFormActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n }\n })\n type?: ButtonType;\n}\n", "import type { TableCustomColumns, SapUiAppPageV2, TableCustomColumn } from '../../../../specification/v2';\nimport type { ExportResults, ExtensionLogger } from '../../../../v2';\nimport type { FileData } from '../../../common/types';\nimport { FRAGMENTNAMEPART, ViewTemplateType } from '../../../common/types';\nimport { xml2json, json2xml } from 'xml-js';\nimport {\n getSingleColumnContent,\n getColumnFragmentContent,\n getResponsiveTableCellsFragment\n} from '../view-controller-generator';\nimport i18next from 'i18next';\nimport { LogSeverity, log } from '../../../../extensionLogger';\nimport {\n SAPUI5_VIEW_EXTENSION_OBJECT_PAGE,\n SAPUI5_VIEW_EXTENSION_LIST_REPORT,\n SAPUI5_VIEW_EXTENSION_ANALYTICAL_LIST_PAGE,\n FE_TEMPLATE_V2_OBJECT_PAGE,\n FE_TEMPLATE_V2_LIST_REPORT,\n FE_TEMPLATE_V2_ALP\n} from '../../../../specification/v2';\nimport { deleteManifestSectionByPathV2, ensureManifestSectionByPathV2 } from '../manifest';\nimport { sep } from 'path';\n\nexport const FRAGMENT_DEFINITION = 'core:FragmentDefinition';\nexport const SAP_UI_TABLE = 'sap.ui.table';\n\nconst VIEW_TEMPLATE_TAGTYPE_MAP: Map<ViewTemplateType, { namespace: string; name: string }> = new Map([\n [ViewTemplateType.ResponsiveTableColumnsExtension, { namespace: 'sap.m', name: 'Column' }],\n [ViewTemplateType.TreeTableColumnsExtension, { namespace: SAP_UI_TABLE, name: 'Column' }],\n [ViewTemplateType.GridTableColumnsExtension, { namespace: SAP_UI_TABLE, name: 'Column' }],\n [ViewTemplateType.AnalyticalTableColumnsExtension, { namespace: SAP_UI_TABLE, name: 'AnalyticalColumn' }]\n]);\n\nconst FE_TEMPLATE_VIEW_EXTENSION_MAP: Map<string, string> = new Map([\n [FE_TEMPLATE_V2_LIST_REPORT, SAPUI5_VIEW_EXTENSION_LIST_REPORT],\n [FE_TEMPLATE_V2_ALP, SAPUI5_VIEW_EXTENSION_ANALYTICAL_LIST_PAGE],\n [FE_TEMPLATE_V2_OBJECT_PAGE, SAPUI5_VIEW_EXTENSION_OBJECT_PAGE]\n]);\n\nconst dummyEntry = {\n type: 'element',\n name: 'Text',\n attributes: { text: 'Placeholder' }\n};\nconst dummyEntryAsString = JSON.stringify(dummyEntry);\n\n/**\n * Lists namespaces available in fragment to consider\n * @param fragment - fragment content\n * @param isCoreFragmentDefinition - If set to true, only the namespaces in core definition will be considered\n * @returns {Map<string, string[]> | undefined} - If available, namespaces will be returned as Map (key: alias, values: name[])\n */\nfunction getFragmentNamespaces(fragment, isCoreFragmentDefinition: boolean): Map<string, string[]> | undefined {\n const fragmentAttributes = isCoreFragmentDefinition\n ? fragment[FRAGMENT_DEFINITION]['_attributes']\n : fragment['_attributes'];\n if (fragmentAttributes) {\n const allFragmentNamespaces = new Map<string, string[]>();\n Object.keys(fragmentAttributes)\n .filter((attribute) => attribute.startsWith('xmlns'))\n .forEach((xmlns) => {\n const existingNamespaces = allFragmentNamespaces.get(fragmentAttributes[xmlns]);\n allFragmentNamespaces.set(\n fragmentAttributes[xmlns],\n existingNamespaces\n ? [...existingNamespaces, xmlns.split(':')[1] || xmlns]\n : [xmlns.split(':')[1] || xmlns]\n );\n });\n return allFragmentNamespaces;\n }\n}\n\n/**\n * Considers namespace of fragment and returns combined tag name\n * @param tag - tag name and namespace\n * @param {string[]} fragmentNamespace namespaces of fragment\n * @returns {string} tag name consisting of namespace and name\n */\nfunction getTagName(tag: { namespace: string; name: string }, fragmentNamespaces: string[]): string {\n if (!fragmentNamespaces) {\n return `${tag.namespace}:${tag.name}`;\n } else if (fragmentNamespaces.includes('xmlns')) {\n return tag.name;\n } else {\n return `${fragmentNamespaces}:${tag.name}`;\n }\n}\n\n/**\n * Maps the column template type to the fragment namespace and returns the tag name with namespace of root column definition.\n * @param definition - fragment or content definition\n * @param viewTemplateType - name of the view template that shall be applied\n * @param fragment - fragment definition\n * @returns {unknown | undefined} Root column tag name.\n */\nfunction getTagNameFromFragmentJSON(\n definition: unknown,\n viewTemplateType?: ViewTemplateType,\n fragment: unknown = definition\n): string | undefined {\n const namespaces = getFragmentNamespaces(fragment, viewTemplateType || fragment !== definition ? true : false);\n if (viewTemplateType) {\n const tag = VIEW_TEMPLATE_TAGTYPE_MAP.get(viewTemplateType);\n return getTagName(tag, namespaces.get(tag.namespace));\n } else {\n const keys = VIEW_TEMPLATE_TAGTYPE_MAP.keys();\n for (const key of keys) {\n const tag = VIEW_TEMPLATE_TAGTYPE_MAP.get(key);\n const tagName = namespaces ? getTagName(tag, namespaces.get(tag.namespace)) : tag.name;\n if (definition[tagName]) {\n return tagName;\n }\n }\n }\n return undefined;\n}\n\n/**\n * Method which receives fragment definition node and reads root column definition.\n * @param {unknown} definition - Application or Page Config object.\n * @param {unknown} fragment - fragment definition\n * @returns {unknown | undefined} Root column read from definition.\n */\nexport function getRootCustomColumnFromFragmentJSON(\n definition: unknown,\n fragment = definition\n): string | unknown | undefined {\n const name = getTagNameFromFragmentJSON(definition, undefined, fragment);\n return definition[name];\n}\n\n/**\n * Internal function adding content to config column\n * @param configColumns - list of all columns in the config\n * @param columnIndex - index of column\n * @returns - filled personalization data\n */\nfunction addP13nData(configColumns: TableCustomColumns, columnIndex: number): string {\n const columnProperties = [\n 'id',\n 'text',\n 'className',\n 'fragmentName',\n 'tabKey',\n 'extensionType',\n 'cellsFragmentName'\n ];\n let p13nData = `\\\\{`;\n for (const key in configColumns[columnIndex]) {\n const value = configColumns[columnIndex][key];\n if (!columnProperties.includes(key) && value !== undefined && value.length !== 0) {\n if (p13nData !== '\\\\{') {\n p13nData += `, `;\n }\n p13nData += `\"${key}\": \"${value.toString()}\"`;\n }\n }\n p13nData += '}';\n return p13nData;\n}\n\n/**\n * Internal function handling a single fragment column if detected in the fragment\n * @param columnsInFragment - list of all columns in fragment\n * @param configColumns - list of all columns in the config\n */\nfunction handleFragmentColumn(columnsInFragment: object, configColumns: TableCustomColumns): boolean {\n let foundInConfig = false;\n const customData = columnsInFragment['customData'] || columnsInFragment['table:customData'];\n if (!customData) {\n return false;\n }\n\n let p13nData = customData['core:CustomData']._attributes.value;\n const columnParts = JSON.parse(p13nData.substr(1, p13nData.length));\n const columnIndex = configColumns.findIndex((column) => {\n return column.columnKey === columnParts.columnKey;\n });\n if (columnIndex < 0) {\n return false;\n }\n\n //Found ==> update scenario\n foundInConfig = true;\n p13nData = addP13nData(configColumns, columnIndex);\n customData['core:CustomData']._attributes.value = p13nData;\n if (!columnsInFragment['Text'] && !columnsInFragment['Label'] && configColumns[columnIndex]?.text) {\n columnsInFragment['Text'] = {\n _attributes: {}\n };\n }\n if (columnsInFragment['Text'] && columnsInFragment['Text']['_attributes']) {\n columnsInFragment['Text']._attributes['text'] = configColumns[columnIndex]?.text;\n } else if (columnsInFragment['Label'] && columnsInFragment['Label']['_attributes']) {\n columnsInFragment['Label']._attributes['text'] = configColumns[columnIndex]?.text;\n }\n if (!columnsInFragment['_attributes']) {\n columnsInFragment['_attributes'] = {};\n }\n columnsInFragment['_attributes']['id'] = configColumns[columnIndex].id;\n configColumns.splice(columnIndex, 1);\n return foundInConfig;\n}\n\n/**\n * Deletes obsolete custom columns from the relevant fragment(s)\n * @param manifestSection - Section in manifest.json comprising the extensions\n * @param fragments - list of all fragments\n * @param pattern - Search string to identify the extension in manifest\n * @param appId - application ID\n */\nfunction deleteColumnsFromFragment(\n manifestSection: object,\n fragments: FileData[],\n pattern: string,\n appId: string\n): void {\n const fragmentId = manifestSection[pattern].fragmentName.substr(appId.length + 1);\n const fragmentType = manifestSection['type'] ? manifestSection['type'].toLowerCase() : 'xml';\n const fragmentParts = fragmentId.split('.');\n const fragmentName = fragmentParts[fragmentParts.length - 1] + FRAGMENTNAMEPART + fragmentType;\n for (const fragment of fragments) {\n const fragmentPathArray = fragment['dataSourceUri'].split(sep);\n if (fragmentPathArray[fragmentPathArray.length - 1] === fragmentName) {\n const fragmentJson = JSON.parse(xml2json(fragment.fileContent, { compact: true }));\n const tagName = getTagNameFromFragmentJSON(fragmentJson[FRAGMENT_DEFINITION]);\n if (tagName) {\n delete fragmentJson[FRAGMENT_DEFINITION][tagName];\n fragment.fileContent = json2xml(JSON.stringify(fragmentJson), { compact: true, spaces: 4 });\n }\n break;\n }\n }\n}\n\n/**\n * Deletes a given number of (dummy) cells from a fragment\n * @param fragmentCells - list of all cells in the parsed fragment\n * @param noOfEntriesToBeDeleted - number of entries to be deleted\n */\nfunction deleteNumberOfCells(fragmentCells: any, noOfEntriesToBeDeleted: number): void {\n //only dummy entry will be deleted automatically!\n for (let index = 0; index < Object.keys(fragmentCells).length; index++) {\n if (JSON.stringify(fragmentCells[index]) === dummyEntryAsString) {\n fragmentCells.splice(index, 1);\n noOfEntriesToBeDeleted -= 1;\n if (noOfEntriesToBeDeleted === 0) {\n break;\n }\n }\n }\n}\n\n/**\n * Deletes cells from the relevant fragment\n * @param cellManifestSection - section in mnifest referring the cells'fragment\n * @param fragments - list of all fragments\n * @param appId - application ID\n */\nfunction deleteCellsFromFragment(cellManifestSection: object, fragments: FileData[], appId: string): void {\n const fragmentType = cellManifestSection['type'] ? cellManifestSection['type'].toLowerCase() : 'xml';\n const fragmentParts = cellManifestSection['fragmentName'].substr(appId.length + 1).split('.');\n const fragmentName = fragmentParts[fragmentParts.length - 1] + FRAGMENTNAMEPART + fragmentType;\n for (const fragment of fragments) {\n if (fragment['dataSourceUri'].endsWith(fragmentName)) {\n const fragmentJson = JSON.parse(xml2json(fragment.fileContent));\n const fragmentCells =\n fragmentJson.elements[0].elements &&\n fragmentJson.elements[0].elements.filter((element) => {\n return element.type === 'element';\n });\n if (fragmentCells) {\n deleteNumberOfCells(fragmentCells, fragmentCells.length);\n }\n break;\n }\n }\n}\n\n/**\n * Identifies the right extensions based on a pattern, then deletes all corresponding columns and cells\n * @param manifestSection - Section in manifest.json comprising the extensions\n * @param pattern - Search string to identify the extension in manifest\n * @param appId - application ID\n * @param fragments - list of all fragments\n */\nexport function deleteColumnFromFragment(\n manifestSection: object,\n pattern: string,\n appId: string,\n fragments: FileData[]\n): void {\n if (fragments) {\n //delete columns\n deleteColumnsFromFragment(manifestSection, fragments, pattern, appId);\n //delete cells\n const cellsPath = pattern.replace(\n ViewTemplateType.ResponsiveTableColumnsExtension,\n ViewTemplateType.ResponsiveTableCellsExtension\n );\n const cellManifestSection = manifestSection[cellsPath];\n if (cellManifestSection) {\n deleteCellsFromFragment(cellManifestSection, fragments, appId);\n }\n }\n}\n\n/**\n * Adds new (dummy) columns to a given fragment, as many as we have entries in the config\n * @param fragmentCells - list of all cells in fragment\n * @param fragmentJson - complete fragment, parsed as JSON\n * @param config - actual config.json\n */\nfunction addNewColumnsInFragment(fragmentCells: any, fragmentJson: any, config: TableCustomColumns): void {\n const startIndex = fragmentCells ? Object.keys(fragmentCells).length : 0;\n if (!fragmentJson.elements[0].elements) {\n fragmentJson.elements[0].elements = [];\n }\n for (let index = startIndex; index < Object.keys(config).length; index++) {\n fragmentJson.elements[0].elements.push(dummyEntry);\n }\n}\n\n/**\n * Updates non-empty cells in a given fragment, from the config information\n * @param fragment - identified cells' fragment\n * @param config - config.json that lists the new cells' information\n */\nfunction updateNonEmptyCellsFragment(fragment: FileData, config: TableCustomColumns): void {\n const fragmentJson = JSON.parse(xml2json(fragment.fileContent));\n const fragmentCells =\n fragmentJson.elements[0].elements &&\n fragmentJson.elements[0].elements.filter((element) => {\n return element.type === 'element';\n });\n if (!fragmentCells || Object.keys(fragmentCells).length !== Object.keys(config).length) {\n if (!fragmentCells || Object.keys(fragmentCells).length < Object.keys(config).length) {\n addNewColumnsInFragment(fragmentCells, fragmentJson, config);\n } else if (Object.keys(fragmentCells).length > Object.keys(config).length) {\n const noOfEntriesToBeDeleted = Object.keys(fragmentCells).length - Object.keys(config).length;\n const fragmentElements = fragmentJson.elements[0].elements;\n deleteNumberOfCells(fragmentElements, noOfEntriesToBeDeleted);\n }\n fragment.fileContent = json2xml(JSON.stringify(fragmentJson), { spaces: 4 });\n }\n}\n\n/**\n * Updates the content of a cell fragment file\n * @param fragments - list of existing fragments, to be enhanced\n * @param cellFragmentFileName - file name of the given cell fragment, as calculated from the config entry\n * @param config - current config JSON\n * @returns a boolean value to indicate if the cell fragment could be found n the given list of fragments\n */\nfunction updateCellsFragment(fragments: FileData[], cellFragmentFileName: string, config: TableCustomColumns): boolean {\n let cellsFragmentFound = false;\n for (const fragment of fragments) {\n const fragmentPathArray = fragment['dataSourceUri'].split(sep);\n if (fragmentPathArray[fragmentPathArray.length - 1] === cellFragmentFileName) {\n cellsFragmentFound = true;\n if (!fragment.fileContent || Object.keys(fragment.fileContent).length === 0) {\n // Empty fragment - use template\n fragment.fileContent = getResponsiveTableCellsFragment(config);\n } else {\n updateNonEmptyCellsFragment(fragment, config);\n }\n break;\n }\n }\n return cellsFragmentFound;\n}\n\n/**\n * Adapt manifest from the given custom columns' definition in manifest\n * @param manifestPath - path to the current section of the manifest that describes the extension\n * @param {ExportResults} exportResults - export result comprising fragments and manifest\n * @param config - current config part, describing the new image of the extension\n * @param appId - application ID\n * @param {ExtensionLogger} logger - logger instance for exceptions\n * @returns everything that is needed for further processing the fragment\n */\nfunction exportCustomColumnsToManifest(\n manifestPath: string,\n exportResults: ExportResults,\n config: TableCustomColumns,\n appId: string,\n logger?: ExtensionLogger\n): { manifestSection: object; lsFilePath: string; cellsFragmentName: string; fragmentType: string } {\n let lsFilePath: string;\n let cellsFragmentName: string;\n const manifest = exportResults.manifest;\n const manifestSection = ensureManifestSectionByPathV2(manifest, manifestPath);\n const fragmentType = manifestSection['type'] ? manifestSection['type'].toLowerCase() : 'xml';\n manifestSection['type'] = fragmentType.toUpperCase();\n\n for (const configElement of config) {\n //last one wins -as there can only be one reference in the manifest\n if (!configElement.fragmentName) {\n log(logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOFRAGMENT', { columnKey: configElement.columnKey })\n });\n continue;\n }\n manifestSection['fragmentName'] = configElement.fragmentName;\n manifestSection['className'] = configElement.className;\n lsFilePath =\n configElement.fragmentName?.replace(appId, '<root>/webapp').replace(/[.]/g, sep) +\n FRAGMENTNAMEPART +\n fragmentType;\n }\n if (manifestPath.indexOf(ViewTemplateType.ResponsiveTableColumnsExtension) > -1) {\n const cellsPath = manifestPath.replace(\n ViewTemplateType.ResponsiveTableColumnsExtension,\n ViewTemplateType.ResponsiveTableCellsExtension\n );\n const cellManifestSection = ensureManifestSectionByPathV2(manifest, cellsPath);\n const cellsFragmentColumn = config.reduce((previousColumn, column) => {\n return column.cellsFragmentName ? column : previousColumn;\n });\n if (cellsFragmentColumn && cellsFragmentColumn.cellsFragmentName) {\n cellManifestSection['fragmentName'] = cellsFragmentName = cellsFragmentColumn.cellsFragmentName;\n cellManifestSection['className'] = config[0].className;\n cellManifestSection['type'] = fragmentType.toUpperCase();\n } else {\n deleteManifestSectionByPathV2(manifest, cellsPath);\n }\n }\n return { manifestSection, lsFilePath, cellsFragmentName, fragmentType };\n}\n\n/**\n * Method inserts new custom column into array of existing columns in same place as it appears in column configs.\n * @param {TableCustomColumn} column - Custom column config object.\n * @param {ViewTemplateType} viewTemplateType - template type\n * @param {Object} columnsInFragmentDefinition - Existing columns definition\n * @param {unknown} fragment - fragment definition\n * @param {number} colPos - column position from config\n * @returns {object} Columns object.\n */\nfunction insertNewColumnInFragment(\n column: TableCustomColumn,\n viewTemplateType: ViewTemplateType,\n columnsInFragmentDefinition: {},\n fragment: unknown,\n colPos: number\n): object {\n const newColumnFragment = getSingleColumnContent(column, viewTemplateType);\n if (newColumnFragment) {\n const newColumnDefinition = JSON.parse(xml2json(newColumnFragment, { compact: true }));\n const newColumn = getRootCustomColumnFromFragmentJSON(newColumnDefinition, fragment);\n if (Array.isArray(columnsInFragmentDefinition)) {\n // avoid having same columns\n const columnExists = columnsInFragmentDefinition.some(\n (col) => JSON.stringify(col) === JSON.stringify(newColumn)\n );\n if (!columnExists) {\n columnsInFragmentDefinition.push(newColumn);\n }\n } else {\n if (columnsInFragmentDefinition) {\n // insert new column in array at specific position\n const newColumnsInFragmentDefinition = [columnsInFragmentDefinition];\n newColumnsInFragmentDefinition.splice(colPos, 0, newColumn);\n columnsInFragmentDefinition = newColumnsInFragmentDefinition;\n } else {\n columnsInFragmentDefinition = [newColumn];\n }\n }\n }\n return columnsInFragmentDefinition;\n}\n\nfunction processCustomColumnInArray(columnsInFragmentDefinition: any[], configColumns: TableCustomColumns) {\n for (let j = 0; j < columnsInFragmentDefinition.length; j++) {\n const columnFoundInConfig = handleFragmentColumn(columnsInFragmentDefinition[j], configColumns);\n if (!columnFoundInConfig) {\n columnsInFragmentDefinition.splice(j, 1);\n }\n }\n}\n\nfunction maintainExistingColumnInFragment(\n columnsInFragmentDefinition: {},\n configColumns: TableCustomColumns,\n fragmentJson: any\n) {\n if (columnsInFragmentDefinition) {\n //find the right column in the identified fragment file\n if (Array.isArray(columnsInFragmentDefinition)) {\n processCustomColumnInArray(columnsInFragmentDefinition, configColumns);\n } else {\n const columnFoundInConfig = handleFragmentColumn(columnsInFragmentDefinition, configColumns);\n if (!columnFoundInConfig) {\n const coreTagName = getTagNameFromFragmentJSON(fragmentJson[FRAGMENT_DEFINITION]);\n if (coreTagName) {\n delete fragmentJson[FRAGMENT_DEFINITION][coreTagName];\n columnsInFragmentDefinition = undefined;\n }\n }\n }\n }\n return columnsInFragmentDefinition;\n}\n\n/**\n * Method inserts new custom columns into existing columns.\n * @param {TableCustomColumns} configColumns - Custom columns config object.\n * @param {string} fragmentId - fragment file name\n * @param {Object} columnsInFragmentDefinition - Existing columns definition\n * @param {ViewTemplateType} viewTemplateType - template type\n * @param {unknown} fragment - fragment definition\n * @returns {object} Columns object.\n */\nfunction insertNewColumnsInFragment(\n configColumns: TableCustomColumns,\n fragmentId: string,\n columnsInFragmentDefinition: {},\n viewTemplateType: ViewTemplateType,\n fragment: unknown\n) {\n for (const column of configColumns) {\n if (column.fragmentName.endsWith(fragmentId)) {\n const colPos = configColumns.indexOf(column);\n columnsInFragmentDefinition = insertNewColumnInFragment(\n column,\n viewTemplateType,\n columnsInFragmentDefinition,\n fragment,\n colPos\n );\n }\n }\n return columnsInFragmentDefinition;\n}\n\n/**\n * Actualizes the column information in a fragment\n * @param fragments - list of all fragments\n * @param fragmentName - name of the relevant fragment, as maintained in manifest\n * @param fragmentId - ID = substring of the fragment name without the app ID\n * @param configColumns - list of all custom columns in the config\n * @param viewTemplateType - enum value that determines the view template\n * @returns a boolean value indicating if the fragment was found\n */\nfunction updateColumnsInFragment(\n fragments: FileData[],\n fragmentName: string,\n fragmentId: string,\n configColumns: TableCustomColumns,\n viewTemplateType: ViewTemplateType\n): boolean {\n let fragmentFound = false;\n\n if (!fragments) {\n return fragmentFound;\n }\n\n //find and update the columns' fragment file\n for (const fragment of fragments) {\n if (fragment['dataSourceUri'].endsWith(fragmentName)) {\n let columnsInFragmentDefinition = {};\n fragmentFound = true;\n if (!fragment.fileContent || fragment.fileContent.length === 0) {\n // Empty fragment - use template\n fragment.fileContent = getColumnFragmentContent(configColumns, viewTemplateType);\n } else {\n const fragmentJson = JSON.parse(xml2json(fragment.fileContent, { compact: true }));\n const originalFragmentJson = JSON.stringify(fragmentJson);\n //find the right column in the fragment file\n columnsInFragmentDefinition = getRootCustomColumnFromFragmentJSON(fragmentJson[FRAGMENT_DEFINITION]);\n columnsInFragmentDefinition = maintainExistingColumnInFragment(\n columnsInFragmentDefinition,\n configColumns,\n fragmentJson\n );\n //Insert scenario for the remaining entries\n columnsInFragmentDefinition = insertNewColumnsInFragment(\n configColumns,\n fragmentId,\n columnsInFragmentDefinition,\n viewTemplateType,\n fragmentJson\n );\n const tagName = getTagNameFromFragmentJSON(fragmentJson, viewTemplateType);\n fragmentJson[FRAGMENT_DEFINITION][tagName] = columnsInFragmentDefinition;\n const fragmentContent = JSON.stringify(fragmentJson);\n if (fragmentContent !== originalFragmentJson) {\n fragment.fileContent = json2xml(fragmentContent, { compact: true, spaces: 4 });\n }\n }\n break;\n }\n }\n return fragmentFound;\n}\n\n/**\n * The function transfers ALL properties of one or more custom columns to a given fragment, or creates a new one if necesary.\n * @param {ExportResults} exportResults - export result comprising fragments and manifest\n * @param manifestPath - path to the current section of the manifest that describes the extension\n * @param config - current config part, describing the new image of the extension\n * @param appId - application ID\n * @param viewTemplateType - name of the view template that shall be applied\n * @param {ExtensionLogger} logger - logger instance for exceptions\n */\nexport function exportCustomColumnsToFragment(\n exportResults: ExportResults,\n manifestPath: string,\n config: TableCustomColumns,\n appId: string,\n viewTemplateType: ViewTemplateType,\n logger?: ExtensionLogger\n): void {\n const fragments: FileData[] = exportResults.fragments;\n\n //Find and adapt manifest\n const { manifestSection, lsFilePath, cellsFragmentName, fragmentType } = exportCustomColumnsToManifest(\n manifestPath,\n exportResults,\n config,\n appId,\n logger\n );\n\n //Find and adapt fragment\n const configColumns = JSON.parse(JSON.stringify(config));\n let fragmentName = manifestSection['fragmentName'];\n const fragmentId = fragmentName.substr(appId.length + 1);\n const fragmentParts = fragmentId.split('.');\n const templateType = fragmentParts[fragmentParts.length - 1];\n fragmentName = templateType + FRAGMENTNAMEPART + fragmentType;\n const cellFragmentParts = cellsFragmentName?.split('.');\n const cellTemplateType = cellFragmentParts ? cellFragmentParts[cellFragmentParts.length - 1] : null;\n const cellFragmentFileName = cellTemplateType ? cellTemplateType + FRAGMENTNAMEPART + fragmentType : null;\n\n // update columns in fragment\n const fragmentFound = updateColumnsInFragment(fragments, fragmentName, fragmentId, configColumns, viewTemplateType);\n\n let cellsFragmentFound = false;\n if (cellsFragmentName) {\n //find an update the cells' fragment file\n cellsFragmentFound = updateCellsFragment(fragments, cellFragmentFileName, config);\n } else {\n cellsFragmentFound = true; //not relevant\n }\n if (!fragmentFound) {\n const fragment: FileData = {\n fileContent: getColumnFragmentContent(configColumns, viewTemplateType),\n dataSourceUri: lsFilePath\n };\n exportResults.fragments.push(fragment);\n }\n if (!cellsFragmentFound) {\n const fragment: FileData = {\n fileContent: getResponsiveTableCellsFragment(config),\n dataSourceUri: lsFilePath.replace(fragmentName, cellFragmentFileName)\n };\n exportResults.fragments.push(fragment);\n }\n}\n\n/**\n * Determines the manifest path of a column extension.\n * @param {string[]} page Page object from manifest.\n * @param {string} entitySet Table's entity set.\n * @param {string} [additionalKey] Key provided when defining the FacetID or QuickVariantSelectionX.\n * @param {string} [tableColumnExtensionType] Column extension type.\n */\nexport const getCustomColumnPath = (\n page: SapUiAppPageV2,\n entitySet: string,\n additionalKey?: string,\n tableColumnExtensionType?: string\n): { path: string; viewTemplateType: ViewTemplateType } => {\n const extension: string = FE_TEMPLATE_VIEW_EXTENSION_MAP.get(page.component.name);\n if (!tableColumnExtensionType) {\n let tableType =\n page.component.settings &&\n page.component.settings.tableSettings &&\n page.component.settings.tableSettings['type'];\n if (!tableType) {\n tableType = 'ResponsiveTable';\n }\n if (extension === 'sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage') {\n tableType = 'AnalyticalTable';\n }\n tableColumnExtensionType = tableType + 'ColumnsExtension';\n }\n const viewTemplateType = tableColumnExtensionType as ViewTemplateType;\n let extensionKey = `${tableColumnExtensionType}|${entitySet}`;\n if (additionalKey) {\n extensionKey += '|' + additionalKey;\n }\n const path = 'sap.ui5/extends/extensions/sap.ui.viewExtensions/' + extension + '/' + extensionKey;\n\n return { path, viewTemplateType };\n};\n", "import { join } from 'path';\nimport type { ViewTemplateType } from '../../common';\nimport { DirName } from '../../common';\nimport type { TableCustomColumns, TableCustomColumn } from '../../../specification/v2';\n\nimport { render } from 'ejs';\nimport { readFileSync } from 'fs';\n\nconst templatesPath = join(__dirname, 'templates');\n\nexport enum ViewTypes {\n XML = 'xml',\n HTML = 'html',\n JS = 'js',\n JSON = 'json'\n}\n\n/**\n * Method which reads passed template and renders it using passed template object.\n * @param {string} templatePath - Path to template.\n * @param {{ [key: string]: string }} templateData - Template data object.\n * @return {string} the rendered template's string\n */\nexport const renderTemplate = (templatePath: string, templateData: { [key: string]: string | boolean }): string => {\n const template = readFileSync(templatePath, 'utf8');\n return render(template, templateData);\n};\n\n/**\n * Method escapes view name.\n * @param {string} name - View's name.\n * @return {string} Escaped view name.\n */\nconst escapeViewName = (name: string): string => {\n // Remove all special characters\n return name.replace(/[^\\w\\s-]/gi, '');\n};\n\n/**\n * Method which reads passed template and renders it using passed template object.\n * @param {string} name - View's name.\n * @param {string} namespace - Application namespace.\n * @return {string} the rendered template's string\n */\nexport const getControllerContent = (\n name: string,\n namespace: string,\n fcl = false,\n newControllerRouting = false\n): string => {\n const templateData = {\n name: namespace + '.' + escapeViewName(name),\n newControllerRouting\n };\n return renderTemplate(join(templatesPath, fcl ? 'controllerFcl.js' : 'controller.js'), templateData);\n};\n\n/**\n * Method which reads passed template and renders it using passed template object.\n * @param {string} name - View's name.\n * @param {string} namespace - Application namespace.\n * @param {ViewTypes} sourceType - View's source type like XML, HTML, JSON or JS.\n * @param {boolean} [controller=false] - Generate controller.\n * @param {boolean} [page=false] - Is view should contains page structure or not - page structure uses 'sap.m.App' in view template.\n * @return {string} the rendered template's string\n */\nexport const getViewContent = (\n name: string,\n namespace: string,\n sourceType: ViewTypes,\n controller = false,\n page = true\n): string => {\n const escapedName = escapeViewName(name);\n const templateData: { [key: string]: string | boolean } = {\n name: escapedName,\n controllerName: '',\n page\n };\n if (controller) {\n templateData.controllerName = namespace + '.controller.' + escapedName;\n }\n return renderTemplate(join(templatesPath, 'view.' + sourceType), templateData);\n};\n\n/**\n * Method which reads template for fragment and returns rendered result of fragment.\n * @param {string} name - View's name.\n * @param {string} namespace - Application namespace.\n * @param {ViewTypes} sourceType - View's source type like XML, HTML, JSON or JS.\n * @param {boolean} handler - JS handler.\n * @return {string} the rendered template's string\n */\nexport const getFragmentContent = (name: string, namespace: string, sourceType: ViewTypes, handler = false): string => {\n const escapedName = escapeViewName(name);\n const templateData: { [key: string]: string } = {\n name: escapedName,\n handler: ''\n };\n if (handler) {\n templateData.handler = `${namespace.replace(/\\./g, '/')}/${DirName.Fragment}/${escapedName}`;\n }\n return renderTemplate(join(templatesPath, 'fragment.' + sourceType), templateData);\n};\n\n/**\n * Method which reads passed template and renders it using passed template object.\n * @param {string} name - View's name.\n * @param {string} namespace - Application namespace.\n * @return {string} the rendered template's string\n */\nexport const getFragmentJsContent = (): string => {\n return renderTemplate(join(templatesPath, 'fragment.js'), {});\n};\n\n/**\n * Method which reads the template for a single column extension that shall be added to a fragment\n * @param {TableCustomColumn} column - data (from config) to be inserted in the template\n * @return {string} the rendered template's string\n */\nexport const getSingleColumnContent = (column: TableCustomColumn, template: ViewTemplateType): string => {\n const templateData: { [key: string]: string } = {\n id: column.id,\n text: column.text,\n columnKey: column.columnKey,\n columnIndex: column.columnIndex !== undefined ? column.columnIndex.toString() : undefined,\n leadingProperty: column.leadingProperty\n };\n return renderTemplate(join(templatesPath, template + '.xml'), templateData);\n};\n\n/**\n * Method which reads the template for a column extension fragment and returns rendered result of fragment.\n * @param {TableCustomColumns} customColumns - array of all column extensions' data\n * @return {string} the rendered template's string\n */\nexport const getColumnFragmentContent = (customColumns: TableCustomColumns, templateType: ViewTemplateType): string => {\n let fragment = '';\n fragment = '<core:FragmentDefinition xmlns:core=\"sap.ui.core\" xmlns:table=\"sap.ui.table\" xmlns=\"sap.m\">';\n if (customColumns) {\n for (const column of customColumns) {\n const newContent = getSingleColumnContent(column, templateType);\n fragment = fragment + '\\n' + newContent;\n }\n }\n return fragment + '\\n' + '</core:FragmentDefinition>';\n};\n\n/**\n * Creates the content for a ResponsiveTableCellsExtesnion fragment\n * @param customColumns - list of custom columns; for each of them a dummy entry gets created in the view content.\n * @returns {string} the rendered template's string\n */\nexport const getResponsiveTableCellsFragment = (customColumns: TableCustomColumns): string => {\n let fragment = '<core:FragmentDefinition xmlns:core=\"sap.ui.core\" xmlns=\"sap.m\">';\n if (customColumns) {\n customColumns.forEach(() => {\n fragment = fragment + '\\n<Text text=\"Placeholder\"></Text>';\n });\n }\n return fragment + '\\n' + '</core:FragmentDefinition>';\n};\n", "import type { ExportType } from '../../../../specification/common';\nimport { GENERICAPPSETTINGS } from '../../../../specification/common';\nimport type {\n AnalyticalTable as AnalyticalTableConfig,\n TableALP as TableALPConfig,\n CommonTableSettings as CommonTableConfig,\n DefaultContentView,\n DefaultFilterMode,\n GenericColumns,\n GridTable as GridTableConfig,\n PopinLayout,\n QuickVariantSelectionX as QuickVariantSelectionXInterface,\n ResponsiveTable as ResponsiveTableConfig,\n TreeTable as TreeTableConfig,\n Strategy,\n QuickVariant,\n QuickVariantX,\n ToolBar,\n TableTypeV2\n} from '../../../../specification/v2';\nimport type { ControlTypeFunction, DeprecatedProperties } from '../../../common';\nimport {\n addPatternForBindingChangeOfEnumLR,\n ControlType,\n QUICKVARPATH,\n QUICKVARPATHX,\n PropertyName\n} from '../../../common';\nimport { buildControlIdFromParent, exportToFlexChange, childId, syncRule, validity } from '../../../common/decoration';\nimport { getAppSettingPathV2, getTableSettingPathV2 } from '../../application';\n\nexport const getSmartTableControlId = (\n baseId: string,\n idBreadcrumbs: string[],\n _breadcrumbs: string[],\n controlType: ControlTypeFunction\n): string => {\n if (controlType() === 'sap.m.Table') {\n return baseId + 'responsiveTable';\n } else if (controlType() === 'sap.ui.comp.smarttable.SmartTable' && baseId.includes('AnalyticalListPage')) {\n return baseId + PropertyName.table;\n }\n return buildControlIdFromParent(baseId, idBreadcrumbs);\n};\n\nfunction exportQuickVariantSelectionX(manifestSection: object, configObject: object): void {\n if (!configObject['variants']) {\n return;\n }\n if (Object.keys(configObject['variants']).length > 0) {\n exportVariants(manifestSection, configObject);\n } else {\n delete manifestSection['variants'];\n }\n}\n\nfunction exportVariants(manifestSection: object, configObject: object): void {\n for (const variant in configObject['variants']) {\n const variantConfig = configObject['variants'][variant];\n const tablesettings: string[] = ['type', 'multiSelect', 'selectAll', 'selectionLimit', 'inlineDelete'];\n for (const key in variantConfig) {\n if (tablesettings.indexOf(key) !== -1) {\n if (!variantConfig['tableSettings']) {\n variantConfig['tableSettings'] = {};\n }\n variantConfig['tableSettings'][key] = variantConfig[key];\n delete variantConfig[key];\n }\n }\n if (manifestSection['variants']) {\n manifestSection['variants'][variant] = variantConfig;\n } else {\n manifestSection['variants'] = {\n [variant]: variantConfig\n };\n }\n }\n}\n\nexport class CreateWithFilters {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys) + '/createWithFilters'\n }\n })\n strategy: Strategy;\n}\n\n//import table type\nfunction importType(manifestSection: object): string {\n if (manifestSection?.['tableSettings']?.['type']) {\n return manifestSection['tableSettings']['type'];\n } else if (manifestSection?.['tableType']) {\n return manifestSection['tableType'];\n }\n}\n\n//export table type\nexport function exportType(manifestSection: unknown, configPart: object): void {\n if (configPart?.['type']) {\n if (!manifestSection['tableSettings']) {\n manifestSection['tableSettings'] = {};\n }\n manifestSection['tableSettings']['type'] = configPart['type'];\n if (manifestSection?.['tableType']) {\n //old format\n delete manifestSection['tableType'];\n }\n }\n}\n\nexport function deleteType(manifestSection: unknown): void {\n if (manifestSection?.['tableSettings']?.['type']) {\n delete manifestSection['tableSettings']['type'];\n }\n if (manifestSection?.['tableType']) {\n //old format\n delete manifestSection['tableType'];\n }\n}\n\nexport class QuickVariantSelection {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys) + QUICKVARPATH\n }\n })\n @validity({\n since: '1.48.0'\n })\n showCounts?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys) + QUICKVARPATH\n }\n })\n @validity({\n since: '1.48.0'\n })\n variants: {\n [key: number]: QuickVariant;\n };\n}\n\nexport class QuickVariantSelectionX implements QuickVariantSelectionXInterface {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys) + QUICKVARPATHX\n }\n })\n @validity({\n since: '1.48.0'\n })\n showCounts?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys) + QUICKVARPATHX\n }\n })\n @validity({\n since: '1.48.0'\n })\n enableAutoBinding?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys) + QUICKVARPATHX,\n export: exportQuickVariantSelectionX\n }\n })\n @validity({\n since: '1.48.0'\n })\n variants: {\n [key: number]: QuickVariantX;\n };\n}\n\nexport class CommonTableSettings<COLS = GenericColumns> implements CommonTableConfig<COLS> {\n getDeprecated = (): DeprecatedProperties => {\n return {\n tableType: {\n since: '1.50.0',\n deprecated: {\n since: '1.70.0',\n text: 'Use tableSettings.type instead'\n }\n }\n };\n };\n\n @syncRule({\n flex: {\n controlId: buildControlIdFromParent,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.38.0'\n })\n showTablePersonalisation?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.26.0'\n })\n useExportToExcel?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.50.0'\n })\n exportType?: ExportType;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n fitContainer?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.48.0'\n })\n quickVariantSelection?: QuickVariantSelection;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.48.0'\n })\n quickVariantSelectionX?: QuickVariantSelectionX;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getTableSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.38.0'\n })\n multiSelect?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getTableSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.70.0'\n })\n selectAll?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getTableSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.70.0'\n })\n selectionLimit?: number;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.40.0'\n })\n enableAutoBinding?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.42.0'\n })\n condensedTableLayout?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.56.0'\n })\n enableTableFilterInPageVariant?: boolean;\n\n @childId('toolBar')\n toolBar?: ToolBar;\n}\nexport class ResponsiveTable extends CommonTableSettings implements ResponsiveTableConfig {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys),\n import: importType,\n export: exportType,\n delete: deleteType\n }\n })\n @validity({\n since: '1.50.0'\n })\n type?: TableTypeV2.ResponsiveTable;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.54.0'\n })\n createWithFilters?: CreateWithFilters;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumLR\n })\n @validity({\n since: '1.52.0'\n })\n popinLayout?: PopinLayout;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n }\n })\n includeItemInSelection?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => GENERICAPPSETTINGS\n }\n })\n @validity({\n since: '1.63.0'\n })\n showDraftToggle?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.16.0'\n })\n growingThreshold?: number;\n}\n\nexport class TreeTable extends CommonTableSettings implements TreeTableConfig {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys),\n import: importType,\n export: exportType,\n delete: deleteType\n }\n })\n @validity({\n since: '1.50.0'\n })\n type?: TableTypeV2.TreeTable;\n\n @syncRule({\n manifest: {\n path: (): string => GENERICAPPSETTINGS\n }\n })\n @validity({\n since: '1.63.0'\n })\n showDraftToggle?: boolean;\n}\n\nexport class AnalyticalTable extends CommonTableSettings implements AnalyticalTableConfig {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys),\n import: importType,\n export: exportType,\n delete: deleteType\n }\n })\n @validity({\n since: '1.50.0'\n })\n type?: TableTypeV2.AnalyticalTable;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n qualifier?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n defaultContentView?: DefaultContentView;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n defaultFilterMode?: DefaultFilterMode;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.60.0'\n })\n contentTitle?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n autoHide?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.54.0'\n })\n createWithFilters?: CreateWithFilters;\n\n @syncRule({\n manifest: {\n path: (): string => GENERICAPPSETTINGS\n }\n })\n @validity({\n since: '1.63.0'\n })\n showDraftToggle?: boolean;\n}\n\nexport class TableALP extends CommonTableSettings implements TableALPConfig {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys),\n import: importType,\n export: exportType,\n delete: deleteType\n }\n })\n @validity({\n since: '1.50.0'\n })\n type?: TableTypeV2.AnalyticalTable & TableTypeV2.ResponsiveTable & TableTypeV2.GridTable;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n qualifier?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.38.0'\n })\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n defaultContentView?: DefaultContentView;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n defaultFilterMode?: DefaultFilterMode;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.60.0'\n })\n contentTitle?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n autoHide?: boolean;\n}\n\nexport class ALPResponsiveTable extends TableALP {\n /*No sync rule needed for type as it is already part of TableALP. This also caused sync issues with flexChanges in release 1.60 as tabletype is not explicity set to ResponsiveTable in 1.60\n During import, Table type is used in function \"addFlex\" to refer to correct definition in schema.\n */\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.16.0'\n })\n growingThreshold?: number;\n}\n\nexport class ALPGridTable extends TableALP {}\n\nexport class ALPAnalyticalTable extends TableALP {}\n\nexport class GridTable extends CommonTableSettings implements GridTableConfig {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys),\n import: importType,\n export: exportType,\n delete: deleteType\n }\n })\n @validity({\n since: '1.50.0'\n })\n type?: TableTypeV2.GridTable;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.54.0'\n })\n createWithFilters?: CreateWithFilters;\n\n @syncRule({\n manifest: {\n path: (): string => GENERICAPPSETTINGS\n }\n })\n @validity({\n since: '1.63.0'\n })\n showDraftToggle?: boolean;\n}\n", "import type { ButtonType, SapUiCoreURI, Action as ActionConfig } from '../../../../specification/v2';\nimport { syncRule, exportToFlexChange } from '../../../common/decoration';\nimport { ControlType } from '../../../common/types';\nimport { getActionBreadcrumbParts, convertActionKeyToStableId } from '../../../common';\n\n/**\n * Create stable ID for Simple Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @returns {string} stable ID of Action button\n */\nconst getActionButtonId = (baseId: string, _idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n const { actionId } = getActionBreadcrumbParts(breadcrumbs);\n return `${baseId}action::${convertActionKeyToStableId(actionId).replace(':2f', '::')}`;\n};\n\n/**\n * Create stable ID for Intent Based Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @returns {string} stable ID of Intent Based Action button\n */\nexport const buildIntentBasedActionId = (baseId: string, _idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n const { semanticObjectId, actionId } = getActionBreadcrumbParts(breadcrumbs);\n return `${baseId}action::${semanticObjectId}::${convertActionKeyToStableId(actionId)}`;\n};\n\n/**\n * Create stable ID for (Intent Based) Footer Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @returns {string} stable ID of Footer Action button\n */\nconst getFooterActionButtonId = (baseId: string, _idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n const { actionId } = getActionBreadcrumbParts(breadcrumbs);\n return `${baseId}action::${convertActionKeyToStableId(actionId).replace(':2f', '::')}::Determining`;\n};\n\nconst flexRuleForAction = {\n controlId: getActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n};\n\nconst flexRuleForFooterAction = {\n controlId: getFooterActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n};\n\nexport class Action implements ActionConfig {\n @syncRule({\n flex: flexRuleForAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForAction\n })\n type?: ButtonType;\n}\n\nexport class ToolBarAction implements ActionConfig {\n @syncRule({\n flex: flexRuleForAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForAction\n })\n type?: ButtonType;\n}\n\nexport class FooterAction implements ActionConfig {\n @syncRule({\n flex: flexRuleForFooterAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n type?: ButtonType;\n}\n", "import type {\n ButtonType,\n HAlign,\n SapUiCoreURI,\n TableColumn as TableColumnConfig,\n TableColumnAction as TableColumnActionConfig,\n TableCustomColumn as TableCustomColumnConfig,\n TableColumnExtensionTypeV2\n} from '../../../../specification/v2';\nimport { buildIntentBasedActionId } from './Action';\n\nimport { ControlType } from '../../../common/types';\nimport type { SAPUI5_FRAGMENT_CLASS } from '../../../../specification/common/webapp/manifest';\nimport { syncRule, exportToFlexChange, buildColumnControlId } from '../../../common/decoration';\nimport { addPatternForBindingChangeOfEnumLR, getActionBreadcrumbParts } from '../../../common';\n\n/**\n * Create stable ID for Action Column\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @returns {string} stable ID of Action Column\n */\nconst buildColumnActionId = (baseId: string, idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n const columnTemplate = 'template:::TableColumn';\n const { actionType, actionId } = getActionBreadcrumbParts(breadcrumbs);\n const smartTableId = `sSmartTableId::${idBreadcrumbs[0]}`;\n return `${baseId}${columnTemplate}:::${actionType}:::${smartTableId}:::sAction::${actionId}`;\n};\n/**\n * Create stable ID for Intent Based Action Column\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @returns {string} stable ID of Action Column\n */\nconst buildColumnIntentBasedId = (baseId: string, idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n const columnTemplate = 'template:::TableColumn';\n const { actionType, actionId, semanticObjectId } = getActionBreadcrumbParts(breadcrumbs);\n const smartTableId = `sSmartTableId::${idBreadcrumbs[0]}`;\n return `${baseId}${columnTemplate}:::${actionType}:::${smartTableId}:::sSemanticObject::${semanticObjectId}:::sAction::${actionId}`;\n};\n\n/**\n * Create stable ID for Column Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @returns {string} stable ID of Column Action button\n */\nconst buildColumnActionButtonId = (baseId: string, _idBreadcrumbs: string[], breadcrumbs: string[]): string => {\n const { actionId } = getActionBreadcrumbParts(breadcrumbs);\n return `${baseId}action::${actionId.replace(':2f', '::')}`;\n};\n\n// TableColumnAction column properties\nconst flexRuleForColumn = {\n controlId: buildColumnActionId,\n controlType: (): ControlType => ControlType.TableColumn,\n createFlexChange: exportToFlexChange\n};\n\n// TableColumnAction action properties\nconst flexRuleForColumnAction = {\n controlId: buildColumnActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n};\n\n// TableColumnActionIntentBased main properties\nconst flexRuleForColumnIntentBased = {\n ...flexRuleForColumn,\n controlId: buildColumnIntentBasedId\n};\n\n// TableColumnActionIntentBased action properties\nconst flexRuleForColumnIntentBasedAction = {\n ...flexRuleForColumnAction,\n controlId: buildIntentBasedActionId\n};\n\nexport class TableColumn implements TableColumnConfig {\n @syncRule({\n flex: {\n controlId: buildColumnControlId,\n controlType: (): ControlType => ControlType.TableColumn,\n createFlexChange: exportToFlexChange\n }\n })\n width?: string;\n @syncRule({\n flex: {\n controlId: buildColumnControlId,\n controlType: (): ControlType => ControlType.TableColumn,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumLR\n })\n hAlign?: HAlign;\n}\n\nexport class TableColumnAction implements TableColumnActionConfig {\n @syncRule({\n flex: flexRuleForColumn\n })\n width?: string;\n\n @syncRule({\n flex: flexRuleForColumn,\n generate: addPatternForBindingChangeOfEnumLR\n })\n hAlign?: HAlign;\n\n @syncRule({\n flex: flexRuleForColumnAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForColumnAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForColumnAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForColumnAction\n })\n type?: ButtonType;\n}\n\nexport class TableColumnActionIntentBased extends TableColumnAction {\n @syncRule({\n flex: flexRuleForColumnIntentBased\n })\n width?: string;\n\n @syncRule({\n flex: flexRuleForColumnIntentBased,\n generate: addPatternForBindingChangeOfEnumLR\n })\n hAlign?: HAlign;\n\n @syncRule({\n flex: flexRuleForColumnIntentBasedAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForColumnIntentBasedAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForColumnIntentBasedAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForColumnIntentBasedAction\n })\n type?: ButtonType;\n}\n\n/**\n * No sync rules are defined for table custom columns, as they are transferred altogether, by function exportToFragment.\n * This approach is needed to support inserts as well as deletions of manifest extensions and fragments\n */\nexport class TableCustomColumn implements TableCustomColumnConfig {\n id?: string;\n text?: string;\n columnKey: string;\n columnIndex?: number;\n leadingProperty?: string;\n className: typeof SAPUI5_FRAGMENT_CLASS;\n fragmentName: string;\n cellsFragmentName?: string;\n tabKey?: string;\n extensionType: TableColumnExtensionTypeV2;\n}\n", "import type { ToolBar as ToolBarConfig, Actions } from '../../../../specification/v2';\n\nexport class ToolBar implements ToolBarConfig {\n actions: Actions;\n}\n", "import type {\n ChartSettings as ChartConfig,\n ChartType\n} from '../../../../specification/v2/controls/AnalyticalListPageChart';\nimport { exportToFlexChange } from '../../../common/decoration';\nimport { syncRule } from '../../../common/decoration/decorators';\nimport type { ChangeDefinitionInCreation } from '../../../common/types';\nimport { ControlType, PropertyName } from '../../../common/types';\n\nexport const getSmartChartControlId = (baseId: string): string => {\n return baseId + PropertyName.chart;\n};\n\nexport class ChartSettings implements ChartConfig {\n @syncRule({\n flex: {\n controlId: getSmartChartControlId,\n controlType: (): ControlType => ControlType.SmartChart,\n createFlexChange: exportToFlexChange\n }\n })\n showLegendButton?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartChartControlId,\n controlType: (): ControlType => ControlType.SmartChart,\n createFlexChange: exportToFlexChange\n }\n })\n showDownloadButton?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartChartControlId,\n controlType: (): ControlType => ControlType.SmartChart,\n createFlexChange: exportToFlexChange\n }\n })\n showChartTypeSelectionButton?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartChartControlId,\n controlType: (): ControlType => ControlType.SmartChart,\n exportFlexValue: (flexChange: ChangeDefinitionInCreation, configObject: object, key: string): void => {\n flexChange.content.newValue = configObject[key].join();\n },\n importFlexValue: (flexChange: ChangeDefinitionInCreation, configObject: object, key: string): void => {\n flexChange.content['newValue'] = flexChange.content['newValue'] as string;\n configObject[key] = flexChange.content['newValue'].split(',') as ChartType[];\n },\n createFlexChange: exportToFlexChange\n }\n })\n ignoredChartTypes?: ChartType[];\n}\n", "import type { KPISettings as KPIConfig } from '../../../../specification/v2/controls/AnalyticalListPageKPI';\nimport { syncRule } from '../../../common/decoration/decorators';\nimport { getKPISettingsPath } from '../../application';\n\nexport class KPISettings implements KPIConfig {\n @syncRule({\n manifest: {\n path: (pageKeys, _manifest, KPIKey): string => getKPISettingsPath(pageKeys, KPIKey)\n }\n })\n model: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys, _manifest, KPIKey): string => getKPISettingsPath(pageKeys, KPIKey)\n }\n })\n entitySet?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys, _manifest, KPIKey): string => getKPISettingsPath(pageKeys, KPIKey)\n }\n })\n qualifier?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys, _manifest, KPIKey): string => getKPISettingsPath(pageKeys, KPIKey)\n }\n })\n filterable?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys, _manifest, KPIKey): string => getKPISettingsPath(pageKeys, KPIKey)\n }\n })\n detailNavigation?: string;\n\n @syncRule({\n manifest: {\n path: (pageKeys, _manifest, KPIKey): string => getKPISettingsPath(pageKeys, KPIKey)\n }\n })\n groupId?: string;\n}\n", "import type {\n ObjectPageHeader as ObjectPageHeaderConfig,\n GenericActions,\n AvatarShape\n} from '../../../../specification/v2/controls/ObjectPageHeader';\nimport { syncRule, validity, buildControlIdFromParent, exportToFlexChange } from '../../../common/decoration';\nimport { getAppSettingOBJPathV2 } from '../../application';\nimport { ControlType, addPatternForBindingChangeOfEnumOP } from '../../../common';\n\nconst getAvatarControlId = (baseId: string, idBreadcrumbs: string[]): string => {\n const idBreadcrumbsCopy = idBreadcrumbs.slice(0);\n idBreadcrumbsCopy[idBreadcrumbs.length - 1] = 'objectImage';\n return buildControlIdFromParent(baseId, idBreadcrumbsCopy);\n};\n\nexport class ObjectPageHeader<ACT = GenericActions> implements ObjectPageHeaderConfig<ACT> {\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.46.0'\n })\n showRelatedApps?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.46.0'\n })\n editableHeaderContent?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.48.0'\n })\n simpleHeaderFacets?: boolean;\n\n @syncRule({\n flex: {\n controlId: getAvatarControlId,\n controlType: (): ControlType => ControlType.Avatar,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n displayShape?: AvatarShape;\n\n actions?: ACT;\n}\n", "import type { ButtonType, SapUiCoreURI, HeaderAction as HeaderActionConfig } from '../../../../specification/v2';\nimport { syncRule, exportToFlexChange, buildControlIdFromParent } from '../../../common/decoration';\nimport type { ControlTypeFunction } from '../../../common/types';\nimport { ControlType } from '../../../common/types';\nimport { addPatternForBindingChangeOfEnumOP, convertActionKeyToStableId } from '../../../common';\n\n/**\n * Create stable ID for Object Page Header Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @param {ControlTypeFunction} controlType\n * @returns {string} stable ID of Object Page Header Action button\n */\nconst getActionButtonId = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n controlType: ControlTypeFunction\n): string => {\n if (controlType() === ControlType.Button || controlType() === ControlType.HeaderAction) {\n const actionId = breadcrumbs[2];\n return `${baseId}action::${convertActionKeyToStableId(actionId)}`;\n }\n return buildControlIdFromParent(baseId, idBreadcrumbs);\n};\n\nconst flexRuleForHeaderAction = {\n controlId: getActionButtonId,\n controlType: (): ControlType => ControlType.HeaderAction,\n createFlexChange: exportToFlexChange\n};\n\nexport class HeaderAction implements HeaderActionConfig {\n @syncRule({\n flex: flexRuleForHeaderAction,\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible: boolean;\n\n @syncRule({\n flex: flexRuleForHeaderAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForHeaderAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForHeaderAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForHeaderAction\n })\n type?: ButtonType;\n}\n", "import type {\n ButtonType,\n SapUiCoreURI,\n ObjectPageFooterAction as FooterActionConfig\n} from '../../../../specification/v2';\nimport { syncRule, exportToFlexChange, buildControlIdFromParent } from '../../../common/decoration';\nimport type { ControlTypeFunction } from '../../../common/types';\nimport { ControlType } from '../../../common/types';\nimport {\n addPatternForBindingChangeOfEnumOP,\n getActionBreadcrumbParts,\n convertActionKeyToStableId\n} from '../../../common';\n\n/**\n * Create stable ID for Object Page Footer Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @param {ControlTypeFunction} controlType\n * @returns {string} stable ID of Object Page Footer Action button\n */\nconst getFooterActionButtonId = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n controlType: ControlTypeFunction\n): string => {\n if (controlType() === ControlType.Button) {\n const { actionId } = getActionBreadcrumbParts(breadcrumbs);\n return `${baseId}action::${convertActionKeyToStableId(actionId)}::Determining`;\n }\n return buildControlIdFromParent(baseId, idBreadcrumbs);\n};\n\nconst flexRuleForFooterAction = {\n controlId: getFooterActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n};\n\nexport class ObjectPageFooterAction implements FooterActionConfig {\n @syncRule({\n flex: flexRuleForFooterAction,\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible: boolean;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForFooterAction\n })\n type?: ButtonType;\n}\n", "import type { ObjectPageLayout as ObjectPageLayoutConfig } from '../../../../specification/v2/controls/ObjectPageLayout';\nimport { syncRule, validity } from '../../../common/decoration/decorators';\nimport { buildControlIdFromParent, exportToFlexChange } from '../../../common/decoration';\nimport { ControlType } from '../../../common/types';\n\nconst getControlId = (baseId: string, idBreadcrumbs: string[]): string => {\n const idBreadcrumbsCopy = idBreadcrumbs.slice(0);\n idBreadcrumbsCopy[idBreadcrumbs.length - 1] = 'objectPage';\n return buildControlIdFromParent(baseId, idBreadcrumbsCopy);\n};\n\nexport class ObjectPageLayout implements ObjectPageLayoutConfig {\n @syncRule({\n flex: {\n controlId: getControlId,\n controlType: (): ControlType => ControlType.ObjectPageLayout,\n createFlexChange: exportToFlexChange\n }\n })\n showHeaderContent?: boolean;\n\n @syncRule({\n flex: {\n controlId: getControlId,\n controlType: (): ControlType => ControlType.ObjectPageLayout,\n createFlexChange: exportToFlexChange\n }\n })\n showAnchorBar?: boolean;\n\n @syncRule({\n flex: {\n controlId: getControlId,\n controlType: (): ControlType => ControlType.ObjectPageLayout,\n createFlexChange: exportToFlexChange\n }\n })\n useIconTabBar?: boolean;\n\n @syncRule({\n flex: {\n controlId: getControlId,\n controlType: (): ControlType => ControlType.ObjectPageLayout,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.34.0'\n })\n alwaysShowContentHeader?: boolean;\n}\n", "import type {\n SectionPosition,\n ObjectPageCustomSectionView as ViewCustomSectionConfig,\n ObjectPageCustomSectionFragment as FragmentCustomSectionConfig,\n ObjectPageCustomSectionBase as BaseCustomSectionConfig,\n SapUi5ViewExtensionView,\n SapUi5ViewExtensionFragment,\n ExtensionFragmentTypes\n} from '../../../../specification/v2';\nimport type { SAPUI5_FRAGMENT_CLASS, SAPUI5_VIEW_CLASS, Manifest } from '../../../../specification/common';\nimport { ManifestSection } from '../../../../specification/common';\nimport { syncRule, validity } from '../../../common/decoration/decorators';\nimport { getObjectPageCustomSectionPath } from '../../application';\nimport type { ViewTypes } from '../../../../specification/common/webapp/manifest/sapUi5';\n\nexport class BaseCustomSection implements BaseCustomSectionConfig {\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath,\n export: false,\n import: (_manifest: SapUi5ViewExtensionView | SapUi5ViewExtensionFragment, sectionId: string): string => {\n const sectionParts = sectionId.split('|');\n return sectionParts[2];\n }\n }\n })\n @validity({\n since: '1.52.0'\n })\n relatedFacet: string;\n\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath,\n export: false,\n import: (_manifest: SapUi5ViewExtensionView | SapUi5ViewExtensionFragment, sectionId: string): string => {\n return sectionId.split('|')[0];\n }\n }\n })\n @validity({\n since: '1.52.0'\n })\n relativePosition: SectionPosition;\n\n @syncRule({\n manifest: {\n path: (entitySet: string[], _manifest: Manifest, sectionId: string): string =>\n getObjectPageCustomSectionPath(entitySet, {}, sectionId, ManifestSection.generic)\n }\n })\n @validity({\n since: '1.52.0'\n })\n title: string;\n\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath\n }\n })\n @validity({\n since: '1.52.0'\n })\n className: string;\n}\n\nexport class ObjectPageCustomSectionFragment extends BaseCustomSection implements FragmentCustomSectionConfig {\n className: typeof SAPUI5_FRAGMENT_CLASS;\n\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath\n }\n })\n @validity({\n since: '1.52.0'\n })\n fragmentName: string;\n\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath\n }\n })\n @validity({\n since: '1.52.0'\n })\n type: ExtensionFragmentTypes;\n}\n\nexport class ObjectPageCustomSectionView extends BaseCustomSection implements ViewCustomSectionConfig {\n className: typeof SAPUI5_VIEW_CLASS;\n\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath\n }\n })\n @validity({\n since: '1.52.0'\n })\n viewName: string;\n\n @syncRule({\n manifest: {\n path: getObjectPageCustomSectionPath\n }\n })\n @validity({\n since: '1.52.0'\n })\n type: ViewTypes;\n}\n", "import type {\n ObjectPageSectionFormV2 as ObjectPageSectionFormIF,\n ObjectPageSectionChartV2 as ObjectPageSectionChartIF,\n ObjectPageSectionTableV2 as ObjectPageSectionTableIF,\n ObjectPageSectionAddressV2 as ObjectPageSectionAddressIF,\n ObjectPageSectionContactV2 as ObjectPageSectionContactIF,\n ObjectPageSubSectionV2 as ObjectPageSubSectionIF\n} from '../../../../specification/v2/index';\nimport { syncRule } from '../../../common/decoration/decorators';\nimport type { ControlTypeFunction } from '../../../common';\nimport {\n addPatternForBindingChangeOfEnumOP,\n buildControlIdFromParent,\n ControlType,\n exportToFlexChange,\n convertSectionId,\n DefinitionName\n} from '../../../common';\n\nexport const FacetTitlePrefix = 'Facet ID: ';\n\nexport const getTableSectionControlId = (\n baseId: string,\n _idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType: ControlTypeFunction,\n facetId: string\n): string => {\n const convertedId = convertSectionId(breadcrumbs[1], facetId);\n const breadcrumbsTrail = [convertedId, DefinitionName.Table];\n return buildControlIdFromParent(baseId, breadcrumbsTrail);\n};\nexport const getFormSectionControlId = (\n baseId: string,\n _idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType: ControlTypeFunction,\n facetId: string\n): string => {\n const convertedId = convertSectionId(breadcrumbs[1], facetId);\n const breadcrumbsTrail = [convertedId, 'FormGroup'];\n return buildControlIdFromParent(baseId, breadcrumbsTrail);\n};\n\nexport const getChartSectionControlId = (\n baseId: string,\n _idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType: ControlTypeFunction,\n facetID: string\n): string => {\n const convertedId = convertSectionId(breadcrumbs[1], facetID);\n const breadcrumbsTrail = [convertedId, 'Chart'];\n return buildControlIdFromParent(baseId, breadcrumbsTrail);\n};\n\nexport const getSectionControlId = (\n baseId: string,\n _idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType: ControlTypeFunction,\n facetId: string\n): string => {\n const convertedId = convertSectionId(breadcrumbs[1], facetId);\n const breadcrumbsTrail = [convertedId, 'Section'];\n return buildControlIdFromParent(baseId, breadcrumbsTrail);\n};\n\nexport const getSubSectionControlId = (\n baseId: string,\n _idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType: ControlTypeFunction,\n facetId: string\n): string => {\n const convertedId = convertSectionId(breadcrumbs[1], facetId);\n const breadcrumbsTrail = [convertedId, 'SubSection'];\n return buildControlIdFromParent(baseId, breadcrumbsTrail);\n};\n\nexport class ObjectPageSectionV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getSectionControlId,\n controlType: (): ControlType => ControlType.Section,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSectionFormV2 implements ObjectPageSectionFormIF {\n @syncRule({\n flex: {\n controlId: getSectionControlId,\n controlType: (): ControlType => ControlType.Section,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSectionChartV2 implements ObjectPageSectionChartIF {\n @syncRule({\n flex: {\n controlId: getSectionControlId,\n controlType: (): ControlType => ControlType.Section,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSectionTableV2 implements ObjectPageSectionTableIF {\n @syncRule({\n flex: {\n controlId: getSectionControlId,\n controlType: (): ControlType => ControlType.Section,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSectionAddressV2 implements ObjectPageSectionAddressIF {\n @syncRule({\n flex: {\n controlId: getSectionControlId,\n controlType: (): ControlType => ControlType.Section,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSectionContactV2 implements ObjectPageSectionContactIF {\n @syncRule({\n flex: {\n controlId: getSectionControlId,\n controlType: (): ControlType => ControlType.Section,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSubSectionV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getSubSectionControlId,\n controlType: (): ControlType => ControlType.SubSection,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSubSectionFormV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getFormSectionControlId,\n controlType: (): ControlType => ControlType.Group,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSubSectionChartV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getChartSectionControlId,\n controlType: (): ControlType => ControlType.SmartChart,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSubSectionAddressV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getSubSectionControlId,\n controlType: (): ControlType => ControlType.SubSection,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSubSectionContactV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getSubSectionControlId,\n controlType: (): ControlType => ControlType.SubSection,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n\nexport class ObjectPageSubSectionTableV2 implements ObjectPageSubSectionIF {\n @syncRule({\n flex: {\n controlId: getTableSectionControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible?: boolean;\n}\n", "import type {\n GenericColumns,\n PopinLayout,\n CreateMode,\n TableTypeV2,\n QuickVariant,\n ObjectPageToolBar\n} from '../../../../specification/v2';\nimport type {\n ObjectPageCommonTableSettings as ObjectPageCommonTableConfig,\n ObjectPageResponsiveTable as ObjectPageResponsiveTableConfig,\n ObjectPageAnalyticalTable as ObjectPageAnalyticalTableConfig,\n ObjectPageGridTable as ObjectPageGridTableConfig,\n ObjectPageTreeTable as ObjectPageTreeTableConfig\n} from '../../../../specification/v2/controls/ObjectPageTable';\nimport { childId, syncRule, validity } from '../../../common/decoration/decorators';\nimport { buildControlIdFromParent, exportToFlexChange, convertSectionId } from '../../../common/decoration';\nimport { getAppSettingOBJsectionPathV2, getTableSettingsOBJsectionPathV2 } from '../../application';\nimport type { DeprecatedProperties, ControlTypeFunction } from '../../../common';\nimport { ControlType, addPatternForBindingChangeOfEnumOP, QUICKVARPATH, DefinitionName } from '../../../common';\nimport type { ExportType } from '../../../../specification/common';\n\nconst getSmartTableControlId = (\n baseId: string,\n idBreadcrumbs: string[],\n breadcrumbs: string[],\n controlType: ControlTypeFunction,\n title: string\n): string => {\n const breadCrumbsCopy = breadcrumbs.slice(1, 2);\n let suffixId: string;\n\n if (controlType() === 'sap.ui.comp.smarttable.SmartTable') {\n suffixId = DefinitionName.Table;\n } else if (controlType() === 'sap.m.Table') {\n suffixId = 'responsiveTable';\n }\n breadCrumbsCopy.push(suffixId);\n breadCrumbsCopy[0] = convertSectionId(breadCrumbsCopy[0], title);\n return buildControlIdFromParent(baseId, breadCrumbsCopy);\n};\n\nexport class QuickVariantSelectionOP {\n @syncRule({\n manifest: {\n path: (pageKeys, manifest, sectionId): string =>\n getAppSettingOBJsectionPathV2(pageKeys, manifest, sectionId) + QUICKVARPATH\n }\n })\n @validity({\n since: '1.48.0'\n })\n showCounts?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys, manifest, sectionId): string =>\n getAppSettingOBJsectionPathV2(pageKeys, manifest, sectionId) + QUICKVARPATH\n }\n })\n @validity({\n since: '1.48.0'\n })\n variants: {\n [key: number]: QuickVariant;\n };\n}\nexport class ObjectPageCommonTableSettings<COLS = GenericColumns> implements ObjectPageCommonTableConfig<COLS> {\n getDeprecated = (): DeprecatedProperties => {\n return {\n tableType: {\n since: '1.50.0',\n deprecated: {\n since: '1.70.0',\n text: 'Use tableSettings.type instead'\n }\n }\n };\n };\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.28.0'\n })\n editable?: boolean;\n\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n @validity({\n since: '1.54.0'\n })\n multiSelect?: boolean;\n\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n @validity({\n since: '1.70.0'\n })\n selectAll?: boolean;\n\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n @validity({\n since: '1.70.0'\n })\n selectionLimit?: number;\n\n @syncRule({\n manifest: {\n path: getAppSettingOBJsectionPathV2\n }\n })\n @validity({\n since: '1.63.0'\n })\n quickVariantSelection?: QuickVariantSelectionOP;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.26.0'\n })\n useExportToExcel?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.SmartTable,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.50.0'\n })\n exportType?: ExportType;\n\n @syncRule({\n manifest: {\n path: getAppSettingOBJsectionPathV2\n }\n })\n @validity({\n since: '1.48.5'\n })\n createMode?: CreateMode;\n\n @syncRule({\n manifest: {\n path: getAppSettingOBJsectionPathV2\n }\n })\n @validity({\n since: '1.61.0'\n })\n disableDefaultInlineCreateSort?: boolean;\n\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n @validity({\n since: '1.78.0'\n })\n variantManagement?: boolean;\n\n @childId('toolBar')\n toolBar?: ObjectPageToolBar;\n}\n\nexport class ObjectPageResponsiveTable\n extends ObjectPageCommonTableSettings\n implements ObjectPageResponsiveTableConfig\n{\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n type?: TableTypeV2.ResponsiveTable;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n }\n })\n includeItemInSelection?: boolean;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n },\n generate: addPatternForBindingChangeOfEnumOP\n })\n @validity({\n since: '1.52.0'\n })\n popinLayout?: PopinLayout;\n\n @syncRule({\n flex: {\n controlId: getSmartTableControlId,\n controlType: (): ControlType => ControlType.Table,\n createFlexChange: exportToFlexChange\n }\n })\n @validity({\n since: '1.16.0'\n })\n growingThreshold?: number;\n}\n\nexport class ObjectPageAnalyticalTable\n extends ObjectPageCommonTableSettings\n implements ObjectPageAnalyticalTableConfig\n{\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n type?: TableTypeV2.AnalyticalTable;\n\n @syncRule({\n manifest: {\n path: getAppSettingOBJsectionPathV2\n }\n })\n @validity({\n since: '1.67.0'\n })\n condensedTableLayout?: boolean;\n}\n\nexport class ObjectPageGridTable extends ObjectPageCommonTableSettings implements ObjectPageGridTableConfig {\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n type?: TableTypeV2.GridTable;\n\n @syncRule({\n manifest: {\n path: getAppSettingOBJsectionPathV2\n }\n })\n @validity({\n since: '1.67.0'\n })\n condensedTableLayout?: boolean;\n}\n\nexport class ObjectPageTreeTable extends ObjectPageCommonTableSettings implements ObjectPageTreeTableConfig {\n @syncRule({\n manifest: {\n path: getTableSettingsOBJsectionPathV2\n }\n })\n type?: TableTypeV2.TreeTable;\n\n @syncRule({\n manifest: {\n path: getAppSettingOBJsectionPathV2\n }\n })\n @validity({\n since: '1.67.0'\n })\n condensedTableLayout?: boolean;\n}\n", "import type {\n ButtonType,\n SapUiCoreURI,\n ObjectPageToolBarAction as ToolBarActionConfig\n} from '../../../../specification/v2';\nimport { syncRule, exportToFlexChange } from '../../../common/decoration';\nimport { ControlType } from '../../../common/types';\nimport {\n addPatternForBindingChangeOfEnumOP,\n convertSectionId,\n getActionBreadcrumbParts,\n convertActionKeyToStableId\n} from '../../../common';\n\n/**\n * Create stable ID for Object Page Toolbar Action button\n *\n * @param {string} baseId Base Id of the control\n * @param {string[]} _idBreadcrumbs\n * @param {string[]} breadcrumbs\n * @param {ControlTypeFunction} controlType\n * @param {string} facetID title from the app schema (comprising for instance the facet ID)\n * @returns {string} stable ID of Object Page Toolbar Action button\n */\nconst getActionButtonId = (\n baseId: string,\n _idBreadcrumbs: string[],\n breadcrumbs: string[],\n _controlType,\n facetID: string\n): string => {\n const { actionId } = getActionBreadcrumbParts(breadcrumbs);\n const section = convertSectionId(breadcrumbs[1], facetID);\n return `${baseId}${section}::action::${convertActionKeyToStableId(actionId).replace(':2f', '::')}`;\n};\n\nconst flexRuleForToolBarActionOP = {\n controlId: getActionButtonId,\n controlType: (): ControlType => ControlType.Button,\n createFlexChange: exportToFlexChange\n};\n\nexport class ObjectPageToolBarAction implements ToolBarActionConfig {\n @syncRule({\n flex: flexRuleForToolBarActionOP,\n generate: addPatternForBindingChangeOfEnumOP\n })\n visible: boolean;\n\n @syncRule({\n flex: flexRuleForToolBarActionOP\n })\n tooltip?: string;\n\n @syncRule({\n flex: flexRuleForToolBarActionOP\n })\n icon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForToolBarActionOP\n })\n activeIcon?: SapUiCoreURI;\n\n @syncRule({\n flex: flexRuleForToolBarActionOP\n })\n type?: ButtonType;\n}\n", "import type { UI5Version, PageType, ExtensionLogger } from '../..';\nimport type { ObjectPageConfig, SapUiAppPageV2 } from '../../v2';\nimport type { FlexChangesForTransfer } from './import/controls/table';\nimport type { MetadataFactory, MetadataInstanceInterface } from '../common/decoration/factory';\nimport type { ExportResults } from '../common';\nimport type * as v2controls from './export/controls';\nimport type * as v2pages from './export/pages';\nimport type { Definition } from 'typescript-json-schema';\n\nexport type V2Controls = typeof v2controls;\nexport type V2Pages = typeof v2pages;\n\nexport type TransferParameterTypeV2 = {\n v2Page: SapUiAppPageV2;\n exportResults: ExportResults;\n appId: string;\n baseId: string;\n appSchema: object;\n ui5Version: UI5Version;\n factory: MetadataFactory;\n pageKeys: string[];\n pageType: PageType;\n logger: ExtensionLogger;\n propertyDefinition?: object;\n nextDefinition?: object;\n};\n\nexport const RESPONSIVETABLE = 'ResponsiveTable<LineItems>';\nexport const TREETABLE = 'TreeTable<LineItems>';\nexport const ANALYTICALTABLE = 'AnalyticalTable<LineItems>';\nexport const GRIDTABLE = 'GridTable<LineItems>';\n\nexport enum SectionTypeV2 {\n SectionAddress = 'ObjectPageSectionAddressV2',\n SectionChart = 'ObjectPageSectionChartV2',\n SectionContact = 'ObjectPageSectionContactV2',\n SectionForm = 'ObjectPageSectionFormV2',\n Section = 'ObjectPageSectionV2',\n SubSection = 'ObjectPageSubSectionV2',\n SectionTable = 'ObjectPageSectionTableV2',\n SubSectionForm = 'ObjectPageSubSectionFormV2',\n SubSectionTable = 'ObjectPageSubSectionTableV2',\n SubSectionAddress = 'ObjectPageSubSectionAddressV2',\n SubSectionContact = 'ObjectPageSubSectionContactV2',\n SubSectionChart = 'ObjectPageSubSectionChartV2'\n}\n\nexport enum ActionTypeV2 {\n Form = 'FormAction',\n Header = 'HeaderAction',\n OPToolBar = 'ObjectPageToolBarAction',\n OPFooter = 'ObjectPageFooterAction',\n OPColumn = 'ObjectPageTableColumnAction',\n ToolBar = 'ToolBarAction',\n Footer = 'FooterAction',\n Column = 'TableColumnAction',\n ToolBarIntentBased = 'ToolBarActionIntentBased',\n FooterIntentBased = 'FooterActionIntentBased',\n ColumnIntentBased = 'TableColumnActionIntentBased'\n}\n\nexport type ObjectPageV2ConfigParameters = {\n factory: MetadataInstanceInterface;\n pageKeys: string[];\n flexChanges: FlexChangesForTransfer;\n v2Page: SapUiAppPageV2;\n objectPageConfig?: ObjectPageConfig;\n};\n\nexport type SectionPartProperties = {\n id?: string;\n type?: SectionTypeV2;\n schema?: Definition;\n title?: string;\n};\n", "import type { i18n } from 'i18next';\nimport * as i18nSyncEn from './common/i18n.json';\n\nexport function initI18n(i18nInstance: i18n): void {\n i18nInstance.addResourceBundle(i18nInstance.language, 'translation', i18nSyncEn);\n}\n", "import i18next from 'i18next';\nimport i18nEn from '../specification/common/i18n.json';\nimport { initI18n as initSyncI18n } from '../sync/i18n';\n\nexport function initI18n(language = 'en'): void {\n // Initialize i18next of ide-extension\n i18next.init({\n resources: {\n en: {\n translation: i18nEn\n }\n },\n lng: language,\n fallbackLng: 'en',\n joinArrays: '\\n\\n'\n });\n\n // Initialize i18next of core module\n initSyncI18n(i18next);\n}\n", "import type {\n SapUiAppPageV2,\n SapUiAppPagesV2,\n ListReportConfig,\n AnalyticalListPageConfig\n} from '../../../specification/v2';\nimport { SAPUI5_VIEW_EXTENSION, SAPUI5_VIEW_EXTENSION_OBJECT_PAGE, SectionPosition } from '../../../specification/v2';\nimport { ManifestSection, PageType } from '../../../specification/common';\nimport { ensureManifestSectionByPathV2 } from '../export/manifest';\nimport { getPageTypeV2, MANIFESTPATH } from '../../common';\nimport i18next from 'i18next';\nimport type { ExtensionLogger } from '../../..';\nimport { LogSeverity, log } from '../../../extensionLogger';\n\n/**\n * Determines a V2 object page in the manifest, based on the given entity set\n * @param v2Pages - manifest['sap.ui.generic.app'].pages\n * @param entitySet - current entityset\n * @param pageKeys - list of page keys, to be filled\n * @returns v2Page - page as specified in the manifest\n */\nexport function findObjectPageV2(\n v2Pages: SapUiAppPagesV2,\n entitySet: string,\n pageKeys: string[]\n): SapUiAppPageV2 | undefined {\n for (const key in v2Pages) {\n const v2Page = v2Pages[key];\n if (getPageTypeV2(v2Page.component.name) === PageType.ObjectPage && v2Page.entitySet === entitySet) {\n pageKeys.push(key);\n return v2Page;\n } else if (v2Page.pages) {\n pageKeys.push(key);\n return findObjectPageV2(v2Page.pages, entitySet, pageKeys);\n }\n }\n}\n\n/**\n * Determines a V2 list report page in the manifest\n * @param v2Pages - manifest['sap.ui.generic.app'].pages\n * @param pageKeys - list of page keys, to be filled\n * @returns v2Page - page as specified in the manifest\n */\nexport function findListReportPageV2(v2Pages: SapUiAppPagesV2, pageKeys: string[]): SapUiAppPageV2 | undefined {\n for (const key in v2Pages) {\n const v2Page = v2Pages[key];\n pageKeys.push(key);\n if (getPageTypeV2(v2Page.component.name) === PageType.ListReport) {\n return v2Page;\n }\n }\n}\n\n/**\n * Determines a V2 analytical list page in the manifest\n * @param v2Pages - manifest['sap.ui.generic.app'].pages\n * @param pageKeys - list of page keys, to be filled\n * @returns v2Page - page as specified in the manifest\n */\nexport function findAnalyticalListPage(\n v2Pages: SapUiAppPagesV2,\n pageKeys: string[],\n logger?: ExtensionLogger\n): SapUiAppPageV2 | undefined {\n for (const key in v2Pages) {\n const v2Page = v2Pages[key];\n pageKeys.push(key);\n if (getPageTypeV2(v2Page.component.name) === PageType.AnalyticalListPage) {\n return v2Page;\n }\n }\n //Not found ==> log\n log(logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOALP'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n}\n\n/**\n * Method checks if passed extension key is associated to custom section with passed entity.\n * @param {string} extensionKey - Extension key.\n * @param {string} entity - Entity to check in extension.\n * @returns {boolean} Is extension key relates to custom section and associated to passed entity.\n */\nexport function isAssociatedCustomSection(extensionKey: string, entity: string): boolean {\n const keyParts = extensionKey.split('|');\n return SectionPosition[keyParts[0]] && keyParts[1] === entity;\n}\n\n/**\n * Method which finds custom section extensions in manifest for passed entitySet\n * @param manifest - manifest.\n * @param entitySet - Entity set to lookup while searching custom section extensions.\n * @returns {object} Found object with custom sections\n */\nexport function findCustomSectionExtensions(manifest: object, entitySet: string): object {\n const customSectionViews = ensureManifestSectionByPathV2(\n manifest,\n `sap.ui5/extends/extensions/${SAPUI5_VIEW_EXTENSION}/${SAPUI5_VIEW_EXTENSION_OBJECT_PAGE}`\n );\n const pageCustomSections = {};\n for (const key in customSectionViews) {\n if (isAssociatedCustomSection(key, entitySet)) {\n pageCustomSections[key] = customSectionViews[key];\n }\n }\n return pageCustomSections;\n}\n\n/**\n * Removes empty properties in the config.json of Analytical List Page V2 | ListReport Page V2\n * @param {AnalyticalListPageConfig | ListReportConfig} config - the configuration to be checked\n */\nexport function removeEmptySettings(config: AnalyticalListPageConfig | ListReportConfig): void {\n // Check ToolBar\n if (config.table?.toolBar) {\n for (const actionKey in config.table.toolBar.actions) {\n if (Object.keys(config.table.toolBar.actions[actionKey]).length === 0) {\n delete config.table.toolBar.actions[actionKey];\n }\n }\n if (Object.keys(config.table.toolBar.actions).length === 0) {\n delete config.table.toolBar.actions;\n }\n if (Object.keys(config.table.toolBar).length === 0) {\n delete config.table.toolBar;\n }\n }\n // Check FilterBar\n if (config.filterBar?.selectionFields) {\n for (const fieldKey in config.filterBar.selectionFields) {\n if (Object.keys(config.filterBar.selectionFields[fieldKey]).length === 0) {\n delete config.filterBar.selectionFields[fieldKey];\n }\n }\n if (Object.keys(config.filterBar?.selectionFields)?.length === 0) {\n delete config.filterBar.selectionFields;\n }\n }\n // Check Footer\n if (config.footer?.actions) {\n for (const actionKey in config.footer.actions) {\n if (Object.keys(config.footer.actions[actionKey]).length === 0) {\n delete config.footer.actions[actionKey];\n }\n }\n if (Object.keys(config.footer.actions).length === 0) {\n delete config.footer.actions;\n }\n if (Object.keys(config.footer).length === 0) {\n delete config.footer;\n }\n }\n}\n", "export * from './AnalyticalListPage';\nexport * from './ListReport';\nexport * from './ObjectPage';\nexport * from './OverviewPage';\n", "import type { AnalyticalListPageConfig, AnalyticalListPageFilterBar } from '../../../../specification/v2';\nimport { FE_TEMPLATE_V2_ALP } from '../../../../specification/v2';\nimport type { AnalyticalTable } from '../controls/Table';\nimport { pageLayoutInformation, childId } from '../../../common/decoration/decorators';\nimport { syncRule } from '../../../common/decoration/decorators';\nimport { buildControlIdForPage, exportToFlexChange } from '../../../common/decoration';\nimport { ControlType } from '../../../common/types';\nimport type { ChartSettings, GenericFooter } from '../../../../specification/v2/controls';\nimport type { KPISettings } from '../../../../specification/v2/controls/AnalyticalListPageKPI';\n\n@pageLayoutInformation({\n id: 'sap.suite.ui.generic.template.AnalyticalListPage.view.AnalyticalListPage',\n pageId: FE_TEMPLATE_V2_ALP\n})\nexport class AnalyticalListPage implements AnalyticalListPageConfig {\n @syncRule({\n flex: {\n controlId: buildControlIdForPage,\n controlType: (): ControlType => ControlType.DynamicPage,\n createFlexChange: exportToFlexChange\n }\n })\n fitContent?: boolean;\n\n @childId('table')\n table?: AnalyticalTable;\n\n @childId('template::SmartFilterBar')\n filterBar?: AnalyticalListPageFilterBar;\n\n @childId('analyticalListPageChart')\n chart?: ChartSettings;\n\n @childId('analyticalListFooter')\n footer?: GenericFooter;\n\n keyPerformanceIndicators: {\n [k: string]: KPISettings;\n };\n}\n", "import type { ListReportConfig, ListReportFilterBar, GenericFooter } from '../../../../specification/v2';\nimport { FE_TEMPLATE_V2_LIST_REPORT, SAPUI5_VIEW_EXTENSION_LIST_REPORT } from '../../../../specification/v2';\nimport type { ResponsiveTable, TreeTable, AnalyticalTable, GridTable } from '../controls/Table';\nimport { pageLayoutInformation, childId } from '../../../common/decoration/decorators';\nimport { syncRule } from '../../../common/decoration/decorators';\nimport { buildControlIdForPage, exportToFlexChange } from '../../../common/decoration';\nimport { ControlType } from '../../../common/types';\n\ntype TableClassType = ResponsiveTable | TreeTable | AnalyticalTable | GridTable;\n\n@pageLayoutInformation({\n id: SAPUI5_VIEW_EXTENSION_LIST_REPORT,\n pageId: FE_TEMPLATE_V2_LIST_REPORT\n})\nexport class ListReport implements ListReportConfig {\n @syncRule({\n flex: {\n controlId: buildControlIdForPage,\n controlType: (): ControlType => ControlType.DynamicPage,\n createFlexChange: exportToFlexChange\n }\n })\n fitContent?: boolean;\n\n @childId('listReportFilter')\n filterBar?: ListReportFilterBar;\n\n @childId('listReport')\n table?: TableClassType;\n\n @childId('listReportFooter')\n footer?: GenericFooter;\n}\n", "/**\n * The module is mapped to specification/v2/pages/ObjectPageConfig.ts\n * This comment is maintained as this module is named as ObjectPage.ts and the corresponding module is named as ObjectPageConfig.ts\n */\n\nimport type { ObjectPageConfig } from '../../../../specification/v2/index';\nimport type {\n ObjectPageHeader,\n GenericSections,\n ObjectPageLayout,\n CustomSections\n} from '../../../../specification/v2/controls';\nimport { pageLayoutInformation, childId, syncRule, validity } from '../../../common/decoration/decorators';\nimport { getAppSettingOBJPathV2 } from '../../application';\nimport { FE_TEMPLATE_V2_OBJECT_PAGE, SAPUI5_VIEW_EXTENSION_OBJECT_PAGE } from '../../../../specification/v2';\n\n@pageLayoutInformation({\n id: SAPUI5_VIEW_EXTENSION_OBJECT_PAGE,\n pageId: FE_TEMPLATE_V2_OBJECT_PAGE\n})\nexport class ObjectPage implements ObjectPageConfig {\n @syncRule({\n manifest: {\n path: (pageKeys: string[]): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.52.0'\n })\n showConfirmationOnDraftActivate?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys: string[]): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.52.1'\n })\n hideChevronForUnauthorizedExtNav?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys: string[]): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.48.0'\n })\n allowDeepLinking?: boolean;\n\n @syncRule({\n manifest: {\n path: (pageKeys: string[]): string => getAppSettingOBJPathV2(pageKeys)\n }\n })\n @validity({\n since: '1.52.0'\n })\n navToListOnSave?: boolean;\n\n @childId('header')\n header?: ObjectPageHeader;\n\n @childId('sections')\n sections?: CustomSections | GenericSections;\n\n @childId('layout')\n layout?: ObjectPageLayout;\n}\n", "import type { OverviewPageConfig, ContainerLayoutType } from '../../../../specification/v2';\nimport { pageLayoutInformation, syncRule } from '../../../common/decoration/decorators';\nimport { getOVPsettingPath, getGlobalSettingsPath } from '../../application';\nimport type { ListCard, AnalyticalCard, StackCard, LinklistCard, TableCard, CustomCard } from '../controls/Card';\n\ntype CardClassType = ListCard | AnalyticalCard | StackCard | LinklistCard | TableCard | CustomCard;\n\n@pageLayoutInformation({\n id: 'sap.suite.ui.generic.template.OverviewPage.view.Details',\n pageId: 'sap.suite.ui.generic.template.OverviewPage'\n})\nexport class OverviewPage implements OverviewPageConfig {\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n globalFilterModel?: string;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n globalFilterEntityType?: string;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n globalFilterEntitySet?: string;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n containerLayout?: ContainerLayoutType;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n smartVariantRequired?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n showDateInRelativeFormat?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n enableLiveFilter?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n imageSupported?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n considerAnalyticalParameters?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n refreshIntervalInMinutes?: number;\n\n @syncRule({\n manifest: {\n path: (cardKeys): string => getGlobalSettingsPath(cardKeys)\n }\n })\n useDateRangeType?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n showBasicSearch?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n disableErrorPage?: boolean;\n\n @syncRule({\n manifest: {\n path: (): string => getOVPsettingPath()\n }\n })\n bHeaderExpanded?: boolean;\n\n cards: {\n [k: string]: CardClassType;\n };\n}\n", "import type { PageType } from '../../../specification/common';\nimport type { V2Controls, V2Pages } from '../../v2/types';\n\n/**\n * Common interface that is used for all instantiations of (reflect) metadata classes\n */\nexport interface MetadataInstanceInterface {\n createInstance(pageType: PageType, schemaPropertyName: string, data?: object, controlPropertyValue?: string): any;\n createPageInstance(pageType: PageType, data?: object): object;\n}\n\nexport abstract class MetadataFactory implements MetadataInstanceInterface {\n private readonly controls: V2Controls;\n private readonly pages: V2Pages;\n private readonly pageTypes: object;\n\n /**\n * Sub-classes for V2 and V4 have to pass their specific (reflect) metadata classes:\n * @param controls - list of imported metadata classes for controls\n * @param pages - list of imported metadata classes for pages\n * @param pageTypes - list of supported pages, entry point to further definitions\n */\n protected constructor(controls: V2Controls, pages: V2Pages, pageTypes: object) {\n this.controls = controls;\n this.pages = pages;\n this.pageTypes = pageTypes;\n }\n\n /**\n * Creates an instance of a metadata class for a given (complex) property of a JSON schema\n * @param {PageType} pageType - page type of a Fiori Element\n * @param schemaPropertyName - name of the complex property in the JSON schema of the page.\n * Used as fallback if no metadataclass can be found by evaluating controlPropertyValue.\n * @param data - data object from which the values shall be taken over, representing a part of the config\n * @param controlPropertyValue - value of a controling property that categorizes the complex property, e.g. table type or card template\n * @returns a class instance comprising the reflect metadata for import or export.\n * If no metadata class could be identified, assumption is that no dedicated handler class exists; thus the original data object is returned as is.\n */\n createInstance(pageType: PageType, schemaPropertyName: string, data?: object, controlPropertyValue?: string): any {\n let metadataClass = this.controls[controlPropertyValue]\n ? this.controls[controlPropertyValue]\n : this.controls[schemaPropertyName];\n if (!metadataClass) {\n metadataClass = this.pageTypes[pageType][controlPropertyValue]\n ? this.pageTypes[pageType][controlPropertyValue]\n : this.pageTypes[pageType][schemaPropertyName];\n }\n return metadataClass ? Object.assign(new metadataClass(), data) : data;\n }\n /**\n * Creates an instance of a metadata class for a given page\n * @param {PageType} pageType - page type of a Fiori Element\n * @param data - data to be taken over (from the config)\n * @returns a class instance comprising the reflect metadata for import or export\n */\n createPageInstance(pageType: PageType, data?: object): object {\n const metadataClass = this.pages[pageType];\n return Object.assign(new metadataClass(), data);\n }\n}\n", "import { CardSettingsType } from '../../../specification/v2';\nimport * as controls from './controls';\nimport * as pages from './pages';\nimport type { MetadataInstanceInterface } from '../../common/decoration/factory';\nimport { MetadataFactory } from '../../common/decoration/factory';\nimport { PageType, SAPUI5_FRAGMENT_CLASS, SAPUI5_VIEW_CLASS } from '../../../specification/common';\n\n/**\n * Note: If the key of the elements corresponds to the name of the definition in schema, you do not have to list it explicitly here.\n * The following tables only comprise entries for elements that do not follow the official pattern (yet)\n */\nconst ALPElements = {\n //no deviations\n};\n\nconst LRElements = {\n Table: controls.ResponsiveTable,\n ResponsiveTableWithMultiSelect: controls.ResponsiveTable,\n ResponsiveTableWithInlineDelete: controls.ResponsiveTable\n};\n\nconst OVPElements = {\n [CardSettingsType.listCardSettings]: controls.ListCard,\n [CardSettingsType.analyticalCardSettings]: controls.AnalyticalCard,\n [CardSettingsType.stackCardSettings]: controls.StackCard,\n [CardSettingsType.linkListCardSettings]: controls.LinklistCard,\n [CardSettingsType.tableCardSettings]: controls.TableCard\n};\n\nconst OPElements = {\n [SAPUI5_VIEW_CLASS]: controls.ObjectPageCustomSectionView,\n [SAPUI5_FRAGMENT_CLASS]: controls.ObjectPageCustomSectionFragment,\n Table: controls.ObjectPageResponsiveTable, //default\n ObjectPageResponsiveTableWithMultiSelect: controls.ObjectPageResponsiveTable,\n ObjectPageResponsiveTableWithInlineDelete: controls.ObjectPageResponsiveTable\n};\n\nconst pageTypes = {\n [PageType.AnalyticalListPage]: ALPElements,\n [PageType.ListReport]: LRElements,\n [PageType.ObjectPage]: OPElements,\n [PageType.OverviewPage]: OVPElements\n};\n\n/**\n * V2 specific factory class for creating instances of (reflect) metadata classes\n */\nexport class MetadataInstanceFactoryV2 extends MetadataFactory implements MetadataInstanceInterface {\n constructor() {\n super(controls, pages, pageTypes);\n }\n}\n", "import { determineTableType, transferSettingsOfObject, addFlex, addFragments, convertActionKey } from '../common/index';\nimport type { ListReportConfig } from '../../../../specification/v2/pages';\nimport { ManifestSection, PageType } from '../../../../specification/common';\nimport { DefinitionName, MANIFESTPATH, parseChangeString } from '../../../common';\nimport { LogSeverity, log } from '../../../../extensionLogger';\nimport i18next from 'i18next';\nimport { initI18n } from '../../../../i18n/i18n';\nimport type { ImportListReportV2Parameters } from '../../../../apiTypes';\nimport { findListReportPageV2, removeEmptySettings } from '../../import/utils';\nimport type { SapUiAppPagesV2 } from '../../../../specification/v2/webapp';\nimport { MetadataInstanceFactoryV2 as Factory } from '../../export/factory';\nimport type { MetadataInstanceInterface } from '../../../common/decoration/factory';\nimport { RESPONSIVETABLE } from '../../types';\nimport type { Definition } from 'typescript-json-schema';\nimport type { TableTypeV2 } from '../../../../v2';\n\n/**\n * Imports filterbar information into the LR config\n * @param {ListReportConfig} listReportConfig - LR config, to be filled\n * @param {MetadataInstanceInterface} factory - factory, for generating the access to reflect-metadata\n * @param {ImportListReportV2Parameters} importParameters - object comprising all input data\n * @param {Definition} schemaDefinitions - app schema definitions\n * @param {string} pageKey - key of the page in manifest\n */\nfunction importFilterBar(\n listReportConfig: ListReportConfig,\n factory: MetadataInstanceInterface,\n importParameters: ImportListReportV2Parameters,\n schemaDefinitions: Definition,\n pageKey: string\n) {\n listReportConfig.filterBar = factory.createInstance(\n PageType.ListReport,\n DefinitionName.ListReportFilterBar,\n listReportConfig.filterBar\n );\n transferSettingsOfObject(\n listReportConfig.filterBar,\n importParameters.manifest,\n schemaDefinitions[DefinitionName.ListReportFilterBar],\n pageKey,\n importParameters.logger\n );\n}\n\n/**\n * Imports table information into the LR config\n * @param {TableTypeV2} tableType - table type\n * @param {ListReportConfig} listReportConfig - LR config, to be filled\n * @param {ImportListReportV2Parameters} importParameters - object comprising all input data\n * @param {string} pageKey - key of the page in manifest\n */\nfunction importTable(\n tableType: TableTypeV2,\n listReportConfig: ListReportConfig,\n importParameters: ImportListReportV2Parameters,\n pageKey: string\n) {\n let localJsonSchema: Definition;\n\n if (tableType) {\n localJsonSchema = importParameters.jsonSchema['definitions'][tableType + '<LineItems>'];\n } else {\n localJsonSchema = importParameters.jsonSchema['definitions'][RESPONSIVETABLE];\n }\n transferSettingsOfObject(\n listReportConfig.table,\n importParameters.manifest,\n localJsonSchema,\n pageKey,\n importParameters.logger\n );\n}\n\n/**\n * Adds manifest settings to the config.json of List Report V2\n * @param {ImportListReportV2Parameters} importParameters - object comprising all input data\n * @param {ListReportConfig} listReportConfig - the configuration to be filled\n * @param {MetadataInstanceInterface} factory - factory, for generating the access to reflect-metadata\n * @param {string} pageKey - key of the page in manifest\n */\nfunction addSettings(\n importParameters: ImportListReportV2Parameters,\n listReportConfig: ListReportConfig,\n factory: MetadataInstanceInterface,\n pageKey: string\n): void {\n const tableType = determineTableType(importParameters.manifest, pageKey);\n listReportConfig.table = factory.createInstance(PageType.ListReport, tableType, listReportConfig.table);\n const schemaDefinitions = (importParameters.jsonSchema as Definition).definitions as Definition;\n\n //Import table:\n importTable(tableType, listReportConfig, importParameters, pageKey);\n\n //Import ToolBar:\n listReportConfig.table.toolBar = factory.createInstance(PageType.ListReport, DefinitionName.ToolBar, {\n actions: {}\n });\n transferSettingsOfObject(\n listReportConfig.table.toolBar,\n importParameters.manifest,\n schemaDefinitions[DefinitionName.ToolBar],\n pageKey,\n importParameters.logger\n );\n if (schemaDefinitions[DefinitionName.ActionsLR]) {\n for (const actionProperty in schemaDefinitions[DefinitionName.ActionsLR].properties) {\n const actionKey = convertActionKey(actionProperty);\n listReportConfig.table.toolBar.actions[actionKey] = factory.createInstance(\n PageType.ListReport,\n DefinitionName.Action\n );\n transferSettingsOfObject(\n listReportConfig.table.toolBar.actions[actionKey],\n importParameters.manifest,\n schemaDefinitions[DefinitionName.Action],\n pageKey,\n importParameters.logger\n );\n }\n }\n\n //Import FilterBar:\n importFilterBar(listReportConfig, factory, importParameters, schemaDefinitions, pageKey);\n\n //Import Footer:\n listReportConfig.footer = { actions: {} };\n const footerAction = schemaDefinitions[DefinitionName.FooterActionsLR];\n if (footerAction) {\n for (const actionProperty in footerAction.properties) {\n const actionKey = convertActionKey(actionProperty);\n listReportConfig.footer.actions[actionKey] = factory.createInstance(\n PageType.ListReport,\n DefinitionName.FooterAction\n );\n transferSettingsOfObject(\n listReportConfig.footer.actions[actionKey],\n importParameters.manifest,\n schemaDefinitions[DefinitionName.Action],\n pageKey,\n importParameters.logger\n );\n }\n }\n}\n\n/**\n * Creates the configuration file content for a list report V2\n * @param {ImportListReportV2Parameters} importParameters - object comprising all input data\n *\n * @returns {ListReportConfig} - the configuration (JSON) for the list report\n */\nexport function createListReportConfig(importParameters: ImportListReportV2Parameters): ListReportConfig | undefined {\n // Initialize i18next\n initI18n();\n\n if (!importParameters.manifest[ManifestSection.generic]) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOFE'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const v2Pages = importParameters.manifest[ManifestSection.generic].pages as SapUiAppPagesV2;\n if (!v2Pages) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOPAGES', { appId: importParameters.manifest['sap.app']['id'] }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const factory = new Factory();\n //Instantiate Page\n const config = factory.createPageInstance(PageType.ListReport);\n\n const pageKeys: string[] = [];\n const v2Page = findListReportPageV2(importParameters.manifest[ManifestSection.generic].pages, pageKeys);\n if (!v2Page) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOLR'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n //Add manifest settings to config\n addSettings(importParameters, config, factory, pageKeys[0]);\n\n // Add flex changes to config\n importParameters.flex.forEach((change) => {\n if (parseChangeString(change)) {\n addFlex(config, change, importParameters.jsonSchema, importParameters.logger);\n }\n });\n addFragments(config, importParameters.manifest, v2Page, PageType.ListReport, importParameters.fragments);\n removeEmptySettings(config);\n return config;\n}\n", "import { transferSettingsOfObject, addFlex, determineTableType, addFragments, convertActionKey } from '../common/index';\nimport type { AnalyticalListPageConfig, SapUiAppPagesV2 } from '../../../../specification/v2';\nimport { ManifestSection, PageType } from '../../../../specification/common';\nimport { LogSeverity, log } from '../../../../extensionLogger';\nimport { initI18n } from '../../../../i18n/i18n';\nimport i18next from 'i18next';\nimport type { ImportALPV2Parameters } from '../../../../apiTypes';\nimport { DefinitionName, MANIFESTPATH, parseChangeString } from '../../../common';\nimport { findAnalyticalListPage, removeEmptySettings } from '../../import/utils';\nimport { MetadataInstanceFactoryV2 as Factory } from '../../export/factory';\nimport type { MetadataInstanceInterface } from '../../../common/decoration/factory';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Adds manifest settings to the config.json\n * @param {AnalyticalListPageConfig} analyticalListPageConfig - the configuration to be filled\n * @param {Manifest} manifest - manifest.json of the app\n * @param {object} jsonSchema - the app-specific schema\n * @param {MetadataInstanceInterface} factory - factory, for generating the access to reflect-metadata\n * @param {string} pageKey - key of the page in manifest\n * @param {ExtensionLogger} logger - instance for logging exceptions\n */\nfunction addSettings(\n importParameters: ImportALPV2Parameters,\n analyticalListPageConfig: AnalyticalListPageConfig,\n factory: MetadataInstanceInterface,\n pageKey: string\n): void {\n const tableType = determineTableType(importParameters.manifest, pageKey);\n const schemaDefinitions = (importParameters.jsonSchema as Definition).definitions as Definition;\n\n analyticalListPageConfig.table = factory.createInstance(\n PageType.AnalyticalListPage,\n `ALP${tableType}`,\n analyticalListPageConfig.table\n );\n transferSettingsOfObject(\n analyticalListPageConfig.table,\n importParameters.manifest,\n schemaDefinitions[`ALP${tableType}<LineItems>`],\n pageKey,\n importParameters.logger\n );\n // ToolBar:\n analyticalListPageConfig.table.toolBar = factory.createInstance(\n PageType.AnalyticalListPage,\n DefinitionName.ToolBar,\n {\n actions: {}\n }\n );\n transferSettingsOfObject(\n analyticalListPageConfig.table.toolBar,\n importParameters.manifest,\n schemaDefinitions[DefinitionName.ToolBar],\n pageKey,\n importParameters.logger\n );\n if (schemaDefinitions[DefinitionName.ActionsLR]) {\n for (const actionProperty in schemaDefinitions[DefinitionName.ActionsLR].properties) {\n const actionKey = convertActionKey(actionProperty);\n analyticalListPageConfig.table.toolBar.actions[actionKey] = factory.createInstance(\n PageType.AnalyticalListPage,\n DefinitionName.Action\n );\n transferSettingsOfObject(\n analyticalListPageConfig.table.toolBar.actions[actionKey],\n importParameters.manifest,\n schemaDefinitions[DefinitionName.Action],\n pageKey,\n importParameters.logger\n );\n }\n }\n //FilterBar:\n analyticalListPageConfig.filterBar = factory.createInstance(\n PageType.AnalyticalListPage,\n DefinitionName.AnalyticalListPageFilterBar,\n analyticalListPageConfig.filterBar\n );\n transferSettingsOfObject(\n analyticalListPageConfig.filterBar,\n importParameters.manifest,\n schemaDefinitions[DefinitionName.AnalyticalListPageFilterBar],\n pageKey,\n importParameters.logger\n );\n\n //Chart settings:\n analyticalListPageConfig.chart = factory.createInstance(\n PageType.AnalyticalListPage,\n 'ChartSettings',\n analyticalListPageConfig.chart\n );\n transferSettingsOfObject(\n analyticalListPageConfig.chart,\n importParameters.manifest,\n schemaDefinitions['ChartSettings'],\n pageKey,\n importParameters.logger\n );\n //Footer:\n analyticalListPageConfig.footer = { actions: {} };\n const footerAction = schemaDefinitions[DefinitionName.FooterActionsLR];\n if (footerAction) {\n for (const actionProperty in footerAction.properties) {\n const actionKey = convertActionKey(actionProperty);\n analyticalListPageConfig.footer.actions[actionKey] = factory.createInstance(\n PageType.AnalyticalListPage,\n DefinitionName.FooterAction\n );\n transferSettingsOfObject(\n analyticalListPageConfig.footer.actions[actionKey],\n importParameters.manifest,\n schemaDefinitions[DefinitionName.Action],\n pageKey,\n importParameters.logger\n );\n }\n }\n\n //KPI's:\n analyticalListPageConfig.keyPerformanceIndicators = {};\n const kpiCards =\n importParameters.manifest[ManifestSection.generic]['pages'][pageKey].component.settings\n .keyPerformanceIndicators;\n if (kpiCards) {\n Object.keys(kpiCards).forEach((kpiKey) => {\n analyticalListPageConfig.keyPerformanceIndicators[kpiKey] = factory.createInstance(\n PageType.AnalyticalListPage,\n 'KPISettings'\n );\n analyticalListPageConfig.keyPerformanceIndicators = factory.createInstance(\n PageType.AnalyticalListPage,\n 'KPISettings',\n analyticalListPageConfig.keyPerformanceIndicators\n );\n transferSettingsOfObject(\n analyticalListPageConfig.keyPerformanceIndicators[kpiKey],\n importParameters.manifest,\n schemaDefinitions['KPISettings'],\n pageKey,\n importParameters.logger,\n kpiKey\n );\n });\n }\n}\n\n/**\n * Creates the configuration file content for an analytical list page V2\n * @param {ImportALPV2Parameters} importParameters - object comprising all input data\n *\n * @returns {AnalyticalListPageConfig} - the configuration (JSON)\n */\nexport function createAnalyticalListPageConfig(\n importParameters: ImportALPV2Parameters\n): AnalyticalListPageConfig | undefined {\n // Initialize i18next\n initI18n();\n\n if (!importParameters.manifest[ManifestSection.generic]) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOFE'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const v2Pages = importParameters.manifest[ManifestSection.generic].pages as SapUiAppPagesV2;\n if (!v2Pages) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOPAGES', { appId: importParameters.manifest['sap.app']['id'] }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const factory = new Factory();\n //Instantiate Page\n const config = factory.createPageInstance(PageType.AnalyticalListPage);\n\n const pageKeys: string[] = [];\n const v2Page = findAnalyticalListPage(\n importParameters.manifest[ManifestSection.generic].pages,\n pageKeys,\n importParameters.logger\n );\n if (!v2Page) {\n return;\n }\n addSettings(importParameters, config, factory, pageKeys[0]);\n importParameters.flex.forEach((change) => {\n if (parseChangeString(change)) {\n addFlex(config, change, importParameters.jsonSchema);\n }\n });\n addFragments(config, importParameters.manifest, v2Page, PageType.AnalyticalListPage, importParameters.fragments);\n removeEmptySettings(config);\n return config;\n}\n", "import type {\n ObjectPageSectionData,\n ImportObjectPageV2Parameters,\n ObjectPageConfig,\n SapUiAppPageV2,\n SapUiGenericAppPageSettings as Settings\n} from '../../../../v2';\nimport { UIVOCABULARYALPHADOT } from '../../../../v2';\nimport { SchemaTag, MANIFESTPATH, VOCWITHSLASH, PropertyName, DefinitionName } from '../../../../v2';\nimport type { FlexChangesForTransfer, FlexForTransfer } from '../controls/table';\nimport { addFlexForTable } from '../controls/table';\nimport { LogSeverity, log } from '../../../../extensionLogger';\nimport type { ExtensionLogger } from '../../../../apiTypes';\nimport { findObjectPageV2, findCustomSectionExtensions } from '../utils';\nimport type { ChangeDefinition, DeprecatedProperties, SyncRule } from '../../../common';\nimport {\n DEFINITION_LINK_PREFIX,\n ControlType,\n convertActionKeyToStableId,\n getTargetFromCustomColumnRef,\n getReflectMetadata,\n getSectionTitle,\n getTextForDeprecated,\n parseChangeString,\n ActionTitlePrefix\n} from '../../../common';\nimport { ensureManifestSectionByPathV2 } from '../../export/manifest';\nimport { FE_TEMPLATE_V2_OBJECT_PAGE } from '../.../../../../../specification/v2/webapp/manifest/sapUiPageV2';\nimport i18next from 'i18next';\nimport { initI18n } from '../../../../i18n/i18n';\nimport { ManifestSection, PageType } from '../../../../specification/common';\nimport { MetadataInstanceFactoryV2 as Factory } from '../../export/factory';\nimport type { ObjectPageV2ConfigParameters, SectionPartProperties } from '../../types';\nimport { ActionTypeV2, SectionTypeV2 } from '../../types';\nimport { UIAnnotationTerms } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport { convertSelector, addFragments, convertActionKey } from '../common';\nimport type { Definition } from 'typescript-json-schema';\n\n// Comprises list of flexChanges that do not require a facet id\nconst SupportedFlexChangesWithoutFacetId = [ControlType.Avatar, ControlType.ObjectPageLayout, ControlType.DynamicPage];\n\n/**\n * Determines Facet ID from single string selector Id\n * @param {string} selectorId Selector ID\n * @returns {string} FacetID\n */\nfunction getSingleSelectorIdPart(selectorIdParts: string[], facetID: string) {\n const lastIdParts = selectorIdParts[0].split('-');\n const id = lastIdParts[lastIdParts.length - 1];\n if (selectorIdParts[0].indexOf('::action::') >= 0 || selectorIdParts[0].startsWith('action::')) {\n // Object Page ToolBar Actions\n facetID =\n lastIdParts[0].split('::action::')[0] ||\n lastIdParts[0].split(`${UIAnnotationTerms.LineItem}::`)[1].split('::')[0];\n facetID = `${ActionTitlePrefix}${facetID}`;\n } else if (\n selectorIdParts[0].indexOf(UIAnnotationTerms.LineItem) >= 0 ||\n selectorIdParts[0].indexOf('UI.LineItem') >= 0 ||\n selectorIdParts[0].indexOf('::Table') >= 0\n ) {\n facetID = lastIdParts[0].split('::Table')[0].split('::responsiveTable')[0];\n } else {\n const idParts = id.split('::');\n if (idParts.length > 1) {\n facetID = idParts[0];\n } else if (lastIdParts[0].indexOf('::') > -1) {\n facetID = lastIdParts[0].split('::')[0];\n }\n }\n return facetID;\n}\n\n/**\n * Determines Facet ID of flex change\n * @param {string} selectorId Control ID of flex change\n * @returns {string} FacetID\n */\nfunction getFacetID(selectorId: string): string {\n let facetID: string;\n const selectorIdParts: string[] = selectorId.split(':::');\n if (selectorIdParts.length === 1) {\n facetID = getSingleSelectorIdPart(selectorIdParts, facetID);\n } else if (selectorId.indexOf('sSmartTableId') >= 0) {\n for (const element of selectorIdParts) {\n if (element.startsWith('sSmartTableId')) {\n facetID = element\n .split('sSmartTableId::')[1]\n .split('::Table')[0]\n .split('/responsiveTable')[0]\n .replace(`::${UIAnnotationTerms.LineItem}`, `/@${UIAnnotationTerms.LineItem}`);\n break;\n }\n }\n } else {\n facetID = selectorIdParts[0];\n }\n return facetID;\n}\n\n/**\n * Prepares the list of flex changes\n * @param change - the flex change (UI Adaptation)\n * @returns {FlexChangesForTransfer} - list of prepared flex changes\n */\nfunction prepareFlexChanges(changes: string[], entitySet: string, logger?: ExtensionLogger): FlexChangesForTransfer {\n const result: FlexChangesForTransfer = {};\n const complexIdMatch = /.+DataField.+:::sSmartTableId::.+/;\n changes.forEach((changeString) => {\n try {\n const change = parseChangeString(changeString) as ChangeDefinition;\n if (\n change &&\n change.controlId?.includes(FE_TEMPLATE_V2_OBJECT_PAGE) &&\n change.controlId?.includes(entitySet)\n ) {\n let selectorId = change.controlId.split('--')[1].replace(/:3a:3a/g, '::');\n if (complexIdMatch.exec(selectorId) !== null) {\n selectorId = selectorId.split('template:::TableColumn:::')[1];\n }\n const facetID: string = getFacetID(selectorId);\n selectorId = convertSelector(selectorId)\n .replace(/:3a:3a/g, '::')\n .replace(/\\/@com.sap.vocabularies/g, '::com.sap.vocabularies');\n result[`${selectorId}::${change.content.property}`] = {\n controlId: selectorId,\n propertyId: change.content.property,\n facetId: facetID,\n newValue:\n change.content.newBinding !== undefined ? change.content.newBinding : change.content.newValue,\n controlType: change.controlType,\n creation: change.creation\n };\n }\n } catch (error) {\n log(\n logger,\n {\n severity: LogSeverity.Error,\n message: i18next.t('FLEXERROR')\n },\n ...error\n );\n }\n });\n const sortedList = Object.entries(result).sort(\n (a: [string, any], b: [string, any]) => a[1].creation - b[1].creation\n );\n return sortedList.reduce((accum, [k, v]) => {\n accum[k] = v;\n return accum;\n }, {});\n}\n\n/**\n * Returns the type of a given section\n * @param schemaSection - current section\n * @returns {SectionTypeV2} - type of section, differentiated by level (Sub/Section)\n */\nconst getSectionType = (schemaSection: object): SectionTypeV2 => {\n let reference;\n if (schemaSection['$ref']) {\n reference = schemaSection['$ref'].includes('<') ? schemaSection['$ref'].split('<')[0] : schemaSection['$ref'];\n return reference.replace(DEFINITION_LINK_PREFIX, '');\n } else if (schemaSection['properties']?.['subsections']?.['$ref']) {\n reference = schemaSection['properties']['subsections']['$ref'];\n reference = reference.includes('<') ? reference.split('<')[0] : reference;\n return reference.replace(DEFINITION_LINK_PREFIX, '');\n } else if (schemaSection['properties']?.['subsections']) {\n return SectionTypeV2.SubSection;\n }\n};\n\n/**\n * Import of flex changes of a table to the config JSON of OP\n * @param flexChanges - list of flex changes (pre-processed by prepareFlexChanges)\n * @param propertyKey - key of the current property in the app schema\n * @param configPart - part of the configuration to be filled\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param sectionTitle - title of the section (optional)\n * @param sectionId - ID of the given section (optional)\n */\nfunction importFlexChangesOfTable(\n flexChanges: FlexChangesForTransfer,\n propertyKey: string,\n configPart: { [key: string]: any },\n importParameters: ImportObjectPageV2Parameters,\n sectionTitle: string,\n sectionId: string\n) {\n let facetIds;\n if (sectionTitle) {\n facetIds = [sectionTitle.replace(/@/g, '')];\n } else {\n facetIds = [sectionId.replace(/@/g, ''), sectionId?.replace(/::@com.sap.vocabularies/g, VOCWITHSLASH)];\n }\n\n for (const selector in flexChanges) {\n const flexChange = flexChanges[selector];\n const propertyIdMatch = flexChange.propertyId === propertyKey;\n const isTableColumn = propertyKey === 'columns' && flexChange.controlType === ControlType.TableColumn;\n if ((propertyIdMatch || isTableColumn) && facetIds.indexOf(flexChange?.facetId) > -1) {\n addFlexForTable(configPart, flexChange, importParameters.jsonSchema);\n }\n }\n}\n\n/**\n * RegEx check of the control Id and/or the section Id against the selector of a flex change\n * @param schemaDefinition - current section of the app specific schema\n * @param flexChange - flex change\n * @param controlIdChecker - RegEx for the controlId\n * @param selectionIdChecker - RegEx for the selectionId\n * @param sectionId - title of the section (optional)\n * @param controlId - ID of the given control, for e.g. GroupElement, Action (optional)\n * @returns the result of all checks\n */\nfunction matchSelector(\n schemaDefinition: Definition,\n flexChange: FlexForTransfer,\n controlIdChecker: RegExp,\n selectionIdChecker: RegExp,\n sectionId?: string,\n controlId?: string\n): boolean {\n let idMatch = false,\n controlIdMatch = false;\n const idElementChecker = (arr, target) => target.every((v) => arr.includes(v));\n\n if (controlId) {\n idMatch = controlIdMatch = controlIdChecker.test(flexChange.controlId);\n if (sectionId) {\n idMatch = controlIdMatch && selectionIdChecker.test(flexChange.controlId);\n }\n } else if (sectionId) {\n idMatch = selectionIdChecker.test(flexChange.controlId);\n }\n const controlIdParts = flexChange.controlId.split('::');\n\n return (\n (flexChange.controlType === ControlType.GroupElement && controlIdMatch) ||\n (flexChange.facetId?.includes(ActionTitlePrefix) && !sectionId && idMatch) ||\n (sectionId && idElementChecker(controlIdParts, sectionId.split('::')) && idMatch) ||\n (schemaDefinition.title && idElementChecker(controlIdParts, schemaDefinition.title.split('::'))) ||\n (!flexChange.facetId && SupportedFlexChangesWithoutFacetId.includes(flexChange.controlType as ControlType))\n );\n}\n\n/**\n * Import of (regular) flex changes to the config JSON of OP\n * @param schemaDefinition - current section of the app specific schema\n * @param configPart - part of the configuration to be filled\n * @param flexChanges - list of flex changes (pre-processed by prepareFlexChanges)\n * @param propertyKey - key of the current property in the app schema\n * @param sectionId - title of the section (optional)\n * @param elementId - stable ID part of the given element, for e.g. GroupElement, Action (optional)\n */\nfunction importFlexChanges(\n schemaDefinition: Definition,\n configPart: { [key: string]: any },\n flexChanges: FlexChangesForTransfer,\n propertyKey: string,\n sectionId?: string,\n elementId?: string\n) {\n const controlIdChecker = new RegExp(`.*${elementId}`);\n const selectionIdChecker = new RegExp(`.*${sectionId}`);\n\n for (const selector in flexChanges) {\n const flexChange = flexChanges[selector];\n //Property match?\n if (flexChange.propertyId !== propertyKey) {\n continue;\n }\n //Control type match?\n if (flexChange.controlType !== schemaDefinition.properties[flexChange.propertyId]?.[SchemaTag.controlType]) {\n continue;\n }\n const match = matchSelector(\n schemaDefinition,\n flexChange,\n controlIdChecker,\n selectionIdChecker,\n sectionId,\n elementId\n );\n if (match) {\n configPart[propertyKey] = flexChange.newValue;\n }\n }\n}\n\n/**\n * Checks for deprecated properties and writes them to the log\n * @param manifestSection - given section in the manifest\n * @param deprecatedProperties - list of deperecated properties\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param manifestPath - manifest path, as calcualted by the sync rule\n */\nfunction checkDeprecatedProperties(\n manifestSection: object,\n deprecatedProperties: DeprecatedProperties,\n importParameters: ImportObjectPageV2Parameters,\n manifestPath: string\n) {\n if (manifestSection && deprecatedProperties) {\n for (const key in manifestSection) {\n const deprecated = deprecatedProperties[key];\n if (deprecated) {\n log(importParameters.logger, {\n severity: LogSeverity.Warning,\n message: getTextForDeprecated(key, deprecated),\n location: {\n path: 'webapp/manifest.json/',\n range: manifestPath.split('/')\n }\n });\n delete deprecatedProperties[key];\n }\n }\n }\n}\n\n/**\n * Imports manifest settings to the object page config\n * @param syncRule - sync rule for accessing the reflect-metadata\n * @param pageKeys - list of page keys (comprises the one entry describing the given page)\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param configPart - part of the configuration to be filled\n * @param propertyKey - key of the current property of the schema definition\n * @param deprecatedProperties - list od deperecated properties\n * @param sectionId - ID of the given section (optional)\n * @param sectionTitle - title of the section (optional)\n */\nfunction importManifestSetting(\n syncRule: SyncRule,\n pageKeys: string[],\n importParameters: ImportObjectPageV2Parameters,\n configPart: { [key: string]: any },\n propertyKey: string,\n deprecatedProperties: DeprecatedProperties,\n sectionPart?: SectionPartProperties\n) {\n const sectionIdInManifest = sectionPart?.id\n ? sectionPart.id.replace(/\\/@/g, '::').replace(/@com.sap/g, 'com.sap')\n : undefined;\n let manifestPath: string;\n let manifestSection: object;\n if (sectionPart?.title) {\n manifestPath = syncRule.manifest.path(pageKeys, {}, sectionPart.title);\n manifestSection = ensureManifestSectionByPathV2(importParameters.manifest, manifestPath);\n if (Object.values(manifestSection).length === 0) {\n manifestPath = syncRule.manifest.path(pageKeys, {}, sectionIdInManifest);\n manifestSection = ensureManifestSectionByPathV2(importParameters.manifest, manifestPath);\n }\n } else {\n manifestPath = syncRule.manifest.path(pageKeys, {}, sectionIdInManifest);\n manifestSection = ensureManifestSectionByPathV2(importParameters.manifest, manifestPath);\n }\n const importHandler = syncRule.manifest.import;\n if (importHandler && typeof importHandler === 'function') {\n const value = importHandler(manifestSection, sectionPart?.id);\n if (value !== undefined) {\n configPart[propertyKey] = value;\n }\n } else {\n const manifestKey = syncRule.manifest.key || propertyKey;\n if (manifestKey in manifestSection) {\n configPart[propertyKey] = manifestSection[manifestKey];\n }\n }\n // Check for deprecated properties.\n checkDeprecatedProperties(manifestSection, deprecatedProperties, importParameters, manifestPath);\n return manifestSection;\n}\n\n/**\n * Transfers settings from manifest and flexChanges to object page config\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param configPart - part of the configuration to be filled\n * @param schemaDefinition - current section of the app specific schema\n * @param configParameters - comprises page keys and flex changes\n * @param sectionPart - structure comprising the section information\n * @param elementId - stable ID part of the given element (action, column, ...) (optional)\n */\nfunction transferSettingsAndFlexChanges(\n importParameters: ImportObjectPageV2Parameters,\n configPart: { [key: string]: any },\n schemaDefinition: Definition,\n configParameters: ObjectPageV2ConfigParameters,\n sectionPart?: SectionPartProperties,\n elementId?: string\n): void {\n if (!schemaDefinition) {\n return;\n }\n const deprecatedProperties: DeprecatedProperties = configPart?.getDeprecated ? configPart.getDeprecated() : {};\n for (const propertyKey in schemaDefinition.properties || schemaDefinition) {\n const syncRule = getReflectMetadata(configPart, propertyKey);\n if (propertyKey === 'columns' || syncRule?.flex) {\n if (\n sectionPart?.type?.startsWith('ObjectPageSectionTableV2') ||\n sectionPart?.type?.startsWith('ObjectPageSubSectionTableV2')\n ) {\n importFlexChangesOfTable(\n configParameters.flexChanges,\n propertyKey,\n configPart,\n importParameters,\n sectionPart.title,\n sectionPart.id\n );\n } else {\n const facetId = sectionPart?.title || sectionPart?.id;\n importFlexChanges(\n schemaDefinition,\n configPart,\n configParameters.flexChanges,\n propertyKey,\n facetId,\n elementId\n );\n }\n } else if (syncRule?.manifest) {\n importManifestSetting(\n syncRule,\n configParameters.pageKeys,\n importParameters,\n configPart,\n propertyKey,\n deprecatedProperties,\n sectionPart\n );\n }\n }\n}\n\n/**\n *\n * @param actionType - type of action\n * @param configActionId - id of action in config\n * @param {ActionTypeV2|string} importTypeId - type of action that was be initiated\n * @returns {string} actionId - to be used for import of flex changes\n */\nfunction getActionId(actionType: string, configActionId: string, importTypeId: string, facetId: string): string {\n let actionId = convertActionKeyToStableId(configActionId);\n if (actionType === ActionTypeV2.Form) {\n actionId = `action::${actionId}::${facetId}::${importTypeId}`;\n } else if (actionType === ActionTypeV2.OPFooter) {\n actionId = `action::${actionId}::Determining`;\n } else if (actionType === ActionTypeV2.OPToolBar) {\n actionId = actionId.includes('sAction::')\n ? `action::${actionId.split('sAction::')[1]}`\n : `action::${actionId.replace(':2f', '::')}`;\n }\n return actionId.replace(/@/g, '');\n}\n\n/**\n * Fills the action of the configuration\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {object} actionProperties - current properties' list (of action)\n * @param {object} configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig\n * @param {ActionTypeV2|string} importTypeId - type of action that should be initiated\n */\nfunction fillActions(\n importParameters: ImportObjectPageV2Parameters,\n actionProperties: object,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters,\n importTypeId: ActionTypeV2 | string,\n facetId?: string\n): void {\n configPart[PropertyName.actions] = {};\n const actionType = importTypeId.split('::').pop();\n if (configParameters.flexChanges && Object.keys(configParameters.flexChanges).length > 0) {\n const sectionPart: SectionPartProperties = {};\n if (facetId) {\n sectionPart.id = facetId;\n }\n for (const actionProperty in actionProperties) {\n const configActionId = convertActionKey(actionProperty);\n const actionId = getActionId(actionType, configActionId, importTypeId, facetId);\n if (actionId) {\n configPart[PropertyName.actions][configActionId] = configParameters.factory.createInstance(\n PageType.ObjectPage,\n actionType\n );\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[PropertyName.actions][configActionId],\n (importParameters.jsonSchema as Definition).definitions[actionType] as Definition,\n configParameters,\n sectionPart,\n actionId\n );\n }\n if (\n configPart[PropertyName.actions]?.[configActionId] &&\n Object.keys(configPart[PropertyName.actions][configActionId]).length === 0\n ) {\n delete configPart[PropertyName.actions][configActionId];\n }\n }\n }\n if (Object.keys(configPart[PropertyName.actions]).length === 0) {\n delete configPart[PropertyName.actions];\n }\n}\n\n/**\n * Fills the fields of an object page form\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {sectionPartProperties} sectionPart - current properties' list of form section\n * @param fieldProperties - current properties' list (of fields)\n * @param configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig\n */\nfunction fillFields(\n importParameters: ImportObjectPageV2Parameters,\n sectionPart: SectionPartProperties,\n fieldProperties: object,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters\n): void {\n let fieldId: string;\n configPart[sectionPart.id]['form']['fields'] = {};\n for (const fieldProperty in fieldProperties) {\n fieldId = `${fieldProperty}::GroupElement`;\n configPart[sectionPart.id]['form']['fields'][fieldProperty] = configParameters.factory.createInstance(\n PageType.ObjectPage,\n 'Field'\n );\n const elementId = sectionPart.title.includes(UIVOCABULARYALPHADOT)\n ? `${sectionPart.id.replace(/@/g, '')}::${fieldId}`\n : `${sectionPart.title}::${fieldId}`;\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id]['form']['fields'][fieldProperty],\n (importParameters.jsonSchema as Definition).definitions[DefinitionName.Field] as Definition,\n configParameters,\n {},\n elementId\n );\n if (Object.keys(configPart[sectionPart.id]['form']['fields'][fieldProperty]).length === 0) {\n delete configPart[sectionPart.id]['form']['fields'][fieldProperty];\n }\n }\n if (Object.keys(configPart[sectionPart.id]['form']['fields']).length === 0) {\n delete configPart[sectionPart.id]['form']['fields'];\n }\n}\n\n/**\n * Adjusts the app schema by choosing the right table definition, depending on the table type\n * @param tableType - the type of the given table\n * @param {SectionPartProperties} sectionPart - current properties' list\n * @param schemaDefinitions - definitions' section of the app schema\n * @returns the right schema definition for the given table\n */\nfunction prepareTableSchema(\n tableType: string,\n sectionPart: SectionPartProperties,\n schemaDefinitions: Definition\n): Definition {\n let tableSchema: object;\n if (tableType === 'TreeTable' || tableType === 'AnalyticalTable' || tableType === 'GridTable') {\n tableSchema = schemaDefinitions[`ObjectPage${tableType}<${sectionPart.id}>`] as Definition;\n } else {\n tableSchema = schemaDefinitions[`ObjectPageResponsiveTable<${sectionPart.id}>`] as Definition;\n }\n\n return tableSchema;\n}\n\n/**\n * Fills the table section of the object page config\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {SectionPartProperties} sectionPart - current properties' list\n * @param {Settings} manifestSettings - object page settings section of the manifest\n * @param {object} configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig\n */\nfunction fillTableInConfig(\n importParameters: ImportObjectPageV2Parameters,\n sectionPart: SectionPartProperties,\n manifestSettings: Settings,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters\n): void {\n const manifestKey = sectionPart.title || sectionPart.id.replace('@com.sap', 'com.sap');\n const manifestSection = manifestSettings && manifestSettings.sections && manifestSettings.sections[manifestKey];\n\n if (manifestSection || configParameters.flexChanges) {\n const tableType: string = manifestSection?.tableSettings?.type || 'ResponsiveTable';\n\n //Instantiate metadata\n const OPtable = configParameters.factory.createInstance(PageType.ObjectPage, `ObjectPage${tableType}`, {\n toolBar: {}\n });\n configPart[sectionPart.id] = configParameters.factory.createInstance(PageType.ObjectPage, sectionPart.type, {\n table: {}\n });\n configPart[sectionPart.id][PropertyName.table] = OPtable;\n\n const schemaDefinitions = (importParameters.jsonSchema as Definition).definitions;\n const tableSchema = prepareTableSchema(tableType, sectionPart, schemaDefinitions);\n //Transfer settings of (sub)section\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id],\n sectionPart.schema,\n configParameters,\n { title: sectionPart.title }\n );\n //Transfer settings of table\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id][PropertyName.table],\n tableSchema,\n configParameters,\n sectionPart\n );\n //Transfer settings of table toolbar actions\n const toolBarActions = JSON.parse(JSON.stringify(schemaDefinitions))[\n `Actions<${sectionPart.id}>`\n ] as Definition;\n if (toolBarActions?.properties) {\n const facetId = sectionPart?.title\n ? sectionPart.title.replace(/@/g, '::').replace(/::com/g, 'com')\n : sectionPart?.id?.replace(/@/g, '::').replace(/::com/g, 'com');\n fillActions(\n importParameters,\n toolBarActions.properties,\n configPart[sectionPart.id][PropertyName.table]['toolBar'],\n configParameters,\n ActionTypeV2.OPToolBar,\n facetId\n );\n }\n if (Object.keys(configPart[sectionPart.id][PropertyName.table]['toolBar']).length === 0) {\n delete configPart[sectionPart.id][PropertyName.table]['toolBar'];\n }\n }\n}\n\n/**\n * Fills custom columns in a V2 object page config JSON\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {string} escapedSectionId - escaped version of the section ID\n * @param {string} sectionTitle - title of current section, if available\n * @param {object} configPart - the given part of the object page config\n * @param {SapUiAppPageV2} v2Page - v2 page from manifest.\n */\nfunction fillCustomColumnsInConfig(\n importParameters: ImportObjectPageV2Parameters,\n escapedSectionId: string,\n configPart: object,\n v2Page: SapUiAppPageV2\n) {\n const customColumnSchemaProp = (\n (importParameters.jsonSchema as Definition).definitions[escapedSectionId] as Definition\n ).properties.custom as Definition;\n const customColumnTarget = customColumnSchemaProp\n ? getTargetFromCustomColumnRef(customColumnSchemaProp.$ref)\n : undefined;\n if (customColumnTarget) {\n const objectPageSectionData: ObjectPageSectionData = {\n key: escapedSectionId.replace('@', ''),\n target: customColumnTarget\n };\n addFragments(\n configPart[escapedSectionId],\n importParameters.manifest,\n v2Page,\n PageType.ObjectPage,\n importParameters.fragments,\n objectPageSectionData\n );\n }\n}\n\n/**\n * Fills the sections and subsections of the object page config (recursive function)\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {sectionPartProperties} sectionPart - current properties' list of chart section\n * @param {Settings} manifestSettings - object page settings section of the manifest\n * @param {object} configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig\n */\nfunction fillChartSection(\n importParameters: ImportObjectPageV2Parameters,\n sectionPart: SectionPartProperties,\n manifestSettings: Settings,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters\n) {\n const manifestKey = sectionPart.id.replace('@com.sap', 'com.sap');\n const manifestSection = manifestSettings && manifestSettings.sections && manifestSettings.sections[manifestKey];\n configPart[sectionPart.id] = configParameters.factory.createInstance(PageType.ObjectPage, sectionPart.type, {\n chart: {}\n });\n configPart[sectionPart.id][PropertyName.chart] = configParameters.factory.createInstance(\n PageType.ObjectPage,\n 'ObjectPageChart'\n );\n if (manifestSection || configParameters.flexChanges) {\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id],\n sectionPart.schema,\n configParameters,\n { title: sectionPart.title }\n );\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id][PropertyName.chart],\n (importParameters.jsonSchema as Definition).definitions[DefinitionName.ObjectPageChart] as Definition,\n configParameters,\n sectionPart\n );\n }\n}\n\n/**\n * Fills the form section of the object page config\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {sectionPartProperties} sectionPart - current properties' list of form section\n * @param {object} configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig\n */\nfunction fillFormSection(\n importParameters: ImportObjectPageV2Parameters,\n sectionPart: SectionPartProperties,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters\n) {\n const formId = sectionPart.schema['properties']['form']['$ref'].split('SectionForm')[1];\n configPart[sectionPart.id] = configParameters.factory.createInstance(PageType.ObjectPage, sectionPart.type, {\n form: {}\n });\n if (configParameters.flexChanges) {\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id],\n sectionPart.schema,\n configParameters,\n { title: sectionPart.title }\n );\n }\n const formActions = (importParameters.jsonSchema as Definition).definitions[\n `SectionActions${formId}`\n ] as Definition;\n const facetId = sectionPart?.title\n ? sectionPart.title.replace(/@/g, '::').replace(/::com/g, 'com')\n : sectionPart?.id?.replace(/@/g, '::').replace(/::com/g, 'com');\n if (formActions?.properties) {\n fillActions(\n importParameters,\n formActions.properties,\n configPart[sectionPart.id]['form'],\n configParameters,\n ActionTypeV2.Form,\n facetId\n );\n }\n const formFields = (importParameters.jsonSchema as Definition).definitions[`SectionFields${formId}`] as Definition;\n if (formFields.properties) {\n fillFields(importParameters, sectionPart, formFields.properties, configPart, configParameters);\n }\n if (Object.keys(configPart[sectionPart.id]['form']).length === 0) {\n delete configPart[sectionPart.id]['form'];\n }\n if (Object.keys(configPart[sectionPart.id]).length === 0) {\n delete configPart[sectionPart.id];\n }\n}\n\n/**\n * Fills the subsection of the object page config\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {sectionPartProperties} sectionPart - current properties' list of subsection\n * @param {Settings} manifestSettings - object page settings section of the manifest\n * @param {object} configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig\n */\nfunction fillSubSection(\n importParameters: ImportObjectPageV2Parameters,\n sectionPart: SectionPartProperties,\n manifestSettings: Settings,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters\n) {\n configPart[sectionPart.id] = configParameters.factory.createInstance(PageType.ObjectPage, sectionPart.type, {\n subsections: {}\n });\n if (configParameters.flexChanges) {\n transferSettingsAndFlexChanges(\n importParameters,\n configPart[sectionPart.id],\n sectionPart.schema,\n configParameters,\n sectionPart\n );\n }\n let currentSchemaSection;\n const schemaProperties = sectionPart.schema.properties;\n if ((schemaProperties?.subsections as Definition)?.properties) {\n currentSchemaSection = (schemaProperties.subsections as Definition).properties;\n } else {\n currentSchemaSection = schemaProperties;\n }\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n fillSectionsInConfig(\n importParameters,\n currentSchemaSection,\n manifestSettings,\n configPart[sectionPart.id]['subsections'],\n configParameters\n );\n if (Object.keys(configPart[sectionPart.id]['subsections']).length < 1) {\n delete configPart[sectionPart.id]['subsections'];\n }\n}\n\n/**\n * Fills the sections and subsections of the object page config (recursive function)\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param {object} sectionProperties - current properties' list (of sections or subsections)\n * @param {Settings} manifestSettings - object page settings section of the manifest\n * @param {object} configPart - the given part of the object page config\n * @param {ObjectPageV2ConfigParameters} configParameters - container for factory, pageKeys, flexChanges, v2Page, ObjectPageConfig.\n */\nfunction fillSectionsInConfig(\n importParameters: ImportObjectPageV2Parameters,\n sectionProperties: object,\n manifestSettings: Settings,\n configPart: object,\n configParameters: ObjectPageV2ConfigParameters\n): void {\n const appSchemaDefinitions = (importParameters.jsonSchema as Definition).definitions;\n for (const sectionId in sectionProperties) {\n const escapedSectionId = sectionId.replace(/\\/@/g, '::');\n const sectionPart: SectionPartProperties = {\n id: escapedSectionId,\n type: getSectionType(sectionProperties[sectionId]),\n schema: sectionProperties[sectionId],\n title: getSectionTitle(sectionProperties[sectionId], importParameters.jsonSchema)\n };\n if (sectionPart.schema['$ref'] && sectionPart.type) {\n switch (sectionPart.type) {\n case SectionTypeV2.SectionTable:\n case SectionTypeV2.SubSectionTable: {\n sectionPart.schema = appSchemaDefinitions[`${sectionPart.type}<${sectionId}>`] as Definition;\n fillTableInConfig(importParameters, sectionPart, manifestSettings, configPart, configParameters);\n // Custom column ref\n fillCustomColumnsInConfig(importParameters, escapedSectionId, configPart, configParameters.v2Page);\n break;\n }\n case SectionTypeV2.SectionChart:\n case SectionTypeV2.SubSectionChart: {\n // Section without subsections\n sectionPart.schema = appSchemaDefinitions[`${sectionPart.type}<${sectionId}>`] as Definition;\n fillChartSection(importParameters, sectionPart, manifestSettings, configPart, configParameters);\n break;\n }\n case SectionTypeV2.SectionForm:\n case SectionTypeV2.SubSectionForm: {\n sectionPart.schema = appSchemaDefinitions[`${sectionPart.type}<${sectionId}>`] as Definition;\n fillFormSection(importParameters, sectionPart, configPart, configParameters);\n break;\n }\n case SectionTypeV2.Section:\n case SectionTypeV2.SectionAddress:\n case SectionTypeV2.SubSectionAddress:\n case SectionTypeV2.SectionContact:\n case SectionTypeV2.SubSectionContact:\n case SectionTypeV2.SubSection: {\n // Section with subsections\n sectionPart.schema = appSchemaDefinitions[`${sectionPart.type}<${sectionId}>`] as Definition;\n fillSubSection(importParameters, sectionPart, manifestSettings, configPart, configParameters);\n break;\n }\n }\n } else if (sectionPart.schema.properties?.['subsections']) {\n sectionPart.schema = appSchemaDefinitions[`${sectionPart.type}<${sectionId}>`] as Definition;\n fillSubSection(importParameters, sectionPart, manifestSettings, configPart, configParameters);\n }\n }\n}\n\n/**\n * Fill properties of object page confg based on manifest settings\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n * @param pageKeys - list of page keys (comprises the one entry describing the given page)\n * @param flexChangesForTransfer - list of flex changes (pre-processed by prepareFlexChanges)\n * @param v2Page - page definition in manifest.json\n * @param {MetadataInstanceInterface} factory - factory, for generating the access to reflect-metadata\n * @returns {ObjectPageConfig} - the object page configuration (JSON)\n */\nfunction fillConfig(\n importParameters: ImportObjectPageV2Parameters,\n configParameters: ObjectPageV2ConfigParameters\n): ObjectPageConfig {\n const objectPageConfig: ObjectPageConfig = configParameters.factory.createPageInstance(PageType.ObjectPage);\n\n const manifestSettings = configParameters.v2Page.component.settings;\n // Transfer page information\n transferSettingsAndFlexChanges(\n importParameters,\n objectPageConfig,\n importParameters.jsonSchema['properties'],\n configParameters\n );\n\n // Transfer header information\n objectPageConfig.header = configParameters.factory.createInstance(\n PageType.ObjectPage,\n DefinitionName.ObjectPageHeader\n );\n const definitions = (importParameters.jsonSchema as Definition).definitions;\n const schemaDefinition = definitions[DefinitionName.ObjectPageHeader]\n ? definitions[DefinitionName.ObjectPageHeader]\n : definitions['ObjectPageHeader<GenericActions>'];\n transferSettingsAndFlexChanges(\n importParameters,\n objectPageConfig.header,\n schemaDefinition as Definition,\n configParameters\n );\n const headerAction = definitions[DefinitionName.HeaderActions] as Definition;\n if (headerAction) {\n fillActions(\n importParameters,\n headerAction.properties,\n objectPageConfig.header,\n configParameters,\n ActionTypeV2.Header\n );\n }\n objectPageConfig.footer = {};\n const footerAction = definitions[DefinitionName.FooterActions] as Definition;\n if (footerAction) {\n fillActions(\n importParameters,\n footerAction.properties,\n objectPageConfig.footer,\n configParameters,\n ActionTypeV2.OPFooter\n );\n }\n\n // Transfer Layout information\n objectPageConfig.layout = configParameters.factory.createInstance(PageType.ObjectPage, 'ObjectPageLayout');\n transferSettingsAndFlexChanges(\n importParameters,\n objectPageConfig.layout,\n definitions[DefinitionName.ObjectPageLayout] as Definition,\n configParameters\n );\n if (Object.keys(objectPageConfig.layout).length === 0) {\n delete objectPageConfig.layout;\n }\n\n // Fill sections and subsections\n objectPageConfig.sections = {};\n const sections = definitions[DefinitionName.Sections] as Definition;\n if (sections) {\n fillSectionsInConfig(\n importParameters,\n sections.properties,\n manifestSettings,\n objectPageConfig.sections,\n configParameters\n );\n }\n\n // Find custom sections\n const customSections = findCustomSectionExtensions(importParameters.manifest, importParameters.entitySet);\n if (Object.keys(customSections).length > 0) {\n objectPageConfig.sections.custom = [];\n for (const sectionId in customSections) {\n const customSection =\n 'fragmentName' in customSections[sectionId]\n ? configParameters.factory.createInstance(PageType.ObjectPage, 'ObjectPageCustomSectionFragment')\n : configParameters.factory.createInstance(PageType.ObjectPage, 'ObjectPageCustomSectionView');\n const customSectionDefinition =\n definitions[\n 'fragmentName' in customSections[sectionId]\n ? 'ObjectPageCustomSectionFragment'\n : 'ObjectPageCustomSectionView'\n ];\n transferSettingsAndFlexChanges(\n importParameters,\n customSection,\n customSectionDefinition as Definition,\n configParameters,\n { id: sectionId }\n );\n objectPageConfig.sections.custom.push(customSection);\n }\n }\n\n return objectPageConfig;\n}\n\n/**\n * Creates the configuration (file content) for a V2 object page\n * @param {ImportObjectPageV2Parameters} importParameters - object comprising all input data\n *\n * @returns {ObjectPageConfig} - the object page configuration (JSON)\n */\nexport function createObjectPageConfigV2(importParameters: ImportObjectPageV2Parameters): ObjectPageConfig | undefined {\n // Initialize i18next\n initI18n();\n if (!importParameters.manifest[ManifestSection.generic]) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOFE'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const pageKeys: string[] = [];\n const v2Pages = importParameters.manifest[ManifestSection.generic].pages;\n if (!v2Pages) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOPAGES', { appId: importParameters.manifest['sap.app']['id'] }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const entitySet = importParameters.entitySet;\n const v2Page: SapUiAppPageV2 = findObjectPageV2(v2Pages, importParameters.entitySet, pageKeys);\n if (!v2Page) {\n log(importParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOENTITYSET', { entitySet }),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n const flexChangesForTransfer = prepareFlexChanges(importParameters.flex, entitySet);\n\n const factory = new Factory();\n\n //Fill config.json with manifest settings and flex changes\n return fillConfig(importParameters, { pageKeys, flexChanges: flexChangesForTransfer, v2Page, factory });\n}\n", "import type { SapUiAppPageV2, SapUiAppPagesV2, Page, Pages } from '../../../../specification/v2';\nimport type { Manifest } from '../../../../specification/common';\nimport { FioriElementsVersion, PageType, ManifestSection } from '../../../../specification/common';\nimport { AppProvider } from '../../../common/appProvider';\nimport { transferSettingsOfObject } from '../common';\nimport { createListReportConfig } from '../pages/listReport';\nimport { createAnalyticalListPageConfig } from '../pages/analyticalListPage';\nimport { createObjectPageConfigV2 } from '../pages/objectPage';\nimport { AppSettings } from '../../application';\nimport type { FileData, Files } from '../../../common';\nimport { getSchemaFilePath, generatePageId, getPageTypeV2 } from '../../../common';\nimport { SchemaType } from '../../../../specification/schemaAccess';\nimport * as pageV2 from '../../../../specification/v2/webapp/manifest/sapUiPageV2';\nimport type {\n ExtensionLogger,\n ImportALPV2Parameters,\n ImportListReportV2Parameters,\n ImportObjectPageV2Parameters\n} from '../../../../v2';\n\n/**\n * Method which generates id for passed page\n * @param page - Generic Page object.\n * @returns {string} Generated page id\n */\nfunction generateId(page: SapUiAppPageV2): string {\n return generatePageId(getPageTypeV2(page.component.name), page.entitySet);\n}\n\nfunction getPageConfigsAndNavigations(\n page: Page,\n v2Page: SapUiAppPageV2,\n flex: string[],\n manifest: any,\n schemas: any,\n fragments: FileData[],\n pages: { [key: string]: Page }\n) {\n page.navigation = {};\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const targets: { [key: string]: Page } = getPagesAndConfigs(v2Page.pages, flex, manifest, schemas, fragments);\n for (const pageId in targets) {\n const target = targets[pageId];\n pages[pageId] = target;\n }\n for (const v2ChildPageName in v2Page.pages) {\n const id = generateId(v2Page.pages[v2ChildPageName]);\n page.navigation[id] = targets[id].navigationProperty\n ? `${page.entitySet}.${targets[id].navigationProperty}`\n : page.entitySet;\n }\n}\n\n/**\n * Sets up page definitions, including the configurations for them\n * @param {SapUiAppPagesV2} v2Pages - lisr of all pages\n * @param flex - list of flexibility changes\n * @param manifest - manifest.json of the app\n * @param schemas - list of all app-specific schemas\n * @param fragments - list of fragments\n * @param {ExtensionLogger} logger - logger for messages\n * @returns an index table of page definitions\n */\nfunction getPagesAndConfigs(\n v2Pages: SapUiAppPagesV2,\n flex: string[],\n manifest,\n schemas,\n fragments?: FileData[],\n logger?: ExtensionLogger\n): { [key: string]: Page } {\n const pages: { [key: string]: Page } = {};\n for (const v2PageName in v2Pages) {\n const v2Page = v2Pages[v2PageName];\n const id = generateId(v2Page);\n const page: Page = {\n pageType: getPageTypeV2(v2Page.component.name),\n entitySet: v2Page.entitySet,\n ...(v2Page.navigationProperty && { navigationProperty: v2Page.navigationProperty }),\n ...(v2Page.defaultLayoutType && { defaultLayoutType: v2Page.defaultLayoutType })\n };\n pages[id] = page;\n\n // Get the JSON schema for the page. If no page specific schema exists, fall back top the generic schema for the page type\n const jsonSchema: string =\n Object.keys(schemas).find((element) => element.includes(id)) ||\n Object.keys(schemas).find((element) => element.includes(id.slice(0, -1))) ||\n Object.keys(schemas).find((element) => element.includes(page.pageType));\n\n // convert settings to config\n if (jsonSchema) {\n if (page.pageType === PageType.ListReport) {\n const importParameters: ImportListReportV2Parameters = {\n manifest,\n flex,\n jsonSchema: schemas[jsonSchema],\n fragments,\n logger\n };\n page.config = createListReportConfig(importParameters);\n } else if (page.pageType === PageType.AnalyticalListPage) {\n const importParameters: ImportALPV2Parameters = {\n manifest,\n flex,\n jsonSchema: schemas[jsonSchema],\n fragments,\n logger\n };\n page.config = createAnalyticalListPageConfig(importParameters);\n } else {\n const importParameters: ImportObjectPageV2Parameters = {\n manifest,\n flex,\n jsonSchema: schemas[jsonSchema],\n entitySet: page.entitySet,\n fragments,\n logger\n };\n page.config = createObjectPageConfigV2(importParameters);\n }\n }\n if (v2Page.pages) {\n getPageConfigsAndNavigations(page, v2Page, flex, manifest, schemas, fragments, pages);\n }\n }\n return pages;\n}\n\n/**\n * The V2AppProvider collects all the app information for a Fiori Elements V2 app\n */\nexport class V2AppProvider extends AppProvider {\n public constructor(\n manifest: Manifest,\n changes: string[],\n schemas: Files,\n fragments?: FileData[],\n logger?: ExtensionLogger\n ) {\n const v2Pages = manifest[ManifestSection.generic].pages;\n const pageKey = Object.keys(v2Pages)[0];\n // Import settings\n const appSettings = new AppSettings();\n const schemaFile = getSchemaFilePath(SchemaType.Application);\n const appSchema = schemas[schemaFile.filename];\n transferSettingsOfObject(appSettings, manifest, appSchema['definitions']['AppSettings'], undefined);\n // Call base\n super(\n manifest,\n schemas,\n generateId(v2Pages[pageKey]),\n getPagesAndConfigs(v2Pages, changes, manifest, schemas, fragments, logger),\n FioriElementsVersion.v2,\n appSettings\n );\n }\n}\n\n/**\n * Collects all pages of a V2 app from the manifest, by traversing the V2 page hierarchy.\n * @param v2Pages - entry point = complex page definition in manifest\n * @param componentName - Component name\n * @returns index table of pages\n */\nexport function getPages(v2Pages: SapUiAppPagesV2, componentName: string): Pages {\n const pages: Pages = {};\n for (const v2PageName in v2Pages) {\n const v2Page = v2Pages[v2PageName];\n if (v2Page.component.name === componentName) {\n const id = generateId(v2Page);\n pages[id] = v2Page;\n }\n if (componentName === pageV2.FE_TEMPLATE_V2_OBJECT_PAGE && v2Page.pages) {\n const subPages = getPages(v2Page.pages, componentName);\n for (const subPageId in subPages) {\n pages[subPageId] = subPages[subPageId];\n }\n }\n }\n return pages;\n}\n", "// Note: the main functions or entry points reside in ./exportPage.ts\nimport merge from 'deepmerge';\nimport type { ObjectPageCustomSectionFragment, ObjectPageCustomSectionView } from './controls';\nimport { exportCustomColumnsToFragment, getCustomColumnPath, deleteColumnFromFragment } from './controls';\nimport type { SyncRule, NextDefinition } from '../../common';\nimport {\n getReflectMetadata,\n getChildId,\n convertSectionId,\n getNextTargetDefinition,\n DEFINITION_LINK_PREFIX,\n arrayCombineMerge,\n deleteEmptyStructure,\n ViewTemplateType,\n fillFlexChangeContent,\n getTargetFromCustomColumnRef,\n FacetTitlePrefix\n} from '../../common';\nimport type {\n SapOvp,\n ExportResults,\n TableCustomColumns,\n ObjectPageSectionData,\n SapUiAppPageV2,\n Manifest,\n ExportHandlerFunction\n} from '../../../v2';\nimport {\n PropertyName,\n CardSettingsType,\n TableColumnExtensionTypeV2,\n PageType,\n CardTemplateType,\n ManifestSection\n} from '../../../v2';\nimport { getViewExtensionsPath } from '../application';\nimport { ensureManifestSectionByPathV2, getManifestSectionByPathV2 } from './manifest';\nimport { isAssociatedCustomSection } from '../import/utils';\nimport type { MetadataInstanceInterface } from '../../common/decoration/factory';\nimport type { TransferParameterTypeV2 } from '../types';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Create missing card from the manifest\n * @param key - card name\n * @param ovp - OVP section of manifest, to be updated\n */\nfunction createCard(key: string, ovp: SapOvp): void {\n if (!ovp.cards) {\n ovp.cards = {};\n }\n if (!(key in ovp.cards)) {\n ovp.cards[key] = {};\n }\n}\n\n/**\n * Recursive function that searches for next avaialble id by increasing number by 1.\n * @param {boolean} sectionIds All ids in use.\n * @param {string} candidateId Candidate id to check if it is available.\n * @return {string} Id string.\n */\nfunction findAvailableId(sectionIds: string[], candidateId: string): string {\n if (sectionIds.includes(candidateId)) {\n const idParts = candidateId.split('|');\n if (idParts.length === 3) {\n idParts.push('1');\n } else {\n idParts[3] = (parseInt(idParts[3]) + 1).toString();\n }\n return findAvailableId(sectionIds, idParts.join('|'));\n }\n return candidateId;\n}\n\n/**\n * Private recursive function that traverses the content of the current object. It reads decorators and fills manifest entries and flex changes\n * @param configObject - current object to traverse\n * @param exportResults - object with all collected manifest entries and flex changes\n * @param jsonSchema - application specific schema\n * @param targetDefinition - the current entry point or definition in the app schema\n * @param {MetadataInstanceInterface} factory - factory for creating metadata instances\n * @param pathHierarchy - elements of the path indicating the hierarchical level\n */\nexport function transferManifestEntriesOVP(\n configObject: { [key: string]: any },\n exportResults: ExportResults,\n jsonSchema: object,\n targetDefinition: object,\n factory: MetadataInstanceInterface,\n pathHierarchy?: string[]\n): void {\n if (targetDefinition) {\n if (targetDefinition['properties']) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processProperties(\n configObject,\n exportResults,\n jsonSchema,\n targetDefinition['properties'],\n factory,\n pathHierarchy\n );\n } else if (targetDefinition['additionalProperties']) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processProperties(\n configObject,\n exportResults,\n jsonSchema,\n targetDefinition['additionalProperties'],\n factory,\n pathHierarchy\n );\n }\n }\n}\n\n/**\n * Assign sync rules to {currentObject}\n * @param {string} structureName - name of the complex structure in schema\n * @param {object} currentObject - the given part of the configuration\n * @param {string} defaultTypeName - name of the default type that shall be taken if no class is registered for structureName\n */\nexport function assignReflectMetadataRules(\n factory: MetadataInstanceInterface,\n structureName: string,\n currentObject: object,\n defaultTypeName: string\n): object {\n return factory.createInstance(PageType.OverviewPage, defaultTypeName, currentObject, structureName);\n}\n\ntype ProcessDefinitionParams = {\n pathHierarchy: string[];\n propertyList: object;\n appSchema: Definition;\n currentObject: object;\n configObject: { [key: string]: any };\n factory: MetadataInstanceInterface;\n exportResults: ExportResults;\n};\n\nfunction processAnyOfDefinitionsOfOVP(params: ProcessDefinitionParams): object {\n params.pathHierarchy.pop();\n let newConfigObject = params.currentObject;\n for (const anyOfKey in params.propertyList['anyOf']) {\n if (params.propertyList['anyOf'][anyOfKey].$ref) {\n const definitionArray = params.propertyList['anyOf'][anyOfKey].$ref.split(DEFINITION_LINK_PREFIX);\n const nextTargetDefinition = params.appSchema['definitions'][definitionArray[definitionArray.length - 1]];\n const cardSettingsType = params.pathHierarchy[1];\n params.currentObject = params.configObject[cardSettingsType];\n newConfigObject = assignReflectMetadataRules(\n params.factory,\n cardSettingsType,\n params.currentObject,\n 'CustomCard'\n );\n transferManifestEntriesOVP(\n newConfigObject,\n params.exportResults,\n params.appSchema,\n nextTargetDefinition as Definition,\n params.factory,\n [...params.pathHierarchy]\n );\n } else if (typeof params.propertyList['anyOf'][anyOfKey] === 'object') {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processProperties(\n params.configObject,\n params.exportResults,\n params.appSchema,\n params.propertyList['anyOf'][anyOfKey].properties,\n params.factory,\n [...params.pathHierarchy, 'anyOfObject']\n );\n }\n }\n return newConfigObject;\n}\n\nfunction checkSyncRuleForExport(\n exportHandler: boolean | ExportHandlerFunction,\n manifestSection: object,\n configObject: { [key: string]: any },\n key: string,\n currentObject: object,\n exceptionList: string[]\n) {\n if (exportHandler && typeof exportHandler === 'function') {\n exportHandler(manifestSection, configObject, key);\n } else if (typeof currentObject === 'object' && !exceptionList.includes(key)) {\n // colorPalette is an exception as it can contain anything as per our schema, so just replace the object\n manifestSection[key] = merge(manifestSection[key] || {}, currentObject || {}, {\n arrayMerge: arrayCombineMerge\n });\n } else {\n manifestSection[key] = currentObject;\n }\n}\n\n/**\n * Transfer manifest settings from config to manifest\n * @param syncRule - metadata rule used for import and export\n * @param pathHierarchy - elements of the path indicating the hierarchical level\n * @param key\n * @param exportResults - overall result list, to be updated\n * @param currentObject\n * @param configObject\n */\nfunction transferToManifest(\n syncRule: SyncRule,\n pathHierarchy: string[],\n key: string,\n exportResults: ExportResults,\n currentObject: object,\n configObject: { [key: string]: any }\n) {\n const exceptionList = ['colorPalette', 'tabs'];\n const path = syncRule.manifest.path([...pathHierarchy, key]);\n const manifestSection = ensureManifestSectionByPathV2(exportResults.manifest, path);\n const manifestKey = syncRule.manifest.key || key;\n if (key in CardSettingsType || key === 'settings') {\n manifestSection['settings'] = merge(manifestSection['settings'] || {}, currentObject || {}, {\n arrayMerge: arrayCombineMerge\n });\n } else if (currentObject !== undefined) {\n const exportHandler = syncRule.manifest.export;\n if (exportHandler !== false) {\n checkSyncRuleForExport(exportHandler, manifestSection, configObject, key, currentObject, exceptionList);\n }\n } else if (manifestSection[key] !== undefined) {\n delete manifestSection[key];\n }\n}\n\nfunction transferCards(\n currentObject: object,\n appSchema: Definition,\n factory: MetadataInstanceInterface,\n exportResults: ExportResults\n) {\n Object.keys(currentObject).forEach((cardKey) => {\n const cardType = currentObject[cardKey].template;\n //Determine target defintion\n let targetDefinition;\n if (!Object.values(CardTemplateType).includes(cardType)) {\n targetDefinition = ['CustomCard'];\n } else {\n targetDefinition = Object.keys(appSchema.definitions).filter(\n (definition) =>\n (\n (appSchema.definitions[definition] as Definition).properties?.template as Definition\n )?.enum?.indexOf(currentObject[cardKey].template) > -1\n );\n }\n //Get metadata\n currentObject[cardKey] = assignReflectMetadataRules(\n factory,\n targetDefinition[0],\n currentObject[cardKey],\n 'CustomCard'\n );\n createCard(cardKey, exportResults['manifest'][ManifestSection.ovp]);\n transferManifestEntriesOVP(\n currentObject[cardKey],\n exportResults,\n appSchema,\n appSchema.definitions[targetDefinition[0]] as Definition,\n factory,\n [cardKey]\n );\n });\n //check for deletions:\n Object.keys(exportResults.manifest[ManifestSection.ovp].cards).forEach((manifestCard) => {\n if (!currentObject[manifestCard]) {\n delete exportResults.manifest[ManifestSection.ovp].cards[manifestCard];\n }\n });\n}\n\nfunction exportOfObject(params: ProcessDefinitionParams, key: string, factory: MetadataInstanceInterface): void {\n if (key === 'cards') {\n //inserts and updates:\n transferCards(params.currentObject, params.appSchema, factory, params.exportResults);\n } else if (params.propertyList[key].$ref) {\n const definitionArray = params.propertyList[key].$ref.split(DEFINITION_LINK_PREFIX);\n const nextTargetDefinition = params.appSchema.definitions[definitionArray[definitionArray.length - 1]];\n params.currentObject = assignReflectMetadataRules(\n params.factory,\n key,\n params.currentObject,\n key === 'settings' ? 'CustomCard' : ''\n );\n transferManifestEntriesOVP(\n params.currentObject,\n params.exportResults,\n params.appSchema,\n nextTargetDefinition as Definition,\n factory,\n [...params.pathHierarchy, key]\n );\n } else if (params.propertyList[key].anyOf) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processProperties(\n params.configObject,\n params.exportResults,\n params.appSchema,\n params.propertyList[key],\n factory,\n [...params.pathHierarchy, key, 'anyOf']\n );\n } else if (params.propertyList[key]['properties'] !== undefined) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processProperties(\n params.configObject,\n params.exportResults,\n params.appSchema,\n params.propertyList[key].properties,\n params.factory,\n [...params.pathHierarchy, key, 'objectProperties']\n );\n }\n}\n\n/**\n * Recursive function that transfers the content of a list of properties of a configuration to the overall exportResults\n * @param configObject - the given part of the configuration\n * @param exportResults - overall result list, to be updated\n * @param appSchema - app-specific JSON schema\n * @param propertyList - current property list of the config (properties or additional properties)\n * @param {MetadataInstanceInterface} factory - factory for creating metadata instances\n * @param pathHierarchy - elements of the path indicating the hierarchical level\n */\nfunction processProperties(\n configObject: { [key: string]: any },\n exportResults: ExportResults,\n appSchema: Definition,\n propertyList: object,\n factory: MetadataInstanceInterface,\n pathHierarchy?: string[]\n): void {\n let isAnyOfObject = false;\n let isObjectProperty = false;\n\n for (const key in propertyList) {\n let currentObject = configObject[key];\n let syncRule = getReflectMetadata(configObject, key);\n\n if (pathHierarchy[pathHierarchy.length - 1] === 'anyOfObject') {\n isAnyOfObject = true;\n pathHierarchy.pop();\n }\n if (isAnyOfObject) {\n currentObject = configObject[pathHierarchy[pathHierarchy.length - 1]][key];\n syncRule = getReflectMetadata(configObject, pathHierarchy[pathHierarchy.length - 1]);\n }\n\n if (pathHierarchy[pathHierarchy.length - 1] === 'objectProperties') {\n isObjectProperty = true;\n pathHierarchy.pop();\n }\n if (isObjectProperty) {\n currentObject = configObject[pathHierarchy[pathHierarchy.length - 1]][key];\n syncRule = getReflectMetadata(configObject, pathHierarchy[pathHierarchy.length - 1]);\n }\n\n const processDefinitionParams: ProcessDefinitionParams = {\n pathHierarchy,\n propertyList,\n appSchema,\n currentObject,\n configObject,\n factory,\n exportResults\n };\n if (pathHierarchy[pathHierarchy.length - 1] === 'anyOf') {\n currentObject = processAnyOfDefinitionsOfOVP(processDefinitionParams);\n }\n if (syncRule?.manifest) {\n transferToManifest(syncRule, pathHierarchy, key, exportResults, currentObject, configObject);\n }\n if (currentObject && typeof currentObject === 'object' && propertyList[key]) {\n exportOfObject(processDefinitionParams, key, factory);\n }\n }\n}\n\n/**\n * Evaluates an export rule for a property, transfers to flex change\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param breadcrumbs - list of breadcrumbs, i.e. ID parts for building the stable ID\n * @param syncRule - export rule from the object classes decorator\n * @param configObject - current (sub)object of the configuration file\n * @param ids - list of parent & child ids\n * @param title - title from the app schema (comprising for instance the facet ID)\n * @param key - key of the given property\n */\nfunction evaluateFlexRule(\n transferParameters: TransferParameterTypeV2,\n breadcrumbs: string[],\n syncRule: SyncRule,\n ids: string[],\n title: string,\n configObject: object,\n key: string\n): void {\n let localBreadcrumbs: string[];\n\n if (breadcrumbs.length === 0) {\n //only added on top = page level, do not forward\n localBreadcrumbs = ['page'];\n } else {\n localBreadcrumbs = breadcrumbs;\n }\n const controlId = syncRule.flex.controlId(\n transferParameters.baseId,\n ids,\n localBreadcrumbs,\n syncRule.flex.controlType,\n title\n );\n const flexChange = fillFlexChangeContent(configObject, syncRule, transferParameters.ui5Version, key, controlId);\n const localManifest = JSON.parse(JSON.stringify(transferParameters.exportResults.manifest)) as Manifest;\n localManifest['sap.app'].id = transferParameters.appId;\n const completeFlexChange = syncRule.flex.createFlexChange(flexChange, localManifest);\n const flexChangeExists = transferParameters.exportResults.flexChanges.find((change) => {\n let result = false,\n oldChange: object = JSON.parse(change);\n oldChange = {\n content: oldChange['content'],\n selector: oldChange['selector']\n };\n let newChange: object = JSON.parse(completeFlexChange);\n newChange = {\n content: newChange['content'],\n selector: newChange['selector']\n };\n if (JSON.stringify(oldChange) === JSON.stringify(newChange)) {\n result = true;\n }\n return result;\n });\n if (!flexChangeExists) {\n transferParameters.exportResults.flexChanges.push(completeFlexChange);\n }\n}\n\n/**\n * Exports a given config property value to manifest\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param syncRule - export rule from the object classes decorator\n * @param manifestSection - current section in manifest.json\n * @param configObject - current (sub)object of the configuration file\n * @param key - key of the given property in the config\n * @param manifestKey - key of the given property in manifest\n */\nfunction exportConfigValue(\n transferParameters: TransferParameterTypeV2,\n syncRule: SyncRule,\n manifestSection: object,\n configObject: object,\n key: string,\n manifestKey: string\n) {\n if (\n // In case of arrays we take over complete array\n !(\n transferParameters.propertyDefinition['type'] !== 'array' &&\n transferParameters.nextDefinition &&\n transferParameters.nextDefinition['targetDefinition'].type === 'object' &&\n transferParameters.nextDefinition['targetDefinition'].properties\n )\n ) {\n const exportHandler = syncRule.manifest.export;\n if (exportHandler && typeof exportHandler === 'function') {\n exportHandler(manifestSection, configObject, key, manifestKey);\n } else if (exportHandler !== false) {\n manifestSection[manifestKey] = configObject[key];\n }\n } else if (\n transferParameters.propertyDefinition['type'] !== 'array' &&\n manifestSection[manifestKey] === undefined\n ) {\n manifestSection[manifestKey] = {};\n }\n}\n\n/**\n * Evaluates an export rule for a property, transfers to manifest setting\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param syncRule - export rule from the object classes decorator\n * @param configObject - current (sub)object of the configuration file\n * @param ids - list of parent & child ids\n * @param title - title from the app schema (comprising for instance the facet ID)\n * @param key - key of the given property\n */\nfunction evaluateManifestRule(\n transferParameters: TransferParameterTypeV2,\n path: string,\n syncRule: SyncRule,\n key: string,\n configObject: object\n) {\n const manifestSection = ensureManifestSectionByPathV2(transferParameters.exportResults.manifest, path);\n const manifestKey = syncRule.manifest.key || key;\n if (configObject[key] !== undefined) {\n exportConfigValue(transferParameters, syncRule, manifestSection, configObject, key, manifestKey);\n } else {\n //delete value\n const deleteHandler = syncRule.manifest.delete;\n if (deleteHandler && typeof deleteHandler === 'function') {\n deleteHandler(manifestSection, configObject, key, manifestKey);\n } else if (Object.prototype.hasOwnProperty.call(manifestSection, manifestKey)) {\n delete manifestSection[manifestKey];\n }\n }\n deleteEmptyStructure(transferParameters.exportResults.manifest, path);\n}\n\nfunction getManifestPathOfSections(\n breadcrumbs: string[],\n path: string,\n syncRule: SyncRule,\n transferParameters: TransferParameterTypeV2,\n title: string\n) {\n if (breadcrumbs[1] === 'custom') {\n path = syncRule.manifest.path(transferParameters.pageKeys, {}, breadcrumbs[2]);\n } else {\n path = syncRule.manifest.path(\n transferParameters.pageKeys,\n {},\n title?.startsWith(FacetTitlePrefix) ? title.split(FacetTitlePrefix)[1] : breadcrumbs[1],\n breadcrumbs[breadcrumbs.length - 1]\n );\n path = path.replace('/@', '::').replace(/VOCWITHCOLONS/g, '::com.sap.vocabularies');\n }\n return path;\n}\n\nfunction getManifestPathOfTable(\n breadcrumbs: string[],\n path: string,\n syncRule: SyncRule,\n transferParameters: TransferParameterTypeV2,\n configObject: object\n) {\n if (breadcrumbs[1] === 'columns' && breadcrumbs[2] === 'custom') {\n path = syncRule.manifest.path(\n transferParameters.pageKeys,\n transferParameters.exportResults.manifest,\n configObject['tabKey']\n );\n } else {\n path = syncRule.manifest.path(transferParameters.pageKeys, {}, breadcrumbs[breadcrumbs.length - 1]);\n }\n return path;\n}\n\n/**\n * Determines the path to a manifest setting, based on the syncRule\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param breadcrumbs - list of breadcrumbs, i.e. ID parts for building the stable ID\n * @param {SyncRule} syncRule - export rule from the object classes decorator\n * @param configObject - current (sub)object of the configuration file\n * @param title - title from the app schema (comprising for instance the facet ID)\n * @returns the path to the manifest setting\n */\nfunction getManifestPath(\n transferParameters: TransferParameterTypeV2,\n breadcrumbs: string[],\n syncRule: SyncRule,\n configObject: object,\n title: string\n): string {\n let path: string;\n if (breadcrumbs[0] === PropertyName.sections) {\n path = getManifestPathOfSections(breadcrumbs, path, syncRule, transferParameters, title);\n } else if (breadcrumbs[0] === PropertyName.table) {\n path = getManifestPathOfTable(breadcrumbs, path, syncRule, transferParameters, configObject);\n } else if (breadcrumbs[0] === 'keyPerformanceIndicators') {\n path = syncRule.manifest.path(transferParameters.pageKeys, transferParameters.exportResults.manifest, title);\n } else if (breadcrumbs[0] === 'filterBar' && breadcrumbs[1] === 'selectionFields') {\n path = syncRule.manifest.path(\n transferParameters.pageKeys,\n transferParameters.exportResults.manifest,\n breadcrumbs.slice(2).join('/')\n );\n } else {\n path = syncRule.manifest.path(transferParameters.pageKeys);\n }\n return path;\n}\n\n/**\n * Evaluates an export rule for a property or object, transfers to flex change or manifest setting\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param {SyncRule} syncRule - export rule from the object classes decorator\n * @param configObject - current (sub)object of the configuration file\n * @param breadcrumbs - list of breadcrumbs, i.e. ID parts for building the stable ID\n * @param ids - list of parent & child ids\n * @param title - title from the app schema (comprising for instance the facet ID)\n * @param key - key of the given property\n */\nfunction evaluateExportRule(\n transferParameters: TransferParameterTypeV2,\n syncRule: SyncRule,\n configObject: object,\n breadcrumbs: string[],\n ids: string[],\n title: string,\n key: string\n): void {\n if (!syncRule) {\n return;\n }\n //eliminate subsections' hierarchy\n let index = breadcrumbs.indexOf('subsections');\n while (index > -1) {\n breadcrumbs.splice(index - 1, 2);\n index = breadcrumbs.indexOf('subsections');\n }\n\n if (syncRule.flex) {\n evaluateFlexRule(transferParameters, breadcrumbs, syncRule, ids, title, configObject, key);\n } else if (syncRule.manifest) {\n const path = getManifestPath(transferParameters, breadcrumbs, syncRule, configObject, title);\n evaluateManifestRule(transferParameters, path, syncRule, key, configObject);\n }\n}\n\ntype ColumnParams = {\n path: string;\n exportResults: ExportResults;\n entitySet: string;\n config: TableCustomColumns;\n sectionKey: string;\n extensionType: string;\n appId: string;\n};\n\n/**\n * Deletes an obsolete custom column from manifest\n */\nfunction deleteObsoleteColumn(key: string, columnParams: ColumnParams, manifestSection: object) {\n const keyParts = key.split('|');\n const keyEntitySet = keyParts[1];\n const keyTab = keyParts[2];\n if (keyEntitySet === columnParams.entitySet) {\n //relevant extension. still present in config?\n const existingConfigEntries = columnParams.config?.filter(\n (column) =>\n (column.tabKey === keyTab ||\n (keyTab === undefined && column.tabKey === '') ||\n (keyTab && columnParams.sectionKey === keyTab)) &&\n column.extensionType === columnParams.extensionType\n );\n if (!existingConfigEntries || existingConfigEntries.length === 0) {\n deleteColumnFromFragment(manifestSection, key, columnParams.appId, columnParams.exportResults.fragments);\n // delete from manifest\n delete manifestSection[key];\n // delete cells entry\n if (key.startsWith(ViewTemplateType.ResponsiveTableColumnsExtension)) {\n const cellsPattern = key.replace(\n ViewTemplateType.ResponsiveTableColumnsExtension,\n ViewTemplateType.ResponsiveTableCellsExtension\n );\n deleteColumnFromFragment(\n manifestSection,\n cellsPattern,\n columnParams.appId,\n columnParams.exportResults.fragments\n );\n // delete from manifest\n delete manifestSection[cellsPattern];\n }\n }\n }\n}\n\n/**\n * Walks through the extensions registered in manifest and compares the columns of the fragment with the ones present in config.\n * If not present anymore, the extension column gets deleted from fragment.\n * @param path - path to extesnions section in manifest\n * @param exportResults - result structure, including the fragments that may get updated\n * @param entitySet - current entity set\n * @param config - current config JSON\n * @param sectionKey - section key\n * @param extensionType - extensionType\n * @param appId - application ID\n */\nfunction deleteObsoleteColumnsFromFragment(columnParams: ColumnParams) {\n const folderPath = columnParams.path.substring(0, columnParams.path.lastIndexOf('/'));\n const manifestSection = getManifestSectionByPathV2(columnParams.exportResults.manifest, folderPath);\n const extensionPattern = columnParams.path.substring(columnParams.path.lastIndexOf('/') + 1);\n for (const key in manifestSection) {\n if (key.startsWith(extensionPattern)) {\n deleteObsoleteColumn(key, columnParams, manifestSection);\n }\n }\n}\n\n/**\n * Clusters the custom columns if a config by the extension's path in manifest\n * @param customColumnsInConfig - list of all custom columns in config\n * @param schemaDefinition - schema definition of the table custom column\n * @param v2Page - current page in manifest\n * @param entitySet - current entity set\n * @param sectionKey key of the section (in case of OP)\n * @returns the custom columns, clustered by the manifest path\n */\nfunction clusterConfigColumnsByPath(\n customColumnsInConfig: TableCustomColumns,\n schemaDefinition: object,\n v2Page: SapUiAppPageV2,\n entitySet: string,\n sectionKey: string\n): object {\n const cluster = {};\n for (const customColumn of customColumnsInConfig) {\n //verify that mandatory parameters are filled\n if (\n !customColumn['className'] ||\n !customColumn['fragmentName'] ||\n !customColumn['columnKey'] ||\n !customColumn['extensionType']\n ) {\n continue;\n }\n //check fragment name\n if (schemaDefinition['properties']['fragmentName']['pattern']) {\n const namePattern = new RegExp(schemaDefinition['properties']['fragmentName']['pattern']);\n if (namePattern.test(customColumn['fragmentName']) === false) {\n continue;\n }\n }\n const { path, viewTemplateType } = getCustomColumnPath(\n v2Page,\n entitySet,\n customColumn.tabKey || sectionKey,\n customColumn['extensionType']\n );\n\n if (!cluster[path]) {\n cluster[path] = {\n viewTemplateType: viewTemplateType,\n columns: []\n };\n }\n cluster[path].columns.push(customColumn);\n }\n return cluster;\n}\n\n/**\n * Transfers column extensions to manifest and fragment files\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param {TableCustomColumns} customColumnsInConfig - config part comprising the table custom columns\n * @param {object} schemaDefinition - Column schema definition\n * @param {ObjectPageSectionData} [objectPageSectionData] - Object Page section's data containing target and key options.\n */\nfunction transferColumnExtensions(\n transferParameters: TransferParameterTypeV2,\n customColumnsInConfig: TableCustomColumns,\n schemaDefinition: object,\n objectPageSectionData?: ObjectPageSectionData\n): void {\n const sectionKey = objectPageSectionData ? objectPageSectionData.key : undefined;\n const sectionTarget = objectPageSectionData ? objectPageSectionData.target : undefined;\n const entitySet = sectionTarget || transferParameters.v2Page.entitySet;\n for (const extensionType in TableColumnExtensionTypeV2) {\n const { path } = getCustomColumnPath(transferParameters.v2Page, entitySet, sectionKey, extensionType);\n if (!path) {\n continue;\n }\n const columParams = {\n path,\n exportResults: transferParameters.exportResults,\n entitySet,\n config: customColumnsInConfig,\n sectionKey,\n extensionType,\n appId: transferParameters.appId\n };\n deleteObsoleteColumnsFromFragment(columParams);\n }\n if (customColumnsInConfig) {\n //cluster existing custom columns by manifest path (or tab key)\n const cluster = clusterConfigColumnsByPath(\n customColumnsInConfig,\n schemaDefinition,\n transferParameters.v2Page,\n entitySet,\n sectionKey\n );\n //Export to fragment\n for (const path in cluster) {\n exportCustomColumnsToFragment(\n transferParameters.exportResults,\n path,\n cluster[path].columns,\n transferParameters.appId,\n cluster[path].viewTemplateType,\n transferParameters.logger\n );\n }\n }\n}\n\n/**\n * Recursive function that traverses the content of the current object. It reads decorators and fills manifest entries and flex changes\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param configSections - sections from configuration object\n * @param pageKey - page key\n * @param parentIds - array of collected parent ids\n * @param breadcrumbs - array of properties that we are currently processing. Required for instance for table column name\n * @param targetDefinition - the current entry point or definition in the app schema\n */\nfunction transferManifestExtensions(\n transferParameters: TransferParameterTypeV2,\n configSections: (ObjectPageCustomSectionFragment | ObjectPageCustomSectionView)[],\n pageKey: string,\n parentIds: string[],\n breadcrumbs: string[],\n targetDefinition: object\n): void {\n const sectionIds: string[] = [];\n const entity = pageKey.split('|')[1];\n if (!configSections) {\n return;\n }\n for (const section of configSections) {\n const id = findAvailableId(sectionIds, [section.relativePosition, entity, section.relatedFacet].join('|'));\n sectionIds.push(id);\n }\n for (let index = 0; index < sectionIds.length; index++) {\n const definition = targetDefinition['anyOf'].find((element) =>\n element.$ref.includes(configSections[index].constructor.name)\n );\n const definitionArray = definition.$ref.split(DEFINITION_LINK_PREFIX);\n const nextTargetDefinition =\n transferParameters.appSchema['definitions'][definitionArray[definitionArray.length - 1]];\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n transferManifestEntriesAndFlexChange(\n transferParameters,\n configSections[index],\n parentIds,\n [...breadcrumbs, sectionIds[index]],\n nextTargetDefinition\n );\n }\n // Delete removed manifest entries\n const manifestSections = ensureManifestSectionByPathV2(\n transferParameters.exportResults.manifest,\n getViewExtensionsPath()\n );\n for (const key in manifestSections) {\n if (isAssociatedCustomSection(key, entity) && !sectionIds.includes(key)) {\n delete manifestSections[key];\n }\n }\n}\n\n/**\n * Method returns converted section id by resolving passed section id and title from schema.\n * @param {string[]} breadcrumbs Array of properties that we are currently processing. Required for instance for table column name.\n * @param {string} title Title from JSON schema, comprising the facet ID\n * @returns {string | undefined} Resolved section id.\n */\nfunction getSectionId(breadcrumbs: string[], title: string): string | undefined {\n let sectionId = undefined;\n for (let i = breadcrumbs.length - 1; i >= 0; i--) {\n if (breadcrumbs[i] === PropertyName.table) {\n sectionId = breadcrumbs[i - 1];\n break;\n }\n }\n return convertSectionId(sectionId, title);\n}\n\n/**\n * Processes index tables in schema\n */\nfunction transferIndexTable(\n currentConfigObject: object,\n transferParameters: TransferParameterTypeV2,\n title: string,\n key: string,\n ids: string[],\n breadcrumbs: string[]\n) {\n const propertyDefinition = transferParameters.propertyDefinition as Definition;\n if (!currentConfigObject || !propertyDefinition?.additionalProperties) {\n return;\n }\n Object.keys(currentConfigObject).forEach((newKey) => {\n const nextDefinition = getNextTargetDefinition(\n transferParameters.appSchema,\n title,\n currentConfigObject[newKey],\n propertyDefinition.additionalProperties as Definition,\n key,\n transferParameters.factory,\n transferParameters.pageType\n );\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n transferManifestEntriesAndFlexChange(\n transferParameters,\n nextDefinition.configObject,\n ids,\n [...breadcrumbs, key],\n nextDefinition.targetDefinition,\n newKey\n );\n });\n}\n\n/**\n * Transfers custom columns of schema\n */\nfunction transferCustomColumns(\n propertyDefinition: any,\n breadcrumbs: string[],\n title: string,\n transferParameters: TransferParameterTypeV2,\n configObject: { [key: string]: any },\n nextDefinition: NextDefinition\n) {\n let objectPageSectionData: ObjectPageSectionData | undefined;\n const target = getTargetFromCustomColumnRef(propertyDefinition.$ref);\n if (target) {\n objectPageSectionData = {\n target,\n key: getSectionId(breadcrumbs, title)\n };\n }\n transferColumnExtensions(\n transferParameters,\n configObject?.custom as TableCustomColumns,\n nextDefinition.targetDefinition,\n objectPageSectionData\n );\n}\n\n/**\n * Processes anyOf definitions of schema\n */\nfunction handleAnyOfDefinitions(\n propertyDefinition: any,\n transferParameters: TransferParameterTypeV2,\n title: string,\n currentConfigObject: object,\n key: string,\n ids: string[],\n breadcrumbs: string[]\n) {\n propertyDefinition['anyOf'].forEach((element) => {\n const nextDefinition = getNextTargetDefinition(\n transferParameters.appSchema,\n title,\n currentConfigObject,\n element,\n key,\n transferParameters.factory,\n transferParameters.pageType\n );\n if (nextDefinition) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n transferManifestEntriesAndFlexChange(\n transferParameters,\n nextDefinition.configObject,\n ids,\n [...breadcrumbs, key],\n nextDefinition.targetDefinition,\n nextDefinition.title\n );\n }\n });\n}\n\n/**\n * Processes complex definitions of schema\n */\nfunction transferComplexProperty(\n transferParameters: TransferParameterTypeV2,\n breadcrumbs: string[],\n configObject: { [key: string]: any },\n ids: string[],\n propertyKey: string,\n nextDefinition: NextDefinition,\n title?: string\n): void {\n const propertyDefinition = transferParameters.propertyDefinition as Definition;\n if (\n propertyDefinition?.type === 'array' &&\n (breadcrumbs[0] === 'sections' || breadcrumbs[0] === 'subsections') &&\n propertyKey === 'custom'\n ) {\n transferManifestExtensions(\n transferParameters,\n configObject[propertyKey],\n transferParameters.pageKeys[transferParameters.pageKeys.length - 1],\n ids,\n [...breadcrumbs, propertyKey],\n propertyDefinition?.items as Definition\n );\n } else if (nextDefinition && propertyKey === 'custom') {\n transferCustomColumns(propertyDefinition, breadcrumbs, title, transferParameters, configObject, nextDefinition);\n return;\n } else if (nextDefinition) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n transferManifestEntriesAndFlexChange(\n transferParameters,\n nextDefinition.configObject,\n ids,\n [...breadcrumbs, propertyKey],\n nextDefinition.targetDefinition,\n nextDefinition.title\n );\n } else if (propertyDefinition['anyOf']) {\n handleAnyOfDefinitions(\n propertyDefinition,\n transferParameters,\n title,\n configObject?.[propertyKey],\n propertyKey,\n ids,\n breadcrumbs\n );\n }\n}\n\n/**\n * Function that traverses the content of the current object. It reads decorators and fills manifest entries and flex changes\n * @param {TransferParameterTypeV2} transferParameters - list of input parameters for the recursive function call\n * @param configObject - current (sub)object of the configuration file\n * @param parentIds - array of collected parent ids\n * @param breadcrumbs - array of properties that we are currently processing. Required for instance for table column name\n * @param schemaDefinition - the current entry point or definition in the app schema\n * @param title - title from the app schema (comprising for instance the facet ID)\n */\nexport function transferManifestEntriesAndFlexChange(\n transferParameters: TransferParameterTypeV2,\n configObject: { [key: string]: any },\n parentIds: string[],\n breadcrumbs: string[],\n schemaDefinition: Definition,\n title?: string\n): void {\n let currentConfigObject: object;\n\n if (!schemaDefinition?.properties) {\n return;\n }\n for (const propertyKey in schemaDefinition.properties) {\n currentConfigObject = configObject?.[propertyKey];\n const childId = configObject && getChildId(configObject, propertyKey);\n const ids = childId ? [...parentIds, childId] : parentIds;\n const syncRule = getReflectMetadata(configObject, propertyKey);\n const propertyDefinition = (transferParameters.propertyDefinition = schemaDefinition.properties[\n propertyKey\n ] as Definition);\n const nextDefinition = (transferParameters.nextDefinition = getNextTargetDefinition(\n transferParameters.appSchema,\n title,\n currentConfigObject,\n propertyDefinition,\n propertyKey,\n transferParameters.factory,\n transferParameters.pageType\n ));\n //Evaluate sync rule for the export\n evaluateExportRule(transferParameters, syncRule, configObject, [...breadcrumbs], ids, title, propertyKey);\n //index table\n transferIndexTable(currentConfigObject, transferParameters, title, propertyKey, ids, breadcrumbs);\n\n if (currentConfigObject === undefined || typeof currentConfigObject === 'object') {\n transferComplexProperty(\n transferParameters,\n breadcrumbs,\n configObject,\n ids,\n propertyKey,\n nextDefinition,\n title\n );\n } else if (propertyDefinition?.$ref === DEFINITION_LINK_PREFIX + 'TableCustomColumns') {\n //empty config ==> delete all given extensions\n transferColumnExtensions(\n transferParameters,\n [],\n transferParameters.appSchema['definitions']['TableCustomColumn']\n );\n continue;\n }\n }\n}\n", "import type { CardType, OverviewPageConfig } from '../../../../specification/v2';\nimport type { Manifest } from '../../../../specification/common';\nimport { ManifestSection, PageType } from '../../../../specification/common';\nimport { getReflectMetadata } from '../../../common/decoration/decorators';\nimport { ensureManifestSectionByPathV2 } from '../../export/manifest';\nimport { CardSettingsType, cardTemplateTypeMap } from '../../../../specification/v2';\nimport { MetadataInstanceFactoryV2 as Factory } from '../../export/factory';\nimport type { MetadataInstanceInterface } from '../../../common/decoration/factory';\nimport { assignReflectMetadataRules } from '../../export/export';\nimport { importProperty } from '../../../common';\nimport type { ImportOverviewPageV2Parameters } from '../../../..';\n\n/**\n * Transfers the card settings from manifest to config\n * @param propertyKey - Key of the property or setting\n * @param manifestSection - Section in manifest.json\n * @param configPart - Part of the config JSON\n * @param pathHierarchy - Parts of the path or breadcrumbs\n */\nfunction transferCardSettings(\n propertyKey: string,\n manifestSection: object,\n configPart: { [key: string]: any },\n pathHierarchy?: string[]\n): void {\n if (propertyKey === 'settings') {\n switch (manifestSection['template']) {\n case 'sap.ovp.cards.charts.analytical':\n configPart[pathHierarchy[0]][CardSettingsType.analyticalCardSettings] = manifestSection[propertyKey];\n break;\n case 'sap.ovp.cards.list':\n configPart[pathHierarchy[0]][CardSettingsType.listCardSettings] = manifestSection[propertyKey];\n break;\n case 'sap.ovp.cards.stack':\n configPart[pathHierarchy[0]][CardSettingsType.stackCardSettings] = manifestSection[propertyKey];\n break;\n case 'sap.ovp.cards.linklist':\n configPart[pathHierarchy[0]][CardSettingsType.linkListCardSettings] = manifestSection[propertyKey];\n break;\n case 'sap.ovp.cards.table':\n configPart[pathHierarchy[0]][CardSettingsType.tableCardSettings] = manifestSection[propertyKey];\n break;\n default:\n configPart[pathHierarchy[0]]['settings'] = manifestSection[propertyKey];\n break;\n }\n } else {\n configPart[pathHierarchy[0]][propertyKey] = manifestSection[propertyKey];\n }\n}\n\n/**\n * Handles a list of properties of a given part of the schema, transfers the relevant property values or settings from manifest to config.\n * @param configPart - Part of the config JSON\n * @param manifest - manifest.json or app descriptor\n * @param appSchema - app specific JSON schema\n * @param pathHierarchy - Parts of the path or breadcrumbs\n */\nfunction transferSettingsOfObject(\n configPart: { [key: string]: any },\n manifest: Manifest,\n appSchema: object,\n pathHierarchy?: string[]\n): void {\n for (const propertyKey in appSchema) {\n const syncRule = getReflectMetadata(configPart, propertyKey);\n if (syncRule?.manifest) {\n const path = syncRule.manifest.path([...pathHierarchy, propertyKey]);\n const manifestSection = ensureManifestSectionByPathV2(manifest, path);\n if (Object.prototype.hasOwnProperty.call(manifestSection, propertyKey)) {\n if (pathHierarchy.length !== 0) {\n transferCardSettings(propertyKey, manifestSection, configPart, pathHierarchy);\n } else {\n importProperty(syncRule, manifestSection, propertyKey, configPart);\n }\n }\n }\n }\n}\n\n/**\n * OVP: Transfers all settings from manifest to config\n * @param OverviewPageConfig - the OVP configuration (JSON)\n * @param manifest - manifest.json or app descriptor\n * @param appSchema - app specific JSON schema\n * @param factory - Metadata factory\n */\nfunction addSettings(\n OverviewPageConfig: OverviewPageConfig,\n manifest: Manifest,\n appSchema: object,\n factory: MetadataInstanceInterface\n): void {\n transferSettingsOfObject(OverviewPageConfig, manifest, appSchema['properties'], []);\n\n OverviewPageConfig.cards = {};\n\n Object.keys(manifest[ManifestSection.ovp]['cards']).forEach((newKey) => {\n const cardTemplate = manifest[ManifestSection.ovp]['cards'][newKey].template;\n const cardType = cardTemplateTypeMap[cardTemplate];\n\n //instantiate Card:\n OverviewPageConfig.cards[newKey] = assignReflectMetadataRules(factory, cardType, {}, 'CustomCard') as CardType;\n\n OverviewPageConfig.cards = assignReflectMetadataRules(\n factory,\n cardType,\n OverviewPageConfig.cards,\n 'CustomCard'\n ) as {\n [k: string]: CardType;\n };\n\n //transfer settings:\n transferSettingsOfObject(OverviewPageConfig.cards, manifest, manifest[ManifestSection.ovp]['cards'][newKey], [\n newKey\n ]);\n });\n}\n\n/**\n * Creates the configuration (file content) for an overview page\n * @param {object} manifest - manifest of the app\n * @param {object} jsonSchema - app specific JSON schema\n *\n * @returns {OverviewPageConfig} - the OVP configuration (JSON)\n */\nexport function createOverviewPageConfig(importParameters: ImportOverviewPageV2Parameters): OverviewPageConfig {\n const factory = new Factory();\n //Instantiate Page\n const config = factory.createPageInstance(PageType.OverviewPage);\n\n if (importParameters.jsonSchema) {\n addSettings(config, importParameters.manifest, importParameters.jsonSchema, factory);\n }\n return config;\n}\n", "import type { Manifest } from '../../../../specification/common';\nimport { FioriElementsVersion, PageType, ManifestSection } from '../../../../specification/common';\nimport { AppProvider } from '../../../common/appProvider';\nimport { transferSettingsOfObject } from '../common';\nimport { createOverviewPageConfig } from '../pages/overviewPage';\nimport { AppSettings } from '../../application';\nimport type { Page, Pages } from '../../../../specification/v2';\nimport type { Files } from '../../../common';\nimport { getSchemaFilePath, generatePageId } from '../../../common';\nimport { SchemaType } from '../../../../specification/schemaAccess';\nimport type { ExtensionLogger, ImportOverviewPageV2Parameters } from '../../../..';\n\nexport class V2OvpProvider extends AppProvider {\n public constructor(manifest: Manifest, schemas: Files, logger?: ExtensionLogger) {\n const pages: Pages = {};\n const sapOvp = manifest[ManifestSection.ovp];\n const appSettings = new AppSettings();\n const schemaFile = getSchemaFilePath(SchemaType.Application);\n transferSettingsOfObject(\n appSettings,\n manifest,\n schemas[schemaFile.filename]['definitions']['AppSettings'],\n undefined\n );\n const jsonSchema: string = Object.keys(schemas).find((element) => element.includes(PageType.OverviewPage));\n const parameters: ImportOverviewPageV2Parameters = {\n manifest,\n jsonSchema: schemas[jsonSchema]\n };\n const page: Page = {\n pageType: PageType.OverviewPage,\n config: createOverviewPageConfig(parameters),\n entitySet: sapOvp.globalFilterEntitySet\n };\n const id = generatePageId(page.pageType, page.entitySet);\n pages[id] = page;\n super(manifest, schemas, id, pages, FioriElementsVersion.v2, appSettings, logger);\n }\n}\n", "import type { FileData, SyncRule } from '../../common';\nimport { SchemaTag } from '../../common';\nimport type { MetadataInstanceInterface } from '../../common/decoration/factory';\nimport type { PageType } from '../../../specification/common';\nimport type { SapUiAppPageV2 } from '../../../specification/v2';\nimport type { AnnotationTerm, EntityType } from '@sap-ux/vocabularies-types';\nimport type { DataFieldAbstractTypes, LineItem, SelectionFields } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport {\n getDatafieldDescription,\n DEFINITION_LINK_PREFIX,\n ArtifactType,\n getNextTargetDefinition,\n addCommonLineItemDefinitions,\n prepareRef,\n DefinitionName,\n getSchemaKeyOfLineItemRecord,\n createAnnotationPath,\n getLabelForPropertyPath,\n determineDataType,\n addDataTypeToDefinition\n} from '../../common';\nimport { getReflectMetadata } from '../../common/decoration/decorators';\nimport { UIAnnotationTypes, UIAnnotationTerms } from '@sap-ux/vocabularies-types/vocabularies/UI';\nimport { sep } from 'path';\nimport { xml2json } from 'xml-js';\nimport { ActionTypeV2 } from '../types';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Common function for enhancing the LineItems definiton of app schema by custom columns\n * @param appSchema - app-specific JSON schema\n * @param customColumnsDefinitionName - custom column definition name (plural)\n * @param customColumnDefinitionName - custom column definition name (singular)\n */\nfunction addCustomColumnDefinition(\n appSchema: Definition,\n customColumnsDefinitionName: string,\n customColumnDefinitionName: string\n): void {\n if (appSchema.definitions[DefinitionName.LineItems]) {\n appSchema.definitions[DefinitionName.LineItems]['properties']['custom'] = {\n $ref: `${DEFINITION_LINK_PREFIX}${customColumnsDefinitionName}`\n };\n }\n appSchema['definitions'][customColumnsDefinitionName] = {\n type: 'array',\n items: {\n $ref: `${DEFINITION_LINK_PREFIX}${customColumnDefinitionName}`\n },\n description: 'Custom Columns'\n };\n appSchema['definitions'][customColumnsDefinitionName][SchemaTag.isViewNode] = true;\n const columnDefinition = appSchema['definitions'][customColumnDefinitionName] as Definition;\n for (const id in columnDefinition.properties) {\n columnDefinition.properties[id][SchemaTag.artifactType] = ArtifactType.Manifest;\n }\n}\n\n/**\n * Prepares and returns id of action for further use and reference\n * @param actionType - type of action\n * @param lineItemProperties - properties of the line item collection: lineItemPath, lineItemRecord, lineItemId\n * @returns {string} actionId\n */\nfunction getActionId(\n actionType: ActionTypeV2,\n lineItemProperties: { lineItemPath: any; lineItemRecord: any; lineItemId: any; entityType: EntityType }\n): string {\n let actionId: string;\n if (actionType === ActionTypeV2.ColumnIntentBased) {\n actionId = getSchemaKeyOfLineItemRecord(lineItemProperties.lineItemRecord);\n } else if (actionType === ActionTypeV2.ToolBarIntentBased || actionType === ActionTypeV2.FooterIntentBased) {\n actionId = prepareRef(\n `${lineItemProperties.lineItemRecord.SemanticObject}::${lineItemProperties.lineItemRecord.Action}`\n );\n } else if (\n actionType === ActionTypeV2.Column &&\n lineItemProperties.lineItemRecord.$Type === UIAnnotationTypes.DataFieldForAction\n ) {\n actionId = prepareRef(`DataFieldForAction:::sAction::${lineItemProperties.lineItemRecord.Action}`);\n } else {\n actionId = prepareRef(lineItemProperties.lineItemRecord.Action);\n }\n if (lineItemProperties.lineItemId && lineItemProperties.lineItemId !== 'LineItems') {\n return `${lineItemProperties.lineItemId}??${actionId}`;\n } else {\n return actionId;\n }\n}\n\n/**\n * Processes a LineItem record of type DataFieldForAction and DataFieldForIntentBasedNavigation during app schema generation\n * @param appSchema - the app specific schema that shall get enhanced\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n * @param actions - actions definition in schema, parent object\n * @param lineItemProperties - properties of the line item collection: lineItemPath, lineItemRecord, lineItemId\n * @param actionType - type of action\n * @param recordIndex - record index in the collection\n */\nexport function handleActionRecord(\n appSchema: object,\n actions: object,\n lineItemProps: { lineItemPath; lineItemRecord; lineItemId; entityType: EntityType },\n actionType: ActionTypeV2,\n recordIndex: number\n): void {\n let actionReferenceType;\n const actionTemplate = lineItemProps.lineItemId === DefinitionName.LineItems ? '' : 'ObjectPage';\n const actionId = getActionId(actionType, lineItemProps);\n\n if (actionType === ActionTypeV2.Footer || actionType === ActionTypeV2.FooterIntentBased) {\n actionReferenceType = `Action`;\n actionType = ActionTypeV2.Footer;\n } else if (actionType === ActionTypeV2.Column || actionType === ActionTypeV2.ColumnIntentBased) {\n actionReferenceType = `TableColumnAction`;\n } else {\n actionReferenceType = actionTemplate !== '' ? `${actionTemplate}${actionType}` : `Action`;\n actionType = ActionTypeV2.ToolBar;\n }\n const actionDefinition = `${actionTemplate}${actionType}<${actionId}>`;\n const description = getDatafieldDescription(\n lineItemProps.lineItemRecord as DataFieldAbstractTypes,\n lineItemProps.entityType\n );\n actions['properties'][actionId] = {\n $ref: DEFINITION_LINK_PREFIX + actionDefinition,\n description,\n propertyIndex: recordIndex\n };\n if (appSchema['definitions'][actionReferenceType]) {\n appSchema['definitions'][actionDefinition] = {\n ...JSON.parse(JSON.stringify(appSchema['definitions'][actionReferenceType])),\n description,\n annotationPath: `${lineItemProps.lineItemPath}/${recordIndex}`\n };\n } else {\n appSchema['definitions'][actionDefinition] = {\n type: 'object',\n properties: {},\n description,\n annotationPath: `${lineItemProps.lineItemPath}/${recordIndex}`,\n isViewNode: true,\n additionalProperties: false\n };\n }\n}\n\n/**\n * Returns the type of a column lineItem action\n * @param lineItemId - optional: in case of OP the parameter must be passed to distinguish the OP tables;\n * @param {object} lineItemRecord - actual record of the line item collection\n * @param actionTypes - array of action types to be filled\n */\nfunction getColumnActionType(lineItemId: string, lineItemRecord, actionTypes: ActionTypeV2[]) {\n if (\n lineItemId !== DefinitionName.LineItems &&\n lineItemRecord.Inline === true &&\n (lineItemRecord.$Type === UIAnnotationTypes.DataFieldForAction ||\n lineItemRecord.$Type === UIAnnotationTypes.DataFieldForIntentBasedNavigation)\n ) {\n actionTypes.push(ActionTypeV2.OPColumn);\n } else if (lineItemRecord.Inline === true && lineItemRecord.$Type === UIAnnotationTypes.DataFieldForAction) {\n actionTypes.push(ActionTypeV2.Column);\n } else if (\n lineItemRecord.Inline === true &&\n lineItemRecord.$Type === UIAnnotationTypes.DataFieldForIntentBasedNavigation\n ) {\n actionTypes.push(ActionTypeV2.ColumnIntentBased);\n }\n}\n\n/**\n * Returns the type of a lineItem action\n * @param {object} lineItemRecord - actual record of the line item collection\n * @returns {string[] | undefined } ActionTypeV2[] - action type(s) of the lineItem\n */\nfunction getActionType(lineItemRecord: DataFieldAbstractTypes, lineItemId: string): ActionTypeV2[] | undefined {\n const actionTypes: ActionTypeV2[] = [];\n if (\n lineItemRecord.$Type !== UIAnnotationTypes.DataFieldForAction &&\n lineItemRecord.$Type !== UIAnnotationTypes.DataFieldForIntentBasedNavigation\n ) {\n return undefined;\n }\n if (\n lineItemRecord.Inline !== true &&\n lineItemRecord.Determining !== true &&\n lineItemRecord.$Type === UIAnnotationTypes.DataFieldForAction\n ) {\n actionTypes.push(ActionTypeV2.ToolBar);\n } else if (\n lineItemRecord.Inline !== true &&\n lineItemRecord.Determining !== true &&\n lineItemRecord.$Type === UIAnnotationTypes.DataFieldForIntentBasedNavigation\n ) {\n actionTypes.push(ActionTypeV2.ToolBarIntentBased);\n } else if (lineItemRecord.Determining === true && lineItemRecord.$Type === UIAnnotationTypes.DataFieldForAction) {\n actionTypes.push(ActionTypeV2.Footer);\n } else if (\n lineItemRecord.Determining === true &&\n lineItemRecord.$Type === UIAnnotationTypes.DataFieldForIntentBasedNavigation\n ) {\n actionTypes.push(ActionTypeV2.FooterIntentBased);\n }\n getColumnActionType(lineItemId, lineItemRecord, actionTypes);\n return actionTypes;\n}\n\ntype LineItemProperties = {\n lineItemPath: string;\n lineItemRecord: DataFieldAbstractTypes;\n lineItemId: string;\n entityType: EntityType;\n};\n\nfunction generateGenericColumn(lineItemProperties: LineItemProperties, appSchema: Definition, recordIndex: number) {\n const schemaKey = getSchemaKeyOfLineItemRecord(lineItemProperties.lineItemRecord);\n if (schemaKey) {\n const lineItemDefinition = appSchema.definitions[lineItemProperties.lineItemId] as Definition;\n lineItemDefinition.properties[schemaKey] = {\n $ref: DEFINITION_LINK_PREFIX + DefinitionName.TableColumn,\n description: getDatafieldDescription(lineItemProperties.lineItemRecord, lineItemProperties.entityType)\n // Custom property in schema - for object properties ordering purpose\n };\n lineItemDefinition.properties[schemaKey][SchemaTag.propertyIndex] = recordIndex;\n lineItemDefinition.properties[schemaKey][\n SchemaTag.annotationPath\n ] = `${lineItemProperties.lineItemPath}/${recordIndex}`;\n addDataTypeToDefinition(\n lineItemDefinition.properties[schemaKey] as Definition,\n lineItemProperties.lineItemRecord\n );\n }\n}\n\nfunction handleAnyAction(\n actionType: ActionTypeV2,\n appSchema: Definition,\n actions: object,\n lineItemProperties: LineItemProperties,\n recordIndex: number,\n footerActions: object,\n lineItemId: string\n) {\n switch (actionType) {\n case ActionTypeV2.ToolBar:\n case ActionTypeV2.ToolBarIntentBased: {\n handleActionRecord(appSchema, actions, lineItemProperties, actionType, recordIndex);\n break;\n }\n case ActionTypeV2.Footer:\n case ActionTypeV2.FooterIntentBased: {\n if (footerActions) {\n handleActionRecord(appSchema, footerActions, lineItemProperties, actionType, recordIndex);\n }\n break;\n }\n case ActionTypeV2.Column:\n case ActionTypeV2.ColumnIntentBased: {\n handleActionRecord(\n appSchema,\n appSchema.definitions[lineItemId] as Definition,\n lineItemProperties,\n actionType,\n recordIndex\n );\n break;\n }\n case ActionTypeV2.OPColumn: {\n generateGenericColumn(lineItemProperties, appSchema, recordIndex);\n }\n }\n}\n\n/**\n * Adds the line item records to the app schema (for the list report or an object page section comprising a table)\n * @param appSchema - the app specific schema that shall get enhanced\n * @param lineItemAnnotation - the UI.LineItem annotation, comprising all records\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n * @param lineItemId - optional: in case of OP the parameter must be passed to distinguish the OP tables;\n * in case of LR or ALP no ID is passed, 'LineItems' is taken then.\n * @param customColumnRef - schema reference to custom column definition.\n */\nexport function addLineItemsType(\n appSchema: Definition,\n lineItemAnnotation: AnnotationTerm<LineItem>,\n entityType: EntityType,\n lineItemId?: string,\n customColumnRef?: string\n): void {\n // Add the correct lineItem definition\n lineItemId = lineItemId || DefinitionName.LineItems;\n\n const { actions, footerActions, lineItemPath } = addCommonLineItemDefinitions(\n appSchema,\n lineItemAnnotation,\n entityType,\n lineItemId\n );\n\n if (lineItemAnnotation) {\n let recordIndex = 0;\n lineItemAnnotation.forEach((lineItemRecord) => {\n const lineItemProperties: LineItemProperties = { lineItemPath, lineItemRecord, lineItemId, entityType };\n const actionTypes = getActionType(lineItemRecord, lineItemId);\n if (actionTypes) {\n actionTypes.forEach((actionType) => {\n handleAnyAction(\n actionType,\n appSchema,\n actions,\n lineItemProperties,\n recordIndex,\n footerActions,\n lineItemId\n );\n });\n } else {\n generateGenericColumn(lineItemProperties, appSchema, recordIndex);\n }\n recordIndex++;\n });\n }\n if (customColumnRef) {\n (appSchema.definitions[lineItemId] as Definition).properties['custom'] = {\n $ref: `${DEFINITION_LINK_PREFIX}${customColumnRef}`\n };\n }\n}\n\n/**\n * Adds enum entries of possible leading properties for 'leadingProperty' property in TableCustomColumn properties.\n * @param appSchema - the app specific schema that shall get enhanced\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n * @param definitionName - definition name of CustomColumn definition\n */\nexport function addListReportLeadingProperties(\n appSchema: object,\n entityType: EntityType,\n definitionName: string\n): void {\n // Leading Property\n const leadingPropertySchema =\n appSchema['definitions'][definitionName] &&\n appSchema['definitions'][definitionName]['properties'] &&\n appSchema['definitions'][definitionName]['properties']['leadingProperty'];\n if (leadingPropertySchema) {\n const properties = [\n // Entity properties\n ...(entityType?.entityProperties || []),\n // Navigation Properties\n ...(entityType?.navigationProperties || [])\n ];\n leadingPropertySchema['enum'] = properties?.reduce((result: string[], property) => {\n if (!result.includes(property.name)) {\n result.push(property.name);\n }\n return result;\n }, []);\n }\n}\n\n/**\n * Adds enum entries of posible tabKey properties for 'leadingProperty' property in TableCustomColumn properties.\n * @param appSchema - the app specific schema that shall get enhanced\n * @param definitionName - definition name of CustomColumn definition\n * @param page - sapui5 page object\n */\nexport function addTabkeyEnum(appSchema: object, definitionName: string, page?: SapUiAppPageV2): void {\n const tabkeyPropertySchema =\n appSchema['definitions'][definitionName] &&\n appSchema['definitions'][definitionName]['properties'] &&\n appSchema['definitions'][definitionName]['properties']['tabKey'];\n if (page) {\n const quickVariantsX =\n page.component &&\n page.component.settings &&\n page.component.settings.quickVariantSelectionX &&\n page.component.settings.quickVariantSelectionX['variants'];\n if (quickVariantsX) {\n const enumEntries = [];\n Object.keys(quickVariantsX).reduce((result: string[], variant) => {\n const key =\n quickVariantsX[variant] && quickVariantsX[variant]['key'] !== undefined\n ? quickVariantsX[variant]['key']\n : undefined;\n // Avoid duplicates\n if (key !== undefined && !result.includes(key)) {\n result.push(key);\n }\n return result;\n }, enumEntries);\n tabkeyPropertySchema['enum'] = enumEntries;\n }\n }\n}\n\n/**\n * Adds enum entries of posible fragment entries.\n * @param {object} appSchema The app specific schema that shall get enhanced.\n * @param {FileData[]} fragments Array of fragments.\n * @param {string[]} appId Application id.\n * @param {string} property Property name.\n * @param {string} definitionName Definition name of CustomColumn definition.\n */\nexport function addFragmentEnum(\n appSchema: Definition,\n fragments: FileData[],\n appId: string,\n property: string,\n definitionName: string\n): void {\n if (!fragments || !appId || appId.startsWith('${')) {\n return;\n }\n const enumEntries = [];\n fragments.forEach((fragment) => {\n let relPath = fragment.dataSourceUri.split('webapp')[1];\n if (relPath && relPath.indexOf('.fragment.xml') > 0) {\n const fragmentJson = JSON.parse(xml2json(fragment.fileContent, { compact: true }))[\n 'core:FragmentDefinition'\n ];\n if (\n (property === 'fragmentName' &&\n (!fragmentJson || fragmentJson.Column || fragmentJson['table:Column'])) ||\n (property === 'cellsFragmentName' &&\n (!fragmentJson ||\n (!fragmentJson.Column &&\n !fragmentJson['table:Column'] &&\n !fragmentJson['smartfilterbar:ControlConfiguration'])))\n ) {\n relPath = relPath.replace(new RegExp('\\\\' + sep, 'g'), '/');\n const fragmentName = appId + relPath.split('.fragment.xml')[0].replace(/\\//g, '.');\n enumEntries.push(fragmentName);\n }\n }\n });\n if (enumEntries.length > 0) {\n const fragmentPropertySchema = appSchema.definitions[definitionName]?.['properties']?.[property];\n fragmentPropertySchema['enum'] = enumEntries;\n }\n}\n\n/**\n * Adds the custom columns to the line item records of the app schema (for the list report comprising a table).\n * @param {object} appSchema The app specific schema that shall get enhanced.\n * @param {EntityType} entityType The entity type as part of the AVT ConvertedMetadata.\n * @param {SapUiAppPageV2} page Sapui5 page object.\n * @param {object} manifest Application manifest.\n * @param {FileData[]} [fragments] Array of fragments.\n * @param {string} [customColumnsDefinitionName=DefinitionName.CustomColumns] Definition name of Custom Columns definition.\n * @param {string} [customColumnDefinitionName=DefinitionName.CustomColumn] Definition name of Custom Column definition.\n */\nexport function addTableColumnExtensions(\n appSchema: object,\n entityType: EntityType,\n page: SapUiAppPageV2,\n manifest: object,\n fragments?: FileData[],\n customColumnsDefinitionName: string = DefinitionName.CustomColumns,\n customColumnDefinitionName: string = DefinitionName.CustomColumn\n): void {\n addCustomColumnDefinition(appSchema, customColumnsDefinitionName, customColumnDefinitionName);\n\n // Leading Property\n addListReportLeadingProperties(appSchema, entityType, customColumnDefinitionName);\n // Tab key property\n addTabkeyEnum(appSchema, customColumnDefinitionName, page);\n // Fragment property\n const appId = manifest && manifest['sap.app'] && manifest['sap.app']['id'];\n addFragmentEnum(appSchema, fragments, appId, 'fragmentName', customColumnDefinitionName);\n addFragmentEnum(appSchema, fragments, appId, 'cellsFragmentName', customColumnDefinitionName);\n}\n\n/**\n * Processes an anyOf definition of the generic schema\n * @param propertyDefinition - current definition in the generic schema\n * @param schema - the app-specific schema\n * @param propertyKey - key of the single property\n * @param factory - factory for creating metadata instances\n * @param pageType - page type\n */\nfunction processAnyOf(\n propertyDefinition: any,\n schema: object,\n propertyKey: string,\n factory: MetadataInstanceInterface,\n pageType: PageType\n) {\n propertyDefinition['anyOf'].forEach((element) => {\n const nextDefinition = getNextTargetDefinition(schema, '', {}, element, propertyKey, factory, pageType);\n if (nextDefinition) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processMetadata(schema, nextDefinition.targetDefinition, nextDefinition.configObject, pageType, factory);\n }\n });\n}\n\n/**\n * Processes an object reference of the generic schema\n * @param schema\n * @param propertyDefinition - current definition in the generic schema\n * @param propertyKey - key of the single property\n * @param factory - factory for creating metadata instances\n * @param pageType - page type\n */\nfunction processObject(\n schema: object,\n propertyDefinition: any,\n propertyKey: string,\n factory: MetadataInstanceInterface,\n pageType: PageType\n) {\n const nextDefinition = getNextTargetDefinition(schema, '', {}, propertyDefinition, propertyKey, factory, pageType);\n if (nextDefinition) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n processMetadata(schema, nextDefinition.targetDefinition, nextDefinition.configObject, pageType, factory);\n }\n}\n\n/**\n * Determines the artifact type of a property and adds it to the property definition in schema\n * @param syncRule - sync rule of the current property\n * @param propertyDefinition - current definition in the generic schema\n */\nfunction addArtifactType(syncRule: SyncRule, propertyDefinition: any) {\n if (syncRule.manifest !== undefined) {\n propertyDefinition.artifactType = ArtifactType.Manifest;\n } else if (syncRule.flex !== undefined) {\n propertyDefinition.artifactType = ArtifactType.FlexChange;\n //Add control type\n if (syncRule.flex.controlType) {\n propertyDefinition.controlType = syncRule.flex.controlType();\n }\n } else {\n propertyDefinition.artifactType = ArtifactType.Annotation;\n }\n}\n\n/**\n * After the generation of a generic schema, apply post-generation rule to a single property\n * @param metaDataDefinition\n * @param schema - given app schema, to be adapted\n * @param pageType - page type\n * @param factory - factory for creating metadata instances\n * @param propertyDefinition - definition of the single property\n * @param propertyKey - key of the single property\n * @param schemaDefinition - the current entry point or definition in the app schema\n */\nfunction processSingleProperty(\n metaDataDefinition: { [key: string]: any },\n schema: object,\n pageType: PageType,\n factory: MetadataInstanceInterface,\n propertyDefinition: any,\n propertyKey: string,\n schemaDefinition: object\n): void {\n if (metaDataDefinition) {\n const syncRule = getReflectMetadata(metaDataDefinition, propertyKey);\n if (syncRule) {\n if (typeof syncRule.generate === 'function') {\n syncRule.generate(schema, schemaDefinition, propertyKey);\n propertyDefinition = schemaDefinition['properties'][propertyKey];\n }\n //Add artifact type\n addArtifactType(syncRule, propertyDefinition);\n }\n if (propertyDefinition.type === 'object' || propertyDefinition.$ref) {\n processObject(schema, propertyDefinition, propertyKey, factory, pageType);\n } else if (propertyDefinition['anyOf']) {\n processAnyOf(propertyDefinition, schema, propertyKey, factory, pageType);\n }\n }\n}\n\n/**\n * After the generation of a generic schema, apply rules to a list of properties of the given schema section\n * @param schema - given app schema, to be adapted\n * @param schemaDefinition - the current entry point or definition in the app schema\n * @param pageType - page type\n * @param factory - factory for creating metadata instances\n */\nfunction processProperties(\n schema: object,\n schemaDefinition: object,\n metaDataDefinition: { [key: string]: any },\n propertiesSection: string,\n pageType: PageType,\n factory: MetadataInstanceInterface\n) {\n if (schemaDefinition[propertiesSection]) {\n for (const propertyKey in schemaDefinition[propertiesSection]) {\n if (propertyKey === 'anyOf') {\n processAnyOf(schemaDefinition[propertiesSection], schema, propertyKey, factory, pageType);\n } else {\n const propertyDefinition = schemaDefinition[propertiesSection][propertyKey];\n if (propertyDefinition['anyOf']) {\n processAnyOf(propertyDefinition, schema, propertyKey, factory, pageType);\n } else if (propertyKey === '$ref') {\n processObject(schema, schemaDefinition[propertiesSection], propertyKey, factory, pageType);\n } else {\n processSingleProperty(\n metaDataDefinition,\n schema,\n pageType,\n factory,\n propertyDefinition,\n propertyKey,\n schemaDefinition\n );\n }\n }\n }\n }\n}\n\n/**\n * Apply post-processing rules as specified in form of \"generate\" at the syncRule\n * @param schema - given app schema, to be adapted\n * @param schemaDefinition - the current entry point or definition in the app schema\n * @param pageType - page type\n * @param factory - factory for creating metadata instances\n */\nexport function processMetadata(\n schema: object,\n schemaDefinition: object,\n metaDataDefinition: { [key: string]: any },\n pageType: PageType,\n factory: MetadataInstanceInterface\n): void {\n processProperties(schema, schemaDefinition, metaDataDefinition, 'properties', pageType, factory);\n processProperties(schema, schemaDefinition, metaDataDefinition, 'additionalProperties', pageType, factory);\n processProperties(schema, schemaDefinition, metaDataDefinition, 'patternProperties', pageType, factory);\n}\n\n/**\n * Method updates passed 'enum' array by removing passed matching entries.\n * @param {Array<unknown>} values Array of values.\n * @param {Array<unknown>} valuesToRemove Array of values to remove.\n */\nexport function removeElementsFromEnum(values: Array<unknown>, valuesToRemove: Array<unknown>): void {\n for (const value of valuesToRemove) {\n const index = values.indexOf(value);\n if (index !== -1) {\n // Value exists - remove it\n values.splice(index, 1);\n }\n }\n}\n\n/**\n * Adds the selection fields to the app schema, as properties of the Filterbar\n * @param entityType - the entity type as part of the AVT ConvertedMetadata\n * @param appSchema - the app specific schema that shall get enhanced\n * @param selectionFieldsAnnotation - the UI.SelectionField annotation\n */\nexport function addSelectionFields(\n appSchema: object,\n selectionFieldsAnnotation: AnnotationTerm<SelectionFields>,\n entityType: EntityType\n): void {\n const selectionFieldsDefinition = (appSchema['definitions'].SelectionFields = {\n ...appSchema['definitions'].SelectionFields,\n properties: {},\n additionalProperties: false,\n annotationPath: createAnnotationPath(entityType.fullyQualifiedName, UIAnnotationTerms.SelectionFields)\n });\n if (!selectionFieldsAnnotation) {\n return;\n }\n let i = 0;\n selectionFieldsAnnotation.forEach((selectionField) => {\n let description = selectionField.value;\n const fieldDefinition = `SelectionField<${prepareRef(selectionField.value)}>`;\n const dataType = determineDataType(selectionField);\n if (selectionField.type === 'PropertyPath') {\n description = getLabelForPropertyPath(selectionField, entityType);\n }\n selectionFieldsDefinition['properties'][selectionField.value] = {\n $ref: DEFINITION_LINK_PREFIX + fieldDefinition,\n propertyIndex: i\n };\n appSchema['definitions'][fieldDefinition] = {\n type: 'object',\n description,\n annotationPath: `${selectionFieldsDefinition.annotationPath}/${i}`,\n isViewNode: true,\n additionalProperties: false,\n annotationType: selectionField?.type,\n dataType,\n properties: {}\n };\n i++;\n });\n}\n", "import { addLineItemsType, addSelectionFields, addTableColumnExtensions } from './utils';\nimport { findListReportPageV2 } from '../import';\nimport {\n DEFINITION_LINK_PREFIX,\n METADATAPATH,\n addEnumForSingleTabVariant,\n addEnumForMultiTabVariant,\n addEnumForVariantEntitySet\n} from '../../common';\nimport i18next from 'i18next';\nimport { initI18n } from '../../../i18n/i18n';\nimport type { GenerateAppSchemaParameters } from '../../../v2';\nimport { MANIFESTPATH, ManifestSection, DefinitionName } from '../../../v2';\nimport { LogSeverity, log } from '../../../extensionLogger';\nimport { ANALYTICALTABLE, GRIDTABLE, RESPONSIVETABLE, TREETABLE } from '../types';\nimport type { ConvertedMetadata, EntitySet, EntityType } from '@sap-ux/vocabularies-types';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Adds the enum types for QuickVariant and QuickVariantX, based on the entity type annotations\n * @param {EntityType} entityType\n * @param {EntitySet} entitySet - current entity set of the page or view\n * @param {Definition} appSchema - app specific JSON schema\n * @param {ConvertedMetadata} oDataServiceAVT - combined service metadata, as returned by annotation vocabularies tools\n */\nexport function addEnumForVariantPaths(\n entityType: EntityType,\n entitySet: EntitySet,\n appSchema: Definition,\n oDataServiceAVT: ConvertedMetadata\n): void {\n addEnumForSingleTabVariant(entityType, appSchema, 'QuickVariant');\n addEnumForMultiTabVariant(appSchema, 'QuickVariantX', entitySet);\n addEnumForVariantEntitySet(oDataServiceAVT, appSchema, 'QuickVariantX');\n}\n\n/**\n * Generates an app specific schema for the FE V2 Listreport from the generic schema.\n * Generic types are replaced by information from the app specific annotations.\n * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters\n * @param {object} genericSchema - generic JSON schema of a list report\n * @param {string} entityTypeName - the base entity type of the given page\n * @param {EntityType[]} entityTypes - list of all entity types\n * @returns appSchema - the application specific JSON schema\n */\nexport function generateListReportSchemaV2(\n generateParameters: GenerateAppSchemaParameters,\n genericSchema: object,\n entityTypeName: string\n): object {\n // Initialize i18next\n initI18n();\n\n const appSchema = JSON.parse(JSON.stringify(genericSchema)) as Definition;\n if (!generateParameters?.serviceAVT) {\n return appSchema;\n }\n\n appSchema['properties']['table']['anyOf']['0']['$ref'] = DEFINITION_LINK_PREFIX + RESPONSIVETABLE;\n appSchema['properties']['table']['anyOf']['1']['$ref'] = DEFINITION_LINK_PREFIX + TREETABLE;\n appSchema['properties']['table']['anyOf']['2']['$ref'] = DEFINITION_LINK_PREFIX + ANALYTICALTABLE;\n appSchema['properties']['table']['anyOf']['3']['$ref'] = DEFINITION_LINK_PREFIX + GRIDTABLE;\n\n const responsiveTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['ResponsiveTable']));\n const treeTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['TreeTable']));\n const analyticalTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['AnalyticalTable']));\n const gridTableDefinition = JSON.parse(JSON.stringify(appSchema['definitions']['GridTable']));\n\n const lrLineItems = {\n $ref: DEFINITION_LINK_PREFIX + DefinitionName.LineItems\n };\n responsiveTableDefinition['properties']['columns'] = lrLineItems;\n treeTableDefinition['properties']['columns'] = lrLineItems;\n analyticalTableDefinition['properties']['columns'] = lrLineItems;\n gridTableDefinition['properties']['columns'] = lrLineItems;\n\n const lrToolBar = DEFINITION_LINK_PREFIX + DefinitionName.ToolBarLR;\n appSchema['definitions'][RESPONSIVETABLE] = responsiveTableDefinition;\n appSchema['definitions'][RESPONSIVETABLE]['properties'].toolBar.$ref = lrToolBar;\n appSchema['definitions'][TREETABLE] = treeTableDefinition;\n appSchema['definitions'][TREETABLE]['properties'].toolBar.$ref = lrToolBar;\n appSchema['definitions'][ANALYTICALTABLE] = analyticalTableDefinition;\n appSchema['definitions'][ANALYTICALTABLE]['properties'].toolBar.$ref = lrToolBar;\n appSchema['definitions'][GRIDTABLE] = gridTableDefinition;\n appSchema['definitions'][GRIDTABLE]['properties'].toolBar.$ref = lrToolBar;\n\n const entityType = generateParameters?.serviceAVT.entityTypes.find((et) => et.name === entityTypeName);\n if (!entityType) {\n log(generateParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOENTITYTYPE', { entityType: entityTypeName }),\n location: {\n path: METADATAPATH\n }\n });\n } else {\n //handle line items\n const lineItemAnnotation =\n entityType.annotations && entityType.annotations.UI && entityType.annotations.UI.LineItem;\n addLineItemsType(appSchema, lineItemAnnotation, entityType);\n //handle filter fields\n const selectionFieldAnnotation = entityType?.annotations?.UI?.SelectionFields;\n addSelectionFields(appSchema, selectionFieldAnnotation, entityType);\n\n const pageKeys = [];\n const v2Page = findListReportPageV2(generateParameters.manifest[ManifestSection.generic].pages, pageKeys);\n if (!v2Page) {\n log(generateParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOALP'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return appSchema;\n }\n addTableColumnExtensions(\n appSchema,\n entityType,\n v2Page,\n generateParameters.manifest,\n generateParameters.fragments\n );\n\n const entitySet = generateParameters?.serviceAVT.entitySets?.find((es) => es.name === v2Page.entitySet);\n addEnumForVariantPaths(entityType, entitySet, appSchema, generateParameters.serviceAVT);\n\n //Delete generic definitions\n delete appSchema.definitions['ResponsiveTableWithMultiSelect'];\n delete appSchema.definitions['ResponsiveTableWithInlineDelete'];\n delete appSchema.definitions['TreeTable'];\n delete appSchema.definitions['AnalyticalTable'];\n delete appSchema.definitions['GridTable'];\n delete appSchema.definitions['GenericColumns'];\n delete appSchema.definitions['TableColumnAction'];\n delete appSchema.definitions['ToolBar'];\n delete appSchema.definitions['Actions'];\n delete appSchema.definitions['GenericFooter'];\n }\n return appSchema;\n}\n", "import { addLineItemsType, addSelectionFields, addTableColumnExtensions, removeElementsFromEnum } from './utils';\nimport { findAnalyticalListPage } from '../import';\nimport { DEFINITION_LINK_PREFIX, METADATAPATH, DefinitionName } from '../../common';\nimport i18next from 'i18next';\nimport { initI18n } from '../../../i18n/i18n';\nimport { LogSeverity, log } from '../../../extensionLogger';\nimport type { GenerateAppSchemaParameters } from '../../../v2';\nimport { TableColumnExtensionTypeV2, ManifestSection, PropertyName } from '../../../v2';\nimport { addEnumForVariantPaths } from './listReport';\nimport type { Definition } from 'typescript-json-schema';\n\n/**\n * Generates an app specific schema out of the generic schema.\n * Generic types are replaced by information from the app specific annotations.\n * @param {GenerateAppSchemaParameters} generateParameters - list of API input parameters\n * @param genericSchema - generic JSON schema of a list report\n * @param entityTypeName - the base entity type of the given page\n */\nexport function generateAnalyticalListReportSchemaV2(\n generateParameters: GenerateAppSchemaParameters,\n genericSchema: object,\n entityTypeName: string\n): object {\n // Initialize i18next\n initI18n();\n\n const appSchema = JSON.parse(JSON.stringify(genericSchema)) as Definition;\n\n (appSchema.properties[PropertyName.table] as Definition).anyOf[0]['$ref'] =\n DEFINITION_LINK_PREFIX + 'ALPResponsiveTable<LineItems>';\n const tableDefinitionResponsive = JSON.parse(\n JSON.stringify(appSchema.definitions['ALPResponsiveTable'])\n ) as Definition;\n tableDefinitionResponsive.properties['columns']['$ref'] = `${DEFINITION_LINK_PREFIX}${DefinitionName.LineItems}`;\n tableDefinitionResponsive.properties['toolBar']['$ref'] = `${DEFINITION_LINK_PREFIX}${DefinitionName.ToolBarLR}`;\n appSchema.definitions['ALPResponsiveTable<LineItems>'] = tableDefinitionResponsive;\n\n appSchema.properties[PropertyName.table]['anyOf'][1]['$ref'] = `${DEFINITION_LINK_PREFIX}ALPGridTable<LineItems>`;\n const tableDefinitionGrid = JSON.parse(JSON.stringify(appSchema['definitions']['ALPGridTable'])) as Definition;\n tableDefinitionGrid.properties['columns']['$ref'] = `${DEFINITION_LINK_PREFIX}${DefinitionName.LineItems}`;\n tableDefinitionGrid.properties['toolBar']['$ref'] = `${DEFINITION_LINK_PREFIX}${DefinitionName.ToolBarLR}`;\n appSchema.definitions['ALPGridTable<LineItems>'] = tableDefinitionGrid;\n\n appSchema.properties[PropertyName.table]['anyOf'][2][\n '$ref'\n ] = `${DEFINITION_LINK_PREFIX}ALPAnalyticalTable<LineItems>`;\n const tableDefinitionAnalytical = JSON.parse(\n JSON.stringify(appSchema.definitions['ALPAnalyticalTable'])\n ) as Definition;\n tableDefinitionAnalytical.properties['columns']['$ref'] = `${DEFINITION_LINK_PREFIX}${DefinitionName.LineItems}`;\n tableDefinitionAnalytical.properties['toolBar']['$ref'] = `${DEFINITION_LINK_PREFIX}${DefinitionName.ToolBarLR}`;\n appSchema.definitions['ALPAnalyticalTable<LineItems>'] = tableDefinitionAnalytical;\n\n // Remove Custom Column non existing extensions - TreeTableColumnsExtension does not exist in ALP\n removeElementsFromEnum(appSchema['definitions']['TableColumnExtensionTypeV2']['enum'], [\n TableColumnExtensionTypeV2.TreeTableColumnsExtension\n ]);\n\n const entityType = generateParameters?.serviceAVT.entityTypes?.find((et) => et.name === entityTypeName);\n if (!entityType) {\n log(generateParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOENTITYTYPE', { entityType: entityTypeName }),\n location: {\n path: METADATAPATH\n }\n });\n } else {\n //handle line items\n const lineItemAnnotation = entityType?.annotations?.UI?.LineItem;\n addLineItemsType(appSchema, lineItemAnnotation, entityType);\n //handle filter fields\n const selectionFieldAnnotation = entityType?.annotations?.UI?.SelectionFields;\n addSelectionFields(appSchema, selectionFieldAnnotation, entityType);\n\n const pageKeys = [];\n const v2Page = findAnalyticalListPage(\n generateParameters.manifest[ManifestSection.generic].pages,\n pageKeys,\n generateParameters.logger\n );\n if (!v2Page) {\n return appSchema;\n }\n addTableColumnExtensions(\n appSchema,\n entityType,\n v2Page,\n generateParameters.manifest,\n generateParameters.fragments\n );\n const entitySet = generateParameters?.serviceAVT.entitySets?.find((es) => es.name === v2Page.entitySet);\n addEnumForVariantPaths(entityType, entitySet, appSchema, generateParameters.serviceAVT);\n\n // Delete generic definitions that have been replaced\n delete appSchema.definitions['ALPGridTable'];\n delete appSchema.definitions['ALPResponsiveTable'];\n delete appSchema.definitions['ALPAnalyticalTable'];\n delete appSchema.definitions['GenericColumns'];\n delete appSchema.definitions['TableColumnAction'];\n delete appSchema.definitions['ToolBar'];\n delete appSchema.definitions['GenericFooter'];\n delete appSchema.definitions['Actions'];\n }\n\n return appSchema;\n}\n", "import type { Manifest, SapUi5OdataModel } from '../../../specification/common';\nimport { DEFINITION_LINK_PREFIX } from '../../common';\n\n/**\n * Method returns array of card definition names.\n * @param genericSchema - Generic schema of Overview Page.\n *\n * @returns Array of definition names\n */\nexport function getCardDefinitionNames(genericSchema: object): Array<string> {\n // Apply enum to all card properties\n const properties = genericSchema['properties'];\n const cardProperties =\n (properties['cards'] &&\n properties['cards']['additionalProperties'] &&\n properties['cards']['additionalProperties']['anyOf']) ||\n [];\n return cardProperties.map((cardProperty: object) => {\n // Resolve ref\n const refParts = cardProperty['$ref'].split('/');\n return refParts[refParts.length - 1];\n });\n}\n\n/**\n * Defines and adds enum entries for 'model' property of Cards.\n * @param appSchema - the app specific schema that shall get enhanced\n * @param manifest - manifest.json of the app\n */\nexport function addModelsEnum(appSchema: object, manifest: Manifest): void {\n const dataSources = (manifest && manifest['sap.app'] && manifest['sap.app'].dataSources) || {};\n const serviceKeys = Object.keys(dataSources);\n const models = (manifest && manifest['sap.ui5'] && manifest['sap.ui5'].models) || {};\n let enumValues = [];\n enumValues = enumValues.concat(\n Object.keys(models).filter((model) => serviceKeys.includes((models[model] as SapUi5OdataModel).dataSource))\n );\n\n // Define enum\n const definition = appSchema['definitions'];\n definition['CardModel'] = {\n enum: enumValues,\n type: 'string'\n };\n // Apply enum to all card properties\n const cards = getCardDefinitionNames(appSchema);\n for (const card of cards) {\n const property = definition[card]['properties']['model'];\n delete property.type;\n property['$ref'] = DEFINITION_LINK_PREFIX + 'CardModel';\n }\n}\n\n/**\n * Generates an app specific schema out of the generic schema.\n * Generic types are replaced by information from the app manifest.\n *\n * @param genericSchema - generic JSON schema of an object page\n * @param manifest - manifest.json of the app\n *\n * @returns the app specific JSON schema\n */\nexport function generateOverviewPageSchemaV2(genericSchema: object, manifest: Manifest): object {\n const appSchema = JSON.parse(JSON.stringify(genericSchema));\n // schema validation for card name\n appSchema['properties']['cards']['propertyNames'] = {\n pattern: '^[a-zA-Z0-9_\\\\.\\\\-]+$'\n };\n // Enhance 'model' property with enum entries\n addModelsEnum(appSchema, manifest);\n return appSchema;\n}\n", "import { parseAndMergeAndConvert, TemplateType } from '../../common/utils';\nimport type { FileData } from '../../common/types';\nimport { generateObjectPageSchemaV2 } from './objectPage';\nimport { generateListReportSchemaV2 } from './listReport';\nimport { generateAnalyticalListReportSchemaV2 } from './analyticalListReport';\nimport { generateOverviewPageSchemaV2 } from './overviewPage';\nimport type { ExtensionLogger, GenerateAppSchemaParameters } from '../../../apiTypes';\nimport { FioriElementsVersion } from '../../..';\n\n/**\n * Generates an app specific schema out of the generic schema.\n * Generic types are replaced by information from the app specific annotations.\n *\n * @param {object} genericSchema - generic JSON schema of an object page\n * @param {string} entitySet - the base entity type of the given page\n * @param {FileData[]} annotations - list of all annotation files (file content plus URI as identifier)\n * @param {object} manifest - manifest.json of the app\n * @param {FileData[]} [fragments] - Array with XML fragments.\n * @param {ExtensionLogger} logger - Logger class for logging messages\n *\n * @returns the app specific JSON schema\n */\nexport function generateObjectPageInterfaceV2(\n genericSchema: object,\n entitySet: string,\n annotations: FileData[],\n manifest: object,\n fragments?: FileData[],\n logger?: ExtensionLogger\n): object {\n const serviceAVT = parseAndMergeAndConvert(annotations, logger);\n const generateParameters: GenerateAppSchemaParameters = {\n templateType: TemplateType.ListReportObjectPageV2,\n fioriElementsVersion: FioriElementsVersion.v2,\n manifest,\n fragments,\n serviceAVT,\n logger\n };\n return generateObjectPageSchemaV2(generateParameters, genericSchema, entitySet);\n}\n\n/**\n * Generates the app specific schema of a list report out of the generic schema.\n * Generic types are replaced by information from the app specific annotations.\n *\n * @param genericSchema - generic JSON schema of a list report\n * @param entityType - the base entity type of the given page\n * @param annotations - list of all annotation files (file content plus URI as identifier)\n * @param manifest - manifest.json of the app\n * @param {FileData[]} fragments - list of fragment files and their content\n * @param {ExtensionLogger} logger - Logger class for logging messages\n *\n * @returns the app specific JSON schema\n */\nexport function generateListReportInterfaceV2(\n genericSchema: object,\n entityType: string,\n annotations: FileData[],\n manifest: object,\n fragments?: FileData[],\n logger?: ExtensionLogger\n): object {\n const serviceAVT = parseAndMergeAndConvert(annotations, logger);\n const generateParameters: GenerateAppSchemaParameters = {\n templateType: TemplateType.ListReportObjectPageV2,\n fioriElementsVersion: FioriElementsVersion.v2,\n manifest,\n fragments,\n serviceAVT,\n logger\n };\n return generateListReportSchemaV2(generateParameters, genericSchema, entityType);\n}\n\n/**\n * Generates the app specific schema of an overview page\n * @param genericSchema - file content of the generic schema\n * @param manifest - manifest.json of the app\n *\n * @returns the generic schema, as equivalent to the app schema\n */\nexport function generateOVPInterfaceV2(genericSchema: object, manifest: object): object {\n return generateOverviewPageSchemaV2(genericSchema, manifest);\n}\n\n/**\n * Generates the app specific schema of an analytical list page out of the generic schema.\n * Generic types are replaced by information from the app specific annotations.\n *\n * @param genericSchema - generic JSON schema of a list report\n * @param entityType - the base entity type of the given page\n * @param annotations - list of all annotation files (file content plus URI as identifier)\n * @param manifest - manifest.json of the app\n * @param {FileData[]} fragments - list of fragment files and their content\n * @param {ExtensionLogger} logger - Logger class for logging messages\n * @param {string} appId - application ID\n *\n * @returns the app specific JSON schema\n */\nexport function generateAnalyticalListPageInterfaceV2(\n genericSchema: object,\n entityType: string,\n annotations: FileData[],\n manifest: object,\n fragments?: FileData[],\n logger?: ExtensionLogger\n): object {\n const serviceAVT = parseAndMergeAndConvert(annotations, logger);\n const generateParameters: GenerateAppSchemaParameters = {\n templateType: TemplateType.AnalyticalListPageV2,\n fioriElementsVersion: FioriElementsVersion.v2,\n manifest,\n fragments,\n serviceAVT,\n logger\n };\n return generateAnalyticalListReportSchemaV2(generateParameters, genericSchema, entityType);\n}\n", "import i18next from 'i18next';\nimport _unset from 'lodash.unset';\nimport Ajv from 'ajv';\nimport type { UI5Version, ExportParametersV2, FioriElementsVersion } from '../../..';\nimport { PageType, ManifestSection, SchemaType } from '../../..';\nimport type { ObjectPage } from './pages';\nimport type {\n ListReportConfig,\n ObjectPageConfig,\n SapUiAppPageV2,\n ExportListReportV2Parameters,\n ExportAnalyticalListPageV2Parameters,\n ExportObjectPageV2Parameters,\n ExportOverviewPageV2Parameters\n} from '../../../v2';\nimport { CardSettingsType, SAPUI5_FRAGMENT_CLASS } from '../../../v2';\nimport type { FileData, ExportResults } from '../../common';\nimport { getPageLayoutInformation, MANIFESTPATH, getReflectMetadata } from '../../common';\nimport { ApplicationV2, AppSettings } from '../application';\nimport { ensureManifestSectionByPathV2, transformPageToNewManifestV2 } from './manifest';\nimport { findListReportPageV2, findAnalyticalListPage, findObjectPageV2 } from '../import';\nimport { MetadataInstanceFactoryV2 as Factory } from './factory';\nimport { transferManifestEntriesAndFlexChange, transferManifestEntriesOVP } from './export';\nimport type { MetadataInstanceInterface } from '../../common/decoration/factory';\nimport type { TransferParameterTypeV2 } from '../types';\nimport { log, LogSeverity } from '../../../extensionLogger';\n\n/**\n * Returns a fresh export results object with default values\n */\nconst getDefaultExportResult = (fragmentFiles?: FileData[]): ExportResults => ({\n flexChanges: [],\n manifest: {\n [ManifestSection.generic]: { pages: {} }\n },\n fragments: fragmentFiles ? fragmentFiles : []\n});\n\n/**\n * Instantiates the export classes for a single object page section\n * @param currentSection - Export class as an object, to be updated\n * @param sectionId - Current section ID\n * @param {MetadataInstanceInterface} factory - factory for creating metadata instances\n */\nfunction getClassesForSingleSection(\n currentSection: object,\n sectionId: string,\n factory: MetadataInstanceInterface\n): void {\n if (currentSection && sectionId === 'custom') {\n // Custom sections\n for (const index in currentSection) {\n if (currentSection[index].className === SAPUI5_FRAGMENT_CLASS) {\n currentSection[index] = factory.createInstance(\n PageType.ObjectPage,\n 'ObjectPageCustomSectionFragment',\n currentSection[index]\n );\n } else {\n currentSection[index] = factory.createInstance(\n PageType.ObjectPage,\n 'ObjectPageCustomSectionView',\n currentSection[index]\n );\n }\n }\n }\n}\n\n/**\n * Recursive sub-function for handling subsections\n * @param currentSection - Object page section in config\n */\nfunction getSubsectionClasses(currentSection: object, factory: MetadataInstanceInterface): void {\n if (currentSection?.['subsections']) {\n let subSection: object;\n\n for (const subSectionId in currentSection['subsections']) {\n subSection = currentSection['subsections'][subSectionId];\n getClassesForSingleSection(subSection, subSectionId, factory);\n getSubsectionClasses(subSection, factory);\n }\n }\n}\n\n/**\n * Instantiates the export classes for the object page section\n * @param objectPageConfig - the given object page configuration\n * @param objectPage - the overall object page export class where the sections shall be included\n * @param {MetadataInstanceInterface} factory - factory for creating metadata instances\n */\nfunction getExportClassesForSections(\n objectPageConfig: ObjectPageConfig,\n objectPage: ObjectPage,\n factory: MetadataInstanceInterface\n): void {\n // Main function\n let section: object;\n\n for (const sectionId in objectPageConfig.sections) {\n section = objectPage.sections[sectionId];\n getClassesForSingleSection(section, sectionId, factory);\n getSubsectionClasses(section, factory);\n }\n}\n\n/**\n * Run through the given ListReport config and return respective manifest entry and flex changes\n * @param {ExportListReportV2Parameters} exportParameters - all API parameters needed for the export\n * @param ui5Version - SAP UI5 version\n *\n * @returns ExportResults - The export result comprises the enhanced manifest as well as a list of flex changes.\n */\nfunction exportListReportPage(exportParameters: ExportListReportV2Parameters, ui5Version: UI5Version): ExportResults {\n const listReportConfig = exportParameters.page.config as ListReportConfig;\n const entitySet = exportParameters.page.entitySet;\n const exportResults: ExportResults = getDefaultExportResult(exportParameters.fragments);\n const factory = new Factory();\n const listReport = factory.createPageInstance(PageType.ListReport, listReportConfig);\n const pageLayoutInformation = getPageLayoutInformation(listReport);\n const baseId = `${exportParameters.appId}::${pageLayoutInformation.id}::${entitySet}--`;\n const pageKeys: string[] = [];\n const v2Page = findListReportPageV2(exportParameters.manifest[ManifestSection.generic].pages, pageKeys);\n if (!v2Page) {\n log(exportParameters.logger, {\n severity: LogSeverity.Error,\n message: i18next.t('NOLR'),\n location: {\n path: MANIFESTPATH,\n range: [ManifestSection.generic]\n }\n });\n return;\n }\n if (!v2Page.component.settings) {\n v2Page.component.settings = {};\n }\n exportResults.manifest = JSON.parse(JSON.stringify(exportParameters.manifest));\n\n if (listReportConfig && Object.keys(listReportConfig).length !== 0) {\n const transferParameters: TransferParameterTypeV2 = {\n v2Page,\n exportResults,\n appId: exportParameters.appId,\n baseId,\n appSchema: exportParameters.jsonSchema,\n ui5Version,\n factory,\n pageKeys,\n pageType: PageType.ListReport,\n logger: exportParameters.logger\n };\n\n transferManifestEntriesAndFlexChange(\n transferParameters,\n listReport,\n [],\n [],\n exportParameters.jsonSchema //starting point for target definition\n );\n }\n\n return exportResults;\n}\n\n/**\n * Run through the given AnalyticalListPage config and return respective manifest entry and flex changes\n * @param {ExportAnalyticalListPageV2Parameters} exportParameters - all API parameters needed for the export\n * @param ui5Version - SAP UI5 version\n *\n * @returns ExportResults - The export result comprises the enhanced manifest as well as a list of flex changes.\n */\nfunction exportAnalyticalListPage(\n exportParameters: ExportAnalyticalListPageV2Parameters,\n ui5Version: UI5Version\n): ExportResults {\n const analyticalListPageConfig = exportParameters.page.config;\n const entitySet = exportParameters.page.entitySet;\n const exportResults: ExportResults = getDefaultExportResult(exportParameters.fragments);\n exportResults.flexChanges = [];\n exportResults.manifest = JSON.parse(JSON.stringify(exportParameters.manifest));\n const factory = new Factory();\n //Instantiate Page\n const analyticalListPage = factory.createPageInstance(PageType.AnalyticalListPage, analyticalListPageConfig);\n\n //Instantiate base ID\n const pageLayoutInformation = getPageLayoutInformation(analyticalListPage);\n const baseId = `${exportParameters.appId}::${pageLayoutInformation.id}::${entitySet}--`;\n const pageKeys: string[] = [];\n\n const v2Page = findAnalyticalListPage(\n exportParameters.manifest[ManifestSection.generic].pages,\n pageKeys,\n exportParameters.logger\n );\n if (!v2Page) {\n return;\n }\n if (!v2Page.component.settings) {\n v2Page.component.settings = {};\n }\n exportResults.manifest = JSON.parse(JSON.stringify(exportParameters.manifest));\n\n if (analyticalListPageConfig && Object.keys(analyticalListPageConfig).length !== 0) {\n const transferParameters: TransferParameterTypeV2 = {\n v2Page,\n exportResults,\n appId: exportParameters.appId,\n baseId,\n appSchema: exportParameters.jsonSchema,\n ui5Version,\n factory,\n pageKeys,\n pageType: PageType.AnalyticalListPage,\n logger: exportParameters.logger\n };\n\n transferManifestEntriesAndFlexChange(\n transferParameters,\n analyticalListPage,\n [],\n [],\n exportParameters.jsonSchema //starting point for target definition\n );\n }\n\n return exportResults;\n}\n\n/**\n * Run through the given ObjectPage config and return respective manifest entry and flex changes\n * @param {ExportObjectPageV2Parameters} exportParameters - all API parameters needed for the export\n * @param ui5Version - SAP UI5 version\n *\n * @returns ExportResults - The export result comprises the enhanced manifest as well as a list of flex changes.\n */\nfunction exportObjectPage(exportParameters: ExportObjectPageV2Parameters, ui5Version: UI5Version): ExportResults {\n const objectPageConfig = exportParameters.page.config as ObjectPageConfig;\n const entitySet = exportParameters.page.entitySet;\n const exportResults: ExportResults = getDefaultExportResult(exportParameters.fragments);\n const factory = new Factory();\n const objectPage = factory.createPageInstance(PageType.ObjectPage, objectPageConfig);\n exportResults.manifest = JSON.parse(JSON.stringify(exportParameters.manifest));\n if (objectPageConfig) {\n const pageLayoutInformation = getPageLayoutInformation(objectPage);\n const baseId = `${exportParameters.appId}::${pageLayoutInformation.id}::${entitySet}--`;\n\n const pageKeys: string[] = [];\n const v2Page: SapUiAppPageV2 = findObjectPageV2(\n exportParameters.manifest[ManifestSection.generic].pages,\n entitySet,\n pageKeys\n );\n if (!v2Page) {\n return exportResults;\n }\n if (objectPageConfig.sections) {\n getExportClassesForSections(objectPageConfig, objectPage, factory);\n }\n if (Object.keys(objectPageConfig).length !== 0) {\n const transferParameters: TransferParameterTypeV2 = {\n v2Page,\n exportResults,\n appId: exportParameters.appId,\n baseId,\n appSchema: exportParameters.jsonSchema,\n ui5Version,\n factory,\n pageKeys,\n pageType: PageType.ObjectPage,\n logger: exportParameters.logger\n };\n\n transferManifestEntriesAndFlexChange(\n transferParameters,\n objectPage,\n [],\n [],\n exportParameters.jsonSchema //starting point for target definition\n );\n }\n }\n return exportResults;\n}\n/**\n * Run through the given ObjectPage config and return respective manifest entry and flex changes\n * @param {ExportOverviewPageV2Parameters} exportParameters - all API parameters needed for the export\n *\n * @returns ExportResults - The export result comprises the enhanced manifest as well as a list of flex changes.\n */\nconst exportOverviewPage = (exportParameters: ExportOverviewPageV2Parameters): ExportResults => {\n const exportResults: ExportResults = getDefaultExportResult();\n exportResults.manifest = JSON.parse(JSON.stringify(exportParameters.manifest));\n const factory = new Factory();\n const overviewPage = factory.createPageInstance(PageType.OverviewPage, exportParameters.page.config);\n\n const ajv = new Ajv({ allErrors: true });\n const validate = ajv.compile(exportParameters.jsonSchema);\n\n if (!validate(overviewPage)) {\n for (const err of validate.errors) {\n const additionalProperty = err.params['additionalProperty'];\n if (\n err.keyword === 'additionalProperties' &&\n !Object.values(CardSettingsType).includes(err.params['additionalProperty']) &&\n additionalProperty !== 'settings'\n ) {\n _unset(overviewPage, `${err.dataPath.slice(1)}.${additionalProperty}`);\n }\n }\n }\n if (exportParameters.page.config && Object.keys(exportParameters.page.config).length !== 0) {\n transferManifestEntriesOVP(\n overviewPage,\n exportResults,\n exportParameters.jsonSchema,\n exportParameters.jsonSchema,\n factory,\n []\n );\n }\n\n return exportResults;\n};\n\n/**\n * Exports a Fiori Element V2 application.\n * It converts the entries of the input application (config file) to corresponding manifest settings and flex changes\n * @param application - content of the config file of an application\n * @param manifest - app descriptor (manifest.json)\n * @param jsonSchema - application specific schema\n * @returns ExportResults - The export result comprises the enhanced manifest as well as a list of flex changes.\n */\nconst exportApplicationV2 = (application: ApplicationV2, manifest: object, jsonSchema: object): ExportResults => {\n const exportResults: ExportResults = getDefaultExportResult();\n exportResults.manifest = JSON.parse(JSON.stringify(manifest));\n\n //transfer application settings\n const applicationV2 = Object.assign(new ApplicationV2(), application);\n applicationV2.settings = Object.assign(new AppSettings(), application['settings']);\n for (const key in jsonSchema['definitions']['AppSettings']['properties']) {\n const syncRule = getReflectMetadata(applicationV2.settings, key);\n if (syncRule && syncRule.manifest) {\n const path = syncRule.manifest.path();\n const manifestSection = ensureManifestSectionByPathV2(exportResults.manifest, path);\n if (application['settings'] && application['settings'][key] !== undefined) {\n manifestSection[key] = application['settings'][key];\n } else {\n delete manifestSection[key];\n }\n }\n }\n // transfer pages and routings\n const manifestPages = exportResults.manifest[ManifestSection.generic]?.pages;\n if (manifestPages && application['pages']) {\n transformPageToNewManifestV2(application.home, application['pages'], Object.values(manifestPages)[0]);\n }\n return exportResults;\n};\n\n/**\n * Exports a Fiori Element V2 page.\n * It converts the entries of the input page (config file) to corresponding manifest settings and flex changes\n * @param exportParametersV2 - list of parameters for the export; the list varies for the different scgema types\n *\n * @returns ExportResults - The export result comprises the enhanced manifest as well as a list of flex changes.\n */\nexport function exportPageV2(\n exportParametersV2: ExportParametersV2[FioriElementsVersion.v2],\n ui5Version: UI5Version\n): ExportResults | undefined {\n if (exportParametersV2[SchemaType.ListReport]) {\n return exportListReportPage(exportParametersV2[SchemaType.ListReport], ui5Version);\n } else if (exportParametersV2[SchemaType.ObjectPage]) {\n return exportObjectPage(exportParametersV2[SchemaType.ObjectPage], ui5Version);\n } else if (exportParametersV2[SchemaType.OverviewPage]) {\n return exportOverviewPage(exportParametersV2[SchemaType.OverviewPage]);\n } else if (exportParametersV2[SchemaType.Application]) {\n const { application, manifest, jsonSchema } = exportParametersV2[SchemaType.Application];\n return exportApplicationV2(application, manifest, jsonSchema);\n } else if (exportParametersV2[SchemaType.AnalyticalListPage]) {\n return exportAnalyticalListPage(exportParametersV2[SchemaType.AnalyticalListPage], ui5Version);\n }\n}\n", "/**\n * This file implements the interface 'Specification' from ./types and serves as API to specification\n */\nimport { FioriElementsVersion } from './specification/common/page';\nimport { SchemaType } from './specification/schemaAccess';\nimport type { File, ExportResults } from './sync/common/types';\nimport type {\n GenerateSchemaParameters,\n ExportConfigParameters,\n ImportConfigParameters,\n ImportProjectParameters,\n ApiVersion,\n UI5Version\n} from './apiTypes';\nimport {\n generateListReportInterfaceV2,\n generateObjectPageInterfaceV2,\n generateOVPInterfaceV2,\n generateAnalyticalListPageInterfaceV2\n} from './sync/v2/generate';\nimport { exportPageV2 } from './sync/v2/export/exportPage';\nimport {\n createListReportConfig as createListReportConfigV2,\n createObjectPageConfigV2,\n createOverviewPageConfig as createOverviewPageConfigV2,\n createAnalyticalListPageConfig as createAnalyticalListPageConfigV2\n} from './sync/v2/import';\nimport { importProjectSchemaAndConfig, importProjectSchema as importProjectSchemaOnly } from './sync/common';\n\n/**\n * Return the generic (project independent) JSON schema\n * @param specification - reference to spec\n * @param version - Fiori elements version (v2)\n * @param schemaType - type of the schema, e.g. ListReport, ObjectPage\n */\nexport { getGenericSchema } from './specification/schemaAccess';\n\n/**\n * Generate JSON schema for a given Fiori elements version and page type\n * @param generateParameters: the input structure that contains the version, schema type, and parameters\n */\nexport function generateSchema(generateParameters: GenerateSchemaParameters): object {\n let schema: object;\n if (generateParameters[FioriElementsVersion.v2]) {\n /**\n * Handle v2 schema generation\n */\n const v2Params = generateParameters[FioriElementsVersion.v2];\n if (v2Params[SchemaType.ListReport]) {\n const { genericSchema, entitySet, annotations, manifest, fragments, logger } =\n v2Params[SchemaType.ListReport];\n schema = generateListReportInterfaceV2(genericSchema, entitySet, annotations, manifest, fragments, logger);\n } else if (v2Params[SchemaType.ObjectPage]) {\n const { genericSchema, entitySet, annotations, manifest, fragments, logger } =\n v2Params[SchemaType.ObjectPage];\n schema = generateObjectPageInterfaceV2(genericSchema, entitySet, annotations, manifest, fragments, logger);\n } else if (v2Params[SchemaType.OverviewPage]) {\n const { genericSchema, manifest } = v2Params[SchemaType.OverviewPage];\n schema = generateOVPInterfaceV2(genericSchema, manifest);\n } else if (v2Params[SchemaType.AnalyticalListPage]) {\n const { genericSchema, entitySet, annotations, manifest, fragments, logger } =\n v2Params[SchemaType.AnalyticalListPage];\n schema = generateAnalyticalListPageInterfaceV2(\n genericSchema,\n entitySet,\n annotations,\n manifest,\n fragments,\n logger\n );\n }\n }\n return schema;\n}\n\n/**\n * Exports a config (src/*.json, src/pages/*.json) to flex changes and manifest settings\n * @param exportParameters - parameters to control the export\n */\nexport function exportConfig(exportParameters: ExportConfigParameters): ExportResults {\n let exportResults: ExportResults;\n const ui5Config: UI5Version = { ui5Version: exportParameters.ui5Version, layer: exportParameters.layer };\n if (exportParameters[FioriElementsVersion.v2]) {\n /**\n * Handle v2 export\n */\n const v2Params = exportParameters[FioriElementsVersion.v2];\n exportResults = exportPageV2(v2Params, ui5Config);\n }\n return exportResults;\n}\n\n/**\n * Imports manifest settings and flex changes to a config (src/*.json, src/pages/*.json)\n * @param importParameters - parameters to control the import\n */\nexport function importConfig(importParameters: ImportConfigParameters): object | undefined {\n let config;\n if (importParameters[FioriElementsVersion.v2]) {\n /**\n * Handle v2 import\n */\n const v2Params = importParameters[FioriElementsVersion.v2];\n if (v2Params[SchemaType.ListReport]) {\n config = createListReportConfigV2(v2Params[SchemaType.ListReport]);\n } else if (v2Params[SchemaType.ObjectPage]) {\n config = createObjectPageConfigV2(v2Params[SchemaType.ObjectPage]);\n } else if (v2Params[SchemaType.OverviewPage]) {\n config = createOverviewPageConfigV2(v2Params[SchemaType.OverviewPage]);\n } else if (v2Params[SchemaType.AnalyticalListPage]) {\n config = createAnalyticalListPageConfigV2(v2Params[SchemaType.AnalyticalListPage]);\n }\n }\n return config;\n}\n\n/**\n * Evaluates all project files and generates app schemas and configs out of it\n * @param importParameters - parameters to control the import; here: all relevant project files\n * @returns a list of files, comprising app schemas and configs\n */\nexport async function importProject(importParameters: ImportProjectParameters): Promise<File[]> {\n return importProjectSchemaAndConfig(importParameters);\n}\n\n/**\n * Evaluates all project files and generates app schemas out of it, but no configs\n * @param importParameters - parameters to control the import; here: all relevant project files\n * @returns a list of files, comprising all app schemas\n */\nexport async function importProjectSchema(importParameters: ImportProjectParameters): Promise<File[]> {\n return importProjectSchemaOnly(importParameters);\n}\n\n/**\n * Returns specification API version.\n * @return {ApiVersion} Object of API version.\n */\nexport function getApiVersion(): ApiVersion {\n return {\n version: '4'\n };\n}\n", "import { basename, join } from 'path';\nimport { readFile as readFileFs, readdir, stat, exists } from 'fs';\nimport type { FileData, Manifest } from './index';\n\nexport interface Project {\n root: string;\n name: string;\n manifest: Manifest;\n annotations: FileData[];\n changes: string[];\n fragments: FileData[];\n}\n\nconst readFile = async (path: string): Promise<string> => {\n return new Promise((resolve, reject): void => {\n readFileFs(path, { encoding: 'utf8' }, (err, data): void => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n });\n};\n\nconst readJSON = async <T>(path: string): Promise<T> => {\n return JSON.parse(await readFile(path)) as T;\n};\n\nexport const readDirectory = async (path: string): Promise<string[]> => {\n return new Promise((resolve, reject): void => {\n readdir(path, { encoding: 'utf8' }, (err, data): void => {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n });\n};\n\nexport const isDirectory = async (path: string): Promise<boolean> => {\n return new Promise((resolve): void => {\n stat(path, (err, stats): void => {\n if (err) {\n resolve(false);\n } else {\n resolve(stats.isDirectory());\n }\n });\n });\n};\n\nconst resourceExists = async (path: string): Promise<boolean> => {\n return new Promise((resolve) => {\n exists(path, (doesExist) => {\n resolve(doesExist);\n });\n });\n};\n\nconst getManifest = async (path: string): Promise<Manifest> => {\n return readJSON<Manifest>(join(path, 'manifest.json'));\n};\n\nexport const getChanges = async (webapp: string): Promise<string[]> => {\n const changes: string[] = [];\n const changesDirectory = join(webapp, 'changes');\n if (!(await resourceExists(changesDirectory))) {\n return changes;\n }\n const extensions = [\n '.change',\n '.variant',\n '.ctrl_variant',\n '.ctrl_variant_change',\n '.ctrl_variant_management_change'\n ];\n const files = await readDirectory(changesDirectory);\n for (const file of files) {\n if (extensions.some((ext) => file.endsWith(ext))) {\n changes.push(await readFile(join(changesDirectory, file)));\n }\n }\n return changes;\n};\n\nconst getFragments = async (webAppPath: string): Promise<FileData[]> => {\n const fragments: FileData[] = [];\n\n const directoryPath = join(webAppPath, 'ext', 'fragments');\n if (!(await resourceExists(directoryPath))) {\n return fragments;\n }\n const files = await readDirectory(directoryPath);\n for (const file of files) {\n const filePath = join(directoryPath, file);\n const data = await readFile(filePath);\n fragments.push({\n dataSourceUri: filePath,\n fileContent: data\n });\n }\n return fragments;\n};\n\nconst getAnnotations = async (manifest: Manifest, webAppPath: string): Promise<FileData[]> => {\n const annotationData: FileData[] = [];\n const serviceDataSources = manifest?.['sap.app']?.dataSources;\n if (serviceDataSources?.mainService?.settings?.localUri) {\n const metadataPath = join(webAppPath, serviceDataSources.mainService.settings.localUri);\n annotationData.push({\n dataSourceUri: metadataPath,\n fileContent: await readFile(metadataPath)\n });\n }\n if (serviceDataSources?.mainService?.settings?.annotations) {\n for (const annotationRef of serviceDataSources.mainService.settings.annotations) {\n if (serviceDataSources[annotationRef]?.settings?.localUri) {\n const annotationFilePath = join(webAppPath, serviceDataSources[annotationRef].settings.localUri);\n annotationData.push({\n dataSourceUri: annotationFilePath,\n fileContent: await readFile(annotationFilePath)\n });\n }\n }\n }\n //Consider CAP/multiple services\n if (annotationData.length === 0) {\n for (const key in serviceDataSources) {\n const dataSource = serviceDataSources[key];\n if (dataSource?.type === 'ODataAnnotation' && dataSource?.settings?.localUri) {\n const annotationFilePath = join(webAppPath, dataSource.settings.localUri);\n annotationData.push({\n dataSourceUri: annotationFilePath,\n fileContent: await readFile(annotationFilePath)\n });\n }\n }\n }\n\n return annotationData;\n};\n\n/**\n * Get the project artefacts, like manifest, service metadata, annotations\n * @param root - project root where package.json is\n */\nexport const getProject = async (root: string): Promise<Project> => {\n const name = basename(root);\n const webappPath = join(root, 'webapp');\n const manifest = await getManifest(webappPath);\n const annotations = await getAnnotations(manifest, webappPath);\n const changes = await getChanges(webappPath);\n const fragments = await getFragments(webappPath);\n return {\n root,\n name,\n manifest,\n annotations,\n changes,\n fragments\n };\n};\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }