@mediusinc/mng-commons 0.9.7 → 0.10.3-rc

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 (321) hide show
  1. package/assets/i18n/en.json +5 -5
  2. package/assets/i18n/sl.json +5 -5
  3. package/esm2020/lib/api/models/builders/query-param.builder.mjs +58 -58
  4. package/esm2020/lib/api/models/filter-match-type.model.mjs +24 -24
  5. package/esm2020/lib/api/models/filter-param.model.mjs +32 -32
  6. package/esm2020/lib/api/models/index.mjs +8 -8
  7. package/esm2020/lib/api/models/mappers.mjs +12 -12
  8. package/esm2020/lib/api/models/query-mode.model.mjs +17 -17
  9. package/esm2020/lib/api/models/query-param.model.mjs +67 -67
  10. package/esm2020/lib/api/models/query-result.model.mjs +17 -17
  11. package/esm2020/lib/api/models/serialization.model.mjs +1 -1
  12. package/esm2020/lib/api/services/api.abstract.service.mjs +55 -55
  13. package/esm2020/lib/api/services/crud-api.abstract.service.mjs +68 -67
  14. package/esm2020/lib/api/services/get-all-api.abstract.service.mjs +23 -23
  15. package/esm2020/lib/api/services/index.mjs +3 -3
  16. package/esm2020/lib/api/utils/index.mjs +2 -2
  17. package/esm2020/lib/api/utils/medius-rest.util.mjs +151 -151
  18. package/esm2020/lib/api/utils/object-serializer.util.mjs +243 -243
  19. package/esm2020/lib/components/action/action.component.mjs +200 -178
  20. package/esm2020/lib/components/action/editor/action-editor.component.mjs +248 -248
  21. package/esm2020/lib/components/action/index.mjs +3 -3
  22. package/esm2020/lib/components/action/models/action-confirmation-service.model.mjs +1 -1
  23. package/esm2020/lib/components/action/models/action-execution.model.mjs +236 -235
  24. package/esm2020/lib/components/action/models/index.mjs +2 -2
  25. package/esm2020/lib/components/action/route/action-route.component.mjs +124 -124
  26. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +278 -276
  27. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +169 -168
  28. package/esm2020/lib/components/form/editor/form-editor.component.mjs +211 -211
  29. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +48 -48
  30. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +43 -43
  31. package/esm2020/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.mjs +24 -24
  32. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +102 -101
  33. package/esm2020/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.mjs +23 -17
  34. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +179 -179
  35. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +173 -173
  36. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +155 -155
  37. package/esm2020/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.mjs +16 -16
  38. package/esm2020/lib/components/form/formly/fields/index.mjs +9 -9
  39. package/esm2020/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.mjs +15 -15
  40. package/esm2020/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.mjs +14 -14
  41. package/esm2020/lib/components/form/formly/wrappers/index.mjs +2 -2
  42. package/esm2020/lib/components/form/index.mjs +3 -3
  43. package/esm2020/lib/components/form/models/form-editor.event.mjs +33 -33
  44. package/esm2020/lib/components/form/models/index.mjs +1 -1
  45. package/esm2020/lib/components/layout/breadcrumb.component.mjs +16 -16
  46. package/esm2020/lib/components/layout/footer.component.mjs +16 -16
  47. package/esm2020/lib/components/layout/index.mjs +7 -7
  48. package/esm2020/lib/components/layout/main-layout.component.mjs +51 -51
  49. package/esm2020/lib/components/layout/menu-item.component.mjs +239 -217
  50. package/esm2020/lib/components/layout/menu.component.mjs +20 -20
  51. package/esm2020/lib/components/layout/services/index.mjs +1 -1
  52. package/esm2020/lib/components/layout/services/main-layout.component.service.mjs +192 -192
  53. package/esm2020/lib/components/layout/topbar.component.mjs +57 -57
  54. package/esm2020/lib/components/layout/version.component.mjs +57 -57
  55. package/esm2020/lib/components/tableview/index.mjs +6 -6
  56. package/esm2020/lib/components/tableview/models/index.mjs +1 -1
  57. package/esm2020/lib/components/tableview/models/table.event.mjs +15 -15
  58. package/esm2020/lib/components/tableview/route/tableview-route.abstract.component.mjs +57 -57
  59. package/esm2020/lib/components/tableview/route/tableview-route.component.mjs +61 -61
  60. package/esm2020/lib/components/tableview/table/column-filter/column-filter.component.mjs +102 -102
  61. package/esm2020/lib/components/tableview/table/column-value/column-value.component.mjs +70 -70
  62. package/esm2020/lib/components/tableview/table/table.component.mjs +497 -497
  63. package/esm2020/lib/components/tableview/tableview.component.mjs +91 -91
  64. package/esm2020/lib/config/formly.config.mjs +180 -180
  65. package/esm2020/lib/config/index.mjs +1 -1
  66. package/esm2020/lib/config/models/index.mjs +1 -1
  67. package/esm2020/lib/config/models/mng-config.model.mjs +1 -1
  68. package/esm2020/lib/data-providers/base.data-provider.mjs +16 -16
  69. package/esm2020/lib/data-providers/editor.data-provider.mjs +36 -36
  70. package/esm2020/lib/data-providers/index.mjs +5 -5
  71. package/esm2020/lib/data-providers/lookup.data-provider.mjs +15 -15
  72. package/esm2020/lib/data-providers/table.data-provider.mjs +16 -16
  73. package/esm2020/lib/data-providers/tableview.data-provider.mjs +16 -16
  74. package/esm2020/lib/descriptors/action.descriptor.mjs +588 -566
  75. package/esm2020/lib/descriptors/column.descriptor.mjs +264 -264
  76. package/esm2020/lib/descriptors/editor.descriptor.mjs +146 -146
  77. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +20 -20
  78. package/esm2020/lib/descriptors/field.descriptor.mjs +820 -815
  79. package/esm2020/lib/descriptors/filter.descriptor.mjs +288 -288
  80. package/esm2020/lib/descriptors/index.mjs +9 -9
  81. package/esm2020/lib/descriptors/interfaces/field-config.interface.mjs +1 -1
  82. package/esm2020/lib/descriptors/interfaces/index.mjs +2 -2
  83. package/esm2020/lib/descriptors/interfaces/lookup-descriptor.interface.mjs +1 -1
  84. package/esm2020/lib/descriptors/model.descriptor.mjs +33 -33
  85. package/esm2020/lib/descriptors/table.descriptor.mjs +197 -197
  86. package/esm2020/lib/descriptors/tableview.descriptor.mjs +134 -134
  87. package/esm2020/lib/descriptors/types/action.type.mjs +52 -52
  88. package/esm2020/lib/descriptors/types/column.type.mjs +10 -10
  89. package/esm2020/lib/descriptors/types/editor.type.mjs +7 -7
  90. package/esm2020/lib/descriptors/types/field.type.mjs +52 -52
  91. package/esm2020/lib/descriptors/types/filter.type.mjs +30 -30
  92. package/esm2020/lib/descriptors/types/index.mjs +6 -6
  93. package/esm2020/lib/descriptors/types/table.type.mjs +17 -17
  94. package/esm2020/lib/directives/component.directive.mjs +43 -43
  95. package/esm2020/lib/directives/index.mjs +2 -2
  96. package/esm2020/lib/directives/template.directive.mjs +27 -27
  97. package/esm2020/lib/mng-commons.module.mjs +442 -438
  98. package/esm2020/lib/models/column-value.model.mjs +1 -1
  99. package/esm2020/lib/models/enum.model.mjs +1 -1
  100. package/esm2020/lib/models/error.model.mjs +1 -1
  101. package/esm2020/lib/models/index.mjs +7 -7
  102. package/esm2020/lib/models/menu.model.mjs +2 -2
  103. package/esm2020/lib/models/user.model.mjs +1 -1
  104. package/esm2020/lib/models/version.model.mjs +1 -1
  105. package/esm2020/lib/models/view-container.model.mjs +1 -1
  106. package/esm2020/lib/pipes/boolean.pipe.mjs +26 -26
  107. package/esm2020/lib/pipes/enum.pipe.mjs +24 -24
  108. package/esm2020/lib/pipes/i18n-property.pipe.mjs +17 -17
  109. package/esm2020/lib/pipes/index.mjs +5 -5
  110. package/esm2020/lib/pipes/json-path.pipe.mjs +79 -79
  111. package/esm2020/lib/pipes/link-formatter.pipe.mjs +38 -38
  112. package/esm2020/lib/router/index.mjs +3 -2
  113. package/esm2020/lib/router/models/index.mjs +1 -1
  114. package/esm2020/lib/router/models/router.model.mjs +2 -2
  115. package/esm2020/lib/router/route-builder.mjs +426 -432
  116. package/esm2020/lib/router/tableview-route-builder.mjs +160 -0
  117. package/esm2020/lib/security/authorization.guard.mjs +26 -0
  118. package/esm2020/lib/security/authorization.service.mjs +47 -0
  119. package/esm2020/lib/security/authorization.util.mjs +16 -0
  120. package/esm2020/lib/security/index.mjs +4 -0
  121. package/esm2020/lib/security/model/authorization.type.mjs +8 -0
  122. package/esm2020/lib/security/model/index.mjs +4 -0
  123. package/esm2020/lib/security/model/permission-service.interface.mjs +2 -0
  124. package/esm2020/lib/security/model/permissions.model.mjs +95 -0
  125. package/esm2020/lib/services/action-executor.service.mjs +536 -536
  126. package/esm2020/lib/services/commons.service.mjs +343 -331
  127. package/esm2020/lib/services/configuration.service.mjs +111 -111
  128. package/esm2020/lib/services/error-mapper.service.mjs +13 -13
  129. package/esm2020/lib/services/index.mjs +6 -6
  130. package/esm2020/lib/services/internal/commons-init.provider.mjs +3 -3
  131. package/esm2020/lib/services/internal/commons-init.service.mjs +43 -43
  132. package/esm2020/lib/services/internal/index.mjs +2 -2
  133. package/esm2020/lib/services/navigation.service.mjs +47 -47
  134. package/esm2020/lib/services/providers/config-service.provider.mjs +29 -29
  135. package/esm2020/lib/services/providers/formly-config.provider.mjs +30 -30
  136. package/esm2020/lib/services/providers/index.mjs +2 -2
  137. package/esm2020/lib/services/tokens/browser-storage.token.mjs +5 -5
  138. package/esm2020/lib/services/tokens/commons-init.token.mjs +2 -2
  139. package/esm2020/lib/services/tokens/default-setting.token.mjs +2 -2
  140. package/esm2020/lib/services/tokens/index.mjs +4 -4
  141. package/esm2020/lib/services/tokens/module-config.token.mjs +2 -2
  142. package/esm2020/lib/services/version.service.mjs +39 -38
  143. package/esm2020/lib/services/view-container.component.service.mjs +34 -34
  144. package/esm2020/lib/types/index.mjs +2 -2
  145. package/esm2020/lib/types/type.decorator.mjs +12 -12
  146. package/esm2020/lib/types/type.model.mjs +1 -1
  147. package/esm2020/lib/utils/action-data-provider.util.mjs +145 -145
  148. package/esm2020/lib/utils/editor-formly.util.mjs +243 -240
  149. package/esm2020/lib/utils/enum.util.mjs +81 -81
  150. package/esm2020/lib/utils/i18n.util.mjs +232 -232
  151. package/esm2020/lib/utils/index.mjs +7 -7
  152. package/esm2020/lib/utils/model.util.mjs +59 -59
  153. package/esm2020/lib/utils/notification.util.mjs +45 -45
  154. package/esm2020/lib/utils/route.util.mjs +23 -23
  155. package/esm2020/lib/utils/styles.util.mjs +40 -40
  156. package/esm2020/lib/utils/type.util.mjs +76 -76
  157. package/esm2020/mediusinc-mng-commons.mjs +4 -4
  158. package/esm2020/public-api.mjs +52 -42
  159. package/fesm2015/mediusinc-mng-commons.mjs +10664 -10243
  160. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  161. package/fesm2020/mediusinc-mng-commons.mjs +10513 -10091
  162. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  163. package/lib/api/models/builders/query-param.builder.d.ts +13 -13
  164. package/lib/api/models/filter-match-type.model.d.ts +23 -23
  165. package/lib/api/models/filter-param.model.d.ts +23 -23
  166. package/lib/api/models/index.d.ts +8 -8
  167. package/lib/api/models/mappers.d.ts +6 -6
  168. package/lib/api/models/query-mode.model.d.ts +16 -16
  169. package/lib/api/models/query-param.model.d.ts +31 -31
  170. package/lib/api/models/query-result.model.d.ts +23 -23
  171. package/lib/api/models/serialization.model.d.ts +8 -8
  172. package/lib/api/services/api.abstract.service.d.ts +24 -24
  173. package/lib/api/services/crud-api.abstract.service.d.ts +22 -22
  174. package/lib/api/services/get-all-api.abstract.service.d.ts +14 -14
  175. package/lib/api/services/index.d.ts +3 -3
  176. package/lib/api/utils/index.d.ts +2 -2
  177. package/lib/api/utils/medius-rest.util.d.ts +15 -15
  178. package/lib/api/utils/object-serializer.util.d.ts +33 -33
  179. package/lib/components/action/action.component.d.ts +75 -69
  180. package/lib/components/action/editor/action-editor.component.d.ts +64 -64
  181. package/lib/components/action/index.d.ts +3 -3
  182. package/lib/components/action/models/action-confirmation-service.model.d.ts +6 -6
  183. package/lib/components/action/models/action-execution.model.d.ts +129 -129
  184. package/lib/components/action/models/index.d.ts +2 -2
  185. package/lib/components/action/route/action-route.component.d.ts +31 -31
  186. package/lib/components/form/autocomplete/autocomplete.component.d.ts +56 -56
  187. package/lib/components/form/dropdown/dropdown.component.d.ts +47 -47
  188. package/lib/components/form/editor/form-editor.component.d.ts +45 -45
  189. package/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.d.ts +15 -15
  190. package/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.d.ts +14 -14
  191. package/lib/components/form/formly/fields/formly-field-fieldset/formly-field-fieldset.component.d.ts +13 -13
  192. package/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.d.ts +23 -23
  193. package/lib/components/form/formly/fields/formly-field-label/formly-field-label.component.d.ts +10 -6
  194. package/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.d.ts +45 -45
  195. package/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.d.ts +23 -23
  196. package/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.d.ts +38 -38
  197. package/lib/components/form/formly/fields/formly-field-tabs/formly-field-tabs.component.d.ts +6 -6
  198. package/lib/components/form/formly/fields/index.d.ts +9 -9
  199. package/lib/components/form/formly/wrappers/formly-field-wrapper/formly-field-wrapper.component.d.ts +6 -6
  200. package/lib/components/form/formly/wrappers/formly-table-wrapper/formly-table-wrapper.component.d.ts +6 -6
  201. package/lib/components/form/formly/wrappers/index.d.ts +2 -2
  202. package/lib/components/form/index.d.ts +3 -3
  203. package/lib/components/form/models/form-editor.event.d.ts +37 -37
  204. package/lib/components/form/models/index.d.ts +1 -1
  205. package/lib/components/layout/breadcrumb.component.d.ts +8 -8
  206. package/lib/components/layout/footer.component.d.ts +9 -9
  207. package/lib/components/layout/index.d.ts +7 -7
  208. package/lib/components/layout/main-layout.component.d.ts +20 -20
  209. package/lib/components/layout/menu-item.component.d.ts +44 -37
  210. package/lib/components/layout/menu.component.d.ts +10 -10
  211. package/lib/components/layout/services/index.d.ts +1 -1
  212. package/lib/components/layout/services/main-layout.component.service.d.ts +65 -65
  213. package/lib/components/layout/topbar.component.d.ts +24 -24
  214. package/lib/components/layout/version.component.d.ts +19 -19
  215. package/lib/components/tableview/index.d.ts +6 -6
  216. package/lib/components/tableview/models/index.d.ts +1 -1
  217. package/lib/components/tableview/models/table.event.d.ts +17 -17
  218. package/lib/components/tableview/route/tableview-route.abstract.component.d.ts +20 -20
  219. package/lib/components/tableview/route/tableview-route.component.d.ts +23 -21
  220. package/lib/components/tableview/table/column-filter/column-filter.component.d.ts +32 -32
  221. package/lib/components/tableview/table/column-value/column-value.component.d.ts +29 -29
  222. package/lib/components/tableview/table/table.component.d.ts +108 -108
  223. package/lib/components/tableview/tableview.component.d.ts +41 -41
  224. package/lib/config/formly.config.d.ts +15 -15
  225. package/lib/config/index.d.ts +1 -1
  226. package/lib/config/models/index.d.ts +1 -1
  227. package/lib/config/models/mng-config.model.d.ts +36 -36
  228. package/lib/data-providers/base.data-provider.d.ts +14 -14
  229. package/lib/data-providers/editor.data-provider.d.ts +25 -25
  230. package/lib/data-providers/index.d.ts +5 -5
  231. package/lib/data-providers/lookup.data-provider.d.ts +14 -14
  232. package/lib/data-providers/table.data-provider.d.ts +14 -14
  233. package/lib/data-providers/tableview.data-provider.d.ts +15 -15
  234. package/lib/descriptors/action.descriptor.d.ts +234 -227
  235. package/lib/descriptors/column.descriptor.d.ts +82 -82
  236. package/lib/descriptors/editor.descriptor.d.ts +37 -37
  237. package/lib/descriptors/field-validation.descriptor.d.ts +18 -18
  238. package/lib/descriptors/field.descriptor.d.ts +294 -292
  239. package/lib/descriptors/filter.descriptor.d.ts +106 -106
  240. package/lib/descriptors/index.d.ts +9 -9
  241. package/lib/descriptors/interfaces/field-config.interface.d.ts +9 -9
  242. package/lib/descriptors/interfaces/index.d.ts +2 -2
  243. package/lib/descriptors/interfaces/lookup-descriptor.interface.d.ts +17 -17
  244. package/lib/descriptors/model.descriptor.d.ts +15 -15
  245. package/lib/descriptors/table.descriptor.d.ts +66 -66
  246. package/lib/descriptors/tableview.descriptor.d.ts +42 -42
  247. package/lib/descriptors/types/action.type.d.ts +45 -45
  248. package/lib/descriptors/types/column.type.d.ts +9 -9
  249. package/lib/descriptors/types/editor.type.d.ts +6 -6
  250. package/lib/descriptors/types/field.type.d.ts +44 -44
  251. package/lib/descriptors/types/filter.type.d.ts +27 -27
  252. package/lib/descriptors/types/index.d.ts +6 -6
  253. package/lib/descriptors/types/table.type.d.ts +13 -13
  254. package/lib/directives/component.directive.d.ts +16 -16
  255. package/lib/directives/index.d.ts +2 -2
  256. package/lib/directives/template.directive.d.ts +13 -13
  257. package/lib/mng-commons.module.d.ts +87 -87
  258. package/lib/models/column-value.model.d.ts +4 -4
  259. package/lib/models/enum.model.d.ts +6 -6
  260. package/lib/models/error.model.d.ts +14 -14
  261. package/lib/models/index.d.ts +7 -7
  262. package/lib/models/menu.model.d.ts +27 -25
  263. package/lib/models/user.model.d.ts +8 -8
  264. package/lib/models/version.model.d.ts +18 -18
  265. package/lib/models/view-container.model.d.ts +6 -6
  266. package/lib/pipes/boolean.pipe.d.ts +7 -7
  267. package/lib/pipes/enum.pipe.d.ts +8 -8
  268. package/lib/pipes/i18n-property.pipe.d.ts +8 -8
  269. package/lib/pipes/index.d.ts +5 -5
  270. package/lib/pipes/json-path.pipe.d.ts +13 -13
  271. package/lib/pipes/link-formatter.pipe.d.ts +11 -11
  272. package/lib/router/index.d.ts +2 -1
  273. package/lib/router/models/index.d.ts +1 -1
  274. package/lib/router/models/router.model.d.ts +27 -22
  275. package/lib/router/route-builder.d.ts +98 -86
  276. package/lib/router/tableview-route-builder.d.ts +34 -0
  277. package/lib/security/authorization.guard.d.ts +11 -0
  278. package/lib/security/authorization.service.d.ts +19 -0
  279. package/lib/security/authorization.util.d.ts +5 -0
  280. package/lib/security/index.d.ts +3 -0
  281. package/lib/security/model/authorization.type.d.ts +6 -0
  282. package/lib/security/model/index.d.ts +3 -0
  283. package/lib/security/model/permission-service.interface.d.ts +6 -0
  284. package/lib/security/model/permissions.model.d.ts +44 -0
  285. package/lib/services/action-executor.service.d.ts +149 -149
  286. package/lib/services/commons.service.d.ts +78 -73
  287. package/lib/services/configuration.service.d.ts +36 -36
  288. package/lib/services/error-mapper.service.d.ts +7 -7
  289. package/lib/services/index.d.ts +6 -6
  290. package/lib/services/internal/commons-init.provider.d.ts +3 -3
  291. package/lib/services/internal/commons-init.service.d.ts +16 -16
  292. package/lib/services/internal/index.d.ts +2 -2
  293. package/lib/services/navigation.service.d.ts +14 -14
  294. package/lib/services/providers/config-service.provider.d.ts +6 -6
  295. package/lib/services/providers/formly-config.provider.d.ts +4 -4
  296. package/lib/services/providers/index.d.ts +2 -2
  297. package/lib/services/tokens/browser-storage.token.d.ts +2 -2
  298. package/lib/services/tokens/commons-init.token.d.ts +3 -3
  299. package/lib/services/tokens/default-setting.token.d.ts +2 -2
  300. package/lib/services/tokens/index.d.ts +4 -4
  301. package/lib/services/tokens/module-config.token.d.ts +3 -3
  302. package/lib/services/version.service.d.ts +13 -13
  303. package/lib/services/view-container.component.service.d.ts +22 -22
  304. package/lib/types/index.d.ts +2 -2
  305. package/lib/types/type.decorator.d.ts +4 -4
  306. package/lib/types/type.model.d.ts +23 -23
  307. package/lib/utils/action-data-provider.util.d.ts +20 -20
  308. package/lib/utils/editor-formly.util.d.ts +11 -11
  309. package/lib/utils/enum.util.d.ts +50 -50
  310. package/lib/utils/i18n.util.d.ts +56 -56
  311. package/lib/utils/index.d.ts +7 -7
  312. package/lib/utils/model.util.d.ts +8 -8
  313. package/lib/utils/notification.util.d.ts +11 -11
  314. package/lib/utils/route.util.d.ts +4 -4
  315. package/lib/utils/styles.util.d.ts +14 -14
  316. package/lib/utils/type.util.d.ts +36 -36
  317. package/mediusinc-mng-commons-0.10.3-rc.tgz +0 -0
  318. package/mediusinc-mng-commons.d.ts +5 -5
  319. package/package.json +1 -1
  320. package/public-api.d.ts +32 -30
  321. package/version-info.json +6 -6
