@mediusinc/mng-commons 0.1.0 → 0.2.5

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 (274) hide show
  1. package/esm2020/lib/api/models/builders/query-param.builder.mjs +48 -48
  2. package/esm2020/lib/api/models/filter-match-type.model.mjs +26 -26
  3. package/esm2020/lib/api/models/filter-param.model.mjs +46 -46
  4. package/esm2020/lib/api/models/index.mjs +9 -9
  5. package/esm2020/lib/api/models/mappers.mjs +17 -17
  6. package/esm2020/lib/api/models/query-mode.model.mjs +19 -19
  7. package/esm2020/lib/api/models/query-param.model.mjs +69 -69
  8. package/esm2020/lib/api/models/query-result.model.mjs +45 -45
  9. package/esm2020/lib/api/models/serialization.model.mjs +2 -2
  10. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +72 -0
  11. package/esm2020/lib/api/services/index.mjs +2 -2
  12. package/esm2020/lib/api/utils/index.mjs +3 -3
  13. package/esm2020/lib/api/utils/medius-rest.util.mjs +122 -122
  14. package/esm2020/lib/api/utils/object-serializer.util.mjs +226 -226
  15. package/esm2020/lib/components/action/action.component.mjs +65 -63
  16. package/esm2020/lib/components/action/dialog/action-dialog.component.mjs +148 -159
  17. package/esm2020/lib/components/action/index.mjs +4 -4
  18. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +2 -0
  19. package/esm2020/lib/components/action/models/action-execution.model.mjs +58 -0
  20. package/esm2020/lib/components/action/models/index.mjs +3 -0
  21. package/esm2020/lib/components/action/route/action-route.component.mjs +144 -144
  22. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +114 -0
  23. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +113 -0
  24. package/esm2020/lib/components/form/editor/form-editor.component.mjs +141 -142
  25. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +19 -19
  26. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +19 -19
  27. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +16 -16
  28. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +26 -26
  29. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +109 -109
  30. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +122 -122
  31. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +17 -17
  32. package/esm2020/lib/components/form/formly/fields/index.mjs +8 -8
  33. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +17 -17
  34. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +16 -16
  35. package/esm2020/lib/components/form/formly/wrappers/index.mjs +3 -3
  36. package/esm2020/lib/components/form/index.mjs +4 -4
  37. package/esm2020/lib/components/form/models/form-editor.event.mjs +7 -0
  38. package/esm2020/lib/components/form/models/index.mjs +2 -0
  39. package/esm2020/lib/components/layout/breadcrumb.component.mjs +17 -17
  40. package/esm2020/lib/components/layout/footer.component.mjs +17 -17
  41. package/esm2020/lib/components/layout/index.mjs +7 -7
  42. package/esm2020/lib/components/layout/main-layout.component.mjs +54 -33
  43. package/esm2020/lib/components/layout/menu-item.component.mjs +173 -173
  44. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  45. package/esm2020/lib/components/layout/services/index.mjs +2 -0
  46. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +190 -190
  47. package/esm2020/lib/components/layout/topbar.component.mjs +59 -40
  48. package/esm2020/lib/components/tableview/index.mjs +6 -6
  49. package/esm2020/lib/components/tableview/models/index.mjs +2 -0
  50. package/esm2020/lib/components/tableview/models/table.event.mjs +16 -0
  51. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +24 -24
  52. package/esm2020/lib/components/tableview/services/index.mjs +2 -0
  53. package/esm2020/lib/components/tableview/services/tableview.component.service.mjs +17 -0
  54. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +85 -74
  55. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +25 -25
  56. package/esm2020/lib/components/tableview/table/table.component.mjs +307 -307
  57. package/esm2020/lib/components/tableview/tableview.component.mjs +82 -83
  58. package/esm2020/lib/config/formly.config.mjs +136 -136
  59. package/esm2020/lib/config/index.mjs +2 -2
  60. package/esm2020/lib/config/models/index.mjs +2 -0
  61. package/esm2020/lib/config/models/mng-config.model.mjs +2 -0
  62. package/esm2020/lib/data-providers/base.data-provider.mjs +24 -0
  63. package/esm2020/lib/data-providers/editor.data-provider.mjs +37 -0
  64. package/esm2020/lib/data-providers/index.mjs +6 -0
  65. package/esm2020/lib/data-providers/lookup.data-provider.mjs +16 -0
  66. package/esm2020/lib/data-providers/table.data-provider.mjs +2 -0
  67. package/esm2020/lib/data-providers/tableview.data-provider.mjs +17 -0
  68. package/esm2020/lib/descriptors/action.descriptor.mjs +332 -0
  69. package/esm2020/lib/descriptors/editor.descriptor.mjs +670 -0
  70. package/esm2020/lib/descriptors/field.validator.mjs +21 -0
  71. package/esm2020/lib/descriptors/index.mjs +8 -0
  72. package/esm2020/lib/descriptors/lookup.descriptor.mjs +2 -0
  73. package/esm2020/lib/descriptors/model.descriptor.mjs +34 -0
  74. package/esm2020/lib/descriptors/table.descriptor.mjs +427 -0
  75. package/esm2020/lib/descriptors/tableview.descriptor.mjs +131 -0
  76. package/esm2020/lib/directives/component.directive.mjs +23 -0
  77. package/esm2020/lib/directives/index.mjs +3 -2
  78. package/esm2020/lib/directives/template.directive.mjs +29 -25
  79. package/esm2020/lib/mng-commons.module.mjs +410 -343
  80. package/esm2020/lib/models/index.mjs +3 -0
  81. package/esm2020/lib/models/router.model.mjs +2 -0
  82. package/esm2020/lib/models/user.model.mjs +2 -0
  83. package/esm2020/lib/pipes/boolean.pipe.mjs +22 -22
  84. package/esm2020/lib/pipes/index.mjs +3 -3
  85. package/esm2020/lib/pipes/property-path.pipe.mjs +36 -36
  86. package/esm2020/lib/services/action.service.mjs +269 -270
  87. package/esm2020/lib/services/commons.service.mjs +354 -357
  88. package/esm2020/lib/services/configuration.service.mjs +78 -77
  89. package/esm2020/lib/services/index.mjs +5 -5
  90. package/esm2020/lib/services/navigation.service.mjs +48 -48
  91. package/esm2020/lib/services/providers/commons-init.provider.mjs +4 -4
  92. package/esm2020/lib/services/providers/config-service.provider.mjs +20 -12
  93. package/esm2020/lib/services/providers/formly-config.provider.mjs +31 -31
  94. package/esm2020/lib/services/providers/index.mjs +4 -3
  95. package/esm2020/lib/services/tokens/browser-storage.token.mjs +6 -0
  96. package/esm2020/lib/services/tokens/index.mjs +3 -0
  97. package/esm2020/lib/services/tokens/module-config.token.mjs +3 -0
  98. package/esm2020/lib/types/index.mjs +3 -0
  99. package/esm2020/lib/types/type.decorator.mjs +7 -0
  100. package/esm2020/lib/types/type.model.mjs +2 -0
  101. package/esm2020/lib/utils/editor-formly.util.mjs +176 -176
  102. package/esm2020/lib/utils/i18n.util.mjs +125 -125
  103. package/esm2020/lib/utils/index.mjs +6 -5
  104. package/esm2020/lib/utils/model.util.mjs +57 -57
  105. package/esm2020/lib/utils/toast.util.mjs +39 -39
  106. package/esm2020/lib/utils/type.util.mjs +39 -39
  107. package/esm2020/mediusinc-mng-commons.mjs +5 -5
  108. package/esm2020/public-api.mjs +36 -35
  109. package/fesm2015/mediusinc-mng-commons.mjs +6086 -5914
  110. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  111. package/fesm2020/mediusinc-mng-commons.mjs +6010 -5841
  112. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  113. package/lib/api/models/builders/query-param.builder.d.ts +11 -11
  114. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  115. package/lib/api/models/filter-param.model.d.ts +23 -23
  116. package/lib/api/models/index.d.ts +8 -8
  117. package/lib/api/models/mappers.d.ts +6 -6
  118. package/lib/api/models/query-mode.model.d.ts +16 -16
  119. package/lib/api/models/query-param.model.d.ts +31 -31
  120. package/lib/api/models/query-result.model.d.ts +36 -36
  121. package/lib/api/models/serialization.model.d.ts +8 -8
  122. package/lib/api/services/{abstract-crud-api.service.d.ts → crud-api.abstract.service.d.ts} +23 -23
  123. package/lib/api/services/index.d.ts +1 -1
  124. package/lib/api/utils/index.d.ts +2 -2
  125. package/lib/api/utils/medius-rest.util.d.ts +12 -12
  126. package/lib/api/utils/object-serializer.util.d.ts +30 -30
  127. package/lib/components/action/action.component.d.ts +36 -36
  128. package/lib/components/action/dialog/action-dialog.component.d.ts +46 -49
  129. package/lib/components/action/index.d.ts +3 -3
  130. package/lib/{models/interfaces/confirmation-service.model.d.ts → components/action/models/action-confirmation-service.model.d.ts} +6 -6
  131. package/lib/{models/action/action.model.d.ts → components/action/models/action-execution.model.d.ts} +53 -53
  132. package/lib/components/action/models/index.d.ts +2 -0
  133. package/lib/components/action/route/action-route.component.d.ts +32 -32
  134. package/lib/components/form/autocomplete/{mng-autocomplete.component.d.ts → autocomplete.component.d.ts} +36 -36
  135. package/lib/components/form/dropdown/{mng-dropdown.component.d.ts → dropdown.component.d.ts} +34 -34
  136. package/lib/components/form/editor/form-editor.component.d.ts +39 -39
  137. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +11 -11
  138. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +11 -11
  139. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +6 -6
  140. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +12 -12
  141. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +17 -17
  142. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +36 -36
  143. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  144. package/lib/components/form/formly/fields/index.d.ts +7 -7
  145. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +8 -8
  146. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +8 -8
  147. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  148. package/lib/components/form/index.d.ts +3 -3
  149. package/lib/components/form/models/form-editor.event.d.ts +5 -0
  150. package/lib/components/form/models/index.d.ts +1 -0
  151. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  152. package/lib/components/layout/footer.component.d.ts +9 -9
  153. package/lib/components/layout/index.d.ts +6 -6
  154. package/lib/components/layout/main-layout.component.d.ts +21 -13
  155. package/lib/components/layout/menu-item.component.d.ts +29 -29
  156. package/lib/components/layout/menu.component.d.ts +10 -10
  157. package/lib/components/layout/services/index.d.ts +1 -0
  158. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  159. package/lib/components/layout/topbar.component.d.ts +25 -18
  160. package/lib/components/tableview/index.d.ts +5 -5
  161. package/lib/components/tableview/models/index.d.ts +1 -0
  162. package/lib/{models/events/table-event.model.d.ts → components/tableview/models/table.event.d.ts} +17 -17
  163. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +14 -14
  164. package/lib/components/tableview/services/index.d.ts +1 -0
  165. package/lib/components/tableview/{tableview.component.service.d.ts → services/tableview.component.service.d.ts} +13 -13
  166. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +27 -22
  167. package/lib/components/tableview/table/column-value/column-value.component.d.ts +12 -12
  168. package/lib/components/tableview/table/table.component.d.ts +79 -79
  169. package/lib/components/tableview/tableview.component.d.ts +35 -36
  170. package/lib/config/formly.config.d.ts +14 -14
  171. package/lib/config/index.d.ts +1 -1
  172. package/lib/{models/config → config/models}/index.d.ts +1 -1
  173. package/lib/{models/config → config/models}/mng-config.model.d.ts +34 -37
  174. package/lib/data-providers/base.data-provider.d.ts +17 -0
  175. package/lib/data-providers/editor.data-provider.d.ts +25 -0
  176. package/lib/data-providers/index.d.ts +5 -0
  177. package/lib/data-providers/lookup.data-provider.d.ts +14 -0
  178. package/lib/data-providers/table.data-provider.d.ts +6 -0
  179. package/lib/data-providers/tableview.data-provider.d.ts +15 -0
  180. package/lib/{models/descriptors/action-descriptor.model.d.ts → descriptors/action.descriptor.d.ts} +148 -145
  181. package/lib/{models/descriptors/editor-descriptor.model.d.ts → descriptors/editor.descriptor.d.ts} +255 -257
  182. package/lib/{models/validators → descriptors}/field.validator.d.ts +18 -18
  183. package/lib/descriptors/index.d.ts +7 -0
  184. package/lib/{models/interfaces/lookup.model.d.ts → descriptors/lookup.descriptor.d.ts} +17 -17
  185. package/lib/{models/descriptors/model-descriptor.model.d.ts → descriptors/model.descriptor.d.ts} +15 -15
  186. package/lib/{models/descriptors/table-descriptor.model.d.ts → descriptors/table.descriptor.d.ts} +184 -164
  187. package/lib/{models/descriptors/tableview-descriptor.model.d.ts → descriptors/tableview.descriptor.d.ts} +39 -41
  188. package/lib/directives/component.directive.d.ts +11 -0
  189. package/lib/directives/index.d.ts +2 -1
  190. package/lib/directives/template.directive.d.ts +13 -11
  191. package/lib/mng-commons.module.d.ts +79 -78
  192. package/lib/models/{router/index.d.ts → index.d.ts} +2 -1
  193. package/lib/models/router.model.d.ts +14 -0
  194. package/lib/models/{user/user.model.d.ts → user.model.d.ts} +8 -8
  195. package/lib/pipes/boolean.pipe.d.ts +7 -7
  196. package/lib/pipes/index.d.ts +2 -2
  197. package/lib/pipes/property-path.pipe.d.ts +7 -7
  198. package/lib/services/action.service.d.ts +92 -92
  199. package/lib/services/commons.service.d.ts +72 -74
  200. package/lib/services/configuration.service.d.ts +35 -35
  201. package/lib/services/index.d.ts +4 -4
  202. package/lib/services/navigation.service.d.ts +14 -14
  203. package/lib/services/providers/commons-init.provider.d.ts +2 -2
  204. package/lib/services/providers/config-service.provider.d.ts +5 -5
  205. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  206. package/lib/services/providers/index.d.ts +3 -2
  207. package/lib/services/tokens/browser-storage.token.d.ts +2 -0
  208. package/lib/services/tokens/index.d.ts +2 -0
  209. package/lib/services/tokens/module-config.token.d.ts +3 -0
  210. package/lib/{models/types → types}/index.d.ts +2 -2
  211. package/lib/{models/types → types}/type.decorator.d.ts +2 -2
  212. package/lib/{models/types → types}/type.model.d.ts +10 -10
  213. package/lib/utils/editor-formly.util.d.ts +9 -9
  214. package/lib/utils/i18n.util.d.ts +18 -18
  215. package/lib/utils/index.d.ts +5 -4
  216. package/lib/utils/model.util.d.ts +7 -7
  217. package/lib/utils/toast.util.d.ts +13 -13
  218. package/lib/utils/type.util.d.ts +15 -15
  219. package/mediusinc-mng-commons.d.ts +5 -5
  220. package/package.json +4 -4
  221. package/public-api.d.ts +25 -24
  222. package/scss/common/layout/_exception.scss +1 -1
  223. package/scss/common/layout/_help.scss +3 -3
  224. package/scss/common/layout/_landing.scss +1 -1
  225. package/scss/common/variables/layout/_common.scss +2 -0
  226. package/scss/common/variables/layout/_layout_dark.scss +4 -3
  227. package/scss/common/variables/layout/_layout_light.scss +4 -3
  228. package/scss/layout/default/_mng-variables-layout-light.scss +2 -2
  229. package/scss/mng-commons-dark.scss +0 -5
  230. package/scss/mng-commons-light.scss +0 -8
  231. package/scss/theme/default/_mng-variables-theme-light.scss +4 -4
  232. package/.pnpm-debug.log +0 -15
  233. package/esm2020/lib/api/services/abstract-crud-api.service.mjs +0 -72
  234. package/esm2020/lib/components/form/autocomplete/mng-autocomplete.component.mjs +0 -114
  235. package/esm2020/lib/components/form/dropdown/mng-dropdown.component.mjs +0 -113
  236. package/esm2020/lib/components/tableview/tableview.component.service.mjs +0 -18
  237. package/esm2020/lib/models/action/action.model.mjs +0 -58
  238. package/esm2020/lib/models/action/index.mjs +0 -2
  239. package/esm2020/lib/models/config/index.mjs +0 -2
  240. package/esm2020/lib/models/config/mng-config.model.mjs +0 -3
  241. package/esm2020/lib/models/descriptors/action-descriptor.model.mjs +0 -325
  242. package/esm2020/lib/models/descriptors/editor-descriptor.model.mjs +0 -671
  243. package/esm2020/lib/models/descriptors/index.mjs +0 -6
  244. package/esm2020/lib/models/descriptors/model-descriptor.model.mjs +0 -34
  245. package/esm2020/lib/models/descriptors/table-descriptor.model.mjs +0 -401
  246. package/esm2020/lib/models/descriptors/tableview-descriptor.model.mjs +0 -133
  247. package/esm2020/lib/models/events/editor-event.model.mjs +0 -14
  248. package/esm2020/lib/models/events/index.mjs +0 -3
  249. package/esm2020/lib/models/events/table-event.model.mjs +0 -16
  250. package/esm2020/lib/models/interfaces/confirmation-service.model.mjs +0 -2
  251. package/esm2020/lib/models/interfaces/index.mjs +0 -3
  252. package/esm2020/lib/models/interfaces/lookup.model.mjs +0 -2
  253. package/esm2020/lib/models/providers/data-provider.model.mjs +0 -86
  254. package/esm2020/lib/models/providers/index.mjs +0 -2
  255. package/esm2020/lib/models/router/index.mjs +0 -2
  256. package/esm2020/lib/models/router/router.model.mjs +0 -2
  257. package/esm2020/lib/models/types/index.mjs +0 -3
  258. package/esm2020/lib/models/types/type.decorator.mjs +0 -7
  259. package/esm2020/lib/models/types/type.model.mjs +0 -2
  260. package/esm2020/lib/models/user/index.mjs +0 -2
  261. package/esm2020/lib/models/user/user.model.mjs +0 -2
  262. package/esm2020/lib/models/validators/field.validator.mjs +0 -21
  263. package/esm2020/lib/models/validators/index.mjs +0 -2
  264. package/lib/models/action/index.d.ts +0 -1
  265. package/lib/models/descriptors/index.d.ts +0 -5
  266. package/lib/models/events/editor-event.model.d.ts +0 -11
  267. package/lib/models/events/index.d.ts +0 -2
  268. package/lib/models/interfaces/index.d.ts +0 -2
  269. package/lib/models/providers/data-provider.model.d.ts +0 -62
  270. package/lib/models/providers/index.d.ts +0 -1
  271. package/lib/models/router/router.model.d.ts +0 -9
  272. package/lib/models/user/index.d.ts +0 -1
  273. package/lib/models/validators/index.d.ts +0 -1
  274. package/mediusinc-mng-commons-0.1.0.tgz +0 -0
