@lenne.tech/ng-base 12.1.0 → 13.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/base-components/base-components.module.d.ts +12 -0
  2. package/base-components/components/checkbox/checkbox.component.d.ts +11 -0
  3. package/base-components/components/input/input.component.d.ts +14 -0
  4. package/base-components/components/select/select.component.d.ts +19 -0
  5. package/base-components/components/textarea/textarea.component.d.ts +13 -0
  6. package/base-components/lenne.tech-ng-base-base-components.d.ts +5 -0
  7. package/base-components/package.json +10 -0
  8. package/base-components/public-api.d.ts +8 -0
  9. package/base-prototype/base-prototype.module.d.ts +12 -0
  10. package/{src/lib/base/lenne.tech-ng-base-src-lib-base.d.ts → base-prototype/lenne.tech-ng-base-base-prototype.d.ts} +1 -0
  11. package/base-prototype/package.json +10 -0
  12. package/base-prototype/pages/login/login.component.d.ts +20 -0
  13. package/base-prototype/pages/register/register.component.d.ts +20 -0
  14. package/base-prototype/public-api.d.ts +6 -0
  15. package/esm2020/base-components/base-components.module.mjs +42 -0
  16. package/esm2020/base-components/components/checkbox/checkbox.component.mjs +28 -0
  17. package/esm2020/base-components/components/input/input.component.mjs +36 -0
  18. package/esm2020/base-components/components/select/select.component.mjs +37 -0
  19. package/esm2020/base-components/components/textarea/textarea.component.mjs +35 -0
  20. package/esm2020/base-components/lenne.tech-ng-base-base-components.mjs +5 -0
  21. package/esm2020/base-components/public-api.mjs +11 -0
  22. package/esm2020/base-prototype/base-prototype.module.mjs +36 -0
  23. package/esm2020/base-prototype/lenne.tech-ng-base-base-prototype.mjs +5 -0
  24. package/esm2020/base-prototype/pages/login/login.component.mjs +39 -0
  25. package/esm2020/base-prototype/pages/register/register.component.mjs +45 -0
  26. package/esm2020/base-prototype/public-api.mjs +9 -0
  27. package/esm2020/lenne.tech-ng-base.mjs +5 -0
  28. package/esm2020/public-api.mjs +66 -0
  29. package/esm2020/src/base.module.mjs +101 -0
  30. package/esm2020/src/classes/basic-user.class.mjs +51 -0
  31. package/esm2020/src/classes/graphql-enum.class.mjs +9 -0
  32. package/esm2020/src/classes/graphql-meta.class.mjs +171 -0
  33. package/esm2020/src/classes/graphql-type.class.mjs +13 -0
  34. package/esm2020/src/classes/helper.class.mjs +304 -0
  35. package/esm2020/src/classes/standard.class.mjs +40 -0
  36. package/esm2020/src/directives/context-menu.directive.mjs +109 -0
  37. package/esm2020/src/directives/lazy-load.directive.mjs +45 -0
  38. package/esm2020/src/directives/match-height.directive.mjs +79 -0
  39. package/esm2020/src/directives/resizable.directive.mjs +90 -0
  40. package/esm2020/src/enums/comparison-operator.enum.mjs +16 -0
  41. package/esm2020/src/enums/graphql-request-type.enum.mjs +10 -0
  42. package/esm2020/src/enums/logical-operator.enum.mjs +10 -0
  43. package/esm2020/src/enums/sort-order.enum.mjs +6 -0
  44. package/esm2020/src/factories/apollo-options.factory.mjs +61 -0
  45. package/esm2020/src/guards/auth.guard.mjs +61 -0
  46. package/esm2020/src/guards/can-deactivate.guard.mjs +16 -0
  47. package/esm2020/src/guards/logout.guard.mjs +32 -0
  48. package/esm2020/src/interfaces/base-module-config.interface.mjs +3 -0
  49. package/esm2020/src/interfaces/can-component-deactivate.interface.mjs +2 -0
  50. package/esm2020/src/interfaces/combined-filter-input.interface.mjs +2 -0
  51. package/esm2020/src/interfaces/field-object.interface.mjs +2 -0
  52. package/esm2020/src/interfaces/field.interface.mjs +2 -0
  53. package/esm2020/src/interfaces/filter-input.interface.mjs +2 -0
  54. package/esm2020/src/interfaces/find-args.interface.mjs +2 -0
  55. package/esm2020/src/interfaces/graphql-fields-object.interface.mjs +2 -0
  56. package/esm2020/src/interfaces/graphql-options.interface.mjs +2 -0
  57. package/esm2020/src/interfaces/graphql-plus-options.interfacen.mjs +2 -0
  58. package/esm2020/src/interfaces/graphql-type-collection.interface.mjs +2 -0
  59. package/esm2020/src/interfaces/single-filter-input.interface.mjs +2 -0
  60. package/esm2020/src/interfaces/sort-input.interface.mjs +2 -0
  61. package/esm2020/src/pipes/date-ago.pipe.mjs +65 -0
  62. package/esm2020/src/pipes/ellipses.pipe.mjs +22 -0
  63. package/esm2020/src/pipes/safe-html.pipe.mjs +21 -0
  64. package/esm2020/src/services/auth.service.mjs +71 -0
  65. package/esm2020/src/services/forms.service.mjs +26 -0
  66. package/esm2020/src/services/fullscreen.service.mjs +51 -0
  67. package/esm2020/src/services/graphql-meta.service.mjs +123 -0
  68. package/esm2020/src/services/graphql-plus.service.mjs +84 -0
  69. package/esm2020/src/services/graphql.service.mjs +441 -0
  70. package/esm2020/src/services/image.service.mjs +102 -0
  71. package/esm2020/src/services/loader.service.mjs +29 -0
  72. package/esm2020/src/services/scroll.service.mjs +179 -0
  73. package/esm2020/src/services/seo.service.mjs +97 -0
  74. package/esm2020/src/services/storage.service.mjs +132 -0
  75. package/esm2020/src/services/theme.service.mjs +43 -0
  76. package/esm2020/src/services/ws.service.mjs +17 -0
  77. package/esm2020/src/types/graphql-fields.type.mjs +2 -0
  78. package/esm2020/src/types/storage.type.mjs +2 -0
  79. package/esm2020/src/validators/must-match.validator.mjs +22 -0
  80. package/fesm2015/lenne.tech-ng-base-base-components.mjs +173 -0
  81. package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -0
  82. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +122 -0
  83. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
  84. package/fesm2015/{lenne.tech-ng-base.js → lenne.tech-ng-base.mjs} +385 -206
  85. package/fesm2015/lenne.tech-ng-base.mjs.map +1 -0
  86. package/fesm2020/lenne.tech-ng-base-base-components.mjs +171 -0
  87. package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -0
  88. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +120 -0
  89. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -0
  90. package/{fesm2015/lenne.tech-ng-base-src-lib-base.js → fesm2020/lenne.tech-ng-base.mjs} +585 -350
  91. package/fesm2020/lenne.tech-ng-base.mjs.map +1 -0
  92. package/lenne.tech-ng-base.d.ts +1 -0
  93. package/package.json +48 -19
  94. package/public-api.d.ts +54 -1
  95. package/src/base.module.d.ts +22 -0
  96. package/src/{lib/base/classes → classes}/basic-user.class.d.ts +0 -0
  97. package/src/{lib/base/classes → classes}/graphql-enum.class.d.ts +0 -0
  98. package/{lib/base → src}/classes/graphql-meta.class.d.ts +2 -4
  99. package/src/{lib/base/classes → classes}/graphql-type.class.d.ts +0 -0
  100. package/{lib/base → src}/classes/helper.class.d.ts +1 -0
  101. package/src/{lib/base/classes → classes}/standard.class.d.ts +0 -0
  102. package/src/{lib/base/directives → directives}/context-menu.directive.d.ts +3 -0
  103. package/{lib/base → src}/directives/lazy-load.directive.d.ts +3 -0
  104. package/src/{lib/base/directives → directives}/match-height.directive.d.ts +3 -0
  105. package/{lib/base → src}/directives/resizable.directive.d.ts +3 -0
  106. package/src/{lib/base/enums → enums}/comparison-operator.enum.d.ts +0 -0
  107. package/src/{lib/base/enums → enums}/graphql-request-type.enum.d.ts +0 -0
  108. package/src/{lib/base/enums → enums}/logical-operator.enum.d.ts +0 -0
  109. package/src/{lib/base/enums → enums}/sort-order.enum.d.ts +0 -0
  110. package/src/{lib/base/factories → factories}/apollo-options.factory.d.ts +0 -0
  111. package/src/{lib/base/guards → guards}/auth.guard.d.ts +3 -0
  112. package/src/{lib/base/guards → guards}/can-deactivate.guard.d.ts +3 -0
  113. package/{lib/base → src}/guards/logout.guard.d.ts +3 -0
  114. package/src/{lib/base/interfaces → interfaces}/base-module-config.interface.d.ts +0 -0
  115. package/src/{lib/base/interfaces → interfaces}/can-component-deactivate.interface.d.ts +0 -0
  116. package/src/{lib/base/interfaces → interfaces}/combined-filter-input.interface.d.ts +0 -0
  117. package/src/{lib/base/interfaces → interfaces}/field-object.interface.d.ts +0 -0
  118. package/src/{lib/base/interfaces → interfaces}/field.interface.d.ts +0 -0
  119. package/src/{lib/base/interfaces → interfaces}/filter-input.interface.d.ts +0 -0
  120. package/src/{lib/base/interfaces → interfaces}/find-args.interface.d.ts +0 -0
  121. package/src/interfaces/graphql-fields-object.interface.d.ts +6 -0
  122. package/src/{lib/base/interfaces → interfaces}/graphql-options.interface.d.ts +0 -0
  123. package/src/{lib/base/interfaces → interfaces}/graphql-plus-options.interfacen.d.ts +0 -0
  124. package/src/{lib/base/interfaces → interfaces}/graphql-type-collection.interface.d.ts +0 -0
  125. package/src/{lib/base/interfaces → interfaces}/single-filter-input.interface.d.ts +0 -0
  126. package/src/{lib/base/interfaces → interfaces}/sort-input.interface.d.ts +0 -0
  127. package/src/pipes/date-ago.pipe.d.ts +34 -0
  128. package/{lib/base → src}/pipes/ellipses.pipe.d.ts +3 -0
  129. package/{lib/base → src}/pipes/safe-html.pipe.d.ts +3 -0
  130. package/{lib/base → src}/services/auth.service.d.ts +3 -0
  131. package/src/services/forms.service.d.ts +8 -0
  132. package/src/{lib/base/services → services}/fullscreen.service.d.ts +3 -0
  133. package/src/{lib/base/services → services}/graphql-meta.service.d.ts +3 -0
  134. package/src/{lib/base/services → services}/graphql-plus.service.d.ts +3 -0
  135. package/src/{lib/base/services → services}/graphql.service.d.ts +3 -0
  136. package/src/{lib/base/services → services}/image.service.d.ts +3 -0
  137. package/{lib/base → src}/services/loader.service.d.ts +3 -0
  138. package/src/{lib/base/services → services}/scroll.service.d.ts +3 -0
  139. package/src/{lib/base/services → services}/seo.service.d.ts +3 -0
  140. package/{lib/base → src}/services/storage.service.d.ts +3 -0
  141. package/src/services/theme.service.d.ts +17 -0
  142. package/src/services/ws.service.d.ts +8 -0
  143. package/src/types/graphql-fields.type.d.ts +5 -0
  144. package/src/{lib/base/types → types}/storage.type.d.ts +0 -0
  145. package/{lib/base → src}/validators/must-match.validator.d.ts +2 -2
  146. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js +0 -3152
  147. package/bundles/lenne.tech-ng-base-src-lib-base.umd.js.map +0 -1
  148. package/bundles/lenne.tech-ng-base.umd.js +0 -3154
  149. package/bundles/lenne.tech-ng-base.umd.js.map +0 -1
  150. package/esm2015/lenne.tech-ng-base.js +0 -5
  151. package/esm2015/lib/base/base.module.js +0 -66
  152. package/esm2015/lib/base/classes/basic-user.class.js +0 -51
  153. package/esm2015/lib/base/classes/graphql-enum.class.js +0 -9
  154. package/esm2015/lib/base/classes/graphql-meta.class.js +0 -156
  155. package/esm2015/lib/base/classes/graphql-type.class.js +0 -13
  156. package/esm2015/lib/base/classes/helper.class.js +0 -290
  157. package/esm2015/lib/base/classes/standard.class.js +0 -40
  158. package/esm2015/lib/base/directives/context-menu.directive.js +0 -104
  159. package/esm2015/lib/base/directives/lazy-load.directive.js +0 -43
  160. package/esm2015/lib/base/directives/match-height.directive.js +0 -78
  161. package/esm2015/lib/base/directives/resizable.directive.js +0 -89
  162. package/esm2015/lib/base/enums/comparison-operator.enum.js +0 -16
  163. package/esm2015/lib/base/enums/graphql-request-type.enum.js +0 -10
  164. package/esm2015/lib/base/enums/logical-operator.enum.js +0 -10
  165. package/esm2015/lib/base/enums/sort-order.enum.js +0 -6
  166. package/esm2015/lib/base/factories/apollo-options.factory.js +0 -61
  167. package/esm2015/lib/base/guards/auth.guard.js +0 -61
  168. package/esm2015/lib/base/guards/can-deactivate.guard.js +0 -13
  169. package/esm2015/lib/base/guards/logout.guard.js +0 -33
  170. package/esm2015/lib/base/index.js +0 -2
  171. package/esm2015/lib/base/interfaces/base-module-config.interface.js +0 -3
  172. package/esm2015/lib/base/interfaces/can-component-deactivate.interface.js +0 -2
  173. package/esm2015/lib/base/interfaces/combined-filter-input.interface.js +0 -2
  174. package/esm2015/lib/base/interfaces/field-object.interface.js +0 -2
  175. package/esm2015/lib/base/interfaces/field.interface.js +0 -2
  176. package/esm2015/lib/base/interfaces/filter-input.interface.js +0 -2
  177. package/esm2015/lib/base/interfaces/find-args.interface.js +0 -2
  178. package/esm2015/lib/base/interfaces/graphql-options.interface.js +0 -2
  179. package/esm2015/lib/base/interfaces/graphql-plus-options.interfacen.js +0 -2
  180. package/esm2015/lib/base/interfaces/graphql-type-collection.interface.js +0 -2
  181. package/esm2015/lib/base/interfaces/single-filter-input.interface.js +0 -2
  182. package/esm2015/lib/base/interfaces/sort-input.interface.js +0 -2
  183. package/esm2015/lib/base/pipes/ellipses.pipe.js +0 -18
  184. package/esm2015/lib/base/pipes/safe-html.pipe.js +0 -20
  185. package/esm2015/lib/base/public-api.js +0 -61
  186. package/esm2015/lib/base/services/auth.service.js +0 -74
  187. package/esm2015/lib/base/services/fullscreen.service.js +0 -50
  188. package/esm2015/lib/base/services/graphql-meta.service.js +0 -116
  189. package/esm2015/lib/base/services/graphql-plus.service.js +0 -90
  190. package/esm2015/lib/base/services/graphql.service.js +0 -423
  191. package/esm2015/lib/base/services/image.service.js +0 -99
  192. package/esm2015/lib/base/services/loader.service.js +0 -27
  193. package/esm2015/lib/base/services/scroll.service.js +0 -172
  194. package/esm2015/lib/base/services/seo.service.js +0 -100
  195. package/esm2015/lib/base/services/storage.service.js +0 -131
  196. package/esm2015/lib/base/services/ws.service.js +0 -16
  197. package/esm2015/lib/base/types/storage.type.js +0 -2
  198. package/esm2015/lib/base/validators/must-match.validator.js +0 -22
  199. package/esm2015/public-api.js +0 -3
  200. package/esm2015/src/lib/base/base.module.js +0 -66
  201. package/esm2015/src/lib/base/classes/basic-user.class.js +0 -51
  202. package/esm2015/src/lib/base/classes/graphql-enum.class.js +0 -9
  203. package/esm2015/src/lib/base/classes/graphql-meta.class.js +0 -156
  204. package/esm2015/src/lib/base/classes/graphql-type.class.js +0 -13
  205. package/esm2015/src/lib/base/classes/helper.class.js +0 -290
  206. package/esm2015/src/lib/base/classes/standard.class.js +0 -40
  207. package/esm2015/src/lib/base/directives/context-menu.directive.js +0 -104
  208. package/esm2015/src/lib/base/directives/lazy-load.directive.js +0 -43
  209. package/esm2015/src/lib/base/directives/match-height.directive.js +0 -78
  210. package/esm2015/src/lib/base/directives/resizable.directive.js +0 -89
  211. package/esm2015/src/lib/base/enums/comparison-operator.enum.js +0 -16
  212. package/esm2015/src/lib/base/enums/graphql-request-type.enum.js +0 -10
  213. package/esm2015/src/lib/base/enums/logical-operator.enum.js +0 -10
  214. package/esm2015/src/lib/base/enums/sort-order.enum.js +0 -6
  215. package/esm2015/src/lib/base/factories/apollo-options.factory.js +0 -61
  216. package/esm2015/src/lib/base/guards/auth.guard.js +0 -61
  217. package/esm2015/src/lib/base/guards/can-deactivate.guard.js +0 -13
  218. package/esm2015/src/lib/base/guards/logout.guard.js +0 -33
  219. package/esm2015/src/lib/base/interfaces/base-module-config.interface.js +0 -3
  220. package/esm2015/src/lib/base/interfaces/can-component-deactivate.interface.js +0 -2
  221. package/esm2015/src/lib/base/interfaces/combined-filter-input.interface.js +0 -2
  222. package/esm2015/src/lib/base/interfaces/field-object.interface.js +0 -2
  223. package/esm2015/src/lib/base/interfaces/field.interface.js +0 -2
  224. package/esm2015/src/lib/base/interfaces/filter-input.interface.js +0 -2
  225. package/esm2015/src/lib/base/interfaces/find-args.interface.js +0 -2
  226. package/esm2015/src/lib/base/interfaces/graphql-options.interface.js +0 -2
  227. package/esm2015/src/lib/base/interfaces/graphql-plus-options.interfacen.js +0 -2
  228. package/esm2015/src/lib/base/interfaces/graphql-type-collection.interface.js +0 -2
  229. package/esm2015/src/lib/base/interfaces/single-filter-input.interface.js +0 -2
  230. package/esm2015/src/lib/base/interfaces/sort-input.interface.js +0 -2
  231. package/esm2015/src/lib/base/lenne.tech-ng-base-src-lib-base.js +0 -5
  232. package/esm2015/src/lib/base/pipes/ellipses.pipe.js +0 -18
  233. package/esm2015/src/lib/base/pipes/safe-html.pipe.js +0 -20
  234. package/esm2015/src/lib/base/public-api.js +0 -61
  235. package/esm2015/src/lib/base/services/auth.service.js +0 -74
  236. package/esm2015/src/lib/base/services/fullscreen.service.js +0 -50
  237. package/esm2015/src/lib/base/services/graphql-meta.service.js +0 -116
  238. package/esm2015/src/lib/base/services/graphql-plus.service.js +0 -90
  239. package/esm2015/src/lib/base/services/graphql.service.js +0 -423
  240. package/esm2015/src/lib/base/services/image.service.js +0 -99
  241. package/esm2015/src/lib/base/services/loader.service.js +0 -27
  242. package/esm2015/src/lib/base/services/scroll.service.js +0 -172
  243. package/esm2015/src/lib/base/services/seo.service.js +0 -100
  244. package/esm2015/src/lib/base/services/storage.service.js +0 -131
  245. package/esm2015/src/lib/base/services/ws.service.js +0 -16
  246. package/esm2015/src/lib/base/types/storage.type.js +0 -2
  247. package/esm2015/src/lib/base/validators/must-match.validator.js +0 -22
  248. package/fesm2015/lenne.tech-ng-base-src-lib-base.js.map +0 -1
  249. package/fesm2015/lenne.tech-ng-base.js.map +0 -1
  250. package/lenne.tech-ng-base.metadata.json +0 -1
  251. package/lib/base/base.module.d.ts +0 -11
  252. package/lib/base/classes/basic-user.class.d.ts +0 -26
  253. package/lib/base/classes/graphql-enum.class.d.ts +0 -7
  254. package/lib/base/classes/graphql-type.class.d.ts +0 -9
  255. package/lib/base/classes/standard.class.d.ts +0 -32
  256. package/lib/base/directives/context-menu.directive.d.ts +0 -19
  257. package/lib/base/directives/match-height.directive.d.ts +0 -16
  258. package/lib/base/enums/comparison-operator.enum.d.ts +0 -14
  259. package/lib/base/enums/graphql-request-type.enum.d.ts +0 -8
  260. package/lib/base/enums/logical-operator.enum.d.ts +0 -8
  261. package/lib/base/enums/sort-order.enum.d.ts +0 -4
  262. package/lib/base/factories/apollo-options.factory.d.ts +0 -18
  263. package/lib/base/guards/auth.guard.d.ts +0 -24
  264. package/lib/base/guards/can-deactivate.guard.d.ts +0 -8
  265. package/lib/base/index.d.ts +0 -1
  266. package/lib/base/interfaces/base-module-config.interface.d.ts +0 -57
  267. package/lib/base/interfaces/can-component-deactivate.interface.d.ts +0 -7
  268. package/lib/base/interfaces/combined-filter-input.interface.d.ts +0 -9
  269. package/lib/base/interfaces/field-object.interface.d.ts +0 -6
  270. package/lib/base/interfaces/field.interface.d.ts +0 -5
  271. package/lib/base/interfaces/filter-input.interface.d.ts +0 -9
  272. package/lib/base/interfaces/find-args.interface.d.ts +0 -10
  273. package/lib/base/interfaces/graphql-options.interface.d.ts +0 -11
  274. package/lib/base/interfaces/graphql-plus-options.interfacen.d.ts +0 -9
  275. package/lib/base/interfaces/graphql-type-collection.interface.d.ts +0 -7
  276. package/lib/base/interfaces/single-filter-input.interface.d.ts +0 -11
  277. package/lib/base/interfaces/sort-input.interface.d.ts +0 -5
  278. package/lib/base/public-api.d.ts +0 -49
  279. package/lib/base/services/fullscreen.service.d.ts +0 -15
  280. package/lib/base/services/graphql-meta.service.d.ts +0 -42
  281. package/lib/base/services/graphql-plus.service.d.ts +0 -22
  282. package/lib/base/services/graphql.service.d.ts +0 -53
  283. package/lib/base/services/image.service.d.ts +0 -24
  284. package/lib/base/services/scroll.service.d.ts +0 -82
  285. package/lib/base/services/seo.service.d.ts +0 -46
  286. package/lib/base/services/ws.service.d.ts +0 -5
  287. package/lib/base/types/storage.type.d.ts +0 -4
  288. package/src/lib/base/base.module.d.ts +0 -11
  289. package/src/lib/base/classes/graphql-meta.class.d.ts +0 -48
  290. package/src/lib/base/classes/helper.class.d.ts +0 -98
  291. package/src/lib/base/directives/lazy-load.directive.d.ts +0 -14
  292. package/src/lib/base/directives/resizable.directive.d.ts +0 -23
  293. package/src/lib/base/guards/logout.guard.d.ts +0 -13
  294. package/src/lib/base/lenne.tech-ng-base-src-lib-base.metadata.json +0 -1
  295. package/src/lib/base/package.json +0 -11
  296. package/src/lib/base/pipes/ellipses.pipe.d.ts +0 -7
  297. package/src/lib/base/pipes/safe-html.pipe.d.ts +0 -10
  298. package/src/lib/base/public-api.d.ts +0 -49
  299. package/src/lib/base/services/auth.service.d.ts +0 -29
  300. package/src/lib/base/services/loader.service.d.ts +0 -10
  301. package/src/lib/base/services/storage.service.d.ts +0 -45
  302. package/src/lib/base/services/ws.service.d.ts +0 -5
  303. package/src/lib/base/validators/must-match.validator.d.ts +0 -6