@@ -0,0 +1,160 @@
1
+ import { MngActionRouteComponent } from '../components/action';
2
+ import { MngTableviewRouteComponent } from '../components/tableview';
3
+ import { ActionEditorAddDescriptor, ActionEditorDetailsDescriptor, ActionEditorEditDescriptor } from '../descriptors';
4
+ import { Permissions } from '../security/model';
5
+ import { RouteBuilder } from './route-builder';
6
+ export class TableviewRouteBuilder {
7
+ constructor(path) {
8
+ this.path = path;
9
+ this.hasDetails = true;
10
+ this.detailsPath = ':itemId';
11
+ this.hasEdit = true;
12
+ this.editPath = ':itemId/edit';
13
+ this.hasAdd = true;
14
+ this.addPath = 'add';
15
+ }
16
+ static fromComponent(path, component) {
17
+ const inst = new TableviewRouteBuilder(path);
18
+ inst.component = component;
19
+ return inst;
20
+ }
21
+ static from(path, descriptor, dataProvider, actions) {
22
+ const inst = new TableviewRouteBuilder(path);
23
+ inst.descriptor = descriptor;
24
+ inst.dataProvider = dataProvider;
25
+ inst.actions = actions;
26
+ inst.hasDetails = false;
27
+ inst.hasAdd = false;
28
+ inst.hasEdit = false;
29
+ for (const action of inst.actions) {
30
+ if (action instanceof ActionEditorDetailsDescriptor) {
31
+ inst.hasDetails = true;
32
+ }
33
+ else if (action instanceof ActionEditorAddDescriptor) {
34
+ inst.hasAdd = true;
35
+ }
36
+ else if (action instanceof ActionEditorEditDescriptor) {
37
+ inst.hasEdit = true;
38
+ }
39
+ }
40
+ return inst;
41
+ }
42
+ withDetails(hasDetails = true, permissions, path) {
43
+ this.hasDetails = hasDetails;
44
+ if (permissions) {
45
+ this.withPermissions(undefined, undefined, undefined, undefined, permissions);
46
+ }
47
+ if (path) {
48
+ this.detailsPath = path;
49
+ }
50
+ return this;
51
+ }
52
+ withAdd(hasAdd = true, permissions, path) {
53
+ this.hasAdd = hasAdd;
54
+ if (permissions) {
55
+ this.withPermissions(undefined, permissions);
56
+ }
57
+ if (path) {
58
+ this.addPath = path;
59
+ }
60
+ return this;
61
+ }
62
+ withEdit(hasEdit = true, permissions, path) {
63
+ this.hasEdit = hasEdit;
64
+ if (permissions) {
65
+ this.withPermissions(undefined, undefined, permissions);
66
+ }
67
+ if (path) {
68
+ this.editPath = path;
69
+ }
70
+ return this;
71
+ }
72
+ withPermissions(read, add, edit, delet, details) {
73
+ if (!this.permissions) {
74
+ this.permissions = {};
75
+ }
76
+ if (read) {
77
+ this.permissions[Permissions.ActionTypes.READ] = read;
78
+ }
79
+ if (add) {
80
+ this.permissions[Permissions.ActionTypes.ADD] = add;
81
+ }
82
+ if (edit) {
83
+ this.permissions[Permissions.ActionTypes.EDIT] = edit;
84
+ }
85
+ if (delet) {
86
+ this.permissions[Permissions.ActionTypes.DELETE] = delet;
87
+ }
88
+ if (details) {
89
+ this.permissions[Permissions.ActionTypes.DETAILS] = details;
90
+ }
91
+ return this;
92
+ }
93
+ withPermissionsOther(key, permissions) {
94
+ if (!this.permissions) {
95
+ this.permissions = {};
96
+ }
97
+ this.permissions[key] = permissions;
98
+ return this;
99
+ }
100
+ withPermissionsObject(permissions) {
101
+ this.permissions = permissions;
102
+ return this;
103
+ }
104
+ build() {
105
+ return this.toRouteBuilder().buildRoute();
106
+ }
107
+ toRouteBuilder() {
108
+ const tableviewRouteBuilder = RouteBuilder.createFromRoute({
109
+ path: this.path,
110
+ component: this.component ? this.component : MngTableviewRouteComponent
111
+ });
112
+ const routeData = {};
113
+ if (!this.component) {
114
+ routeData.tableview = {
115
+ descriptor: this.descriptor,
116
+ dataProvider: this.dataProvider
117
+ };
118
+ if (this.actions) {
119
+ routeData.tableview.actions = this.actions;
120
+ }
121
+ }
122
+ if (this.permissions) {
123
+ routeData.tableviewPermissions = { ...this.permissions };
124
+ }
125
+ tableviewRouteBuilder.withData(routeData);
126
+ if (this.permissions?.[Permissions.ActionTypes.READ]) {
127
+ tableviewRouteBuilder.withPermissions(this.permissions[Permissions.ActionTypes.READ]);
128
+ }
129
+ // list route
130
+ const rootChildRouteBuilder = RouteBuilder.create('', MngActionRouteComponent);
131
+ if (this.permissions?.[Permissions.ActionTypes.READ]) {
132
+ rootChildRouteBuilder.withPermissions(this.permissions[Permissions.ActionTypes.READ]);
133
+ }
134
+ tableviewRouteBuilder.addChildBuilder(rootChildRouteBuilder);
135
+ // add route
136
+ if (this.hasAdd) {
137
+ const routeBuilder = RouteBuilder.create(this.addPath, MngActionRouteComponent);
138
+ if (this.permissions?.[Permissions.ActionTypes.ADD]) {
139
+ routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.ADD]);
140
+ }
141
+ tableviewRouteBuilder.addChildBuilder(routeBuilder);
142
+ }
143
+ if (this.hasDetails) {
144
+ const routeBuilder = RouteBuilder.create(this.detailsPath, MngActionRouteComponent);
145
+ if (this.permissions?.[Permissions.ActionTypes.DETAILS]) {
146
+ routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.DETAILS]);
147
+ }
148
+ tableviewRouteBuilder.addChildBuilder(routeBuilder);
149
+ }
150
+ if (this.hasEdit) {
151
+ const routeBuilder = RouteBuilder.create(this.editPath, MngActionRouteComponent);
152
+ if (this.permissions?.[Permissions.ActionTypes.EDIT]) {
153
+ routeBuilder.withPermissions(this.permissions[Permissions.ActionTypes.EDIT]);
154
+ }
155
+ tableviewRouteBuilder.addChildBuilder(routeBuilder);
156
+ }
157
+ return tableviewRouteBuilder;
158
+ }
159
+ }
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGV2aWV3LXJvdXRlLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3JvdXRlci90YWJsZXZpZXctcm91dGUtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RCxPQUFPLEVBQThCLDBCQUEwQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFFaEcsT0FBTyxFQUFtQix5QkFBeUIsRUFBRSw2QkFBNkIsRUFBRSwwQkFBMEIsRUFBc0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzSixPQUFPLEVBQWUsV0FBVyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFFNUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE1BQU0sT0FBTyxxQkFBcUI7SUFrQjlCLFlBQTRCLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBWGhDLGVBQVUsR0FBRyxJQUFJLENBQUM7UUFDbEIsZ0JBQVcsR0FBRyxTQUFTLENBQUM7UUFDeEIsWUFBTyxHQUFHLElBQUksQ0FBQztRQUNmLGFBQVEsR0FBRyxjQUFjLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQUNkLFlBQU8sR0FBRyxLQUFLLENBQUM7SUFNbUIsQ0FBQztJQUVyQyxNQUFNLENBQUMsYUFBYSxDQUFrRCxJQUFZLEVBQUUsU0FBa0I7UUFDekcsTUFBTSxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsQ0FBSSxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FDZCxJQUFZLEVBQ1osVUFBb0MsRUFDcEMsWUFBOEMsRUFDOUMsT0FBcUM7UUFFckMsTUFBTSxJQUFJLEdBQUcsSUFBSSxxQkFBcUIsQ0FB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WSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMvRTtZQUNELHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNqQixNQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNwRixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNyRCxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQ25GO1lBQ0QscUJBQXFCLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLHVCQUF1QixDQUFDLENBQUM7WUFDakYsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDbEQsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUNoRjtZQUNELHFCQUFxQixDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUN2RDtRQUVELE9BQU8scUJBQXFCLENBQUM7SUFDakMsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7TW5nQWN0aW9uUm91dGVDb21wb25lbnR9IGZyb20gJy4uL2NvbXBvbmVudHMvYWN0aW9uJztcbmltcG9ydCB7QU1uZ1RhYmxldmlld1JvdXRlQ29tcG9uZW50LCBNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudH0gZnJvbSAnLi4vY29tcG9uZW50cy90YWJsZXZpZXcnO1xuaW1wb3J0IHtJVGFibGV2aWV3RGF0YVByb3ZpZGVyfSBmcm9tICcuLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvciwgVGFibGV2aWV3RGVzY3JpcHRvcn0gZnJvbSAnLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnMsIFBlcm1pc3Npb25zfSBmcm9tICcuLi9zZWN1cml0eS9tb2RlbCc7XG5pbXBvcnQge01uZ1JvdXRlckRhdGF9IGZyb20gJy4vbW9kZWxzJztcbmltcG9ydCB7Um91dGVCdWlsZGVyfSBmcm9tICcuL3JvdXRlLWJ1aWxkZXInO1xuXG5leHBvcnQgY2xhc3MgVGFibGV2aWV3Um91dGVCdWlsZGVyPEMgZXh0ZW5kcyBBTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnQ8YW55LCBhbnk+PiB7XG4gICAgcHJpdmF0ZSBkZXNjcmlwdG9yPzogVGFibGV2aWV3RGVzY3JpcHRvcjxhbnk+O1xuICAgIHByaXZhdGUgZGF0YVByb3ZpZGVyPzogSVRhYmxldmlld0RhdGFQcm92aWRlcjxhbnksIGFueT47XG4gICAgcHJpdmF0ZSBhY3Rpb25zPzogQXJyYXk8QWN0aW9uRGVzY3JpcHRvcjxhbnk+PjtcblxuICAgIHByaXZhdGUgY29tcG9uZW50PzogVHlwZTxDPjtcblxuICAgIHByaXZhdGUgaGFzRGV0YWlscyA9IHRydWU7XG4gICAgcHJpdmF0ZSBkZXRhaWxzUGF0aCA9ICc6aXRlbUlkJztcbiAgICBwcml2YXRlIGhhc0VkaXQgPSB0cnVlO1xuICAgIHByaXZhdGUgZWRpdFBhdGggPSAnOml0ZW1JZC9lZGl0JztcbiAgICBwcml2YXRlIGhhc0FkZCA9IHRydWU7XG4gICAgcHJpdmF0ZSBhZGRQYXRoID0gJ2FkZCc7XG5cbiAgICBwcml2YXRlIHBlcm1pc3Npb25zPzoge1xuICAgICAgICBba2V5OiBzdHJpbmddOiBBUGVybWlzc2lvbnM7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSBwYXRoOiBzdHJpbmcpIHt9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb21Db21wb25lbnQ8QyBleHRlbmRzIEFNbmdUYWJsZXZpZXdSb3V0ZUNvbXBvbmVudDxhbnksIGFueT4+KHBhdGg6IHN0cmluZywgY29tcG9uZW50OiBUeXBlPEM+KTogVGFibGV2aWV3Um91dGVCdWlsZGVyPEM+IHtcbiAgICAgICAgY29uc3QgaW5zdCA9IG5ldyBUYWJsZXZpZXdSb3V0ZUJ1aWxkZXI8Qz4ocGF0aCk7XG4gICAgICAgIGluc3QuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICByZXR1cm4gaW5zdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGZyb20oXG4gICAgICAgIHBhdGg6IHN0cmluZyxcbiAgICAgICAgZGVzY3JpcHRvcjogVGFibGV2aWV3RGVzY3JpcHRvcjxhbnk+LFxuICAgICAgICBkYXRhUHJvdmlkZXI6IElUYWJsZXZpZXdEYXRhUHJvdmlkZXI8YW55LCBhbnk+LFxuICAgICAgICBhY3Rpb25zOiBBcnJheTxBY3Rpb25EZXNjcmlwdG9yPGFueT4+XG4gICAgKTogVGFibGV2aWV3Um91dGVCdWlsZGVyPG5ldmVyPiB7XG4gICAgICAgIGNvbnN0IGluc3QgPSBuZXcgVGFibGV2aWV3Um91dGVCdWlsZGVyPG5ldmVyPihwYXRoKTtcbiAgICAgICAgaW5zdC5kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgaW5zdC5kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIGluc3QuYWN0aW9ucyA9IGFjdGlvbnM7XG5cbiAgICAgICAgaW5zdC5oYXNEZXRhaWxzID0gZmFsc2U7XG4gICAgICAgIGluc3QuaGFzQWRkID0gZmFsc2U7XG4gICAgICAgIGluc3QuaGFzRWRpdCA9IGZhbHNlO1xuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiBpbnN0LmFjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIGluc3QuaGFzRGV0YWlscyA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICBpbnN0Lmhhc0FkZCA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiBpbnN0YW5jZW9mIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgaW5zdC5oYXNFZGl0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpbnN0O1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGV0YWlscyhoYXNEZXRhaWxzID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNEZXRhaWxzID0gaGFzRGV0YWlscztcbiAgICAgICAgaWYgKHBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLndpdGhQZXJtaXNzaW9ucyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHBlcm1pc3Npb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aCkge1xuICAgICAgICAgICAgdGhpcy5kZXRhaWxzUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZGQoaGFzQWRkID0gdHJ1ZSwgcGVybWlzc2lvbnM/OiBBUGVybWlzc2lvbnMsIHBhdGg/OiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5oYXNBZGQgPSBoYXNBZGQ7XG4gICAgICAgIGlmIChwZXJtaXNzaW9ucykge1xuICAgICAgICAgICAgdGhpcy53aXRoUGVybWlzc2lvbnModW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRkUGF0aCA9IHBhdGg7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0KGhhc0VkaXQgPSB0cnVlLCBwZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucywgcGF0aD86IHN0cmluZyk6IHRoaXMge1xuICAgICAgICB0aGlzLmhhc0VkaXQgPSBoYXNFZGl0O1xuICAgICAgICBpZiAocGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMud2l0aFBlcm1pc3Npb25zKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBwZXJtaXNzaW9ucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZWRpdFBhdGggPSBwYXRoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocmVhZD86IEFQZXJtaXNzaW9ucywgYWRkPzogQVBlcm1pc3Npb25zLCBlZGl0PzogQVBlcm1pc3Npb25zLCBkZWxldD86IEFQZXJtaXNzaW9ucywgZGV0YWlscz86IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVhZCkge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1tQZXJtaXNzaW9ucy5BY3Rpb25UeXBlcy5SRUFEXSA9IHJlYWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkZCkge1xuICAgICAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1tQZXJtaXNzaW9ucy5BY3Rpb25UeXBlcy5BRERdID0gYWRkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlZGl0KSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLkVESVRdID0gZWRpdDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGVsZXQpIHtcbiAgICAgICAgICAgIHRoaXMucGVybWlzc2lvbnNbUGVybWlzc2lvbnMuQWN0aW9uVHlwZXMuREVMRVRFXSA9IGRlbGV0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLkRFVEFJTFNdID0gZGV0YWlscztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zT3RoZXIoa2V5OiBzdHJpbmcsIHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLnBlcm1pc3Npb25zKSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pc3Npb25zID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wZXJtaXNzaW9uc1trZXldID0gcGVybWlzc2lvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnNPYmplY3QocGVybWlzc2lvbnM6IHtba2V5OiBzdHJpbmddOiBBUGVybWlzc2lvbnN9KTogdGhpcyB7XG4gICAgICAgIHRoaXMucGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkKCk6IFJvdXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9Sb3V0ZUJ1aWxkZXIoKS5idWlsZFJvdXRlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvUm91dGVCdWlsZGVyKCk6IFJvdXRlQnVpbGRlciB7XG4gICAgICAgIGNvbnN0IHRhYmxldmlld1JvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGVGcm9tUm91dGUoe1xuICAgICAgICAgICAgcGF0aDogdGhpcy5wYXRoLFxuICAgICAgICAgICAgY29tcG9uZW50OiB0aGlzLmNvbXBvbmVudCA/IHRoaXMuY29tcG9uZW50IDogTW5nVGFibGV2aWV3Um91dGVDb21wb25lbnRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgcm91dGVEYXRhOiBNbmdSb3V0ZXJEYXRhID0ge307XG4gICAgICAgIGlmICghdGhpcy5jb21wb25lbnQpIHtcbiAgICAgICAgICAgIHJvdXRlRGF0YS50YWJsZXZpZXcgPSB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvcjogdGhpcy5kZXNjcmlwdG9yISxcbiAgICAgICAgICAgICAgICBkYXRhUHJvdmlkZXI6IHRoaXMuZGF0YVByb3ZpZGVyIVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbnMpIHtcbiAgICAgICAgICAgICAgICByb3V0ZURhdGEudGFibGV2aWV3LmFjdGlvbnMgPSB0aGlzLmFjdGlvbnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJvdXRlRGF0YS50YWJsZXZpZXdQZXJtaXNzaW9ucyA9IHsuLi50aGlzLnBlcm1pc3Npb25zfTtcbiAgICAgICAgfVxuICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIud2l0aERhdGEocm91dGVEYXRhKTtcbiAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltQZXJtaXNzaW9ucy5BY3Rpb25UeXBlcy5SRUFEXSkge1xuICAgICAgICAgICAgdGFibGV2aWV3Um91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnBlcm1pc3Npb25zW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLlJFQURdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGxpc3Qgcm91dGVcbiAgICAgICAgY29uc3Qgcm9vdENoaWxkUm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSgnJywgTW5nQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucz8uW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLlJFQURdKSB7XG4gICAgICAgICAgICByb290Q2hpbGRSb3V0ZUJ1aWxkZXIud2l0aFBlcm1pc3Npb25zKHRoaXMucGVybWlzc2lvbnNbUGVybWlzc2lvbnMuQWN0aW9uVHlwZXMuUkVBRF0pO1xuICAgICAgICB9XG4gICAgICAgIHRhYmxldmlld1JvdXRlQnVpbGRlci5hZGRDaGlsZEJ1aWxkZXIocm9vdENoaWxkUm91dGVCdWlsZGVyKTtcblxuICAgICAgICAvLyBhZGQgcm91dGVcbiAgICAgICAgaWYgKHRoaXMuaGFzQWRkKSB7XG4gICAgICAgICAgICBjb25zdCByb3V0ZUJ1aWxkZXIgPSBSb3V0ZUJ1aWxkZXIuY3JlYXRlKHRoaXMuYWRkUGF0aCwgTW5nQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltQZXJtaXNzaW9ucy5BY3Rpb25UeXBlcy5BRERdKSB7XG4gICAgICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnBlcm1pc3Npb25zW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLkFERF0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFibGV2aWV3Um91dGVCdWlsZGVyLmFkZENoaWxkQnVpbGRlcihyb3V0ZUJ1aWxkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmhhc0RldGFpbHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJvdXRlQnVpbGRlciA9IFJvdXRlQnVpbGRlci5jcmVhdGUodGhpcy5kZXRhaWxzUGF0aCwgTW5nQWN0aW9uUm91dGVDb21wb25lbnQpO1xuICAgICAgICAgICAgaWYgKHRoaXMucGVybWlzc2lvbnM/LltQZXJtaXNzaW9ucy5BY3Rpb25UeXBlcy5ERVRBSUxTXSkge1xuICAgICAgICAgICAgICAgIHJvdXRlQnVpbGRlci53aXRoUGVybWlzc2lvbnModGhpcy5wZXJtaXNzaW9uc1tQZXJtaXNzaW9ucy5BY3Rpb25UeXBlcy5ERVRBSUxTXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXIuYWRkQ2hpbGRCdWlsZGVyKHJvdXRlQnVpbGRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaGFzRWRpdCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVCdWlsZGVyID0gUm91dGVCdWlsZGVyLmNyZWF0ZSh0aGlzLmVkaXRQYXRoLCBNbmdBY3Rpb25Sb3V0ZUNvbXBvbmVudCk7XG4gICAgICAgICAgICBpZiAodGhpcy5wZXJtaXNzaW9ucz8uW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLkVESVRdKSB7XG4gICAgICAgICAgICAgICAgcm91dGVCdWlsZGVyLndpdGhQZXJtaXNzaW9ucyh0aGlzLnBlcm1pc3Npb25zW1Blcm1pc3Npb25zLkFjdGlvblR5cGVzLkVESVRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYmxldmlld1JvdXRlQnVpbGRlci5hZGRDaGlsZEJ1aWxkZXIocm91dGVCdWlsZGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0YWJsZXZpZXdSb3V0ZUJ1aWxkZXI7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import { first } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./authorization.service";
6
+ export class MngAuthorizationGuard {
7
+ constructor(authorization) {
8
+ this.authorization = authorization;
9
+ }
10
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
+ canActivate(route, state) {
12
+ const data = route.data;
13
+ if (data.permissions) {
14
+ return this.authorization.isPermitted(data.permissions).pipe(first());
15
+ }
16
+ else {
17
+ return of(true);
18
+ }
19
+ }
20
+ }
21
+ MngAuthorizationGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngAuthorizationGuard, deps: [{ token: i1.MngAuthorizationService }], target: i0.ɵɵFactoryTarget.Injectable });
22
+ MngAuthorizationGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngAuthorizationGuard });
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngAuthorizationGuard, decorators: [{
24
+ type: Injectable
25
+ }], ctorParameters: function () { return [{ type: i1.MngAuthorizationService }]; } });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc2VjdXJpdHkvYXV0aG9yaXphdGlvbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFNckMsTUFBTSxPQUFPLHFCQUFxQjtJQUM5QixZQUFvQixhQUFzQztRQUF0QyxrQkFBYSxHQUFiLGFBQWEsQ0FBeUI7SUFBRyxDQUFDO0lBRTlELDZEQUE2RDtJQUM3RCxXQUFXLENBQUMsS0FBNkIsRUFBRSxLQUEwQjtRQUNqRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBcUIsQ0FBQztRQUV6QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDbEIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDekU7YUFBTTtZQUNILE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25CO0lBQ0wsQ0FBQzs7a0hBWlEscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIENhbkFjdGl2YXRlLCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcbmltcG9ydCB7Zmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtNbmdSb3V0ZXJEYXRhfSBmcm9tICcuLi9yb3V0ZXIvbW9kZWxzJztcbmltcG9ydCB7TW5nQXV0aG9yaXphdGlvblNlcnZpY2V9IGZyb20gJy4vYXV0aG9yaXphdGlvbi5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0F1dGhvcml6YXRpb25HdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhvcml6YXRpb246IE1uZ0F1dGhvcml6YXRpb25TZXJ2aWNlKSB7fVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+IHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4gfCBib29sZWFuIHwgVXJsVHJlZSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByb3V0ZS5kYXRhIGFzIE1uZ1JvdXRlckRhdGE7XG5cbiAgICAgICAgaWYgKGRhdGEucGVybWlzc2lvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmF1dGhvcml6YXRpb24uaXNQZXJtaXR0ZWQoZGF0YS5wZXJtaXNzaW9ucykucGlwZShmaXJzdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBvZih0cnVlKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,47 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { combineLatest, of } from 'rxjs';
3
+ import { map } from 'rxjs/operators';
4
+ import { AuthorizationTypeEnum } from '../security/model';
5
+ import { AuthorizationUtil } from './authorization.util';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/router";
8
+ import * as i2 from "../services";
9
+ export class MngAuthorizationService {
10
+ constructor(injector, router, commons) {
11
+ this.injector = injector;
12
+ this.router = router;
13
+ this.commons = commons;
14
+ }
15
+ isPermitted(permissions, route, actionCtx) {
16
+ switch (permissions.authorizationType) {
17
+ case AuthorizationTypeEnum.All:
18
+ return this.isPermittedAll(permissions, route, actionCtx);
19
+ case AuthorizationTypeEnum.Any:
20
+ return this.isPermittedAny(permissions, route, actionCtx);
21
+ case AuthorizationTypeEnum.Service:
22
+ return this.isPermittedService(permissions, route, actionCtx);
23
+ default:
24
+ return this.commons.userRoles$.pipe(map(ur => AuthorizationUtil.isPermitted(permissions, ur)));
25
+ }
26
+ }
27
+ isPermittedAll(permission, route, actionCtx) {
28
+ return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.every(ip => ip === true)));
29
+ }
30
+ isPermittedAny(permission, route, actionCtx) {
31
+ return combineLatest(permission.permissions.map(p => this.isPermitted(p, route, actionCtx))).pipe(map(res => res.some(ip => ip === true)));
32
+ }
33
+ isPermittedService(permission, route, actionCtx) {
34
+ const serviceInstance = this.injector.get(permission.service);
35
+ if (!serviceInstance) {
36
+ console.warn(`Service instance could not be retreived for type ${permission.service}`);
37
+ return of(false);
38
+ }
39
+ return serviceInstance.isPermitted(route, this.router.routerState.snapshot, actionCtx);
40
+ }
41
+ }
42
+ MngAuthorizationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngAuthorizationService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.MngCommonsService }], target: i0.ɵɵFactoryTarget.Injectable });
43
+ MngAuthorizationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngAuthorizationService });
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: MngAuthorizationService, decorators: [{
45
+ type: Injectable
46
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.Router }, { type: i2.MngCommonsService }]; } });
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWN1cml0eS9hdXRob3JpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBVyxNQUFNLGVBQWUsQ0FBQztBQUduRCxPQUFPLEVBQWEsYUFBYSxFQUFFLEVBQUUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUMsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFHbkMsT0FBTyxFQUFlLHFCQUFxQixFQUFjLE1BQU0sbUJBQW1CLENBQUM7QUFFbkYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7Ozs7QUFHdkQsTUFBTSxPQUFPLHVCQUF1QjtJQUNoQyxZQUFvQixRQUFrQixFQUFVLE1BQWMsRUFBVSxPQUEwQjtRQUE5RSxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQW1CO0lBQUcsQ0FBQztJQUUvRixXQUFXLENBQUMsV0FBeUIsRUFBRSxLQUE4QixFQUFFLFNBQXFEO1FBQy9ILFFBQVEsV0FBVyxDQUFDLGlCQUFpQixFQUFFO1lBQ25DLEtBQUsscUJBQXFCLENBQUMsR0FBRztnQkFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQThCLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLEtBQUsscUJBQXFCLENBQUMsR0FBRztnQkFDMUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLFdBQThCLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2pGLEtBQUsscUJBQXFCLENBQUMsT0FBTztnQkFDOUIsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBa0MsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDekY7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEc7SUFDTCxDQUFDO0lBRU8sY0FBYyxDQUFDLFVBQTJCLEVBQUUsS0FBOEIsRUFBRSxTQUFxRDtRQUNySSxPQUFPLGFBQWEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hKLENBQUM7SUFFTyxjQUFjLENBQUMsVUFBMkIsRUFBRSxLQUE4QixFQUFFLFNBQXFEO1FBQ3JJLE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0ksQ0FBQztJQUVPLGtCQUFrQixDQUFDLFVBQStCLEVBQUUsS0FBOEIsRUFBRSxTQUFxRDtRQUM3SSxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLGVBQWUsRUFBRTtZQUNsQixPQUFPLENBQUMsSUFBSSxDQUFDLG9EQUFvRCxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUN2RixPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQjtRQUNELE9BQU8sZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7O29IQS9CUSx1QkFBdUI7d0hBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0FjdGl2YXRlZFJvdXRlU25hcHNob3QsIFJvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHtPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBvZn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge21hcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0FjdGlvbkNvbnRleHRWYWxpZGF0aW9ufSBmcm9tICcuLi9jb21wb25lbnRzL2FjdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHtBUGVybWlzc2lvbnMsIEF1dGhvcml6YXRpb25UeXBlRW51bSwgUGVybWlzc2lvbnN9IGZyb20gJy4uL3NlY3VyaXR5L21vZGVsJztcbmltcG9ydCB7TW5nQ29tbW9uc1NlcnZpY2V9IGZyb20gJy4uL3NlcnZpY2VzJztcbmltcG9ydCB7QXV0aG9yaXphdGlvblV0aWx9IGZyb20gJy4vYXV0aG9yaXphdGlvbi51dGlsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1uZ0F1dGhvcml6YXRpb25TZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBjb21tb25zOiBNbmdDb21tb25zU2VydmljZSkge31cblxuICAgIHB1YmxpYyBpc1Blcm1pdHRlZChwZXJtaXNzaW9uczogQVBlcm1pc3Npb25zLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGFjdGlvbkN0eD86IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24sIHVua25vd24+KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHN3aXRjaCAocGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgQXV0aG9yaXphdGlvblR5cGVFbnVtLkFsbDpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pc1Blcm1pdHRlZEFsbChwZXJtaXNzaW9ucyBhcyBQZXJtaXNzaW9ucy5BbGwsIHJvdXRlLCBhY3Rpb25DdHgpO1xuICAgICAgICAgICAgY2FzZSBBdXRob3JpemF0aW9uVHlwZUVudW0uQW55OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzUGVybWl0dGVkQW55KHBlcm1pc3Npb25zIGFzIFBlcm1pc3Npb25zLkFueSwgcm91dGUsIGFjdGlvbkN0eCk7XG4gICAgICAgICAgICBjYXNlIEF1dGhvcml6YXRpb25UeXBlRW51bS5TZXJ2aWNlOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmlzUGVybWl0dGVkU2VydmljZShwZXJtaXNzaW9ucyBhcyBQZXJtaXNzaW9ucy5TZXJ2aWNlLCByb3V0ZSwgYWN0aW9uQ3R4KTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tbW9ucy51c2VyUm9sZXMkLnBpcGUobWFwKHVyID0+IEF1dGhvcml6YXRpb25VdGlsLmlzUGVybWl0dGVkKHBlcm1pc3Npb25zLCB1cikpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaXNQZXJtaXR0ZWRBbGwocGVybWlzc2lvbjogUGVybWlzc2lvbnMuQWxsLCByb3V0ZT86IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGFjdGlvbkN0eD86IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24sIHVua25vd24+KSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KHBlcm1pc3Npb24ucGVybWlzc2lvbnMubWFwKHAgPT4gdGhpcy5pc1Blcm1pdHRlZChwLCByb3V0ZSwgYWN0aW9uQ3R4KSkpLnBpcGUobWFwKHJlcyA9PiByZXMuZXZlcnkoaXAgPT4gaXAgPT09IHRydWUpKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Blcm1pdHRlZEFueShwZXJtaXNzaW9uOiBQZXJtaXNzaW9ucy5BbnksIHJvdXRlPzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgYWN0aW9uQ3R4PzogQWN0aW9uQ29udGV4dFZhbGlkYXRpb248dW5rbm93biwgdW5rbm93bj4pIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGVybWlzc2lvbi5wZXJtaXNzaW9ucy5tYXAocCA9PiB0aGlzLmlzUGVybWl0dGVkKHAsIHJvdXRlLCBhY3Rpb25DdHgpKSkucGlwZShtYXAocmVzID0+IHJlcy5zb21lKGlwID0+IGlwID09PSB0cnVlKSkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNQZXJtaXR0ZWRTZXJ2aWNlKHBlcm1pc3Npb246IFBlcm1pc3Npb25zLlNlcnZpY2UsIHJvdXRlPzogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgYWN0aW9uQ3R4PzogQWN0aW9uQ29udGV4dFZhbGlkYXRpb248dW5rbm93biwgdW5rbm93bj4pIHtcbiAgICAgICAgY29uc3Qgc2VydmljZUluc3RhbmNlID0gdGhpcy5pbmplY3Rvci5nZXQocGVybWlzc2lvbi5zZXJ2aWNlKTtcbiAgICAgICAgaWYgKCFzZXJ2aWNlSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2VydmljZSBpbnN0YW5jZSBjb3VsZCBub3QgYmUgcmV0cmVpdmVkIGZvciB0eXBlICR7cGVybWlzc2lvbi5zZXJ2aWNlfWApO1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2VydmljZUluc3RhbmNlLmlzUGVybWl0dGVkKHJvdXRlLCB0aGlzLnJvdXRlci5yb3V0ZXJTdGF0ZS5zbmFwc2hvdCwgYWN0aW9uQ3R4KTtcbiAgICB9XG59XG4iXX0=
@@ -0,0 +1,16 @@
1
+ import { AuthorizationTypeEnum } from './model';
2
+ export class AuthorizationUtil {
3
+ static isPermitted(permissions, userRoles) {
4
+ switch (permissions.authorizationType) {
5
+ case AuthorizationTypeEnum.Rbac:
6
+ return AuthorizationUtil.isRbacPermitted(permissions, userRoles);
7
+ default:
8
+ console.error(`Permission type "${permissions.authorizationType}" not implemented`);
9
+ return false;
10
+ }
11
+ }
12
+ static isRbacPermitted(permissions, userRoles) {
13
+ return permissions.roles.some(prg => prg.every(pr => userRoles.indexOf(pr) > -1));
14
+ }
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWN1cml0eS9hdXRob3JpemF0aW9uLnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLHFCQUFxQixFQUFjLE1BQU0sU0FBUyxDQUFDO0FBRXpFLE1BQU0sT0FBTyxpQkFBaUI7SUFDbkIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUF5QixFQUFFLFNBQXdCO1FBQ3pFLFFBQVEsV0FBVyxDQUFDLGlCQUFpQixFQUFFO1lBQ25DLEtBQUsscUJBQXFCLENBQUMsSUFBSTtnQkFDM0IsT0FBTyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsV0FBZ0MsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUMxRjtnQkFDSSxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixXQUFXLENBQUMsaUJBQWlCLG1CQUFtQixDQUFDLENBQUM7Z0JBQ3BGLE9BQU8sS0FBSyxDQUFDO1NBQ3BCO0lBQ0wsQ0FBQztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsV0FBOEIsRUFBRSxTQUF3QjtRQUNsRixPQUFPLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QVBlcm1pc3Npb25zLCBBdXRob3JpemF0aW9uVHlwZUVudW0sIFBlcm1pc3Npb25zfSBmcm9tICcuL21vZGVsJztcblxuZXhwb3J0IGNsYXNzIEF1dGhvcml6YXRpb25VdGlsIHtcbiAgICBwdWJsaWMgc3RhdGljIGlzUGVybWl0dGVkKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMsIHVzZXJSb2xlczogQXJyYXk8c3RyaW5nPik6IGJvb2xlYW4ge1xuICAgICAgICBzd2l0Y2ggKHBlcm1pc3Npb25zLmF1dGhvcml6YXRpb25UeXBlKSB7XG4gICAgICAgICAgICBjYXNlIEF1dGhvcml6YXRpb25UeXBlRW51bS5SYmFjOlxuICAgICAgICAgICAgICAgIHJldHVybiBBdXRob3JpemF0aW9uVXRpbC5pc1JiYWNQZXJtaXR0ZWQocGVybWlzc2lvbnMgYXMgUGVybWlzc2lvbnMuUm9sZXMsIHVzZXJSb2xlcyk7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFBlcm1pc3Npb24gdHlwZSBcIiR7cGVybWlzc2lvbnMuYXV0aG9yaXphdGlvblR5cGV9XCIgbm90IGltcGxlbWVudGVkYCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBpc1JiYWNQZXJtaXR0ZWQocGVybWlzc2lvbnM6IFBlcm1pc3Npb25zLlJvbGVzLCB1c2VyUm9sZXM6IEFycmF5PHN0cmluZz4pOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zLnJvbGVzLnNvbWUocHJnID0+IHByZy5ldmVyeShwciA9PiB1c2VyUm9sZXMuaW5kZXhPZihwcikgPiAtMSkpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './authorization.guard';
2
+ export * from './authorization.service';
3
+ export * from './authorization.util';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlY3VyaXR5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRob3JpemF0aW9uLmd1YXJkJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aG9yaXphdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vYXV0aG9yaXphdGlvbi51dGlsJztcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ export var AuthorizationTypeEnum;
2
+ (function (AuthorizationTypeEnum) {
3
+ AuthorizationTypeEnum["All"] = "ALL";
4
+ AuthorizationTypeEnum["Any"] = "ANY";
5
+ AuthorizationTypeEnum["Rbac"] = "ROLE_BASED_ACCESS_CONTROL";
6
+ AuthorizationTypeEnum["Service"] = "SERVICE";
7
+ })(AuthorizationTypeEnum || (AuthorizationTypeEnum = {}));
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aG9yaXphdGlvbi50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZWN1cml0eS9tb2RlbC9hdXRob3JpemF0aW9uLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVkscUJBS1g7QUFMRCxXQUFZLHFCQUFxQjtJQUM3QixvQ0FBVyxDQUFBO0lBQ1gsb0NBQVcsQ0FBQTtJQUNYLDJEQUFrQyxDQUFBO0lBQ2xDLDRDQUFtQixDQUFBO0FBQ3ZCLENBQUMsRUFMVyxxQkFBcUIsS0FBckIscUJBQXFCLFFBS2hDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gQXV0aG9yaXphdGlvblR5cGVFbnVtIHtcbiAgICBBbGwgPSAnQUxMJyxcbiAgICBBbnkgPSAnQU5ZJyxcbiAgICBSYmFjID0gJ1JPTEVfQkFTRURfQUNDRVNTX0NPTlRST0wnLFxuICAgIFNlcnZpY2UgPSAnU0VSVklDRSdcbn1cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './authorization.type';
2
+ export * from './permission-service.interface';
3
+ export * from './permissions.model';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlY3VyaXR5L21vZGVsL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRob3JpemF0aW9uLnR5cGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9uLXNlcnZpY2UuaW50ZXJmYWNlJztcbmV4cG9ydCAqIGZyb20gJy4vcGVybWlzc2lvbnMubW9kZWwnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbi1zZXJ2aWNlLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VjdXJpdHkvbW9kZWwvcGVybWlzc2lvbi1zZXJ2aWNlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FjdGlvbkNvbnRleHRWYWxpZGF0aW9ufSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2FjdGlvbi9tb2RlbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQZXJtaXNzaW9uU2VydmljZSB7XG4gICAgaXNQZXJtaXR0ZWQocm91dGU/OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCByb3V0ZXJTdGF0ZT86IFJvdXRlclN0YXRlU25hcHNob3QsIGFjdGlvbkN0eD86IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPHVua25vd24sIHVua25vd24+KTogT2JzZXJ2YWJsZTxib29sZWFuPjtcbn1cbiJdfQ==
@@ -0,0 +1,95 @@
1
+ import { AuthorizationTypeEnum } from './authorization.type';
2
+ export class APermissions {
3
+ constructor(type) {
4
+ this._authorizationType = type;
5
+ }
6
+ get authorizationType() {
7
+ return this._authorizationType;
8
+ }
9
+ }
10
+ export var Permissions;
11
+ (function (Permissions) {
12
+ class All extends APermissions {
13
+ constructor() {
14
+ super(AuthorizationTypeEnum.All);
15
+ this._permissions = [];
16
+ }
17
+ static of(...permissions) {
18
+ const inst = new All();
19
+ inst.and(...permissions);
20
+ return inst;
21
+ }
22
+ get permissions() {
23
+ return this._permissions;
24
+ }
25
+ and(...permissions) {
26
+ this._permissions.push(...permissions);
27
+ return this;
28
+ }
29
+ }
30
+ Permissions.All = All;
31
+ class Any extends APermissions {
32
+ constructor() {
33
+ super(AuthorizationTypeEnum.Any);
34
+ this._permissions = [];
35
+ }
36
+ static of(...permissions) {
37
+ const inst = new Any();
38
+ inst.or(...permissions);
39
+ return inst;
40
+ }
41
+ get permissions() {
42
+ return this._permissions;
43
+ }
44
+ or(...permissions) {
45
+ this._permissions.push(...permissions);
46
+ return this;
47
+ }
48
+ }
49
+ Permissions.Any = Any;
50
+ class Roles extends APermissions {
51
+ constructor() {
52
+ super(AuthorizationTypeEnum.Rbac);
53
+ this._roles = [];
54
+ }
55
+ static of(...roles) {
56
+ const inst = new Roles();
57
+ inst.or(...roles);
58
+ return inst;
59
+ }
60
+ get roles() {
61
+ return this._roles;
62
+ }
63
+ and(...roles) {
64
+ if (this._roles.length === 0) {
65
+ this._roles.push([]);
66
+ }
67
+ this._roles[this._roles.length - 1].push(...roles);
68
+ return this;
69
+ }
70
+ or(...roles) {
71
+ this._roles.push(...roles.map(s => [s]));
72
+ return this;
73
+ }
74
+ }
75
+ Permissions.Roles = Roles;
76
+ class Service extends APermissions {
77
+ constructor(service) {
78
+ super(AuthorizationTypeEnum.Service);
79
+ this.service = service;
80
+ }
81
+ static of(service) {
82
+ return new Service(service);
83
+ }
84
+ }
85
+ Permissions.Service = Service;
86
+ class ActionTypes {
87
+ }
88
+ ActionTypes.READ = 'read';
89
+ ActionTypes.ADD = 'add';
90
+ ActionTypes.EDIT = 'edit';
91
+ ActionTypes.DELETE = 'delete';
92
+ ActionTypes.DETAILS = 'details';
93
+ Permissions.ActionTypes = ActionTypes;
94
+ })(Permissions || (Permissions = {}));
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlY3VyaXR5L21vZGVsL3Blcm1pc3Npb25zLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRzNELE1BQU0sT0FBZ0IsWUFBWTtJQUc5QixZQUFZLElBQTJCO1FBQ25DLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDbkMsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ25DLENBQUM7Q0FDSjtBQUVELE1BQU0sS0FBVyxXQUFXLENBK0YzQjtBQS9GRCxXQUFpQixXQUFXO0lBQ3hCLE1BQWEsR0FBSSxTQUFRLFlBQVk7UUFHakM7WUFDSSxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFIN0IsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBSS9DLENBQUM7UUFFTSxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBZ0M7WUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDekIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQVcsV0FBVztZQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0IsQ0FBQztRQUVNLEdBQUcsQ0FBQyxHQUFHLFdBQWdDO1lBQzFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUNKO0lBckJZLGVBQUcsTUFxQmYsQ0FBQTtJQUVELE1BQWEsR0FBSSxTQUFRLFlBQVk7UUFHakM7WUFDSSxLQUFLLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7WUFIN0IsaUJBQVksR0FBd0IsRUFBRSxDQUFDO1FBSS9DLENBQUM7UUFFTSxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBZ0M7WUFDaEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDeEIsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELElBQVcsV0FBVztZQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0IsQ0FBQztRQUVNLEVBQUUsQ0FBQyxHQUFHLFdBQWdDO1lBQ3pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLENBQUM7WUFDdkMsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUNKO0lBckJZLGVBQUcsTUFxQmYsQ0FBQTtJQUVELE1BQWEsS0FBTSxTQUFRLFlBQVk7UUFHbkM7WUFDSSxLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFIOUIsV0FBTSxHQUF5QixFQUFFLENBQUM7UUFJMUMsQ0FBQztRQUVNLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFvQjtZQUNwQyxNQUFNLElBQUksR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztZQUNsQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsSUFBVyxLQUFLO1lBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLENBQUM7UUFFTSxHQUFHLENBQUMsR0FBRyxLQUFvQjtZQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEI7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFTSxFQUFFLENBQUMsR0FBRyxLQUFvQjtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO0tBQ0o7SUE3QlksaUJBQUssUUE2QmpCLENBQUE7SUFFRCxNQUFhLE9BQVEsU0FBUSxZQUFZO1FBQ3JDLFlBQW9DLE9BQWlDO1lBQ2pFLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQURMLFlBQU8sR0FBUCxPQUFPLENBQTBCO1FBRXJFLENBQUM7UUFFTSxNQUFNLENBQUMsRUFBRSxDQUFDLE9BQWlDO1lBQzlDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEMsQ0FBQztLQUNKO0lBUlksbUJBQU8sVUFRbkIsQ0FBQTtJQUVELE1BQWEsV0FBVzs7SUFDRyxnQkFBSSxHQUFHLE1BQU0sQ0FBQztJQUNkLGVBQUcsR0FBRyxLQUFLLENBQUM7SUFDWixnQkFBSSxHQUFHLE1BQU0sQ0FBQztJQUNkLGtCQUFNLEdBQUcsUUFBUSxDQUFDO0lBQ2xCLG1CQUFPLEdBQUcsU0FBUyxDQUFDO0lBTGxDLHVCQUFXLGNBTXZCLENBQUE7QUFDTCxDQUFDLEVBL0ZnQixXQUFXLEtBQVgsV0FBVyxRQStGM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge0F1dGhvcml6YXRpb25UeXBlRW51bX0gZnJvbSAnLi9hdXRob3JpemF0aW9uLnR5cGUnO1xuaW1wb3J0IHtJUGVybWlzc2lvblNlcnZpY2V9IGZyb20gJy4vcGVybWlzc2lvbi1zZXJ2aWNlLmludGVyZmFjZSc7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBUGVybWlzc2lvbnMge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhvcml6YXRpb25UeXBlOiBBdXRob3JpemF0aW9uVHlwZUVudW07XG5cbiAgICBjb25zdHJ1Y3Rvcih0eXBlOiBBdXRob3JpemF0aW9uVHlwZUVudW0pIHtcbiAgICAgICAgdGhpcy5fYXV0aG9yaXphdGlvblR5cGUgPSB0eXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYXV0aG9yaXphdGlvblR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRob3JpemF0aW9uVHlwZTtcbiAgICB9XG59XG5cbmV4cG9ydCBuYW1lc3BhY2UgUGVybWlzc2lvbnMge1xuICAgIGV4cG9ydCBjbGFzcyBBbGwgZXh0ZW5kcyBBUGVybWlzc2lvbnMge1xuICAgICAgICBwcml2YXRlIF9wZXJtaXNzaW9uczogQXJyYXk8QVBlcm1pc3Npb25zPiA9IFtdO1xuXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBzdXBlcihBdXRob3JpemF0aW9uVHlwZUVudW0uQWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBzdGF0aWMgb2YoLi4ucGVybWlzc2lvbnM6IEFycmF5PEFQZXJtaXNzaW9ucz4pOiBBbGwge1xuICAgICAgICAgICAgY29uc3QgaW5zdCA9IG5ldyBBbGwoKTtcbiAgICAgICAgICAgIGluc3QuYW5kKC4uLnBlcm1pc3Npb25zKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0O1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBhbmQoLi4ucGVybWlzc2lvbnM6IEFycmF5PEFQZXJtaXNzaW9ucz4pOiB0aGlzIHtcbiAgICAgICAgICAgIHRoaXMuX3Blcm1pc3Npb25zLnB1c2goLi4ucGVybWlzc2lvbnMpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgY2xhc3MgQW55IGV4dGVuZHMgQVBlcm1pc3Npb25zIHtcbiAgICAgICAgcHJpdmF0ZSBfcGVybWlzc2lvbnM6IEFycmF5PEFQZXJtaXNzaW9ucz4gPSBbXTtcblxuICAgICAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAgICAgc3VwZXIoQXV0aG9yaXphdGlvblR5cGVFbnVtLkFueSk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIG9mKC4uLnBlcm1pc3Npb25zOiBBcnJheTxBUGVybWlzc2lvbnM+KTogQW55IHtcbiAgICAgICAgICAgIGNvbnN0IGluc3QgPSBuZXcgQW55KCk7XG4gICAgICAgICAgICBpbnN0Lm9yKC4uLnBlcm1pc3Npb25zKTtcbiAgICAgICAgICAgIHJldHVybiBpbnN0O1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9ucztcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBvciguLi5wZXJtaXNzaW9uczogQXJyYXk8QVBlcm1pc3Npb25zPik6IHRoaXMge1xuICAgICAgICAgICAgdGhpcy5fcGVybWlzc2lvbnMucHVzaCguLi5wZXJtaXNzaW9ucyk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBSb2xlcyBleHRlbmRzIEFQZXJtaXNzaW9ucyB7XG4gICAgICAgIHByaXZhdGUgX3JvbGVzOiBBcnJheTxBcnJheTxzdHJpbmc+PiA9IFtdO1xuXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG4gICAgICAgICAgICBzdXBlcihBdXRob3JpemF0aW9uVHlwZUVudW0uUmJhYyk7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgc3RhdGljIG9mKC4uLnJvbGVzOiBBcnJheTxzdHJpbmc+KTogUm9sZXMge1xuICAgICAgICAgICAgY29uc3QgaW5zdCA9IG5ldyBSb2xlcygpO1xuICAgICAgICAgICAgaW5zdC5vciguLi5yb2xlcyk7XG4gICAgICAgICAgICByZXR1cm4gaW5zdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHB1YmxpYyBnZXQgcm9sZXMoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fcm9sZXM7XG4gICAgICAgIH1cblxuICAgICAgICBwdWJsaWMgYW5kKC4uLnJvbGVzOiBBcnJheTxzdHJpbmc+KTogdGhpcyB7XG4gICAgICAgICAgICBpZiAodGhpcy5fcm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcm9sZXMucHVzaChbXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9yb2xlc1t0aGlzLl9yb2xlcy5sZW5ndGggLSAxXS5wdXNoKC4uLnJvbGVzKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIG9yKC4uLnJvbGVzOiBBcnJheTxzdHJpbmc+KTogdGhpcyB7XG4gICAgICAgICAgICB0aGlzLl9yb2xlcy5wdXNoKC4uLnJvbGVzLm1hcChzID0+IFtzXSkpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHBvcnQgY2xhc3MgU2VydmljZSBleHRlbmRzIEFQZXJtaXNzaW9ucyB7XG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHNlcnZpY2U6IFR5cGU8SVBlcm1pc3Npb25TZXJ2aWNlPikge1xuICAgICAgICAgICAgc3VwZXIoQXV0aG9yaXphdGlvblR5cGVFbnVtLlNlcnZpY2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgcHVibGljIHN0YXRpYyBvZihzZXJ2aWNlOiBUeXBlPElQZXJtaXNzaW9uU2VydmljZT4pOiBTZXJ2aWNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmljZShzZXJ2aWNlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGV4cG9ydCBjbGFzcyBBY3Rpb25UeXBlcyB7XG4gICAgICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVBRCA9ICdyZWFkJztcbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBREQgPSAnYWRkJztcbiAgICAgICAgcHVibGljIHN0YXRpYyByZWFkb25seSBFRElUID0gJ2VkaXQnO1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFTEVURSA9ICdkZWxldGUnO1xuICAgICAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFVEFJTFMgPSAnZGV0YWlscyc7XG4gICAgfVxufVxuIl19