@@ -0,0 +1,37 @@
1
+ import { throwError } from 'rxjs';
2
+ import { DataProvider } from './base.data-provider';
3
+ export class EditorDataProvider extends DataProvider {
4
+ constructor(modelType, serviceType) {
5
+ super(modelType, serviceType);
6
+ this._fetch = (id) => throwError(`No fetch function provided for id ${id}.`);
7
+ }
8
+ get fetch() {
9
+ return this._fetch;
10
+ }
11
+ get create() {
12
+ return this._create;
13
+ }
14
+ get update() {
15
+ return this._update;
16
+ }
17
+ get delete() {
18
+ return this._delete;
19
+ }
20
+ withFetch(fetch) {
21
+ this._fetch = fetch;
22
+ return this;
23
+ }
24
+ withCreate(create) {
25
+ this._create = create;
26
+ return this;
27
+ }
28
+ withUpdate(update) {
29
+ this._update = update;
30
+ return this;
31
+ }
32
+ withDelete(deleteFn) {
33
+ this._delete = deleteFn;
34
+ return this;
35
+ }
36
+ }
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RhdGEtcHJvdmlkZXJzL2VkaXRvci5kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHNUMsT0FBTyxFQUFDLFlBQVksRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQVNqRSxNQUFNLE9BQU8sa0JBQXlCLFNBQVEsWUFBa0I7SUFNNUQsWUFBWSxTQUF1QixFQUFFLFdBQXFCO1FBQ3RELEtBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFOeEIsV0FBTSxHQUErQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBTzlILENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxNQUFNO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVNLFNBQVMsQ0FBQyxLQUFpRDtRQUM5RCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQWdEO1FBQzlELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxVQUFVLENBQUMsTUFBNEQ7UUFDMUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxRQUE4RDtRQUM1RSxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge09ic2VydmFibGUsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0NsYXNzVHlwZSwgSWRUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0RhdGFQcm92aWRlciwgSURhdGFQcm92aWRlcn0gZnJvbSAnLi9iYXNlLmRhdGEtcHJvdmlkZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgUz4gZXh0ZW5kcyBJRGF0YVByb3ZpZGVyPFQsIFM+IHtcbiAgICBmZXRjaDogKGlkOiBJZFR5cGUsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+O1xuICAgIGNyZWF0ZT86IChpdGVtPzogVCwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD47XG4gICAgdXBkYXRlPzogKGlkOiBJZFR5cGUsIGl0ZW0/OiBULCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxUPjtcbiAgICBkZWxldGU/OiAoaWQ6IElkVHlwZSwgaXRlbT86IFQsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+O1xufVxuXG5leHBvcnQgY2xhc3MgRWRpdG9yRGF0YVByb3ZpZGVyPFQsIFM+IGV4dGVuZHMgRGF0YVByb3ZpZGVyPFQsIFM+IGltcGxlbWVudHMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPiB7XG4gICAgcHJvdGVjdGVkIF9mZXRjaDogKGlkOiBJZFR5cGUsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+ID0gKGlkKSA9PiB0aHJvd0Vycm9yKGBObyBmZXRjaCBmdW5jdGlvbiBwcm92aWRlZCBmb3IgaWQgJHtpZH0uYCk7XG4gICAgcHJvdGVjdGVkIF9jcmVhdGU/OiAoaXRlbT86IFQsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+O1xuICAgIHByb3RlY3RlZCBfdXBkYXRlPzogKGlkOiBJZFR5cGUsIGl0ZW0/OiBULCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxUPjtcbiAgICBwcm90ZWN0ZWQgX2RlbGV0ZT86IChpZDogSWRUeXBlLCBpdGVtPzogVCwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD47XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPiwgc2VydmljZVR5cGU/OiBUeXBlPFM+KSB7XG4gICAgICAgIHN1cGVyKG1vZGVsVHlwZSwgc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2goKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNyZWF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVwZGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRlbGV0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlbGV0ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoKGZldGNoOiAoaWQ6IElkVHlwZSwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmV0Y2ggPSBmZXRjaDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDcmVhdGUoY3JlYXRlOiAoaXRlbT86IFQsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2NyZWF0ZSA9IGNyZWF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhVcGRhdGUodXBkYXRlOiAoaWQ6IElkVHlwZSwgaXRlbT86IFQsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZSA9IHVwZGF0ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEZWxldGUoZGVsZXRlRm46IChpZDogSWRUeXBlLCBpdGVtPzogVCwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGVsZXRlID0gZGVsZXRlRm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,6 @@
1
+ export * from './base.data-provider';
2
+ export * from './editor.data-provider';
3
+ export * from './lookup.data-provider';
4
+ export * from './table.data-provider';
5
+ export * from './tableview.data-provider';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RhdGEtcHJvdmlkZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS5kYXRhLXByb3ZpZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vZWRpdG9yLmRhdGEtcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi9sb29rdXAuZGF0YS1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlLmRhdGEtcHJvdmlkZXInO1xuZXhwb3J0ICogZnJvbSAnLi90YWJsZXZpZXcuZGF0YS1wcm92aWRlcic7XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { of } from 'rxjs';
2
+ import { DataProvider } from './base.data-provider';
3
+ export class LookupDataProvider extends DataProvider {
4
+ constructor(modelType, serviceType) {
5
+ super(modelType, serviceType);
6
+ this._lookup = () => of([]);
7
+ }
8
+ get lookup() {
9
+ return this._lookup;
10
+ }
11
+ withLookup(lookup) {
12
+ this._lookup = lookup;
13
+ return this;
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RhdGEtcHJvdmlkZXJzL2xvb2t1cC5kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFJcEMsT0FBTyxFQUFDLFlBQVksRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQztBQU1qRSxNQUFNLE9BQU8sa0JBQXlCLFNBQVEsWUFBa0I7SUFJNUQsWUFBWSxTQUE0QixFQUFFLFdBQXFCO1FBQzNELEtBQUssQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFIeEIsWUFBTyxHQUEwRixHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7SUFJeEgsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQTZGO1FBQzNHLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW19IGZyb20gJy4uL2FwaS9tb2RlbHMnO1xuaW1wb3J0IHtDbGFzc1R5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyLCBJRGF0YVByb3ZpZGVyfSBmcm9tICcuL2Jhc2UuZGF0YS1wcm92aWRlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUxvb2t1cERhdGFQcm92aWRlcjxULCBTPiBleHRlbmRzIElEYXRhUHJvdmlkZXI8VCwgUz4ge1xuICAgIGxvb2t1cDogKHF1ZXJ5UGFyYW0/OiBNZWRpdXNRdWVyeVBhcmFtLCBzZXJ2aWNlPzogUywgc2VhcmNoPzogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPEFycmF5PFQ+Pjtcbn1cblxuZXhwb3J0IGNsYXNzIExvb2t1cERhdGFQcm92aWRlcjxULCBTPiBleHRlbmRzIERhdGFQcm92aWRlcjxULCBTPiBpbXBsZW1lbnRzIElMb29rdXBEYXRhUHJvdmlkZXI8VCwgUz4ge1xuXG4gICAgcHJvdGVjdGVkIF9sb29rdXA6IChxdWVyeVBhcmFtPzogTWVkaXVzUXVlcnlQYXJhbSwgc2VydmljZT86IFMsIHNlYXJjaD86IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxBcnJheTxUPj4gPSAoKSA9PiBvZihbXSk7XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbFR5cGU6IENsYXNzVHlwZTxUPnxudWxsLCBzZXJ2aWNlVHlwZT86IFR5cGU8Uz4pIHtcbiAgICAgICAgc3VwZXIobW9kZWxUeXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsb29rdXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sb29rdXA7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMb29rdXAobG9va3VwOiAocXVlcnlQYXJhbT86IE1lZGl1c1F1ZXJ5UGFyYW0sIHNlcnZpY2U/OiBTLCBzZWFyY2g/OiBzdHJpbmcpID0+IE9ic2VydmFibGU8QXJyYXk8VD4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xvb2t1cCA9IGxvb2t1cDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuZGF0YS1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZGF0YS1wcm92aWRlcnMvdGFibGUuZGF0YS1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtPYnNlcnZhYmxlfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtNZWRpdXNRdWVyeVBhcmFtLCBNZWRpdXNRdWVyeVJlc3VsdH0gZnJvbSAnLi4vYXBpL21vZGVscyc7XG5pbXBvcnQge0lEYXRhUHJvdmlkZXJ9IGZyb20gJy4vYmFzZS5kYXRhLXByb3ZpZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGVEYXRhUHJvdmlkZXI8VCwgUz4gZXh0ZW5kcyBJRGF0YVByb3ZpZGVyPFQsIFM+IHtcbiAgICBnZXRBbGw6IChxdWVyeVBhcmFtOiBNZWRpdXNRdWVyeVBhcmFtLCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxNZWRpdXNRdWVyeVJlc3VsdDxUPj47XG59XG4iXX0=
@@ -0,0 +1,17 @@
1
+ import { of } from 'rxjs';
2
+ import { MediusQueryResult } from '../api/models';
3
+ import { EditorDataProvider } from './editor.data-provider';
4
+ export class TableviewDataProvider extends EditorDataProvider {
5
+ constructor(modelType, serviceType) {
6
+ super(modelType, serviceType);
7
+ this._getAll = (qp) => of(new MediusQueryResult());
8
+ }
9
+ get getAll() {
10
+ return this._getAll;
11
+ }
12
+ withGetAll(getAll) {
13
+ this._getAll = getAll;
14
+ return this;
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LmRhdGEtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2RhdGEtcHJvdmlkZXJzL3RhYmxldmlldy5kYXRhLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUFtQixpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsRSxPQUFPLEVBQUMsa0JBQWtCLEVBQXNCLE1BQU0sd0JBQXdCLENBQUM7QUFPL0UsTUFBTSxPQUFPLHFCQUE0QixTQUFRLGtCQUF3QjtJQUdyRSxZQUFZLFNBQXVCLEVBQUUsV0FBcUI7UUFDdEQsS0FBSyxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUh4QixZQUFPLEdBQW9GLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxpQkFBaUIsRUFBSyxDQUFDLENBQUM7SUFJNUksQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRU0sVUFBVSxDQUFDLE1BQXVGO1FBQ3JHLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7VHlwZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge01lZGl1c1F1ZXJ5UGFyYW0sIE1lZGl1c1F1ZXJ5UmVzdWx0fSBmcm9tICcuLi9hcGkvbW9kZWxzJztcbmltcG9ydCB7Q2xhc3NUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0VkaXRvckRhdGFQcm92aWRlciwgSUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi9lZGl0b3IuZGF0YS1wcm92aWRlcic7XG5pbXBvcnQge0lUYWJsZURhdGFQcm92aWRlcn0gZnJvbSAnLi90YWJsZS5kYXRhLXByb3ZpZGVyJztcblxuZXhwb3J0IGludGVyZmFjZSBJVGFibGV2aWV3RGF0YVByb3ZpZGVyPFQsIFM+IGV4dGVuZHMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPiB7XG4gICAgZ2V0QWxsOiAocXVlcnlQYXJhbTogTWVkaXVzUXVlcnlQYXJhbSwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8TWVkaXVzUXVlcnlSZXN1bHQ8VD4+O1xufVxuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3RGF0YVByb3ZpZGVyPFQsIFM+IGV4dGVuZHMgRWRpdG9yRGF0YVByb3ZpZGVyPFQsIFM+IGltcGxlbWVudHMgSVRhYmxldmlld0RhdGFQcm92aWRlcjxULCBTPiwgSVRhYmxlRGF0YVByb3ZpZGVyPFQsIFM+LCBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIFM+IHtcbiAgICBwcm90ZWN0ZWQgX2dldEFsbDogKHF1ZXJ5UGFyYW06IE1lZGl1c1F1ZXJ5UGFyYW0sIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+PiA9IChxcCkgPT4gb2YobmV3IE1lZGl1c1F1ZXJ5UmVzdWx0PFQ+KCkpO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWxUeXBlOiBDbGFzc1R5cGU8VD4sIHNlcnZpY2VUeXBlPzogVHlwZTxTPikge1xuICAgICAgICBzdXBlcihtb2RlbFR5cGUsIHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGdldEFsbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dldEFsbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEdldEFsbChnZXRBbGw6IChxdWVyeVBhcmFtOiBNZWRpdXNRdWVyeVBhcmFtLCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxNZWRpdXNRdWVyeVJlc3VsdDxUPj4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZ2V0QWxsID0gZ2V0QWxsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,332 @@
1
+ import { of, throwError } from 'rxjs';
2
+ import { TypeUtil } from '../utils';
3
+ export class ActionDescriptor {
4
+ constructor(model, actionName, parentType, parentProperty) {
5
+ this._type = ActionTypeEnum.Direct;
6
+ this._activationTrigger = ActionActivationTriggerEnum.OnClick;
7
+ this._position = ActionPositionEnum.ToolbarRight;
8
+ this._level = ActionLevelEnum.Default;
9
+ this._routeUrl = null;
10
+ this._className = '';
11
+ this._hasRunConfirmation = false;
12
+ this._hasRunNotificationSuccess = true;
13
+ this._hasRunNotificationError = true;
14
+ this._model = model;
15
+ this._actionName = actionName;
16
+ if ((parentType && !parentProperty) || (!parentProperty && parentProperty)) {
17
+ throw new Error(`Provide both the parent type and parent property or none: ${parentType}, ${parentProperty}.`);
18
+ }
19
+ this._parentType = parentType;
20
+ this._parentTypeName = parentType ? TypeUtil.findTypeName(parentType) : undefined;
21
+ this._parentProperty = parentProperty;
22
+ this._i18nModelActionBaseKey = this._parentTypeName
23
+ ? `${this._parentTypeName}.actions.${this._parentProperty}_${actionName}`
24
+ : `${this._model.typeName}.actions.${actionName}`;
25
+ }
26
+ get model() {
27
+ return this._model;
28
+ }
29
+ get parentTypeName() {
30
+ return this._parentTypeName;
31
+ }
32
+ get parentProperty() {
33
+ return this._parentProperty;
34
+ }
35
+ get i18nModelActionBaseKey() {
36
+ return this._i18nModelActionBaseKey;
37
+ }
38
+ get type() {
39
+ return this._type;
40
+ }
41
+ get activationTrigger() {
42
+ return this._activationTrigger;
43
+ }
44
+ get position() {
45
+ return this._position;
46
+ }
47
+ get level() {
48
+ return this._level;
49
+ }
50
+ get routeUrl() {
51
+ return this._routeUrl;
52
+ }
53
+ get title() {
54
+ return this._title;
55
+ }
56
+ get icon() {
57
+ return this._icon;
58
+ }
59
+ get tooltip() {
60
+ return this._tooltip;
61
+ }
62
+ get runFunction() {
63
+ if (!this._runFunction) {
64
+ throw new Error('Run function is not defined and cannot be invoked');
65
+ }
66
+ return this._runFunction;
67
+ }
68
+ get isVisibleFunction() {
69
+ return this._isVisibleFunction;
70
+ }
71
+ get isEnabledFunction() {
72
+ return this._isEnabledFunction;
73
+ }
74
+ get actionName() {
75
+ return this._actionName;
76
+ }
77
+ get className() {
78
+ return this._className;
79
+ }
80
+ get hasRunConfirmation() {
81
+ return this._hasRunConfirmation;
82
+ }
83
+ get runConfirmationIcon() {
84
+ return this._runConfirmationIcon;
85
+ }
86
+ get runConfirmationTitle() {
87
+ return this._runConfirmationTitle;
88
+ }
89
+ get runConfirmationMessage() {
90
+ return this._runConfirmationMessage;
91
+ }
92
+ get runConfirmationAcceptTitle() {
93
+ return this._runConfirmationAcceptTitle;
94
+ }
95
+ get runConfirmationRejectTitle() {
96
+ return this._runConfirmationRejectTitle;
97
+ }
98
+ get hasRunNotificationSuccess() {
99
+ return this._hasRunNotificationSuccess;
100
+ }
101
+ get runNotificationSuccessTitle() {
102
+ return this._runNotificationSuccessTitle;
103
+ }
104
+ get runNotificationSuccessMessage() {
105
+ return this._runNotificationSuccessMessage;
106
+ }
107
+ get hasRunNotificationError() {
108
+ return this._hasRunNotificationError;
109
+ }
110
+ get runNotificationErrorTitle() {
111
+ return this._runNotificationErrorTitle;
112
+ }
113
+ get runNotificationErrorMessage() {
114
+ return this._runNotificationErrorMessage;
115
+ }
116
+ withRunFunction(fn) {
117
+ this._runFunction = fn;
118
+ return this;
119
+ }
120
+ withIsVisibleFunction(fn) {
121
+ this._isVisibleFunction = fn;
122
+ return this;
123
+ }
124
+ withIsEnabledFunction(fn) {
125
+ this._isEnabledFunction = fn;
126
+ return this;
127
+ }
128
+ withRouteTrigger(routeUrl) {
129
+ this._activationTrigger = ActionActivationTriggerEnum.OnRoute;
130
+ this._routeUrl = routeUrl;
131
+ return this;
132
+ }
133
+ withLevel(level) {
134
+ this._level = level;
135
+ return this;
136
+ }
137
+ /**
138
+ * Overrides default title key with model action key (${model.typeName}.actions.${actionName}). Not relevant if parentType name is provided.
139
+ */
140
+ withModelTitle() {
141
+ this._title = `${this._i18nModelActionBaseKey}.title`;
142
+ return this;
143
+ }
144
+ /**
145
+ * Overrides default title key (${actionName}.title). If null, no title will be shown.
146
+ * @param title Title i18n key or title.
147
+ */
148
+ withTitle(title) {
149
+ this._title = title;
150
+ return this;
151
+ }
152
+ withIcon(icon) {
153
+ this._icon = icon;
154
+ return this;
155
+ }
156
+ withTooltip(tooltip) {
157
+ this._title = tooltip;
158
+ return this;
159
+ }
160
+ withClassName(className) {
161
+ this._className = className;
162
+ return this;
163
+ }
164
+ withPosition(position) {
165
+ this._position = position;
166
+ return this;
167
+ }
168
+ withRunConfirmation(icon = 'pi pi-exclamation-triangle', title, message, acceptTitle, rejectTitle) {
169
+ this._hasRunConfirmation = true;
170
+ this._runConfirmationIcon = icon;
171
+ this._runConfirmationTitle = title;
172
+ this._runConfirmationMessage = message;
173
+ this._runConfirmationAcceptTitle = acceptTitle;
174
+ this._runConfirmationRejectTitle = rejectTitle;
175
+ return this;
176
+ }
177
+ withRunNotificationSuccess(title, message, hasNotification = true) {
178
+ this._hasRunNotificationSuccess = hasNotification;
179
+ this._runNotificationSuccessTitle = title;
180
+ this._runNotificationSuccessMessage = message;
181
+ }
182
+ withRunNotificationError(title, message, hasNotification = true) {
183
+ this._hasRunNotificationError = hasNotification;
184
+ this._runNotificationErrorTitle = title;
185
+ this._runNotificationErrorMessage = message;
186
+ }
187
+ }
188
+ export class ActionEditorDescriptor extends ActionDescriptor {
189
+ constructor(editorDescriptor, actionName, parentType, parentProperty) {
190
+ super(editorDescriptor.model, actionName, parentType, parentProperty);
191
+ this._editorTitle = undefined;
192
+ this._hasFetchNotificationSuccess = false;
193
+ this._type = ActionTypeEnum.Editor;
194
+ this._editorDescriptor = editorDescriptor;
195
+ }
196
+ get editorTitle() {
197
+ return this._editorTitle;
198
+ }
199
+ get editorDescriptor() {
200
+ return this._editorDescriptor;
201
+ }
202
+ get hasFetchNotificationSuccess() {
203
+ return this._hasFetchNotificationSuccess;
204
+ }
205
+ get fetchNotificationSuccessTitle() {
206
+ return this._fetchNotificationSuccessTitle;
207
+ }
208
+ get fetchNotificationSuccessMessage() {
209
+ return this._fetchNotificationSuccessMessage;
210
+ }
211
+ get runFunction() {
212
+ throw new Error('Run function cannot be used in editor action. Use submit function instead!');
213
+ }
214
+ get fetchFunction() {
215
+ if (!this._fetchFunction) {
216
+ return (ctx) => {
217
+ console.warn(`Fetch function is not provided for function ${this._actionName}, using default and returning context item`, ctx.data?.item);
218
+ return of(ctx.data?.item ? ctx.data.item : {});
219
+ };
220
+ }
221
+ return this._fetchFunction;
222
+ }
223
+ get submitFunction() {
224
+ return this._submitFunction;
225
+ }
226
+ withEditorTitle(title) {
227
+ this._editorTitle = title;
228
+ return this;
229
+ }
230
+ withRunFunction(fn) {
231
+ return this.withSubmitFunction(fn);
232
+ }
233
+ withFetchFunction(fn) {
234
+ this._fetchFunction = fn;
235
+ return this;
236
+ }
237
+ withSubmitFunction(fn) {
238
+ this._submitFunction = fn;
239
+ return this;
240
+ }
241
+ withFetchNotificationError(title, message, hasNotification = true) {
242
+ this._hasFetchNotificationSuccess = hasNotification;
243
+ this._fetchNotificationSuccessTitle = title;
244
+ this._fetchNotificationSuccessMessage = message;
245
+ }
246
+ }
247
+ export class ActionEditorDetailsDescriptor extends ActionEditorDescriptor {
248
+ constructor(editorDescriptor) {
249
+ super(editorDescriptor, 'details');
250
+ this.withPosition(ActionPositionEnum.RowClick);
251
+ this.withRouteTrigger(':itemId');
252
+ this.withFetchFunction(ctx => ctx.dataProvider?.fetch && ctx.data?.itemId
253
+ ? ctx.dataProvider.fetch(ctx.data?.itemId, ctx.serviceInstance)
254
+ : throwError(new Error(`Data provider fetch function or item id ${ctx.data?.itemId} is missing.`)));
255
+ this.withClassName('mng-details-dynamic-dialog');
256
+ }
257
+ }
258
+ export class ActionEditorAddDescriptor extends ActionEditorDescriptor {
259
+ constructor(editorDescriptor) {
260
+ super(editorDescriptor, 'add');
261
+ this.withPosition(ActionPositionEnum.ToolbarLeft);
262
+ this.withRouteTrigger('add');
263
+ this.withSubmitFunction(ctx => ctx.dataProvider?.create
264
+ ? ctx.dataProvider.create(ctx.data?.item, ctx.serviceInstance)
265
+ : throwError(new Error(`Data provider create function is missing.`)));
266
+ this.withLevel(ActionLevelEnum.Success);
267
+ this.withIcon('pi pi-plus');
268
+ this.withClassName('mng-details-dynamic-dialog');
269
+ }
270
+ }
271
+ export class ActionEditorEditDescriptor extends ActionEditorDescriptor {
272
+ constructor(editorDescriptor) {
273
+ super(editorDescriptor, 'edit');
274
+ this.withPosition(ActionPositionEnum.RowInline);
275
+ this.withTitle(null);
276
+ this.withRouteTrigger(':itemId/edit');
277
+ this.withFetchFunction(ctx => ctx.dataProvider?.fetch && ctx.data?.itemId
278
+ ? ctx.dataProvider.fetch(ctx.data.itemId, ctx.serviceInstance)
279
+ : throwError(new Error(`Data provider fetch function or item id ${ctx.data?.itemId} is missing.`)));
280
+ this.withSubmitFunction(ctx => ctx.dataProvider?.update && ctx.data?.itemId
281
+ ? ctx.dataProvider.update(ctx.data.itemId, ctx.data?.item, ctx.serviceInstance)
282
+ : throwError(new Error(`Data provider update function or item id ${ctx.data?.itemId} is missing.`)));
283
+ this.withIcon('pi pi-pencil');
284
+ this.withClassName('mng-details-dynamic-dialog');
285
+ }
286
+ }
287
+ export class ActionDeleteDescriptor extends ActionDescriptor {
288
+ constructor(model) {
289
+ super(model, 'delete');
290
+ this.withPosition(ActionPositionEnum.RowInline);
291
+ this.withTitle(null);
292
+ this.withRunFunction(ctx => {
293
+ const editorDataProvider = ctx.dataProvider;
294
+ return editorDataProvider?.delete && ctx.data?.itemId
295
+ ? editorDataProvider.delete(ctx.data.itemId, ctx.data.item, ctx.serviceInstance)
296
+ : throwError(new Error(`Data provider delete function or item id ${ctx.data?.itemId} is missing.`));
297
+ });
298
+ this.withLevel(ActionLevelEnum.Danger);
299
+ this.withIcon('pi pi-trash');
300
+ this.withRunConfirmation(undefined);
301
+ }
302
+ }
303
+ export var ActionPositionEnum;
304
+ (function (ActionPositionEnum) {
305
+ ActionPositionEnum[ActionPositionEnum["ToolbarLeft"] = 0] = "ToolbarLeft";
306
+ ActionPositionEnum[ActionPositionEnum["ToolbarRight"] = 1] = "ToolbarRight";
307
+ ActionPositionEnum[ActionPositionEnum["TableHeader"] = 2] = "TableHeader";
308
+ ActionPositionEnum[ActionPositionEnum["RowInline"] = 3] = "RowInline";
309
+ ActionPositionEnum[ActionPositionEnum["RowClick"] = 4] = "RowClick";
310
+ })(ActionPositionEnum || (ActionPositionEnum = {}));
311
+ export var ActionActivationTriggerEnum;
312
+ (function (ActionActivationTriggerEnum) {
313
+ ActionActivationTriggerEnum[ActionActivationTriggerEnum["OnClick"] = 0] = "OnClick";
314
+ ActionActivationTriggerEnum[ActionActivationTriggerEnum["OnRoute"] = 1] = "OnRoute"; // action is triggered for activation by route url
315
+ })(ActionActivationTriggerEnum || (ActionActivationTriggerEnum = {}));
316
+ export var ActionTypeEnum;
317
+ (function (ActionTypeEnum) {
318
+ ActionTypeEnum[ActionTypeEnum["Direct"] = 0] = "Direct";
319
+ ActionTypeEnum[ActionTypeEnum["Editor"] = 1] = "Editor"; // editor providing middle step for activation
320
+ })(ActionTypeEnum || (ActionTypeEnum = {}));
321
+ export var ActionLevelEnum;
322
+ (function (ActionLevelEnum) {
323
+ ActionLevelEnum[ActionLevelEnum["Default"] = 0] = "Default";
324
+ ActionLevelEnum[ActionLevelEnum["Primary"] = 1] = "Primary";
325
+ ActionLevelEnum[ActionLevelEnum["Secondary"] = 2] = "Secondary";
326
+ ActionLevelEnum[ActionLevelEnum["Info"] = 3] = "Info";
327
+ ActionLevelEnum[ActionLevelEnum["Help"] = 4] = "Help";
328
+ ActionLevelEnum[ActionLevelEnum["Success"] = 5] = "Success";
329
+ ActionLevelEnum[ActionLevelEnum["Warning"] = 6] = "Warning";
330
+ ActionLevelEnum[ActionLevelEnum["Danger"] = 7] = "Danger";
331
+ })(ActionLevelEnum || (ActionLevelEnum = {}));
332
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBTWhELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFFbEMsTUFBTSxPQUFPLGdCQUFnQjtJQXVDekIsWUFBWSxLQUF5QixFQUFFLFVBQWtCLEVBQUUsVUFBMkIsRUFBRSxjQUF1QjtRQS9CckcsVUFBSyxHQUFtQixjQUFjLENBQUMsTUFBTSxDQUFDO1FBQzlDLHVCQUFrQixHQUFnQywyQkFBMkIsQ0FBQyxPQUFPLENBQUM7UUFDdEYsY0FBUyxHQUF1QixrQkFBa0IsQ0FBQyxZQUFZLENBQUM7UUFDaEUsV0FBTSxHQUFvQixlQUFlLENBQUMsT0FBTyxDQUFDO1FBRWxELGNBQVMsR0FBZ0IsSUFBSSxDQUFDO1FBSTlCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFPMUIsd0JBQW1CLEdBQVksS0FBSyxDQUFDO1FBT25DLCtCQUEwQixHQUFZLElBQUksQ0FBQztRQUk3Qyw2QkFBd0IsR0FBWSxJQUFJLENBQUM7UUFLN0MsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFFOUIsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxjQUFjLElBQUksY0FBYyxDQUFDLEVBQUU7WUFDeEUsTUFBTSxJQUFJLEtBQUssQ0FBQyw2REFBNkQsVUFBVSxLQUFLLGNBQWMsR0FBRyxDQUFDLENBQUM7U0FDbEg7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsZUFBZSxHQUFHLFVBQVUsQ0FBQyxD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QUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBRUQsTUFBTSxDQUFOLElBQVksa0JBTVg7QUFORCxXQUFZLGtCQUFrQjtJQUMxQix5RUFBVyxDQUFBO0lBQ1gsMkVBQVksQ0FBQTtJQUNaLHlFQUFXLENBQUE7SUFDWCxxRUFBUyxDQUFBO0lBQ1QsbUVBQVEsQ0FBQTtBQUNaLENBQUMsRUFOVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBTTdCO0FBRUQsTUFBTSxDQUFOLElBQVksMkJBR1g7QUFIRCxXQUFZLDJCQUEyQjtJQUNuQyxtRkFBTyxDQUFBO0lBQ1AsbUZBQU8sQ0FBQSxDQUFDLGtEQUFrRDtBQUM5RCxDQUFDLEVBSFcsMkJBQTJCLEtBQTNCLDJCQUEyQixRQUd0QztBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDdEIsdURBQU0sQ0FBQTtJQUNOLHVEQUFNLENBQUEsQ0FBQyw4Q0FBOEM7QUFDekQsQ0FBQyxFQUhXLGNBQWMsS0FBZCxjQUFjLFFBR3pCO0FBRUQsTUFBTSxDQUFOLElBQVksZUFTWDtBQVRELFdBQVksZUFBZTtJQUN2QiwyREFBTyxDQUFBO0lBQ1AsMkRBQU8sQ0FBQTtJQUNQLCtEQUFTLENBQUE7SUFDVCxxREFBSSxDQUFBO0lBQ0oscURBQUksQ0FBQTtJQUNKLDJEQUFPLENBQUE7SUFDUCwyREFBTyxDQUFBO0lBQ1AseURBQU0sQ0FBQTtBQUNWLENBQUMsRUFUVyxlQUFlLEtBQWYsZUFBZSxRQVMxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0NsYXNzVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtFZGl0b3JEZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4vJztcbmltcG9ydCB7SURhdGFQcm92aWRlciwgSUVkaXRvckRhdGFQcm92aWRlcn0gZnJvbSAnLi4vZGF0YS1wcm92aWRlcnMnO1xuaW1wb3J0IHtBY3Rpb25FeGVjQ29udGV4dH0gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpb24vbW9kZWxzJztcbmltcG9ydCB7VHlwZVV0aWx9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRlc2NyaXB0b3I8VD4ge1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfbW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudFR5cGU/OiBDbGFzc1R5cGU8YW55PjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudFR5cGVOYW1lPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50UHJvcGVydHk/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pMThuTW9kZWxBY3Rpb25CYXNlS2V5OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX3R5cGU6IEFjdGlvblR5cGVFbnVtID0gQWN0aW9uVHlwZUVudW0uRGlyZWN0O1xuICAgIHByb3RlY3RlZCBfYWN0aXZhdGlvblRyaWdnZXI6IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSA9IEFjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bS5PbkNsaWNrO1xuICAgIHByb3RlY3RlZCBfcG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSA9IEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ7XG4gICAgcHJvdGVjdGVkIF9sZXZlbDogQWN0aW9uTGV2ZWxFbnVtID0gQWN0aW9uTGV2ZWxFbnVtLkRlZmF1bHQ7XG5cbiAgICBwcm90ZWN0ZWQgX3JvdXRlVXJsOiBzdHJpbmd8bnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgX3RpdGxlPzogc3RyaW5nfG51bGw7XG4gICAgcHJvdGVjdGVkIF9pY29uPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfY2xhc3NOYW1lOiBzdHJpbmcgPSAnJztcbiAgICBwcm90ZWN0ZWQgX3Rvb2x0aXA/OiBzdHJpbmd8bnVsbDtcblxuICAgIHByb3RlY3RlZCBfcnVuRnVuY3Rpb24/OiAoY3R4OiBBY3Rpb25FeGVjQ29udGV4dDxULCBhbnksIElEYXRhUHJvdmlkZXI8VCwgYW55Pj4pID0+IE9ic2VydmFibGU8VD47XG4gICAgcHJvdGVjdGVkIF9pc1Zpc2libGVGdW5jdGlvbj86IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIGFueSwgSURhdGFQcm92aWRlcjxULCBhbnk+PikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogKGN0eDogQWN0aW9uRXhlY0NvbnRleHQ8VCwgYW55LCBJRGF0YVByb3ZpZGVyPFQsIGFueT4+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgcHJpdmF0ZSBfaGFzUnVuQ29uZmlybWF0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfcnVuQ29uZmlybWF0aW9uSWNvbj86IHN0cmluZztcbiAgICBwcml2YXRlIF9ydW5Db25maXJtYXRpb25UaXRsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9ydW5Db25maXJtYXRpb25NZXNzYWdlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3J1bkNvbmZpcm1hdGlvbkFjY2VwdFRpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX3J1bkNvbmZpcm1hdGlvblJlamVjdFRpdGxlPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9oYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzOiBib29sZWFuID0gdHJ1ZTtcbiAgICBwcml2YXRlIF9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9oYXNSdW5Ob3RpZmljYXRpb25FcnJvcjogYm9vbGVhbiA9IHRydWU7XG4gICAgcHJpdmF0ZSBfcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZT86IHN0cmluZztcbiAgICBwcml2YXRlIF9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIHBhcmVudFR5cGU/OiBDbGFzc1R5cGU8YW55PiwgcGFyZW50UHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fYWN0aW9uTmFtZSA9IGFjdGlvbk5hbWU7XG5cbiAgICAgICAgaWYgKChwYXJlbnRUeXBlICYmICFwYXJlbnRQcm9wZXJ0eSkgfHwgKCFwYXJlbnRQcm9wZXJ0eSAmJiBwYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgdHlwZSBhbmQgcGFyZW50IHByb3BlcnR5IG9yIG5vbmU6ICR7cGFyZW50VHlwZX0sICR7cGFyZW50UHJvcGVydHl9LmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BhcmVudFR5cGUgPSBwYXJlbnRUeXBlO1xuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlTmFtZSA9IHBhcmVudFR5cGUgPyBUeXBlVXRpbC5maW5kVHlwZU5hbWUocGFyZW50VHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhcmVudFByb3BlcnR5ID0gcGFyZW50UHJvcGVydHk7XG5cbiAgICAgICAgdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleSA9IHRoaXMuX3BhcmVudFR5cGVOYW1lXG4gICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudFR5cGVOYW1lfS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7YWN0aW9uTmFtZX1gXG4gICAgICAgICAgICA6IGAke3RoaXMuX21vZGVsLnR5cGVOYW1lfS5hY3Rpb25zLiR7YWN0aW9uTmFtZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudFR5cGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VHlwZU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaTE4bk1vZGVsQWN0aW9uQmFzZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbGV2ZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvdXRlVXJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm91dGVVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ljb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0b29sdGlwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdG9vbHRpcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bkZ1bmN0aW9uKCk6IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIGFueSwgSURhdGFQcm92aWRlcjxULCBhbnk+PikgPT4gT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGlmICghdGhpcy5fcnVuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVuIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkIGFuZCBjYW5ub3QgYmUgaW52b2tlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBjbGFzc05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gICAgfVxuXG4gICAgZ2V0IGhhc1J1bkNvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bkNvbmZpcm1hdGlvbjtcbiAgICB9XG5cbiAgICBnZXQgcnVuQ29uZmlybWF0aW9uSWNvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkljb247XG4gICAgfVxuXG4gICAgZ2V0IHJ1bkNvbmZpcm1hdGlvblRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uVGl0bGU7XG4gICAgfVxuXG4gICAgZ2V0IHJ1bkNvbmZpcm1hdGlvbk1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Db25maXJtYXRpb25NZXNzYWdlO1xuICAgIH1cblxuICAgIGdldCBydW5Db25maXJtYXRpb25BY2NlcHRUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkFjY2VwdFRpdGxlO1xuICAgIH1cblxuICAgIGdldCBydW5Db25maXJtYXRpb25SZWplY3RUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvblJlamVjdFRpdGxlO1xuICAgIH1cblxuICAgIGdldCBoYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBnZXQgcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlO1xuICAgIH1cblxuICAgIGdldCBydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuICAgIH1cblxuICAgIGdldCBoYXNSdW5Ob3RpZmljYXRpb25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yO1xuICAgIH1cblxuICAgIGdldCBydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZTtcbiAgICB9XG5cbiAgICBnZXQgcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIFMsIElEYXRhUHJvdmlkZXI8VCwgUz4+KSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIFMsIElEYXRhUHJvdmlkZXI8VCwgUz4+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIFMsIElEYXRhUHJvdmlkZXI8VCwgUz4+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVUcmlnZ2VyKHJvdXRlVXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvblRyaWdnZXIgPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZTtcbiAgICAgICAgdGhpcy5fcm91dGVVcmwgPSByb3V0ZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhMZXZlbChsZXZlbDogQWN0aW9uTGV2ZWxFbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2xldmVsID0gbGV2ZWw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE92ZXJyaWRlcyBkZWZhdWx0IHRpdGxlIGtleSB3aXRoIG1vZGVsIGFjdGlvbiBrZXkgKCR7bW9kZWwudHlwZU5hbWV9LmFjdGlvbnMuJHthY3Rpb25OYW1lfSkuIE5vdCByZWxldmFudCBpZiBwYXJlbnRUeXBlIG5hbWUgaXMgcHJvdmlkZWQuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhNb2RlbFRpdGxlKCk6IHRoaXMge1xuICAgICAgICB0aGlzLl90aXRsZSA9IGAke3RoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXl9LnRpdGxlYDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGVzIGRlZmF1bHQgdGl0bGUga2V5ICgke2FjdGlvbk5hbWV9LnRpdGxlKS4gSWYgbnVsbCwgbm8gdGl0bGUgd2lsbCBiZSBzaG93bi5cbiAgICAgKiBAcGFyYW0gdGl0bGUgVGl0bGUgaTE4biBrZXkgb3IgdGl0bGUuXG4gICAgICovXG4gICAgcHVibGljIHdpdGhUaXRsZSh0aXRsZTogc3RyaW5nfG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJY29uKGljb246IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9pY29uID0gaWNvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUb29sdGlwKHRvb2x0aXA6IHN0cmluZ3xudWxsKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RpdGxlID0gdG9vbHRpcDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fY2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uKHBvc2l0aW9uOiBBY3Rpb25Qb3NpdGlvbkVudW0pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBwb3NpdGlvbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSdW5Db25maXJtYXRpb24oaWNvbjogc3RyaW5nID0gJ3BpIHBpLWV4Y2xhbWF0aW9uLXRyaWFuZ2xlJywgdGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGFjY2VwdFRpdGxlPzogc3RyaW5nLCByZWplY3RUaXRsZT86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNSdW5Db25maXJtYXRpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25JY29uID0gaWNvbjtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkFjY2VwdFRpdGxlID0gYWNjZXB0VGl0bGU7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvblJlamVjdFRpdGxlID0gcmVqZWN0VGl0bGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgaGFzTm90aWZpY2F0aW9uOiBib29sZWFuID0gdHJ1ZSkge1xuICAgICAgICB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzID0gaGFzTm90aWZpY2F0aW9uO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UgPSBtZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uRXJyb3IgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlID0gbWVzc2FnZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvcjxUPiB7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZT86IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICAgIHByaXZhdGUgX2hhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlPzogc3RyaW5nO1xuICAgIHByaXZhdGUgX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiAoY3R4OiBBY3Rpb25FeGVjQ29udGV4dDxULCBhbnksIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55Pj4pID0+IE9ic2VydmFibGU8VD47XG4gICAgcHJvdGVjdGVkIF9zdWJtaXRGdW5jdGlvbj86IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIGFueSwgSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+PikgPT4gT2JzZXJ2YWJsZTxUPjtcblxuICAgIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4sIGFjdGlvbk5hbWU6IHN0cmluZywgcGFyZW50VHlwZT86IENsYXNzVHlwZTxhbnk+LCBwYXJlbnRQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihlZGl0b3JEZXNjcmlwdG9yLm1vZGVsLCBhY3Rpb25OYW1lLCBwYXJlbnRUeXBlLCBwYXJlbnRQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3R5cGUgPSBBY3Rpb25UeXBlRW51bS5FZGl0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckRlc2NyaXB0b3IgPSBlZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckRlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIGdldCBoYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgZ2V0IGZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGU7XG4gICAgfVxuXG4gICAgZ2V0IGZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgcnVuRnVuY3Rpb24oKTogKGN0eDogQWN0aW9uRXhlY0NvbnRleHQ8VCwgYW55LCBJRGF0YVByb3ZpZGVyPFQsIGFueT4+KSA9PiBPYnNlcnZhYmxlPFQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdW4gZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgaW4gZWRpdG9yIGFjdGlvbi4gVXNlIHN1Ym1pdCBmdW5jdGlvbiBpbnN0ZWFkIScpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hGdW5jdGlvbigpOiAoY3R4OiBBY3Rpb25FeGVjQ29udGV4dDxULCBhbnksIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55Pj4pID0+IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAoIXRoaXMuX2ZldGNoRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiAoY3R4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBGZXRjaCBmdW5jdGlvbiBpcyBub3QgcHJvdmlkZWQgZm9yIGZ1bmN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZX0sIHVzaW5nIGRlZmF1bHQgYW5kIHJldHVybmluZyBjb250ZXh0IGl0ZW1gLCBjdHguZGF0YT8uaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGN0eC5kYXRhPy5pdGVtID8gY3R4LmRhdGEuaXRlbSA6IHt9IGFzIFQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3VibWl0RnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvclRpdGxlKHRpdGxlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhSdW5GdW5jdGlvbjxTPihmbjogKGN0eDogQWN0aW9uRXhlY0NvbnRleHQ8VCwgUywgSURhdGFQcm92aWRlcjxULCBTPj4pID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFN1Ym1pdEZ1bmN0aW9uKGZuIGFzIChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIFMsIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgUz4+KSA9PiBPYnNlcnZhYmxlPFQ+KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkV4ZWNDb250ZXh0PFQsIFMsIElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgUz4+KSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZldGNoRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdWJtaXRGdW5jdGlvbjxTPihmbjogKGN0eDogQWN0aW9uRXhlY0NvbnRleHQ8VCwgUywgSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPj4pID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fc3VibWl0RnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGZXRjaE5vdGlmaWNhdGlvbkVycm9yKHRpdGxlPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBoYXNOb3RpZmljYXRpb246IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHRoaXMuX2hhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzcyA9IGhhc05vdGlmaWNhdGlvbjtcbiAgICAgICAgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKGVkaXRvckRlc2NyaXB0b3IsICdkZXRhaWxzJyk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIHRoaXMud2l0aFJvdXRlVHJpZ2dlcignOml0ZW1JZCcpO1xuICAgICAgICB0aGlzLndpdGhGZXRjaEZ1bmN0aW9uKGN0eCA9PiBjdHguZGF0YVByb3ZpZGVyPy5mZXRjaCAmJiBjdHguZGF0YT8uaXRlbUlkXG4gICAgICAgICAgICA/IGN0eC5kYXRhUHJvdmlkZXIuZmV0Y2goY3R4LmRhdGE/Lml0ZW1JZCwgY3R4LnNlcnZpY2VJbnN0YW5jZSlcbiAgICAgICAgICAgIDogdGhyb3dFcnJvcihuZXcgRXJyb3IoYERhdGEgcHJvdmlkZXIgZmV0Y2ggZnVuY3Rpb24gb3IgaXRlbSBpZCAke2N0eC5kYXRhPy5pdGVtSWR9IGlzIG1pc3NpbmcuYCkpKTtcbiAgICAgICAgdGhpcy53aXRoQ2xhc3NOYW1lKCdtbmctZGV0YWlscy1keW5hbWljLWRpYWxvZycpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKGVkaXRvckRlc2NyaXB0b3IsICdhZGQnKTtcbiAgICAgICAgdGhpcy53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJMZWZ0KTtcbiAgICAgICAgdGhpcy53aXRoUm91dGVUcmlnZ2VyKCdhZGQnKTtcbiAgICAgICAgdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oY3R4ID0+IGN0eC5kYXRhUHJvdmlkZXI/LmNyZWF0ZVxuICAgICAgICAgICAgPyBjdHguZGF0YVByb3ZpZGVyLmNyZWF0ZShjdHguZGF0YT8uaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSlcbiAgICAgICAgICAgIDogdGhyb3dFcnJvcihuZXcgRXJyb3IoYERhdGEgcHJvdmlkZXIgY3JlYXRlIGZ1bmN0aW9uIGlzIG1pc3NpbmcuYCkpKTtcbiAgICAgICAgdGhpcy53aXRoTGV2ZWwoQWN0aW9uTGV2ZWxFbnVtLlN1Y2Nlc3MpO1xuICAgICAgICB0aGlzLndpdGhJY29uKCdwaSBwaS1wbHVzJyk7XG4gICAgICAgIHRoaXMud2l0aENsYXNzTmFtZSgnbW5nLWRldGFpbHMtZHluYW1pYy1kaWFsb2cnKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvcjxUPiBleHRlbmRzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pIHtcbiAgICAgICAgc3VwZXIoZWRpdG9yRGVzY3JpcHRvciwgJ2VkaXQnKTtcbiAgICAgICAgdGhpcy53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSk7XG4gICAgICAgIHRoaXMud2l0aFRpdGxlKG51bGwpO1xuICAgICAgICB0aGlzLndpdGhSb3V0ZVRyaWdnZXIoJzppdGVtSWQvZWRpdCcpO1xuICAgICAgICB0aGlzLndpdGhGZXRjaEZ1bmN0aW9uKGN0eCA9PiBjdHguZGF0YVByb3ZpZGVyPy5mZXRjaCAmJiBjdHguZGF0YT8uaXRlbUlkXG4gICAgICAgICAgICA/IGN0eC5kYXRhUHJvdmlkZXIuZmV0Y2goY3R4LmRhdGEuaXRlbUlkLCBjdHguc2VydmljZUluc3RhbmNlKVxuICAgICAgICAgICAgOiB0aHJvd0Vycm9yKG5ldyBFcnJvcihgRGF0YSBwcm92aWRlciBmZXRjaCBmdW5jdGlvbiBvciBpdGVtIGlkICR7Y3R4LmRhdGE/Lml0ZW1JZH0gaXMgbWlzc2luZy5gKSkpO1xuICAgICAgICB0aGlzLndpdGhTdWJtaXRGdW5jdGlvbihjdHggPT4gY3R4LmRhdGFQcm92aWRlcj8udXBkYXRlICYmIGN0eC5kYXRhPy5pdGVtSWRcbiAgICAgICAgICAgID8gY3R4LmRhdGFQcm92aWRlci51cGRhdGUoY3R4LmRhdGEuaXRlbUlkLCBjdHguZGF0YT8uaXRlbSwgY3R4LnNlcnZpY2VJbnN0YW5jZSlcbiAgICAgICAgICAgIDogdGhyb3dFcnJvcihuZXcgRXJyb3IoYERhdGEgcHJvdmlkZXIgdXBkYXRlIGZ1bmN0aW9uIG9yIGl0ZW0gaWQgJHtjdHguZGF0YT8uaXRlbUlkfSBpcyBtaXNzaW5nLmApKSk7XG4gICAgICAgIHRoaXMud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuICAgICAgICB0aGlzLndpdGhDbGFzc05hbWUoJ21uZy1kZXRhaWxzLWR5bmFtaWMtZGlhbG9nJyk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRGVsZXRlRGVzY3JpcHRvcjxUPiBleHRlbmRzIEFjdGlvbkRlc2NyaXB0b3I8VD4ge1xuICAgIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD4pIHtcbiAgICAgICAgc3VwZXIobW9kZWwsICdkZWxldGUnKTtcbiAgICAgICAgdGhpcy53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSk7XG4gICAgICAgIHRoaXMud2l0aFRpdGxlKG51bGwpO1xuICAgICAgICB0aGlzLndpdGhSdW5GdW5jdGlvbihjdHggPT4ge1xuICAgICAgICAgICAgY29uc3QgZWRpdG9yRGF0YVByb3ZpZGVyID0gY3R4LmRhdGFQcm92aWRlciBhcyBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgICAgICAgICByZXR1cm4gZWRpdG9yRGF0YVByb3ZpZGVyPy5kZWxldGUgJiYgY3R4LmRhdGE/Lml0ZW1JZFxuICAgICAgICAgICAgICAgID8gZWRpdG9yRGF0YVByb3ZpZGVyLmRlbGV0ZShjdHguZGF0YS5pdGVtSWQsIGN0eC5kYXRhLml0ZW0sIGN0eC5zZXJ2aWNlSW5zdGFuY2UpXG4gICAgICAgICAgICAgICAgOiB0aHJvd0Vycm9yKG5ldyBFcnJvcihgRGF0YSBwcm92aWRlciBkZWxldGUgZnVuY3Rpb24gb3IgaXRlbSBpZCAke2N0eC5kYXRhPy5pdGVtSWR9IGlzIG1pc3NpbmcuYCkpXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLndpdGhMZXZlbChBY3Rpb25MZXZlbEVudW0uRGFuZ2VyKTtcbiAgICAgICAgdGhpcy53aXRoSWNvbigncGkgcGktdHJhc2gnKTtcbiAgICAgICAgdGhpcy53aXRoUnVuQ29uZmlybWF0aW9uKHVuZGVmaW5lZCk7XG4gICAgfVxufVxuXG5leHBvcnQgZW51bSBBY3Rpb25Qb3NpdGlvbkVudW0ge1xuICAgIFRvb2xiYXJMZWZ0LFxuICAgIFRvb2xiYXJSaWdodCxcbiAgICBUYWJsZUhlYWRlcixcbiAgICBSb3dJbmxpbmUsXG4gICAgUm93Q2xpY2tcbn1cblxuZXhwb3J0IGVudW0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtIHtcbiAgICBPbkNsaWNrLCAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIG9uIGNsaWNrXG4gICAgT25Sb3V0ZSAvLyBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZvciBhY3RpdmF0aW9uIGJ5IHJvdXRlIHVybFxufVxuXG5leHBvcnQgZW51bSBBY3Rpb25UeXBlRW51bSB7XG4gICAgRGlyZWN0LCAvLyBhY3Rpb24gaXMgZGlyZWN0bHkgYWN0aXZhdGVkIGFuZCBleGVjdXRlZFxuICAgIEVkaXRvciAvLyBlZGl0b3IgcHJvdmlkaW5nIG1pZGRsZSBzdGVwIGZvciBhY3RpdmF0aW9uXG59XG5cbmV4cG9ydCBlbnVtIEFjdGlvbkxldmVsRW51bSB7XG4gICAgRGVmYXVsdCxcbiAgICBQcmltYXJ5LFxuICAgIFNlY29uZGFyeSxcbiAgICBJbmZvLFxuICAgIEhlbHAsXG4gICAgU3VjY2VzcyxcbiAgICBXYXJuaW5nLFxuICAgIERhbmdlclxufVxuIl19