@mediusinc/mng-commons 0.8.0 → 0.9.1-rc.2

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 (306) hide show
  1. package/dev-scripts/version-info.js +98 -0
  2. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  3. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  4. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  5. package/esm2020/lib/api/models/index.mjs +8 -8
  6. package/esm2020/lib/api/models/mappers.mjs +12 -12
  7. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  8. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  9. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  10. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  11. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  12. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +66 -66
  13. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +22 -22
  14. package/esm2020/lib/api/services/index.mjs +3 -3
  15. package/esm2020/lib/api/utils/index.mjs +2 -2
  16. package/esm2020/lib/api/utils/medius-rest.util.mjs +152 -152
  17. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  18. package/esm2020/lib/components/action/action.component.mjs +178 -177
  19. package/esm2020/lib/components/action/editor/action-editor.component.mjs +248 -247
  20. package/esm2020/lib/components/action/index.mjs +3 -3
  21. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  22. package/esm2020/lib/components/action/models/action-execution.model.mjs +234 -234
  23. package/esm2020/lib/components/action/models/index.mjs +2 -2
  24. package/esm2020/lib/components/action/route/action-route.component.mjs +125 -125
  25. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +268 -268
  26. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +160 -160
  27. package/esm2020/lib/components/form/editor/form-editor.component.mjs +189 -189
  28. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +18 -18
  29. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +42 -42
  30. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +25 -25
  31. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +96 -96
  32. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +16 -16
  33. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
  34. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +155 -156
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +127 -127
  36. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
  37. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  38. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +14 -14
  39. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  40. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  41. package/esm2020/lib/components/form/index.mjs +3 -3
  42. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  43. package/esm2020/lib/components/form/models/index.mjs +1 -1
  44. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  45. package/esm2020/lib/components/layout/footer.component.mjs +17 -17
  46. package/esm2020/lib/components/layout/index.mjs +8 -7
  47. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  48. package/esm2020/lib/components/layout/menu-item.component.mjs +216 -216
  49. package/esm2020/lib/components/layout/menu.component.mjs +21 -20
  50. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  51. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  52. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  53. package/esm2020/lib/components/layout/version.component.mjs +58 -0
  54. package/esm2020/lib/components/tableview/index.mjs +6 -6
  55. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  56. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  57. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +58 -57
  58. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +53 -53
  59. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +102 -102
  60. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +71 -71
  61. package/esm2020/lib/components/tableview/table/table.component.mjs +428 -430
  62. package/esm2020/lib/components/tableview/tableview.component.mjs +92 -92
  63. package/esm2020/lib/config/formly.config.mjs +180 -180
  64. package/esm2020/lib/config/index.mjs +1 -1
  65. package/esm2020/lib/config/models/index.mjs +1 -1
  66. package/esm2020/lib/config/models/mng-config.model.mjs +2 -2
  67. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  68. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  69. package/esm2020/lib/data-providers/index.mjs +5 -5
  70. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  71. package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
  72. package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
  73. package/esm2020/lib/descriptors/action.descriptor.mjs +566 -623
  74. package/esm2020/lib/descriptors/column.descriptor.mjs +261 -272
  75. package/esm2020/lib/descriptors/editor.descriptor.mjs +147 -155
  76. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  77. package/esm2020/lib/descriptors/field.descriptor.mjs +800 -864
  78. package/esm2020/lib/descriptors/filter.descriptor.mjs +262 -295
  79. package/esm2020/lib/descriptors/index.mjs +10 -12
  80. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +2 -0
  81. package/esm2020/lib/descriptors/interfaces/index.mjs +3 -0
  82. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +2 -0
  83. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  84. package/esm2020/lib/descriptors/table.descriptor.mjs +197 -214
  85. package/esm2020/lib/descriptors/tableview.descriptor.mjs +135 -135
  86. package/esm2020/lib/descriptors/types/action.type.mjs +53 -0
  87. package/esm2020/lib/descriptors/types/column.type.mjs +11 -0
  88. package/esm2020/lib/descriptors/types/editor.type.mjs +8 -0
  89. package/esm2020/lib/descriptors/types/field.type.mjs +53 -0
  90. package/esm2020/lib/descriptors/types/filter.type.mjs +31 -0
  91. package/esm2020/lib/descriptors/types/index.mjs +7 -0
  92. package/esm2020/lib/descriptors/types/table.type.mjs +17 -0
  93. package/esm2020/lib/directives/component.directive.mjs +43 -43
  94. package/esm2020/lib/directives/index.mjs +2 -2
  95. package/esm2020/lib/directives/template.directive.mjs +27 -27
  96. package/esm2020/lib/mng-commons.module.mjs +438 -427
  97. package/esm2020/lib/models/column-value.model.mjs +1 -1
  98. package/esm2020/lib/models/enum.model.mjs +1 -1
  99. package/esm2020/lib/models/error.model.mjs +1 -1
  100. package/esm2020/lib/models/index.mjs +8 -7
  101. package/esm2020/lib/models/menu.model.mjs +1 -1
  102. package/esm2020/lib/models/user.model.mjs +1 -1
  103. package/esm2020/lib/models/version.model.mjs +2 -0
  104. package/esm2020/lib/models/view-container.model.mjs +1 -1
  105. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  106. package/esm2020/lib/pipes/enum.pipe.mjs +25 -25
  107. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  108. package/esm2020/lib/pipes/index.mjs +5 -5
  109. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  110. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  111. package/esm2020/lib/router/index.mjs +1 -1
  112. package/esm2020/lib/router/models/index.mjs +1 -1
  113. package/esm2020/lib/router/models/router.model.mjs +1 -1
  114. package/esm2020/lib/router/route-builder.mjs +431 -431
  115. package/esm2020/lib/services/action-executor.service.mjs +536 -535
  116. package/esm2020/lib/services/commons.service.mjs +331 -344
  117. package/esm2020/lib/services/configuration.service.mjs +110 -110
  118. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  119. package/esm2020/lib/services/index.mjs +6 -6
  120. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  121. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  122. package/esm2020/lib/services/internal/index.mjs +2 -2
  123. package/esm2020/lib/services/navigation.service.mjs +47 -47
  124. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  125. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  126. package/esm2020/lib/services/providers/index.mjs +2 -2
  127. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  128. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  129. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  130. package/esm2020/lib/services/tokens/index.mjs +4 -4
  131. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  132. package/esm2020/lib/services/version.service.mjs +38 -0
  133. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  134. package/esm2020/lib/types/index.mjs +2 -2
  135. package/esm2020/lib/types/type.decorator.mjs +12 -12
  136. package/esm2020/lib/types/type.model.mjs +2 -2
  137. package/esm2020/lib/utils/action-data-provider.util.mjs +144 -144
  138. package/esm2020/lib/utils/editor-formly.util.mjs +211 -210
  139. package/esm2020/lib/utils/enum.util.mjs +81 -81
  140. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  141. package/esm2020/lib/utils/index.mjs +7 -7
  142. package/esm2020/lib/utils/model.util.mjs +60 -60
  143. package/esm2020/lib/utils/notification.util.mjs +45 -45
  144. package/esm2020/lib/utils/route.util.mjs +23 -23
  145. package/esm2020/lib/utils/styles.util.mjs +41 -41
  146. package/esm2020/lib/utils/type.util.mjs +76 -76
  147. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  148. package/esm2020/public-api.mjs +42 -40
  149. package/fesm2015/mediusinc-mng-commons.mjs +9979 -9920
  150. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  151. package/fesm2020/mediusinc-mng-commons.mjs +9841 -9786
  152. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  153. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  154. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  155. package/lib/api/models/filter-param.model.d.ts +23 -23
  156. package/lib/api/models/index.d.ts +8 -8
  157. package/lib/api/models/mappers.d.ts +6 -6
  158. package/lib/api/models/query-mode.model.d.ts +16 -16
  159. package/lib/api/models/query-param.model.d.ts +31 -31
  160. package/lib/api/models/query-result.model.d.ts +23 -23
  161. package/lib/api/models/serialization.model.d.ts +8 -8
  162. package/lib/api/services/api.abstract.service.d.ts +24 -24
  163. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  164. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  165. package/lib/api/services/index.d.ts +3 -3
  166. package/lib/api/utils/index.d.ts +2 -2
  167. package/lib/api/utils/medius-rest.util.d.ts +15 -14
  168. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  169. package/lib/components/action/action.component.d.ts +69 -68
  170. package/lib/components/action/editor/action-editor.component.d.ts +64 -64
  171. package/lib/components/action/index.d.ts +3 -3
  172. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  173. package/lib/components/action/models/action-execution.model.d.ts +129 -129
  174. package/lib/components/action/models/index.d.ts +2 -2
  175. package/lib/components/action/route/action-route.component.d.ts +31 -31
  176. package/lib/components/form/autocomplete/autocomplete.component.d.ts +53 -53
  177. package/lib/components/form/dropdown/dropdown.component.d.ts +44 -44
  178. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  179. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +12 -12
  180. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  181. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -12
  182. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +21 -21
  183. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +6 -6
  184. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -44
  185. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +22 -22
  186. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +37 -37
  187. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  188. package/lib/components/form/formly/fields/index.d.ts +9 -9
  189. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  190. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  191. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  192. package/lib/components/form/index.d.ts +3 -3
  193. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  194. package/lib/components/form/models/index.d.ts +1 -1
  195. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  196. package/lib/components/layout/footer.component.d.ts +9 -9
  197. package/lib/components/layout/index.d.ts +7 -6
  198. package/lib/components/layout/main-layout.component.d.ts +20 -20
  199. package/lib/components/layout/menu-item.component.d.ts +37 -37
  200. package/lib/components/layout/menu.component.d.ts +10 -10
  201. package/lib/components/layout/services/index.d.ts +1 -1
  202. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  203. package/lib/components/layout/topbar.component.d.ts +24 -24
  204. package/lib/components/layout/version.component.d.ts +19 -0
  205. package/lib/components/tableview/index.d.ts +6 -6
  206. package/lib/components/tableview/models/index.d.ts +1 -1
  207. package/lib/components/tableview/models/table.event.d.ts +17 -17
  208. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
  209. package/lib/components/tableview/route/tableview-route.component.d.ts +18 -18
  210. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -31
  211. package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -28
  212. package/lib/components/tableview/table/table.component.d.ts +105 -104
  213. package/lib/components/tableview/tableview.component.d.ts +41 -41
  214. package/lib/config/formly.config.d.ts +15 -15
  215. package/lib/config/index.d.ts +1 -1
  216. package/lib/config/models/index.d.ts +1 -1
  217. package/lib/config/models/mng-config.model.d.ts +36 -34
  218. package/lib/data-providers/base.data-provider.d.ts +14 -14
  219. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  220. package/lib/data-providers/index.d.ts +5 -5
  221. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  222. package/lib/data-providers/table.data-provider.d.ts +14 -14
  223. package/lib/data-providers/tableview.data-provider.d.ts +15 -15
  224. package/lib/descriptors/action.descriptor.d.ts +227 -277
  225. package/lib/descriptors/column.descriptor.d.ts +81 -91
  226. package/lib/descriptors/editor.descriptor.d.ts +37 -44
  227. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  228. package/lib/descriptors/field.descriptor.d.ts +287 -342
  229. package/lib/descriptors/filter.descriptor.d.ts +97 -127
  230. package/lib/descriptors/index.d.ts +9 -11
  231. package/lib/descriptors/{field.descriptor.interface.d.ts → interfaces/field-config.interface.d.ts} +9 -9
  232. package/lib/descriptors/interfaces/index.d.ts +2 -0
  233. package/lib/descriptors/{lookup.descriptor.d.ts → interfaces/lookup-descriptor.interface.d.ts} +17 -17
  234. package/lib/descriptors/model.descriptor.d.ts +15 -15
  235. package/lib/descriptors/table.descriptor.d.ts +66 -80
  236. package/lib/descriptors/tableview.descriptor.d.ts +42 -42
  237. package/lib/descriptors/types/action.type.d.ts +45 -0
  238. package/lib/descriptors/types/column.type.d.ts +9 -0
  239. package/lib/descriptors/types/editor.type.d.ts +6 -0
  240. package/lib/descriptors/types/field.type.d.ts +44 -0
  241. package/lib/descriptors/types/filter.type.d.ts +27 -0
  242. package/lib/descriptors/types/index.d.ts +6 -0
  243. package/lib/descriptors/types/table.type.d.ts +13 -0
  244. package/lib/directives/component.directive.d.ts +16 -16
  245. package/lib/directives/index.d.ts +2 -2
  246. package/lib/directives/template.directive.d.ts +13 -13
  247. package/lib/mng-commons.module.d.ts +87 -86
  248. package/lib/models/column-value.model.d.ts +4 -4
  249. package/lib/models/enum.model.d.ts +6 -6
  250. package/lib/models/error.model.d.ts +14 -14
  251. package/lib/models/index.d.ts +7 -6
  252. package/lib/models/menu.model.d.ts +25 -25
  253. package/lib/models/user.model.d.ts +8 -8
  254. package/lib/models/version.model.d.ts +18 -0
  255. package/lib/models/view-container.model.d.ts +6 -6
  256. package/lib/pipes/boolean.pipe.d.ts +7 -7
  257. package/lib/pipes/enum.pipe.d.ts +8 -8
  258. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  259. package/lib/pipes/index.d.ts +5 -5
  260. package/lib/pipes/json-path.pipe.d.ts +13 -13
  261. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  262. package/lib/router/index.d.ts +1 -1
  263. package/lib/router/models/index.d.ts +1 -1
  264. package/lib/router/models/router.model.d.ts +22 -22
  265. package/lib/router/route-builder.d.ts +86 -86
  266. package/lib/services/action-executor.service.d.ts +149 -149
  267. package/lib/services/commons.service.d.ts +73 -72
  268. package/lib/services/configuration.service.d.ts +36 -36
  269. package/lib/services/error-mapper.service.d.ts +7 -7
  270. package/lib/services/index.d.ts +6 -6
  271. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  272. package/lib/services/internal/commons-init.service.d.ts +16 -16
  273. package/lib/services/internal/index.d.ts +2 -2
  274. package/lib/services/navigation.service.d.ts +14 -14
  275. package/lib/services/providers/config-service.provider.d.ts +6 -6
  276. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  277. package/lib/services/providers/index.d.ts +2 -2
  278. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  279. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  280. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  281. package/lib/services/tokens/index.d.ts +4 -4
  282. package/lib/services/tokens/module-config.token.d.ts +3 -3
  283. package/lib/services/version.service.d.ts +13 -0
  284. package/lib/services/view-container.component.service.d.ts +22 -22
  285. package/lib/types/index.d.ts +2 -2
  286. package/lib/types/type.decorator.d.ts +4 -4
  287. package/lib/types/type.model.d.ts +20 -20
  288. package/lib/utils/action-data-provider.util.d.ts +20 -20
  289. package/lib/utils/editor-formly.util.d.ts +10 -10
  290. package/lib/utils/enum.util.d.ts +50 -50
  291. package/lib/utils/i18n.util.d.ts +56 -56
  292. package/lib/utils/index.d.ts +7 -7
  293. package/lib/utils/model.util.d.ts +8 -8
  294. package/lib/utils/notification.util.d.ts +11 -11
  295. package/lib/utils/route.util.d.ts +4 -4
  296. package/lib/utils/styles.util.d.ts +14 -14
  297. package/lib/utils/type.util.d.ts +36 -36
  298. package/mediusinc-mng-commons-0.9.1-rc.2.tgz +0 -0
  299. package/mediusinc-mng-commons.d.ts +5 -5
  300. package/package.json +6 -6
  301. package/public-api.d.ts +30 -28
  302. package/scss/mng-overrides/_layout_menu.scss +6 -0
  303. package/scss/mng-overrides/_layout_styles.scss +1 -0
  304. package/version-info.json +10 -0
  305. package/esm2020/lib/descriptors/field.descriptor.interface.mjs +0 -2
  306. package/esm2020/lib/descriptors/lookup.descriptor.mjs +0 -2