@@ -1,156 +0,0 @@
1
- import { Helper } from './helper.class';
2
- import { GraphQLType } from './graphql-type.class';
3
- /**
4
- * GraphQL meta
5
- */
6
- export class GraphQLMeta {
7
- /**
8
- * Integrate schema
9
- */
10
- constructor(schema) {
11
- this.schema = schema;
12
- // Frozen caches
13
- this.args = {};
14
- this.fields = {};
15
- if (!schema) {
16
- throw Error('Missing schema');
17
- }
18
- }
19
- /**
20
- * Get arguments of GraphQL function
21
- */
22
- getArgs(functionName, options = {}) {
23
- const { cache, freeze, type } = Object.assign({ cache: true, freeze: true, type: undefined }, options);
24
- // Get cache
25
- if (cache && freeze) {
26
- const args = this.args[functionName + type];
27
- if (args) {
28
- return args;
29
- }
30
- }
31
- const func = this.getFunction(functionName, { type });
32
- const result = {};
33
- if (func === null || func === void 0 ? void 0 : func.args) {
34
- func.args.forEach((item) => {
35
- result[item.name] = this.getDeepType(item.type);
36
- });
37
- }
38
- // Set cache
39
- if (freeze) {
40
- this.args[functionName + type] = Helper.deepFreeze(result);
41
- }
42
- return result;
43
- }
44
- /**
45
- * Get fields of GraphQL function
46
- */
47
- getFields(functionName, options = {}) {
48
- const { cache, freeze, type } = Object.assign({ cache: true, freeze: true, type: undefined }, options);
49
- // Get cache
50
- if (cache && freeze) {
51
- const args = this.fields[functionName + type];
52
- if (args) {
53
- return args;
54
- }
55
- }
56
- const func = this.getFunction(functionName, options);
57
- const result = this.getDeepType(func.type);
58
- // Set cache
59
- if (freeze) {
60
- this.fields[functionName + type] = Helper.deepFreeze(result);
61
- }
62
- return result;
63
- }
64
- /**
65
- * Get GraphQL function
66
- */
67
- getFunction(name, options = {}) {
68
- // Set config
69
- const config = Object.assign({}, options);
70
- // Init possible functions
71
- let functions = {};
72
- // If function type is set
73
- if (config.type) {
74
- const graphQLType = config.type.charAt(0).toUpperCase() + config.type.slice(1);
75
- const type = this.schema.getType(graphQLType);
76
- if (type) {
77
- functions = type.getFields();
78
- }
79
- }
80
- // If function type is not set
81
- else {
82
- ['Subscription', 'Mutation', 'Query'].forEach((item) => {
83
- const type = this.schema.getType(item);
84
- if (type) {
85
- functions = Object.assign(Object.assign({}, functions), (type.getFields() || {}));
86
- }
87
- });
88
- }
89
- // Get function via name
90
- return functions[name];
91
- }
92
- /**
93
- * Get type
94
- */
95
- getType(name) {
96
- return this.schema.getType(name);
97
- }
98
- /**
99
- * Get deep type data
100
- */
101
- getDeepType(type, prepared = new WeakMap()) {
102
- // Check type
103
- if (!type) {
104
- return type;
105
- }
106
- // Infinite regress protection
107
- const preparedObject = {};
108
- // Check prepared
109
- if (typeof type === 'object') {
110
- const preparedType = prepared.get(type);
111
- if (preparedType) {
112
- return preparedType;
113
- }
114
- // Set prepared
115
- prepared.set(type, preparedObject);
116
- }
117
- // Search deeper
118
- if (type.ofType) {
119
- const ofTypeResult = this.getDeepType(type.ofType, prepared);
120
- Object.assign(preparedObject, ofTypeResult);
121
- return ofTypeResult;
122
- }
123
- // Process fields
124
- if (type._fields) {
125
- const result = {};
126
- for (const [key, value] of Object.entries(type._fields)) {
127
- result[key] = this.getDeepType(value, prepared);
128
- }
129
- Object.assign(preparedObject, result);
130
- return result;
131
- }
132
- // Get type name
133
- if (type.type) {
134
- const typeResult = this.getDeepType(type.type, prepared);
135
- Object.assign(preparedObject, typeResult);
136
- return typeResult;
137
- }
138
- // Initialize GraphQLType
139
- const graphqlType = GraphQLType.map({
140
- type: type.name,
141
- });
142
- // Set enum values
143
- if (!!type._values) {
144
- graphqlType.isEnum = true;
145
- for (const [key, value] of Object.entries(type._nameLookup)) {
146
- if (!value.isDeprecated) {
147
- graphqlType.validEnums.push(key);
148
- }
149
- }
150
- }
151
- // Finish
152
- prepared.set(type, graphqlType);
153
- return graphqlType;
154
- }
155
- }
156
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC1tZXRhLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9ncmFwaHFsLW1ldGEuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUduRDs7R0FFRztBQUNILE1BQU0sT0FBTyxXQUFXO0lBS3RCOztPQUVHO0lBQ0gsWUFBc0IsTUFBcUI7UUFBckIsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQVAzQyxnQkFBZ0I7UUFDTixTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixXQUFNLEdBQXdCLEVBQUUsQ0FBQztRQU16QyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQjtJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FDTCxZQUFvQixFQUNwQixVQUE0RSxFQUFFO1FBRTlFLE1BQU0sRUFBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxtQkFDekIsS0FBSyxFQUFFLElBQUksRUFDWCxNQUFNLEVBQUUsSUFBSSxFQUNaLElBQUksRUFBRSxTQUFTLElBQ1osT0FBTyxDQUNYLENBQUM7UUFFRixZQUFZO1FBQ1osSUFBSSxLQUFLLElBQUksTUFBTSxFQUFFO1lBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxFQUFFO2dCQUNSLE9BQU8sSUFBSSxDQUFDO2FBQ2I7U0FDRjtRQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FB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QUMsV0FBVyxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQzthQUNqRDtZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3RDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzFDLE9BQU8sVUFBVSxDQUFDO1NBQ25CO1FBRUQseUJBQXlCO1FBQ3pCLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7WUFDbEMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUVILGtCQUFrQjtRQUNsQixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDM0QsSUFBSSxDQUFFLEtBQWEsQ0FBQyxZQUFZLEVBQUU7b0JBQ2hDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNsQzthQUNGO1NBQ0Y7UUFFRCxTQUFTO1FBQ1QsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDaEMsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgR3JhcGhRTFNjaGVtYSB9IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IHsgTWF5YmUgfSBmcm9tICdncmFwaHFsL2pzdXRpbHMvTWF5YmUnO1xuaW1wb3J0IHsgR3JhcGhRTE5hbWVkVHlwZSB9IGZyb20gJ2dyYXBocWwvdHlwZS9kZWZpbml0aW9uJztcbmltcG9ydCB7IEdyYXBoUUxSZXF1ZXN0VHlwZSB9IGZyb20gJy4uL2VudW1zL2dyYXBocWwtcmVxdWVzdC10eXBlLmVudW0nO1xuaW1wb3J0IHsgSGVscGVyIH0gZnJvbSAnLi9oZWxwZXIuY2xhc3MnO1xuaW1wb3J0IHsgR3JhcGhRTFR5cGUgfSBmcm9tICcuL2dyYXBocWwtdHlwZS5jbGFzcyc7XG5pbXBvcnQgeyBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ncmFwaHFsLXR5cGUtY29sbGVjdGlvbi5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIEdyYXBoUUwgbWV0YVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTE1ldGEge1xuICAvLyBGcm96ZW4gY2FjaGVzXG4gIHByb3RlY3RlZCBhcmdzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIHByb3RlY3RlZCBmaWVsZHM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICAvKipcbiAgICogSW50ZWdyYXRlIHNjaGVtYVxuICAgKi9cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIHNjaGVtYTogR3JhcGhRTFNjaGVtYSkge1xuICAgIGlmICghc2NoZW1hKSB7XG4gICAgICB0aHJvdyBFcnJvcignTWlzc2luZyBzY2hlbWEnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFyZ3VtZW50cyBvZiBHcmFwaFFMIGZ1bmN0aW9uXG4gICAqL1xuICBnZXRBcmdzKFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY2FjaGU/OiBib29sZWFuOyBmcmVlemU/OiBib29sZWFuOyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fVxuICApOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7Y2FjaGUsIGZyZWV6ZSwgdHlwZX0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmFyZ3NbZnVuY3Rpb25OYW1lICsgdHlwZV07XG4gICAgICBpZiAoYXJncykge1xuICAgICAgICByZXR1cm4gYXJncztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBmdW5jID0gdGhpcy5nZXRGdW5jdGlvbihmdW5jdGlvbk5hbWUsIHt0eXBlfSk7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgaWYgKGZ1bmM/LmFyZ3MpIHtcbiAgICAgIGZ1bmMuYXJncy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIHJlc3VsdFtpdGVtLm5hbWVdID0gdGhpcy5nZXREZWVwVHlwZShpdGVtLnR5cGUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IGNhY2hlXG4gICAgaWYgKGZyZWV6ZSkge1xuICAgICAgdGhpcy5hcmdzW2Z1bmN0aW9uTmFtZSArIHR5cGVdID0gSGVscGVyLmRlZXBGcmVlemUocmVzdWx0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBmaWVsZHMgb2YgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgZ2V0RmllbGRzKFxuICAgIGZ1bmN0aW9uTmFtZTogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgY2FjaGU/OiBib29sZWFuOyBmcmVlemU/OiBib29sZWFuOyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fVxuICApOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHtcbiAgICBjb25zdCB7Y2FjaGUsIGZyZWV6ZSwgdHlwZX0gPSB7XG4gICAgICBjYWNoZTogdHJ1ZSxcbiAgICAgIGZyZWV6ZTogdHJ1ZSxcbiAgICAgIHR5cGU6IHVuZGVmaW5lZCxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfTtcblxuICAgIC8vIEdldCBjYWNoZVxuICAgIGlmIChjYWNoZSAmJiBmcmVlemUpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSB0aGlzLmZpZWxkc1tmdW5jdGlvbk5hbWUgKyB0eXBlXTtcbiAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgIHJldHVybiBhcmdzO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGZ1bmMgPSB0aGlzLmdldEZ1bmN0aW9uKGZ1bmN0aW9uTmFtZSwgb3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0OiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uID0gdGhpcy5nZXREZWVwVHlwZShmdW5jLnR5cGUpIGFzIElHcmFwaFFMVHlwZUNvbGxlY3Rpb247XG5cbiAgICAvLyBTZXQgY2FjaGVcbiAgICBpZiAoZnJlZXplKSB7XG4gICAgICB0aGlzLmZpZWxkc1tmdW5jdGlvbk5hbWUgKyB0eXBlXSA9IEhlbHBlci5kZWVwRnJlZXplKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgR3JhcGhRTCBmdW5jdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEZ1bmN0aW9uKG5hbWU6IHN0cmluZywgb3B0aW9uczogeyB0eXBlPzogR3JhcGhRTFJlcXVlc3RUeXBlIH0gPSB7fSk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIC8vIFNldCBjb25maWdcbiAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBJbml0IHBvc3NpYmxlIGZ1bmN0aW9uc1xuICAgIGxldCBmdW5jdGlvbnMgPSB7fTtcblxuICAgIC8vIElmIGZ1bmN0aW9uIHR5cGUgaXMgc2V0XG4gICAgaWYgKGNvbmZpZy50eXBlKSB7XG4gICAgICBjb25zdCBncmFwaFFMVHlwZSA9IGNvbmZpZy50eXBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY29uZmlnLnR5cGUuc2xpY2UoMSk7XG4gICAgICBjb25zdCB0eXBlID0gdGhpcy5zY2hlbWEuZ2V0VHlwZShncmFwaFFMVHlwZSk7XG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICBmdW5jdGlvbnMgPSAodHlwZSBhcyBhbnkpLmdldEZpZWxkcygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIGZ1bmN0aW9uIHR5cGUgaXMgbm90IHNldFxuICAgIGVsc2Uge1xuICAgICAgWydTdWJzY3JpcHRpb24nLCAnTXV0YXRpb24nLCAnUXVlcnknXS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IHR5cGU6IGFueSA9IHRoaXMuc2NoZW1hLmdldFR5cGUoaXRlbSk7XG4gICAgICAgIGlmICh0eXBlKSB7XG4gICAgICAgICAgZnVuY3Rpb25zID0ge1xuICAgICAgICAgICAgLi4uZnVuY3Rpb25zLFxuICAgICAgICAgICAgLi4uKHR5cGUuZ2V0RmllbGRzKCkgfHwge30pLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEdldCBmdW5jdGlvbiB2aWEgbmFtZVxuICAgIHJldHVybiBmdW5jdGlvbnNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogR2V0IHR5cGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUeXBlKG5hbWU6IHN0cmluZyk6IE1heWJlPEdyYXBoUUxOYW1lZFR5cGU+IHtcbiAgICByZXR1cm4gdGhpcy5zY2hlbWEuZ2V0VHlwZShuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGVlcCB0eXBlIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBnZXREZWVwVHlwZSh0eXBlOiBhbnksIHByZXBhcmVkOiBXZWFrTWFwPGFueSwgYW55PiA9IG5ldyBXZWFrTWFwKCkpOiBJR3JhcGhRTFR5cGVDb2xsZWN0aW9uIHwgR3JhcGhRTFR5cGUge1xuICAgIC8vIENoZWNrIHR5cGVcbiAgICBpZiAoIXR5cGUpIHtcbiAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cblxuICAgIC8vIEluZmluaXRlIHJlZ3Jlc3MgcHJvdGVjdGlvblxuICAgIGNvbnN0IHByZXBhcmVkT2JqZWN0ID0ge307XG5cbiAgICAvLyBDaGVjayBwcmVwYXJlZFxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGNvbnN0IHByZXBhcmVkVHlwZSA9IHByZXBhcmVkLmdldCh0eXBlKTtcbiAgICAgIGlmIChwcmVwYXJlZFR5cGUpIHtcbiAgICAgICAgcmV0dXJuIHByZXBhcmVkVHlwZTtcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHByZXBhcmVkXG4gICAgICBwcmVwYXJlZC5zZXQodHlwZSwgcHJlcGFyZWRPYmplY3QpO1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBkZWVwZXJcbiAgICBpZiAodHlwZS5vZlR5cGUpIHtcbiAgICAgIGNvbnN0IG9mVHlwZVJlc3VsdCA9IHRoaXMuZ2V0RGVlcFR5cGUodHlwZS5vZlR5cGUsIHByZXBhcmVkKTtcbiAgICAgIE9iamVjdC5hc3NpZ24ocHJlcGFyZWRPYmplY3QsIG9mVHlwZVJlc3VsdCk7XG4gICAgICByZXR1cm4gb2ZUeXBlUmVzdWx0O1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3MgZmllbGRzXG4gICAgaWYgKHR5cGUuX2ZpZWxkcykge1xuICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0eXBlLl9maWVsZHMpKSB7XG4gICAgICAgIHJlc3VsdFtrZXldID0gdGhpcy5nZXREZWVwVHlwZSh2YWx1ZSwgcHJlcGFyZWQpO1xuICAgICAgfVxuICAgICAgT2JqZWN0LmFzc2lnbihwcmVwYXJlZE9iamVjdCwgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgLy8gR2V0IHR5cGUgbmFtZVxuICAgIGlmICh0eXBlLnR5cGUpIHtcbiAgICAgIGNvbnN0IHR5cGVSZXN1bHQgPSB0aGlzLmdldERlZXBUeXBlKHR5cGUudHlwZSwgcHJlcGFyZWQpO1xuICAgICAgT2JqZWN0LmFzc2lnbihwcmVwYXJlZE9iamVjdCwgdHlwZVJlc3VsdCk7XG4gICAgICByZXR1cm4gdHlwZVJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBJbml0aWFsaXplIEdyYXBoUUxUeXBlXG4gICAgY29uc3QgZ3JhcGhxbFR5cGUgPSBHcmFwaFFMVHlwZS5tYXAoe1xuICAgICAgdHlwZTogdHlwZS5uYW1lLFxuICAgIH0pO1xuXG4gICAgLy8gU2V0IGVudW0gdmFsdWVzXG4gICAgaWYgKCEhdHlwZS5fdmFsdWVzKSB7XG4gICAgICBncmFwaHFsVHlwZS5pc0VudW0gPSB0cnVlO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModHlwZS5fbmFtZUxvb2t1cCkpIHtcbiAgICAgICAgaWYgKCEodmFsdWUgYXMgYW55KS5pc0RlcHJlY2F0ZWQpIHtcbiAgICAgICAgICBncmFwaHFsVHlwZS52YWxpZEVudW1zLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZpbmlzaFxuICAgIHByZXBhcmVkLnNldCh0eXBlLCBncmFwaHFsVHlwZSk7XG4gICAgcmV0dXJuIGdyYXBocWxUeXBlO1xuICB9XG59XG4iXX0=
@@ -1,13 +0,0 @@
1
- import { Standard } from './standard.class';
2
- /**
3
- * GraphQL type
4
- */
5
- export class GraphQLType extends Standard {
6
- constructor() {
7
- super(...arguments);
8
- this.type = '';
9
- this.isEnum = false;
10
- this.validEnums = [];
11
- }
12
- }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGhxbC10eXBlLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9ncmFwaHFsLXR5cGUuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTVDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFdBQVksU0FBUSxRQUFRO0lBQXpDOztRQUNFLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsZUFBVSxHQUFhLEVBQUUsQ0FBQztJQUM1QixDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFuZGFyZCB9IGZyb20gJy4vc3RhbmRhcmQuY2xhc3MnO1xuXG4vKipcbiAqIEdyYXBoUUwgdHlwZVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhRTFR5cGUgZXh0ZW5kcyBTdGFuZGFyZCB7XG4gIHR5cGUgPSAnJztcbiAgaXNFbnVtID0gZmFsc2U7XG4gIHZhbGlkRW51bXM6IHN0cmluZ1tdID0gW107XG59XG4iXX0=
@@ -1,290 +0,0 @@
1
- /**
2
- * Helper class
3
- */
4
- export class Helper {
5
- /**
6
- * Simple filter function for plain objects
7
- */
8
- static filter(objects, filter) {
9
- return ((objects === null || objects === void 0 ? void 0 : objects.filter((element) => {
10
- for (const [key, value] of Object.entries(filter)) {
11
- if (Array.isArray(element[key])) {
12
- for (const item of element[key]) {
13
- if (!element[key].includs(value)) {
14
- return false;
15
- }
16
- }
17
- }
18
- else if (element[key] !== value) {
19
- return false;
20
- }
21
- }
22
- return true;
23
- })) || []);
24
- }
25
- /**
26
- * Convert to a url/uri conform string
27
- * Only:
28
- * - lower case
29
- * - chars, numbers and hyphens
30
- */
31
- static urlString(str, options = {}) {
32
- // Config
33
- const config = Object.assign({ allowAll: false }, options);
34
- // To string
35
- str = str + '';
36
- // Trim
37
- str = str.trim();
38
- // Lower case
39
- str = str.toLowerCase();
40
- if (!config.allowAll) {
41
- // Replace spaces
42
- str = str.trim().replace(/\s+/g, '-');
43
- // Replace some special chars
44
- str = str.replace('ä', 'ae');
45
- str = str.replace('ö', 'oe');
46
- str = str.replace('ü', 'ue');
47
- str = str.replace('ß', 'ss');
48
- // Remove other special chars
49
- str = str.replace(/[^a-zA-Z0-9-]/g, '');
50
- }
51
- // Return url conform string
52
- return encodeURI(str);
53
- }
54
- /**
55
- * Simple map function
56
- */
57
- static map(source, target, options = {}) {
58
- // Set config
59
- const config = Object.assign({ funcAllowed: false, dateStringToDate: true }, options);
60
- // Check source
61
- if (!source || typeof source !== 'object' || Array.isArray(source)) {
62
- return target;
63
- }
64
- // Update properties
65
- for (const key of Object.keys(target)) {
66
- if (source[key] !== undefined && (config.funcAllowed || typeof (source[key] !== 'function'))) {
67
- if (typeof source[key] === 'string' && config.dateStringToDate) {
68
- if (Array.isArray(config.dateStringToDate)) {
69
- if (config.dateStringToDate.includes(key)) {
70
- target[key] = Helper.parseDate(source[key]);
71
- }
72
- }
73
- else {
74
- target[key] = Helper.parseDate(source[key]);
75
- }
76
- }
77
- else {
78
- target[key] = source[key];
79
- }
80
- }
81
- }
82
- // Return target
83
- return target;
84
- }
85
- /**
86
- * Create Object or Objects of specified type with specified data
87
- */
88
- static maps(data, targetClass) {
89
- // Check data
90
- if (!data || typeof data !== 'object') {
91
- return undefined;
92
- }
93
- // Check array
94
- if (!Array.isArray(data)) {
95
- data = [data];
96
- }
97
- // Map
98
- return data.map((item) => {
99
- return targetClass.map(item);
100
- });
101
- }
102
- /**
103
- * Get plain parameter
104
- */
105
- static getPlainParameter(parameter) {
106
- var _a, _b, _c;
107
- if (!parameter) {
108
- return parameter;
109
- }
110
- return (_c = (_b = (_a = parameter === null || parameter === void 0 ? void 0 : parameter.split('?')) === null || _a === void 0 ? void 0 : _a.shift()) === null || _b === void 0 ? void 0 : _b.split('#')) === null || _c === void 0 ? void 0 : _c.shift();
111
- }
112
- /**
113
- * Get ID of an url parameter
114
- */
115
- static getParameterId(parameter) {
116
- var _a;
117
- if (!parameter) {
118
- return parameter;
119
- }
120
- return (_a = Helper.getPlainParameter(parameter)) === null || _a === void 0 ? void 0 : _a.split('-').pop();
121
- }
122
- /**
123
- * Delay
124
- */
125
- static delay(ms) {
126
- const promise = new Promise((resolve) => setTimeout(resolve, ms));
127
- return promise;
128
- }
129
- /**
130
- * Deep freeze
131
- * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze#What_is_shallow_freeze
132
- */
133
- static deepFreeze(object, preparedObjects = []) {
134
- // Prevent infinit regress
135
- if (preparedObjects.includes(object)) {
136
- return object;
137
- }
138
- preparedObjects.push(object);
139
- // Retrieve the property names defined on object
140
- const propNames = Object.getOwnPropertyNames(object);
141
- // Freeze properties before freezing self
142
- for (const name of propNames) {
143
- const value = object[name];
144
- if (value && typeof value === 'object') {
145
- Helper.deepFreeze(value, preparedObjects);
146
- }
147
- }
148
- return Object.freeze(object);
149
- }
150
- /**
151
- * Generates an unique identifier with 24 characters
152
- */
153
- static getUID() {
154
- let dt = new Date().getTime();
155
- const uuid = 'xxxxxxxxxxxxxxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
156
- // eslint-disable-next-line no-bitwise
157
- const r = (dt + Math.random() * 16) % 16 | 0;
158
- dt = Math.floor(dt / 16);
159
- // eslint-disable-next-line no-bitwise
160
- return (c === 'x' ? r : (r & 0x3) | 0x8).toString(16);
161
- });
162
- return uuid;
163
- }
164
- /**
165
- * Parse date string to date object
166
- */
167
- static parseDate(dateString) {
168
- const reISO = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*))(?:Z|(\+|-)([\d|:]*))?$/;
169
- const reMsAjax = /^\/Date\((d|-|.*)\)[\/|\\]$/;
170
- if (typeof dateString === 'string') {
171
- const isoExec = reISO.exec(dateString);
172
- if (isoExec) {
173
- return new Date(dateString);
174
- }
175
- const msAjaxExec = reMsAjax.exec(dateString);
176
- if (msAjaxExec) {
177
- const cleaned = msAjaxExec[1].split(/[-+,.]/);
178
- return new Date(cleaned[0] ? +cleaned[0] : 0 - +cleaned[1]);
179
- }
180
- }
181
- return dateString;
182
- }
183
- /**
184
- * Get browser name and version
185
- */
186
- static getBrowser() {
187
- const userAgent = navigator.userAgent;
188
- let data = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
189
- let version;
190
- if (/trident/i.test(data[1])) {
191
- version = /\brv[ :]+(\d+)/g.exec(userAgent) || [];
192
- return { name: 'IE', version: version[1] || '' };
193
- }
194
- if (data[1] === 'Chrome') {
195
- version = userAgent.match(/\bOPR|Edge\/(\d+)/);
196
- if (version != null) {
197
- return { name: 'Opera', version: version[1] };
198
- }
199
- }
200
- data = data[2] ? [data[1], data[2]] : [navigator.appName, navigator.appVersion, '-?'];
201
- version = userAgent.match(/version\/(\d+)/i);
202
- if (version !== null) {
203
- data.splice(1, 1, version[1]);
204
- }
205
- return {
206
- name: data[0],
207
- version: data[1],
208
- };
209
- }
210
- /**
211
- * Whether first parameter is a deep subset of second parameter
212
- * Hint: functions will be ignored
213
- */
214
- static isSubset(a, b) {
215
- // Equal
216
- if (a === b) {
217
- return true;
218
- }
219
- // Different type
220
- if (typeof a !== typeof b) {
221
- return false;
222
- }
223
- // Process array
224
- if (Array.isArray(a)) {
225
- for (const [key, value] of Object.entries(a)) {
226
- if (Helper.isSubset(value, b[key])) {
227
- return false;
228
- }
229
- }
230
- return true;
231
- }
232
- // Process object
233
- if (typeof a === 'object') {
234
- const plain = JSON.parse(JSON.stringify(a));
235
- for (const [key, value] of Object.entries(plain)) {
236
- if (Helper.isSubset(value, b[key])) {
237
- return false;
238
- }
239
- }
240
- return true;
241
- }
242
- // Else
243
- return true;
244
- }
245
- /**
246
- * Whether parameters are equal (have equal properties)
247
- * Hint: functions will be ignored
248
- */
249
- static isEqual(a, b) {
250
- return Helper.isSubset(a, b) && Helper.isSubset(b, a);
251
- }
252
- /**
253
- * First level difference of two objects
254
- * Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value
255
- *
256
- * @returns Record<string, any> Object with properties from first object
257
- */
258
- static getDiff(a, b, clone = true) {
259
- const result = {};
260
- let firstObject = a;
261
- if (clone) {
262
- firstObject = JSON.parse(JSON.stringify(a));
263
- }
264
- for (const [key, value] of Object.entries(firstObject)) {
265
- if (!Helper.isSubset(value, b[key])) {
266
- result[key] = value;
267
- }
268
- }
269
- return result;
270
- }
271
- /**
272
- * Check if propertie is type of HTMLCollection or NodeList
273
- * See https://stackoverflow.com/a/7238344
274
- *
275
- * @param nodes
276
- */
277
- static isNodeList(nodes) {
278
- try {
279
- const stringRepr = Object.prototype.toString.call(nodes);
280
- return (typeof nodes === 'object' &&
281
- /^\[object (HTMLCollection|NodeList|Object)\]$/.test(stringRepr) &&
282
- typeof nodes.length === 'number' &&
283
- (nodes.length === 0 || (typeof nodes[0] === 'object' && nodes[0].nodeType > 0)));
284
- }
285
- catch (e) {
286
- return false;
287
- }
288
- }
289
- }
290
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmNsYXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctYmFzZS9zcmMvbGliL2Jhc2UvY2xhc3Nlcy9oZWxwZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sTUFBTTtJQUNqQjs7T0FFRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQTZCLE9BQVksRUFBRSxNQUE4QjtRQUNwRixPQUFPLENBQUMsQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2pELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDL0IsS0FBSyxNQUFNLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7d0JBQy9CLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFOzRCQUNoQyxPQUFPLEtBQUssQ0FBQzt5QkFDZDtxQkFDRjtpQkFDRjtxQkFBTSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxLQUFLLEVBQUU7b0JBQ2pDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2FBQ0Y7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxLQUFJLEVBQUUsQ0FBVSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBUSxFQUFFLFVBQWtDLEVBQUU7UUFDN0QsU0FBUztRQUNULE1BQU0sTUFBTSxtQkFDVixRQUFRLEVBQUUsS0FBSyxJQUNaLE9BQU8sQ0FDWCxD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RyxDQUFDLENBQUMsQ0FBQyxDQUNoRixDQUFDO1NBQ0g7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFuZGFyZCB9IGZyb20gJy4vc3RhbmRhcmQuY2xhc3MnO1xuXG4vKipcbiAqIEhlbHBlciBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgSGVscGVyIHtcbiAgLyoqXG4gICAqIFNpbXBsZSBmaWx0ZXIgZnVuY3Rpb24gZm9yIHBsYWluIG9iamVjdHNcbiAgICovXG4gIHN0YXRpYyBmaWx0ZXI8VCA9IHsgW2tleTogc3RyaW5nXTogYW55IH0+KG9iamVjdHM6IFRbXSwgZmlsdGVyOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KTogVFtdIHtcbiAgICByZXR1cm4gKG9iamVjdHM/LmZpbHRlcigoZWxlbWVudCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlsdGVyKSkge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShlbGVtZW50W2tleV0pKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBpdGVtIG9mIGVsZW1lbnRba2V5XSkge1xuICAgICAgICAgICAgaWYgKCFlbGVtZW50W2tleV0uaW5jbHVkcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50W2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KSB8fCBbXSkgYXMgYW55W107XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBhIHVybC91cmkgY29uZm9ybSBzdHJpbmdcbiAgICogT25seTpcbiAgICogLSBsb3dlciBjYXNlXG4gICAqIC0gY2hhcnMsIG51bWJlcnMgYW5kIGh5cGhlbnNcbiAgICovXG4gIHN0YXRpYyB1cmxTdHJpbmcoc3RyOiBhbnksIG9wdGlvbnM6IHsgYWxsb3dBbGw/OiBib29sZWFuIH0gPSB7fSk6IHN0cmluZyB7XG4gICAgLy8gQ29uZmlnXG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgYWxsb3dBbGw6IGZhbHNlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuXG4gICAgLy8gVG8gc3RyaW5nXG4gICAgc3RyID0gc3RyICsgJyc7XG5cbiAgICAvLyBUcmltXG4gICAgc3RyID0gc3RyLnRyaW0oKTtcblxuICAgIC8vIExvd2VyIGNhc2VcbiAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmICghY29uZmlnLmFsbG93QWxsKSB7XG4gICAgICAvLyBSZXBsYWNlIHNwYWNlc1xuICAgICAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICctJyk7XG5cbiAgICAgIC8vIFJlcGxhY2Ugc29tZSBzcGVjaWFsIGNoYXJzXG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw6QnLCAnYWUnKTtcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKCfDticsICdvZScpO1xuICAgICAgc3RyID0gc3RyLnJlcGxhY2UoJ8O8JywgJ3VlJyk7XG4gICAgICBzdHIgPSBzdHIucmVwbGFjZSgnw58nLCAnc3MnKTtcblxuICAgICAgLy8gUmVtb3ZlIG90aGVyIHNwZWNpYWwgY2hhcnNcbiAgICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9bXmEtekEtWjAtOS1dL2csICcnKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gdXJsIGNvbmZvcm0gc3RyaW5nXG4gICAgcmV0dXJuIGVuY29kZVVSSShzdHIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXBsZSBtYXAgZnVuY3Rpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwPFQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PihcbiAgICBzb3VyY2U6IFBhcnRpYWw8VD4gfCB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICAgIHRhcmdldDogVCxcbiAgICBvcHRpb25zOiB7IGZ1bmNBbGxvd2VkPzogYm9vbGVhbjsgZGF0ZVN0cmluZ1RvRGF0ZT86IGJvb2xlYW4gfCBzdHJpbmdbXSB9ID0ge31cbiAgKTogVCB7XG4gICAgLy8gU2V0IGNvbmZpZ1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIGZ1bmNBbGxvd2VkOiBmYWxzZSxcbiAgICAgIGRhdGVTdHJpbmdUb0RhdGU6IHRydWUsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG5cbiAgICAvLyBDaGVjayBzb3VyY2VcbiAgICBpZiAoIXNvdXJjZSB8fCB0eXBlb2Ygc291cmNlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHByb3BlcnRpZXNcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0YXJnZXQpKSB7XG4gICAgICBpZiAoc291cmNlW2tleV0gIT09IHVuZGVmaW5lZCAmJiAoY29uZmlnLmZ1bmNBbGxvd2VkIHx8IHR5cGVvZiAoc291cmNlW2tleV0gIT09ICdmdW5jdGlvbicpKSkge1xuICAgICAgICBpZiAodHlwZW9mIHNvdXJjZVtrZXldID09PSAnc3RyaW5nJyAmJiBjb25maWcuZGF0ZVN0cmluZ1RvRGF0ZSkge1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZy5kYXRlU3RyaW5nVG9EYXRlKSkge1xuICAgICAgICAgICAgaWYgKGNvbmZpZy5kYXRlU3RyaW5nVG9EYXRlLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBIZWxwZXIucGFyc2VEYXRlKHNvdXJjZVtrZXldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGFyZ2V0W2tleV0gPSBIZWxwZXIucGFyc2VEYXRlKHNvdXJjZVtrZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB0YXJnZXRcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBPYmplY3Qgb3IgT2JqZWN0cyBvZiBzcGVjaWZpZWQgdHlwZSB3aXRoIHNwZWNpZmllZCBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1hcHM8VCBleHRlbmRzIFN0YW5kYXJkPihcbiAgICBkYXRhOiBQYXJ0aWFsPFQ+IHwgUGFydGlhbDxUPltdIHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHsgW2tleTogc3RyaW5nXTogYW55IH1bXSxcbiAgICB0YXJnZXRDbGFzczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVFxuICApOiBUW10ge1xuICAgIC8vIENoZWNrIGRhdGFcbiAgICBpZiAoIWRhdGEgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGFycmF5XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRhdGEpKSB7XG4gICAgICBkYXRhID0gW2RhdGFdO1xuICAgIH1cblxuICAgIC8vIE1hcFxuICAgIHJldHVybiAoZGF0YSBhcyBhbnkpLm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICByZXR1cm4gKHRhcmdldENsYXNzIGFzIGFueSkubWFwKGl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBwbGFpbiBwYXJhbWV0ZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0UGxhaW5QYXJhbWV0ZXIocGFyYW1ldGVyOiBzdHJpbmcpIHtcbiAgICBpZiAoIXBhcmFtZXRlcikge1xuICAgICAgcmV0dXJuIHBhcmFtZXRlcjtcbiAgICB9XG4gICAgcmV0dXJuIHBhcmFtZXRlcj8uc3BsaXQoJz8nKT8uc2hpZnQoKT8uc3BsaXQoJyMnKT8uc2hpZnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgSUQgb2YgYW4gdXJsIHBhcmFtZXRlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXRQYXJhbWV0ZXJJZChwYXJhbWV0ZXI6IHN0cmluZykge1xuICAgIGlmICghcGFyYW1ldGVyKSB7XG4gICAgICByZXR1cm4gcGFyYW1ldGVyO1xuICAgIH1cbiAgICByZXR1cm4gSGVscGVyLmdldFBsYWluUGFyYW1ldGVyKHBhcmFtZXRlcik/LnNwbGl0KCctJykucG9wKCk7XG4gIH1cblxuICAvKipcbiAgICogRGVsYXlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVsYXkobXM6IG51bWJlcikge1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuICAgIHJldHVybiBwcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZXAgZnJlZXplXG4gICAqIFNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvZnJlZXplI1doYXRfaXNfc2hhbGxvd19mcmVlemVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVlcEZyZWV6ZShvYmplY3Q6IGFueSwgcHJlcGFyZWRPYmplY3RzID0gW10pIHtcbiAgICAvLyBQcmV2ZW50IGluZmluaXQgcmVncmVzc1xuICAgIGlmIChwcmVwYXJlZE9iamVjdHMuaW5jbHVkZXMob2JqZWN0IGFzIG5ldmVyKSkge1xuICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICB9XG4gICAgcHJlcGFyZWRPYmplY3RzLnB1c2gob2JqZWN0IGFzIG5ldmVyKTtcblxuICAgIC8vIFJldHJpZXZlIHRoZSBwcm9wZXJ0eSBuYW1lcyBkZWZpbmVkIG9uIG9iamVjdFxuICAgIGNvbnN0IHByb3BOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCk7XG5cbiAgICAvLyBGcmVlemUgcHJvcGVydGllcyBiZWZvcmUgZnJlZXppbmcgc2VsZlxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBwcm9wTmFtZXMpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBIZWxwZXIuZGVlcEZyZWV6ZSh2YWx1ZSwgcHJlcGFyZWRPYmplY3RzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyZWV6ZShvYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhbiB1bmlxdWUgaWRlbnRpZmllciB3aXRoIDI0IGNoYXJhY3RlcnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0VUlEKCk6IHN0cmluZyB7XG4gICAgbGV0IGR0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdXVpZCA9ICd4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgKGMpID0+IHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICBjb25zdCByID0gKGR0ICsgTWF0aC5yYW5kb20oKSAqIDE2KSAlIDE2IHwgMDtcbiAgICAgIGR0ID0gTWF0aC5mbG9vcihkdCAvIDE2KTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgICByZXR1cm4gKGMgPT09ICd4JyA/IHIgOiAociAmIDB4MykgfCAweDgpLnRvU3RyaW5nKDE2KTtcbiAgICB9KTtcbiAgICByZXR1cm4gdXVpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBkYXRlIHN0cmluZyB0byBkYXRlIG9iamVjdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXJzZURhdGUoZGF0ZVN0cmluZzogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVJU08gPSAvXihcXGR7NH0pLShcXGR7Mn0pLShcXGR7Mn0pVChcXGR7Mn0pOihcXGR7Mn0pOihcXGR7Mn0oPzpcXC5cXGQqKSkoPzpafChcXCt8LSkoW1xcZHw6XSopKT8kLztcbiAgICBjb25zdCByZU1zQWpheCA9IC9eXFwvRGF0ZVxcKChkfC18LiopXFwpW1xcL3xcXFxcXSQvO1xuICAgIGlmICh0eXBlb2YgZGF0ZVN0cmluZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGNvbnN0IGlzb0V4ZWMgPSByZUlTTy5leGVjKGRhdGVTdHJpbmcpO1xuICAgICAgaWYgKGlzb0V4ZWMpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGVTdHJpbmcpO1xuICAgICAgfVxuICAgICAgY29uc3QgbXNBamF4RXhlYyA9IHJlTXNBamF4LmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAobXNBamF4RXhlYykge1xuICAgICAgICBjb25zdCBjbGVhbmVkID0gbXNBamF4RXhlY1sxXS5zcGxpdCgvWy0rLC5dLyk7XG4gICAgICAgIHJldHVybiBuZXcgRGF0ZShjbGVhbmVkWzBdID8gK2NsZWFuZWRbMF0gOiAwIC0gK2NsZWFuZWRbMV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0ZVN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYnJvd3NlciBuYW1lIGFuZCB2ZXJzaW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldEJyb3dzZXIoKSB7XG4gICAgY29uc3QgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgICBsZXQgZGF0YSA9IHVzZXJBZ2VudC5tYXRjaCgvKG9wZXJhfGNocm9tZXxzYWZhcml8ZmlyZWZveHxtc2llfHRyaWRlbnQoPz1cXC8pKVxcLz9cXHMqKFxcZCspL2kpIHx8IFtdO1xuICAgIGxldCB2ZXJzaW9uO1xuICAgIGlmICgvdHJpZGVudC9pLnRlc3QoZGF0YVsxXSkpIHtcbiAgICAgIHZlcnNpb24gPSAvXFxicnZbIDpdKyhcXGQrKS9nLmV4ZWModXNlckFnZW50KSB8fCBbXTtcbiAgICAgIHJldHVybiB7IG5hbWU6ICdJRScsIHZlcnNpb246IHZlcnNpb25bMV0gfHwgJycgfTtcbiAgICB9XG4gICAgaWYgKGRhdGFbMV0gPT09ICdDaHJvbWUnKSB7XG4gICAgICB2ZXJzaW9uID0gdXNlckFnZW50Lm1hdGNoKC9cXGJPUFJ8RWRnZVxcLyhcXGQrKS8pO1xuICAgICAgaWYgKHZlcnNpb24gIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4geyBuYW1lOiAnT3BlcmEnLCB2ZXJzaW9uOiB2ZXJzaW9uWzFdIH07XG4gICAgICB9XG4gICAgfVxuICAgIGRhdGEgPSBkYXRhWzJdID8gW2RhdGFbMV0sIGRhdGFbMl1dIDogW25hdmlnYXRvci5hcHBOYW1lLCBuYXZpZ2F0b3IuYXBwVmVyc2lvbiwgJy0/J107XG4gICAgdmVyc2lvbiA9IHVzZXJBZ2VudC5tYXRjaCgvdmVyc2lvblxcLyhcXGQrKS9pKTtcbiAgICBpZiAodmVyc2lvbiAhPT0gbnVsbCkge1xuICAgICAgZGF0YS5zcGxpY2UoMSwgMSwgdmVyc2lvblsxXSk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBkYXRhWzBdLFxuICAgICAgdmVyc2lvbjogZGF0YVsxXSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgZmlyc3QgcGFyYW1ldGVyIGlzIGEgZGVlcCBzdWJzZXQgb2Ygc2Vjb25kIHBhcmFtZXRlclxuICAgKiBIaW50OiBmdW5jdGlvbnMgd2lsbCBiZSBpZ25vcmVkXG4gICAqL1xuICBzdGF0aWMgaXNTdWJzZXQoYTogYW55LCBiOiBhbnkpIHtcbiAgICAvLyBFcXVhbFxuICAgIGlmIChhID09PSBiKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBEaWZmZXJlbnQgdHlwZVxuICAgIGlmICh0eXBlb2YgYSAhPT0gdHlwZW9mIGIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBQcm9jZXNzIGFycmF5XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKGEpKSB7XG4gICAgICAgIGlmIChIZWxwZXIuaXNTdWJzZXQodmFsdWUsIGJba2V5XSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIC8vIFByb2Nlc3Mgb2JqZWN0XG4gICAgaWYgKHR5cGVvZiBhID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgcGxhaW4gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHBsYWluKSkge1xuICAgICAgICBpZiAoSGVscGVyLmlzU3Vic2V0KHZhbHVlLCBiW2tleV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBFbHNlXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAoaGF2ZSBlcXVhbCBwcm9wZXJ0aWVzKVxuICAgKiBIaW50OiBmdW5jdGlvbnMgd2lsbCBiZSBpZ25vcmVkXG4gICAqL1xuICBzdGF0aWMgaXNFcXVhbChhOiBhbnksIGI6IGFueSkge1xuICAgIHJldHVybiBIZWxwZXIuaXNTdWJzZXQoYSwgYikgJiYgSGVscGVyLmlzU3Vic2V0KGIsIGEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcnN0IGxldmVsIGRpZmZlcmVuY2Ugb2YgdHdvIG9iamVjdHNcbiAgICogSGludDogZnVuY3Rpb25zIHdpbGwgYmUgaWdub3JlZCBhbmQgd2hlbiBhbiBhcnJheSBvciBhbiBvYmplY3QgaXMgZGlmZmVyZW50IHRoZSBob2xlIGFycmF5IG9yIG9iamVjdCB3aWxsIHVzZWQgYXMgcHJvcGVydHkgdmFsdWVcbiAgICpcbiAgICogQHJldHVybnMgUmVjb3JkPHN0cmluZywgYW55PiBPYmplY3Qgd2l0aCBwcm9wZXJ0aWVzIGZyb20gZmlyc3Qgb2JqZWN0XG4gICAqL1xuICBzdGF0aWMgZ2V0RGlmZihhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBiOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBjbG9uZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBsZXQgZmlyc3RPYmplY3QgPSBhO1xuICAgIGlmIChjbG9uZSkge1xuICAgICAgZmlyc3RPYmplY3QgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGEpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoZmlyc3RPYmplY3QpKSB7XG4gICAgICBpZiAoIUhlbHBlci5pc1N1YnNldCh2YWx1ZSwgYltrZXldKSkge1xuICAgICAgICByZXN1bHRba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHByb3BlcnRpZSBpcyB0eXBlIG9mIEhUTUxDb2xsZWN0aW9uIG9yIE5vZGVMaXN0XG4gICAqIFNlZSBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNzIzODM0NFxuICAgKlxuICAgKiBAcGFyYW0gbm9kZXNcbiAgICovXG4gIHN0YXRpYyBpc05vZGVMaXN0KG5vZGVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0cmluZ1JlcHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobm9kZXMpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdHlwZW9mIG5vZGVzID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAvXlxcW29iamVjdCAoSFRNTENvbGxlY3Rpb258Tm9kZUxpc3R8T2JqZWN0KVxcXSQvLnRlc3Qoc3RyaW5nUmVwcikgJiZcbiAgICAgICAgdHlwZW9mIG5vZGVzLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcbiAgICAgICAgKG5vZGVzLmxlbmd0aCA9PT0gMCB8fCAodHlwZW9mIG5vZGVzWzBdID09PSAnb2JqZWN0JyAmJiBub2Rlc1swXS5ub2RlVHlwZSA+IDApKVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,40 +0,0 @@
1
- import { Helper } from './helper.class';
2
- /**
3
- * Standard class
4
- * Other classes should extend the Standard class, if they offer own functions
5
- * If the extended class uses object properties with own map functions, it should implement its own map function
6
- */
7
- export class Standard {
8
- /**
9
- * Static map method
10
- */
11
- static map(data, item = new this()) {
12
- return item.map(data);
13
- }
14
- /**
15
- * Map data into an object
16
- */
17
- map(data) {
18
- return Helper.map(data, this);
19
- }
20
- /**
21
- * Clone object (and map additional data)
22
- */
23
- clone(mapData) {
24
- const current = JSON.parse(JSON.stringify(this));
25
- if (mapData) {
26
- Object.assign(current, mapData);
27
- }
28
- return new this.constructor().map(current);
29
- }
30
- /**
31
- * Compare this with another object
32
- * Hint: functions will be ignored and when an array or an object is different the hole array or object will used as property value
33
- *
34
- * @return Record<string, any> with properties of this object which are different
35
- */
36
- getDiff(compare, clone = true) {
37
- return Helper.getDiff(this, compare, clone);
38
- }
39
- }
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQuY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1iYXNlL3NyYy9saWIvYmFzZS9jbGFzc2VzL3N0YW5kYXJkLmNsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4Qzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDbkI7O09BRUc7SUFDSSxNQUFNLENBQUMsR0FBRyxDQUVmLElBQXlDLEVBQ3pDLE9BQVUsSUFBSSxJQUFJLEVBQUU7UUFFcEIsT0FBUSxJQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEdBQUcsQ0FBQyxJQUE0QztRQUNyRCxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxPQUFnRDtRQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sRUFBRTtZQUNYLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1NBQ2pDO1FBQ0QsT0FBTyxJQUFLLElBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTyxDQUFDLE9BQTRCLEVBQUUsUUFBaUIsSUFBSTtRQUNoRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuL2hlbHBlci5jbGFzcyc7XG5cbi8qKlxuICogU3RhbmRhcmQgY2xhc3NcbiAqIE90aGVyIGNsYXNzZXMgc2hvdWxkIGV4dGVuZCB0aGUgU3RhbmRhcmQgY2xhc3MsIGlmIHRoZXkgb2ZmZXIgb3duIGZ1bmN0aW9uc1xuICogSWYgdGhlIGV4dGVuZGVkIGNsYXNzIHVzZXMgb2JqZWN0IHByb3BlcnRpZXMgd2l0aCBvd24gbWFwIGZ1bmN0aW9ucywgaXQgc2hvdWxkIGltcGxlbWVudCBpdHMgb3duIG1hcCBmdW5jdGlvblxuICovXG5leHBvcnQgY2xhc3MgU3RhbmRhcmQge1xuICAvKipcbiAgICogU3RhdGljIG1hcCBtZXRob2RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbWFwPFQgZXh0ZW5kcyBTdGFuZGFyZD4oXG4gICAgdGhpczogbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVCxcbiAgICBkYXRhOiBQYXJ0aWFsPFQ+IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgICBpdGVtOiBUID0gbmV3IHRoaXMoKVxuICApOiBUIHtcbiAgICByZXR1cm4gKGl0ZW0gYXMgYW55KS5tYXAoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwIGRhdGEgaW50byBhbiBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBtYXAoZGF0YTogUGFydGlhbDx0aGlzPiB8IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB0aGlzIHtcbiAgICByZXR1cm4gSGVscGVyLm1hcChkYXRhLCB0aGlzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9uZSBvYmplY3QgKGFuZCBtYXAgYWRkaXRpb25hbCBkYXRhKVxuICAgKi9cbiAgcHVibGljIGNsb25lKG1hcERhdGE/OiBQYXJ0aWFsPHRoaXM+IHwgeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHRoaXMge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMpKTtcbiAgICBpZiAobWFwRGF0YSkge1xuICAgICAgT2JqZWN0LmFzc2lnbihjdXJyZW50LCBtYXBEYXRhKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyAodGhpcyBhcyBhbnkpLmNvbnN0cnVjdG9yKCkubWFwKGN1cnJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBhcmUgdGhpcyB3aXRoIGFub3RoZXIgb2JqZWN0XG4gICAqIEhpbnQ6IGZ1bmN0aW9ucyB3aWxsIGJlIGlnbm9yZWQgYW5kIHdoZW4gYW4gYXJyYXkgb3IgYW4gb2JqZWN0IGlzIGRpZmZlcmVudCB0aGUgaG9sZSBhcnJheSBvciBvYmplY3Qgd2lsbCB1c2VkIGFzIHByb3BlcnR5IHZhbHVlXG4gICAqXG4gICAqIEByZXR1cm4gUmVjb3JkPHN0cmluZywgYW55PiB3aXRoIHByb3BlcnRpZXMgb2YgdGhpcyBvYmplY3Qgd2hpY2ggYXJlIGRpZmZlcmVudFxuICAgKi9cbiAgcHVibGljIGdldERpZmYoY29tcGFyZTogUmVjb3JkPHN0cmluZywgYW55PiwgY2xvbmU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgcmV0dXJuIEhlbHBlci5nZXREaWZmKHRoaXMsIGNvbXBhcmUsIGNsb25lKTtcbiAgfVxufVxuIl19