@@ -1,145 +1,145 @@
1
- import { isObservable, throwError } from 'rxjs';
2
- import { MediusQueryParamBuilder } from '../api/models';
3
- export class ActionDataProviderUtil {
4
- static runGetAllOrFail(ctx) {
5
- const dataProviderExec = ActionDataProviderUtil.runGetAllDataProvider(ctx);
6
- if (isObservable(dataProviderExec)) {
7
- return dataProviderExec;
8
- }
9
- const serviceExec = ActionDataProviderUtil.runGetAllService(ctx);
10
- return isObservable(serviceExec)
11
- ? serviceExec
12
- : throwError(() => new Error(`Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
13
- }
14
- static runFetchOrFail(ctx) {
15
- const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);
16
- if (isObservable(dataProviderExec)) {
17
- return dataProviderExec;
18
- }
19
- const serviceExec = ActionDataProviderUtil.runGetByIdService(ctx);
20
- return isObservable(serviceExec)
21
- ? serviceExec
22
- : throwError(() => new Error(`Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
23
- }
24
- static runCreateOrFail(ctx) {
25
- const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);
26
- if (isObservable(dataProviderExec)) {
27
- return dataProviderExec;
28
- }
29
- const serviceExec = ActionDataProviderUtil.runCreateService(ctx);
30
- return isObservable(serviceExec)
31
- ? serviceExec
32
- : throwError(() => new Error(`Data provider and service instance could not extract create function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item ${ctx.parameters?.item}.`));
33
- }
34
- static runUpdateOrFail(ctx) {
35
- const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);
36
- if (isObservable(dataProviderExec)) {
37
- return dataProviderExec;
38
- }
39
- const serviceExec = ActionDataProviderUtil.runUpdateService(ctx);
40
- return isObservable(serviceExec)
41
- ? serviceExec
42
- : throwError(() => new Error(`Data provider and service instance could not extract update function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
43
- }
44
- static runDeleteOrFail(ctx) {
45
- const dataProviderExec = ActionDataProviderUtil.runDeleteDataProvider(ctx);
46
- if (isObservable(dataProviderExec)) {
47
- return dataProviderExec;
48
- }
49
- const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);
50
- return isObservable(serviceExec)
51
- ? serviceExec
52
- : throwError(() => new Error(`Data provider and service instance could not extract delete function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
53
- }
54
- static runGetAllService(ctx) {
55
- if (typeof ctx.serviceInstance !== 'undefined') {
56
- const getAllServiceInstance = ctx.serviceInstance;
57
- if (typeof getAllServiceInstance.getAllPost === 'function') {
58
- const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();
59
- return getAllServiceInstance.getAllPost(queryParam);
60
- }
61
- }
62
- return null;
63
- }
64
- static runGetByIdService(ctx) {
65
- if (typeof ctx.serviceInstance !== 'undefined') {
66
- const crudServiceInstance = ctx.serviceInstance;
67
- if (typeof crudServiceInstance.getByIdGet === 'function') {
68
- return ctx.parameters?.itemId ? crudServiceInstance.getByIdGet(ctx.parameters.itemId) : null;
69
- }
70
- }
71
- return null;
72
- }
73
- static runCreateService(ctx) {
74
- if (typeof ctx.serviceInstance !== 'undefined') {
75
- const crudServiceInstance = ctx.serviceInstance;
76
- if (typeof crudServiceInstance.createPost === 'function') {
77
- return ctx.parameters?.item ? crudServiceInstance.createPost(ctx.parameters.item) : null;
78
- }
79
- }
80
- return null;
81
- }
82
- static runUpdateService(ctx) {
83
- if (typeof ctx.serviceInstance !== 'undefined') {
84
- const crudServiceInstance = ctx.serviceInstance;
85
- if (typeof crudServiceInstance.updatePut === 'function') {
86
- return ctx.parameters?.itemId && ctx.parameters.item ? crudServiceInstance.updatePut(ctx.parameters.itemId, ctx.parameters.item) : null;
87
- }
88
- }
89
- return null;
90
- }
91
- static runDeleteService(ctx) {
92
- if (typeof ctx.serviceInstance !== 'undefined') {
93
- const crudServiceInstance = ctx.serviceInstance;
94
- if (typeof crudServiceInstance.removeDelete === 'function') {
95
- return ctx.parameters?.itemId ? crudServiceInstance.removeDelete(ctx.parameters.itemId, ctx.parameters.item) : null;
96
- }
97
- }
98
- return null;
99
- }
100
- static runGetAllDataProvider(ctx) {
101
- if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll'] === 'function') {
102
- const tableDataProvider = ctx.dataProvider;
103
- const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();
104
- return tableDataProvider.getAll(queryParam, ctx.serviceInstance);
105
- }
106
- return null;
107
- }
108
- static runFetchDataProvider(ctx) {
109
- if (typeof ctx.dataProvider !== 'undefined') {
110
- const editorDataProvider = ctx.dataProvider;
111
- if (typeof editorDataProvider.fetch === 'function') {
112
- return ctx.parameters?.itemId ? editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance) : null;
113
- }
114
- }
115
- return null;
116
- }
117
- static runCreateDataProvider(ctx) {
118
- if (typeof ctx.dataProvider !== 'undefined') {
119
- const editorDataProvider = ctx.dataProvider;
120
- if (typeof editorDataProvider.create === 'function') {
121
- return ctx.parameters?.item ? editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance) : null;
122
- }
123
- }
124
- return null;
125
- }
126
- static runUpdateDataProvider(ctx) {
127
- if (typeof ctx.dataProvider !== 'undefined') {
128
- const editorDataProvider = ctx.dataProvider;
129
- if (typeof editorDataProvider.update === 'function') {
130
- return ctx.parameters?.itemId ? editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;
131
- }
132
- }
133
- return null;
134
- }
135
- static runDeleteDataProvider(ctx) {
136
- if (typeof ctx.dataProvider !== 'undefined') {
137
- const editorDataProvider = ctx.dataProvider;
138
- if (typeof editorDataProvider.delete === 'function') {
139
- return ctx.parameters?.itemId ? editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;
140
- }
141
- }
142
- return null;
143
- }
144
- }
1
+ import { isObservable, throwError } from 'rxjs';
2
+ import { MediusQueryParamBuilder } from '../api/models';
3
+ export class ActionDataProviderUtil {
4
+ static runGetAllOrFail(ctx) {
5
+ const dataProviderExec = ActionDataProviderUtil.runGetAllDataProvider(ctx);
6
+ if (isObservable(dataProviderExec)) {
7
+ return dataProviderExec;
8
+ }
9
+ const serviceExec = ActionDataProviderUtil.runGetAllService(ctx);
10
+ return isObservable(serviceExec)
11
+ ? serviceExec
12
+ : throwError(() => new Error(`Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
13
+ }
14
+ static runFetchOrFail(ctx) {
15
+ const dataProviderExec = ActionDataProviderUtil.runFetchDataProvider(ctx);
16
+ if (isObservable(dataProviderExec)) {
17
+ return dataProviderExec;
18
+ }
19
+ const serviceExec = ActionDataProviderUtil.runGetByIdService(ctx);
20
+ return isObservable(serviceExec)
21
+ ? serviceExec
22
+ : throwError(() => new Error(`Data provider and service instance could not extract fetch function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
23
+ }
24
+ static runCreateOrFail(ctx) {
25
+ const dataProviderExec = ActionDataProviderUtil.runCreateDataProvider(ctx);
26
+ if (isObservable(dataProviderExec)) {
27
+ return dataProviderExec;
28
+ }
29
+ const serviceExec = ActionDataProviderUtil.runCreateService(ctx);
30
+ return isObservable(serviceExec)
31
+ ? serviceExec
32
+ : throwError(() => new Error(`Data provider and service instance could not extract create function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item ${ctx.parameters?.item}.`));
33
+ }
34
+ static runUpdateOrFail(ctx) {
35
+ const dataProviderExec = ActionDataProviderUtil.runUpdateDataProvider(ctx);
36
+ if (isObservable(dataProviderExec)) {
37
+ return dataProviderExec;
38
+ }
39
+ const serviceExec = ActionDataProviderUtil.runUpdateService(ctx);
40
+ return isObservable(serviceExec)
41
+ ? serviceExec
42
+ : throwError(() => new Error(`Data provider and service instance could not extract update function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
43
+ }
44
+ static runDeleteOrFail(ctx) {
45
+ const dataProviderExec = ActionDataProviderUtil.runDeleteDataProvider(ctx);
46
+ if (isObservable(dataProviderExec)) {
47
+ return dataProviderExec;
48
+ }
49
+ const serviceExec = ActionDataProviderUtil.runDeleteService(ctx);
50
+ return isObservable(serviceExec)
51
+ ? serviceExec
52
+ : throwError(() => new Error(`Data provider and service instance could not extract delete function to execute in action ${ctx.instance.action.actionNameLong} (${ctx.instance.action.model?.typeName}) for item id ${ctx.parameters?.itemId}.`));
53
+ }
54
+ static runGetAllService(ctx) {
55
+ if (typeof ctx.serviceInstance !== 'undefined') {
56
+ const getAllServiceInstance = ctx.serviceInstance;
57
+ if (typeof getAllServiceInstance.getAllPost === 'function') {
58
+ const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();
59
+ return getAllServiceInstance.getAllPost(queryParam);
60
+ }
61
+ }
62
+ return null;
63
+ }
64
+ static runGetByIdService(ctx) {
65
+ if (typeof ctx.serviceInstance !== 'undefined') {
66
+ const crudServiceInstance = ctx.serviceInstance;
67
+ if (typeof crudServiceInstance.getByIdGet === 'function') {
68
+ return ctx.parameters?.itemId ? crudServiceInstance.getByIdGet(ctx.parameters.itemId) : null;
69
+ }
70
+ }
71
+ return null;
72
+ }
73
+ static runCreateService(ctx) {
74
+ if (typeof ctx.serviceInstance !== 'undefined') {
75
+ const crudServiceInstance = ctx.serviceInstance;
76
+ if (typeof crudServiceInstance.createPost === 'function') {
77
+ return ctx.parameters?.item ? crudServiceInstance.createPost(ctx.parameters.item) : null;
78
+ }
79
+ }
80
+ return null;
81
+ }
82
+ static runUpdateService(ctx) {
83
+ if (typeof ctx.serviceInstance !== 'undefined') {
84
+ const crudServiceInstance = ctx.serviceInstance;
85
+ if (typeof crudServiceInstance.updatePut === 'function') {
86
+ return ctx.parameters?.itemId && ctx.parameters.item ? crudServiceInstance.updatePut(ctx.parameters.itemId, ctx.parameters.item) : null;
87
+ }
88
+ }
89
+ return null;
90
+ }
91
+ static runDeleteService(ctx) {
92
+ if (typeof ctx.serviceInstance !== 'undefined') {
93
+ const crudServiceInstance = ctx.serviceInstance;
94
+ if (typeof crudServiceInstance.removeDelete === 'function') {
95
+ return ctx.parameters?.itemId ? crudServiceInstance.removeDelete(ctx.parameters.itemId, ctx.parameters.item) : null;
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ static runGetAllDataProvider(ctx) {
101
+ if (typeof ctx.dataProvider !== 'undefined' && typeof ctx.dataProvider['getAll'] === 'function') {
102
+ const tableDataProvider = ctx.dataProvider;
103
+ const queryParam = ctx.parameters?.queryParam ?? MediusQueryParamBuilder.create().build();
104
+ return tableDataProvider.getAll(queryParam, ctx.serviceInstance);
105
+ }
106
+ return null;
107
+ }
108
+ static runFetchDataProvider(ctx) {
109
+ if (typeof ctx.dataProvider !== 'undefined') {
110
+ const editorDataProvider = ctx.dataProvider;
111
+ if (typeof editorDataProvider.fetch === 'function') {
112
+ return ctx.parameters?.itemId ? editorDataProvider.fetch(ctx.parameters.itemId, ctx.serviceInstance) : null;
113
+ }
114
+ }
115
+ return null;
116
+ }
117
+ static runCreateDataProvider(ctx) {
118
+ if (typeof ctx.dataProvider !== 'undefined') {
119
+ const editorDataProvider = ctx.dataProvider;
120
+ if (typeof editorDataProvider.create === 'function') {
121
+ return ctx.parameters?.item ? editorDataProvider.create(ctx.parameters.item, ctx.serviceInstance) : null;
122
+ }
123
+ }
124
+ return null;
125
+ }
126
+ static runUpdateDataProvider(ctx) {
127
+ if (typeof ctx.dataProvider !== 'undefined') {
128
+ const editorDataProvider = ctx.dataProvider;
129
+ if (typeof editorDataProvider.update === 'function') {
130
+ return ctx.parameters?.itemId ? editorDataProvider.update(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;
131
+ }
132
+ }
133
+ return null;
134
+ }
135
+ static runDeleteDataProvider(ctx) {
136
+ if (typeof ctx.dataProvider !== 'undefined') {
137
+ const editorDataProvider = ctx.dataProvider;
138
+ if (typeof editorDataProvider.delete === 'function') {
139
+ return ctx.parameters?.itemId ? editorDataProvider.delete(ctx.parameters.itemId, ctx.parameters.item, ctx.serviceInstance) : null;
140
+ }
141
+ }
142
+ return null;
143
+ }
144
+ }
145
145
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWRhdGEtcHJvdmlkZXIudXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdXRpbHMvYWN0aW9uLWRhdGEtcHJvdmlkZXIudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWEsWUFBWSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUUxRCxPQUFPLEVBQW1CLHVCQUF1QixFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUszRixNQUFNLE9BQU8sc0JBQXNCO0lBQ3hCLE1BQU0sQ0FBQyxlQUFlLENBQU8sR0FBd0I7UUFDeEQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzRSxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sZ0JBQWdCLENBQUM7U0FDM0I7UUFDRCxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNqRSxPQUFPLFlBQVksQ0FBQyxXQUFXLENBQUM7WUFDNUIsQ0FBQyxDQUFDLFdBQVc7WUFDYixDQUFDLENBQUMsVUFBVSxDQUNOLEdBQUcsRUFBRSxDQUNELElBQUksS0FBSyxDQUNMLDRGQUE0RixHQUFHLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEtBQUssR0FBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsaUJBQWlCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxHQUFHLENBQ25OLENBQ1IsQ0FBQztJQUNaLENBQUM7SUFFTSxNQUFNLENBQUMsY0FBYyxDQUFPLEdBQXdCO1FBQ3ZELE1BQU0sZ0JBQWdCLEdBQUcsc0JBQXNCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUUsSUFBSSxZQUFZLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUNoQyxPQUFP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QWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7YUFDckk7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZSwgaXNPYnNlcnZhYmxlLCB0aHJvd0Vycm9yfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtLCBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlciwgTWVkaXVzUXVlcnlSZXN1bHR9IGZyb20gJy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtJTW5nQ3J1ZEFwaVNlcnZpY2UsIElNbmdHZXRBbGxBcGlTZXJ2aWNlfSBmcm9tICcuLi9hcGkvc2VydmljZXMnO1xuaW1wb3J0IHtBY3Rpb25Db250ZXh0fSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyLCBJVGFibGVEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRhdGFQcm92aWRlclV0aWwge1xuICAgIHB1YmxpYyBzdGF0aWMgcnVuR2V0QWxsT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+IHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuR2V0QWxsRGF0YVByb3ZpZGVyKGN0eCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcnZpY2VFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5HZXRBbGxTZXJ2aWNlKGN0eCk7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUoc2VydmljZUV4ZWMpXG4gICAgICAgICAgICA/IHNlcnZpY2VFeGVjXG4gICAgICAgICAgICA6IHRocm93RXJyb3IoXG4gICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYERhdGEgcHJvdmlkZXIgYW5kIHNlcnZpY2UgaW5zdGFuY2UgY291bGQgbm90IGV4dHJhY3QgZmV0Y2ggZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtIGlkICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW1JZH0uYFxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkZldGNoT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5GZXRjaERhdGFQcm92aWRlcihjdHgpO1xuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGRhdGFQcm92aWRlckV4ZWMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlYztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXJ2aWNlRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuR2V0QnlJZFNlcnZpY2UoY3R4KTtcbiAgICAgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShzZXJ2aWNlRXhlYylcbiAgICAgICAgICAgID8gc2VydmljZUV4ZWNcbiAgICAgICAgICAgIDogdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBhbmQgc2VydmljZSBpbnN0YW5jZSBjb3VsZCBub3QgZXh0cmFjdCBmZXRjaCBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lfSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXJFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5DcmVhdGVEYXRhUHJvdmlkZXIoY3R4KTtcbiAgICAgICAgaWYgKGlzT2JzZXJ2YWJsZShkYXRhUHJvdmlkZXJFeGVjKSkge1xuICAgICAgICAgICAgcmV0dXJuIGRhdGFQcm92aWRlckV4ZWM7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2VydmljZUV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkNyZWF0ZVNlcnZpY2UoY3R4KTtcbiAgICAgICAgcmV0dXJuIGlzT2JzZXJ2YWJsZShzZXJ2aWNlRXhlYylcbiAgICAgICAgICAgID8gc2VydmljZUV4ZWNcbiAgICAgICAgICAgIDogdGhyb3dFcnJvcihcbiAgICAgICAgICAgICAgICAgICgpID0+XG4gICAgICAgICAgICAgICAgICAgICAgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBgRGF0YSBwcm92aWRlciBhbmQgc2VydmljZSBpbnN0YW5jZSBjb3VsZCBub3QgZXh0cmFjdCBjcmVhdGUgZnVuY3Rpb24gdG8gZXhlY3V0ZSBpbiBhY3Rpb24gJHtjdHguaW5zdGFuY2UuYWN0aW9uLmFjdGlvbk5hbWVMb25nfSAoJHtjdHguaW5zdGFuY2UuYWN0aW9uLm1vZGVsPy50eXBlTmFtZX0pIGZvciBpdGVtICR7Y3R4LnBhcmFtZXRlcnM/Lml0ZW19LmBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5VcGRhdGVPckZhaWw8VCwgUz4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KTogT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlckV4ZWMgPSBBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1blVwZGF0ZURhdGFQcm92aWRlcihjdHgpO1xuICAgICAgICBpZiAoaXNPYnNlcnZhYmxlKGRhdGFQcm92aWRlckV4ZWMpKSB7XG4gICAgICAgICAgICByZXR1cm4gZGF0YVByb3ZpZGVyRXhlYztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZXJ2aWNlRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuVXBkYXRlU2VydmljZShjdHgpO1xuICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHNlcnZpY2VFeGVjKVxuICAgICAgICAgICAgPyBzZXJ2aWNlRXhlY1xuICAgICAgICAgICAgOiB0aHJvd0Vycm9yKFxuICAgICAgICAgICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBEYXRhIHByb3ZpZGVyIGFuZCBzZXJ2aWNlIGluc3RhbmNlIGNvdWxkIG5vdCBleHRyYWN0IHVwZGF0ZSBmdW5jdGlvbiB0byBleGVjdXRlIGluIGFjdGlvbiAke2N0eC5pbnN0YW5jZS5hY3Rpb24uYWN0aW9uTmFtZUxvbmd9ICgke2N0eC5pbnN0YW5jZS5hY3Rpb24ubW9kZWw/LnR5cGVOYW1lfSkgZm9yIGl0ZW0gaWQgJHtjdHgucGFyYW1ldGVycz8uaXRlbUlkfS5gXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRGVsZXRlT3JGYWlsPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VCB8IG51bGw+IHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyRXhlYyA9IEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuRGVsZXRlRGF0YVByb3ZpZGVyKGN0eCk7XG4gICAgICAgIGlmIChpc09ic2VydmFibGUoZGF0YVByb3ZpZGVyRXhlYykpIHtcbiAgICAgICAgICAgIHJldHVybiBkYXRhUHJvdmlkZXJFeGVjO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlcnZpY2VFeGVjID0gQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5EZWxldGVTZXJ2aWNlKGN0eCk7XG4gICAgICAgIHJldHVybiBpc09ic2VydmFibGUoc2VydmljZUV4ZWMpXG4gICAgICAgICAgICA/IHNlcnZpY2VFeGVjXG4gICAgICAgICAgICA6IHRocm93RXJyb3IoXG4gICAgICAgICAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYERhdGEgcHJvdmlkZXIgYW5kIHNlcnZpY2UgaW5zdGFuY2UgY291bGQgbm90IGV4dHJhY3QgZGVsZXRlIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgaW4gYWN0aW9uICR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5hY3Rpb25OYW1lTG9uZ30gKCR7Y3R4Lmluc3RhbmNlLmFjdGlvbi5tb2RlbD8udHlwZU5hbWV9KSBmb3IgaXRlbSBpZCAke2N0eC5wYXJhbWV0ZXJzPy5pdGVtSWR9LmBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBydW5HZXRBbGxTZXJ2aWNlPFQ+KGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPik6IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LnNlcnZpY2VJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGdldEFsbFNlcnZpY2VJbnN0YW5jZSA9IGN0eC5zZXJ2aWNlSW5zdGFuY2UgYXMgSU1uZ0dldEFsbEFwaVNlcnZpY2U8VD47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGdldEFsbFNlcnZpY2VJbnN0YW5jZS5nZXRBbGxQb3N0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlQYXJhbSA9IGN0eC5wYXJhbWV0ZXJzPy5xdWVyeVBhcmFtID8/IE1lZGl1c1F1ZXJ5UGFyYW1CdWlsZGVyLmNyZWF0ZSgpLmJ1aWxkKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGdldEFsbFNlcnZpY2VJbnN0YW5jZS5nZXRBbGxQb3N0KHF1ZXJ5UGFyYW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuR2V0QnlJZFNlcnZpY2U8VD4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIHVua25vd24+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5zZXJ2aWNlSW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBjcnVkU2VydmljZUluc3RhbmNlID0gY3R4LnNlcnZpY2VJbnN0YW5jZSBhcyBJTW5nQ3J1ZEFwaVNlcnZpY2U8VD47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNydWRTZXJ2aWNlSW5zdGFuY2UuZ2V0QnlJZEdldCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbUlkID8gY3J1ZFNlcnZpY2VJbnN0YW5jZS5nZXRCeUlkR2V0KGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlU2VydmljZTxUPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LnNlcnZpY2VJbnN0YW5jZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGNydWRTZXJ2aWNlSW5zdGFuY2UgPSBjdHguc2VydmljZUluc3RhbmNlIGFzIElNbmdDcnVkQXBpU2VydmljZTxUPjtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY3J1ZFNlcnZpY2VJbnN0YW5jZS5jcmVhdGVQb3N0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtID8gY3J1ZFNlcnZpY2VJbnN0YW5jZS5jcmVhdGVQb3N0KGN0eC5wYXJhbWV0ZXJzLml0ZW0pIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1blVwZGF0ZVNlcnZpY2U8VD4oY3R4OiBBY3Rpb25Db250ZXh0PFQsIHVua25vd24+KTogT2JzZXJ2YWJsZTxUPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5zZXJ2aWNlSW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBjcnVkU2VydmljZUluc3RhbmNlID0gY3R4LnNlcnZpY2VJbnN0YW5jZSBhcyBJTW5nQ3J1ZEFwaVNlcnZpY2U8VD47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNydWRTZXJ2aWNlSW5zdGFuY2UudXBkYXRlUHV0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgJiYgY3R4LnBhcmFtZXRlcnMuaXRlbSA/IGNydWRTZXJ2aWNlSW5zdGFuY2UudXBkYXRlUHV0KGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnBhcmFtZXRlcnMuaXRlbSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRGVsZXRlU2VydmljZTxUPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pOiBPYnNlcnZhYmxlPFQgfCBudWxsPiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5zZXJ2aWNlSW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBjb25zdCBjcnVkU2VydmljZUluc3RhbmNlID0gY3R4LnNlcnZpY2VJbnN0YW5jZSBhcyBJTW5nQ3J1ZEFwaVNlcnZpY2U8VD47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNydWRTZXJ2aWNlSW5zdGFuY2UucmVtb3ZlRGVsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBjcnVkU2VydmljZUluc3RhbmNlLnJlbW92ZURlbGV0ZShjdHgucGFyYW1ldGVycy5pdGVtSWQsIGN0eC5wYXJhbWV0ZXJzLml0ZW0pIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkdldEFsbERhdGFQcm92aWRlcjxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PiB8IG51bGwge1xuICAgICAgICBpZiAodHlwZW9mIGN0eC5kYXRhUHJvdmlkZXIgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyWydnZXRBbGwnIGFzIGtleW9mIG9iamVjdF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYmxlRGF0YVByb3ZpZGVyID0gY3R4LmRhdGFQcm92aWRlciBhcyBJVGFibGVEYXRhUHJvdmlkZXI8VCwgYW55PjtcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW0gPSBjdHgucGFyYW1ldGVycz8ucXVlcnlQYXJhbSA/PyBNZWRpdXNRdWVyeVBhcmFtQnVpbGRlci5jcmVhdGUoKS5idWlsZCgpO1xuICAgICAgICAgICAgcmV0dXJuIHRhYmxlRGF0YVByb3ZpZGVyLmdldEFsbChxdWVyeVBhcmFtLCBjdHguc2VydmljZUluc3RhbmNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1bkZldGNoRGF0YVByb3ZpZGVyPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgZWRpdG9yRGF0YVByb3ZpZGVyID0gY3R4LmRhdGFQcm92aWRlciBhcyBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5mZXRjaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdHgucGFyYW1ldGVycz8uaXRlbUlkID8gZWRpdG9yRGF0YVByb3ZpZGVyLmZldGNoKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnNlcnZpY2VJbnN0YW5jZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuQ3JlYXRlRGF0YVByb3ZpZGVyPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VD4gfCBudWxsIHtcbiAgICAgICAgaWYgKHR5cGVvZiBjdHguZGF0YVByb3ZpZGVyICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgY29uc3QgZWRpdG9yRGF0YVByb3ZpZGVyID0gY3R4LmRhdGFQcm92aWRlciBhcyBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVkaXRvckRhdGFQcm92aWRlci5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3R4LnBhcmFtZXRlcnM/Lml0ZW0gPyBlZGl0b3JEYXRhUHJvdmlkZXIuY3JlYXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpIDogbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIHJ1blVwZGF0ZURhdGFQcm92aWRlcjxULCBTPihjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pOiBPYnNlcnZhYmxlPFQ+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIudXBkYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBlZGl0b3JEYXRhUHJvdmlkZXIudXBkYXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcnVuRGVsZXRlRGF0YVByb3ZpZGVyPFQsIFM+KGN0eDogQWN0aW9uQ29udGV4dDxULCBTPik6IE9ic2VydmFibGU8VCB8IG51bGw+IHwgbnVsbCB7XG4gICAgICAgIGlmICh0eXBlb2YgY3R4LmRhdGFQcm92aWRlciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvckRhdGFQcm92aWRlciA9IGN0eC5kYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN0eC5wYXJhbWV0ZXJzPy5pdGVtSWQgPyBlZGl0b3JEYXRhUHJvdmlkZXIuZGVsZXRlKGN0eC5wYXJhbWV0ZXJzLml0ZW1JZCwgY3R4LnBhcmFtZXRlcnMuaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSkgOiBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbn1cbiJdfQ==