@wavemaker/app-ng-runtime 12.0.0-next.141131 → 12.0.0-next.141134

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 (326) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +54 -39
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -3
  12. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  15. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  17. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  18. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  21. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
  22. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  26. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  29. app-ng-runtime/build-task/fesm2022/index.mjs +54 -39
  30. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  31. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  32. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  33. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  34. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +53 -13
  36. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +11 -4
  37. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +55 -12
  38. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +2 -2
  39. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +55 -12
  40. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  41. app-ng-runtime/components/base/bundles/index.umd.js +22 -6
  42. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  43. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
  44. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +15 -5
  45. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -2
  46. app-ng-runtime/components/base/fesm2022/index.mjs +23 -7
  47. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  48. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  49. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  50. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +1 -0
  51. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  52. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
  53. app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
  54. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  55. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  56. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
  57. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  58. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  59. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  60. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  61. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  62. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  63. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  64. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  65. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  66. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  67. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
  68. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  69. app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
  70. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  71. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  72. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  73. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  74. app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
  75. app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
  76. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
  77. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  78. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  79. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  80. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
  81. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  82. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
  83. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  84. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  85. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  86. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  87. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  88. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  89. app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
  90. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
  91. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  92. app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
  93. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  94. app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
  95. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
  97. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  100. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  101. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  104. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  105. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
  108. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
  109. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
  112. app-ng-runtime/components/data/form/bundles/index.umd.js +27 -11
  113. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -14
  114. app-ng-runtime/components/data/form/fesm2022/index.mjs +27 -13
  115. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -0
  117. app-ng-runtime/components/data/list/bundles/index.umd.js +2 -2
  118. app-ng-runtime/components/data/list/esm2022/list.component.mjs +3 -3
  119. app-ng-runtime/components/data/list/fesm2022/index.mjs +2 -2
  120. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  121. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  122. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  123. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  124. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  125. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  126. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  127. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  128. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  129. app-ng-runtime/components/data/table/bundles/index.umd.js +45 -11
  130. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  131. app-ng-runtime/components/data/table/esm2022/table-row/table-row.props.mjs +2 -2
  132. app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
  133. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  134. app-ng-runtime/components/data/table/fesm2022/index.mjs +46 -12
  135. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  136. app-ng-runtime/components/data/table/table.component.d.ts +8 -1
  137. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  138. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  139. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  140. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  141. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  142. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  143. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  144. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +20 -3
  146. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  147. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +13 -1
  148. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  149. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +20 -3
  150. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  151. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  152. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  153. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  154. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  155. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  156. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  157. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  158. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  159. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  160. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  161. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  162. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  163. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  164. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  165. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  166. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
  168. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
  169. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  170. app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
  171. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  173. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  174. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  175. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  176. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  177. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  179. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  180. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  181. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  182. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  183. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  184. app-ng-runtime/components/input/default/base-form-custom.component.d.ts +2 -1
  185. app-ng-runtime/components/input/default/bundles/index.umd.js +219 -114
  186. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  187. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  188. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +2 -2
  189. app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +6 -1
  190. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  191. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  192. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  193. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  194. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +23 -16
  196. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +5 -5
  197. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  198. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  199. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +30 -23
  200. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +60 -30
  201. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  202. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  203. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  204. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  205. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  206. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  207. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  208. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  209. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  210. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +51 -14
  211. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  212. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  213. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  214. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  215. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +9 -6
  216. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  217. app-ng-runtime/components/input/default/fesm2022/index.mjs +219 -114
  218. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  219. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  220. app-ng-runtime/components/input/default/select/select.component.d.ts +4 -4
  221. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  222. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  223. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  224. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  225. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  226. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  227. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +4 -2
  228. app-ng-runtime/components/input/epoch/bundles/index.umd.js +15 -9
  229. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  230. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  231. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
  232. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  233. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +10 -7
  234. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  235. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  236. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  237. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +15 -9
  238. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  239. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  240. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +208 -95
  241. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +206 -98
  242. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
  243. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +209 -96
  244. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  245. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +17 -11
  246. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  247. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  248. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  249. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  250. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  251. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  252. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +10 -8
  253. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
  254. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  255. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
  256. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
  257. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  258. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  259. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  260. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  261. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  263. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  265. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  266. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  267. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  268. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  270. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  271. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  272. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  273. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  274. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  275. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  276. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  278. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  279. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  280. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  281. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  282. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  283. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  284. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  287. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/core/bundles/index.umd.js +18 -15
  290. app-ng-runtime/core/enums/enums.d.ts +2 -2
  291. app-ng-runtime/core/esm2022/enums/enums.mjs +2 -2
  292. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  293. app-ng-runtime/core/esm2022/utils/build-utils.mjs +12 -12
  294. app-ng-runtime/core/esm2022/utils/utils.mjs +5 -4
  295. app-ng-runtime/core/fesm2022/index.mjs +18 -16
  296. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  297. app-ng-runtime/core/public_api.d.ts +1 -1
  298. app-ng-runtime/core/utils/utils.d.ts +1 -0
  299. app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
  300. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  301. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  302. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  303. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  304. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  305. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  306. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  307. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  308. app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
  309. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
  310. app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
  311. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  312. app-ng-runtime/package.json +1 -1
  313. app-ng-runtime/runtime/base/bundles/index.umd.js +16 -5
  314. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  315. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +2 -0
  316. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  317. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +10 -1
  318. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  319. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  320. app-ng-runtime/runtime/base/fesm2022/index.mjs +16 -5
  321. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  322. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  323. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  324. app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  325. app-ng-runtime/scripts/datatable/datatable.js +54 -43
  326. app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../projects/mobile/core/src/services/device-file.service.ts","../../../../projects/mobile/core/src/services/device-file-download.service.ts","../../../../projects/mobile/core/src/services/device-file-cache.service.ts","../../../../projects/mobile/core/src/services/device-file-opener.service.ts","../../../../projects/mobile/core/src/services/device.service.ts","../../../../projects/mobile/core/src/native.xhr.ts","../../../../projects/mobile/core/src/services/network.service.ts","../../../../projects/mobile/core/src/core.module.ts","../../../../projects/mobile/core/src/services/device-file-upload.service.ts","../../../../projects/mobile/core/src/services/ext-app-message.service.ts","../../../../projects/mobile/core/src/index.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { AppVersion } from '@awesome-cordova-plugins/app-version/ngx';\nimport {File} from '@awesome-cordova-plugins/file/ngx';\n\nimport { isAndroid, noop } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport {now} from \"lodash-es\";\n\ndeclare const cordova;\ndeclare const resolveLocalFileSystemURL;\ndeclare const FileReader;\n\nexport enum FileType {\n AUDIO = 'AUDIO',\n DOCUMENT = 'DOCUMENT',\n IMAGE = 'IMAGE',\n VIDEO = 'VIDEO'\n}\n\nconst IMAGE_EXTENSIONS = ['gif', 'jpg', 'png', 'svg', 'webp', 'jpeg', 'jif', 'jfif', 'jfi'],\n VIDEO_EXTENSIONS = ['mp4', 'mpg', 'avi', 'wma', 'mp2', '3gp', '3g2', 'm4p', 'm4v', 'mpg', 'fiv'],\n AUDIO_EXTENSIONS = ['mp3', 'm4p', 'aiff', 'aa', 'aax', 'wma'];\n\nconst APP_FOLDER_STRUCTURE = [{\n name : '{APP_NAME}',\n children : [{\n name : 'Media',\n children : [\n {\n name : '{APP_NAME} Images',\n fileType : FileType.IMAGE\n },\n {\n name : '{APP_NAME} Audio',\n fileType : FileType.AUDIO\n },\n {\n name : '{APP_NAME} Vedios',\n fileType : FileType.VIDEO\n },\n {\n name : '{APP_NAME} Documents',\n fileType : FileType.DOCUMENT\n }\n ]\n }]\n}];\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'DeviceFileService';\n\n private _appName: string;\n private _fileTypeVsPathMap = {\n 'temporary' : {},\n 'persistent' : {}\n };\n private _uploadDir: string;\n\n constructor(private cordovaAppVersion: AppVersion, private cordovaFile: File) {\n\n }\n\n public addMediaToGallery(filePath: string): Promise<void> {\n if (isAndroid() && this.isPersistentType(filePath)) {\n return new Promise((resolve, reject) => {\n cordova.plugins.MediaScannerPlugin.scanFile(filePath, resolve, reject);\n });\n }\n return Promise.resolve();\n }\n\n public appendToFileName(fileName: string, attachment?: string): string {\n let splits;\n attachment = attachment || '_' + now();\n fileName = fileName || 'noname';\n splits = fileName.split('.');\n if (splits.length > 1) {\n splits[splits.length - 2] = splits[splits.length - 2] + attachment;\n return splits.join('.');\n }\n return fileName + attachment;\n }\n\n public clearTemporaryStorage(): Promise<any> {\n return this.cordovaFile.removeRecursively(this.getTemporaryRootPath() + this._appName + '/', 'Media');\n }\n\n public copy(persistent: boolean, sourceFilePath: string) {\n const sourceFilename = sourceFilePath.split('/').pop(),\n destFolder = this.findFolderPath(persistent, sourceFilename),\n sourceFolder = sourceFilePath.substring(0, sourceFilePath.lastIndexOf('/'));\n return this.newFileName(destFolder, sourceFilename)\n .then( destFilename => this.cordovaFile.copyFile(sourceFolder, sourceFilename, destFolder, destFilename)\n .then(() => destFolder + destFilename));\n }\n\n public findFolderPath(persistent: boolean, fileName: string) {\n const typeMap = persistent ? this._fileTypeVsPathMap.persistent : this._fileTypeVsPathMap.temporary,\n fileType = this.findFileType(fileName);\n return typeMap[fileType] || typeMap[FileType.DOCUMENT];\n }\n\n public getPersistentRootPath(): string {\n return cordova.file.dataDirectory;\n }\n\n public getTemporaryRootPath(): string {\n return cordova.file.cacheDirectory;\n }\n\n public getUploadDirectory(): string {\n return this._uploadDir;\n }\n\n public isPersistentType(filePath: string): boolean {\n return filePath.startsWith(this.getPersistentRootPath());\n }\n\n public isValidPath(filePath: string): Promise<string> {\n let folder, fileName;\n if (!filePath) {\n return Promise.reject('File path is required');\n }\n folder = filePath.substring(0, filePath.lastIndexOf('/') + 1);\n fileName = filePath.split('/').pop();\n return this.cordovaFile.checkFile(folder, fileName)\n .then(() => filePath);\n }\n\n public listFiles(folder: string, search: string | RegExp): Promise<Map<string, any>[]> {\n return new Promise((resolve, reject) => {\n resolveLocalFileSystemURL(folder, directory => {\n if (!directory.files) {\n directory.createReader().readEntries(entries => {\n if (search) {\n entries = entries.filter(e => e.name.match(search));\n }\n entries = entries.map( e => {\n return {\n name : e.name,\n isDirectory : e.isDirectory,\n path : e.nativeURL\n };\n });\n resolve(entries);\n }, reject);\n } else {\n resolve([]);\n }\n }, reject);\n });\n }\n\n public newFileName(folder: string, fileName: string): Promise<string> {\n return this.cordovaFile.checkFile(folder, fileName)\n .then(() => {\n const extIndex = fileName.lastIndexOf('.');\n if (extIndex > 0) {\n fileName = fileName.substring(0, extIndex) + '_' + now() + '.' + fileName.substring(extIndex + 1);\n } else {\n fileName = fileName + '_' + now();\n }\n return this.newFileName(folder, fileName);\n }, () => fileName);\n }\n\n public removeFile(filePath: string): Promise<any> {\n const i = filePath.lastIndexOf('/'),\n dir = filePath.substring(0, i),\n file = filePath.substring(i + 1);\n return this.cordovaFile.removeFile(dir, file);\n }\n\n /**\n * removes the directory at the specified location.\n *\n * @param dirPath absolute path of directory\n */\n public removeDir(dirPath: string): Promise<any> {\n const i = dirPath.lastIndexOf('/'),\n parentdir = dirPath.substring(0, i + 1),\n dir = dirPath.substring(i + 1),\n movedDir = dir + now();\n return this.cordovaFile.checkDir(parentdir, dir)\n .then(() => {\n /**\n * If folder is remove directly without moving, then INVALID_MODIFICATION_ERR is thrown in android\n * when a copy operation is done with the same directory name. To avoid this, directory will be moved\n * first and removed.\n */\n return this.cordovaFile.moveDir(parentdir, dir, parentdir, movedDir)\n .then(() => this.cordovaFile.removeDir(parentdir, movedDir));\n }).catch(noop);\n }\n\n public start(): Promise<any> {\n /**\n * Default READ_CHUNK_SIZE is 256 Kb. But with that setting readJson method is failing. This is an issue\n * with cordova file plugin. So, increasing it to 512 Kb to read large database schema files (>256 Kb).\n */\n FileReader.READ_CHUNK_SIZE = 512 * 1024;\n return Promise.resolve().then(() => {\n return this.cordovaAppVersion.getAppName();\n }).then(appName => {\n const promises = [];\n this._appName = appName;\n promises.push(this.createFolderIfNotExists(this.getTemporaryRootPath(),\n APP_FOLDER_STRUCTURE,\n this._fileTypeVsPathMap.temporary));\n promises.push(this.createFolderIfNotExists(this.getPersistentRootPath(),\n APP_FOLDER_STRUCTURE,\n this._fileTypeVsPathMap.persistent));\n promises.push(this.setupUploadDirectory());\n return Promise.all(promises);\n }).then(() => {\n if (isAndroid()) {\n // this is necessary to prevent multiple file permission popup.\n return this.cordovaFile.readAsText(cordova.file.externalRootDirectory, 'random-file-for-permission').catch(noop);\n }\n });\n }\n\n public getServiceName() {\n return DeviceFileService.SERVICE_NAME;\n }\n\n private createFolderIfNotExists(parent: string, folders, fileTypeLocationMap) {\n const childPromises = [];\n if (folders) {\n folders.forEach(folder => {\n let folderPath;\n folder.name = folder.name.replace('{APP_NAME}', this._appName);\n folderPath = parent + folder.name + '/';\n if (folder.fileType && !fileTypeLocationMap[folder.fileType]) {\n fileTypeLocationMap[folder.fileType] = folderPath;\n }\n const p = this.cordovaFile.createDir(parent, folder.name, false)\n .then(() => this.createFolderIfNotExists(folderPath, folder.children, fileTypeLocationMap),\n () => this.createFolderIfNotExists(folderPath, folder.children, fileTypeLocationMap));\n childPromises.push(p);\n });\n }\n if (childPromises.length > 0) {\n return Promise.all(childPromises);\n }\n }\n\n private findFileType(fileName) {\n let extension;\n if (fileName.indexOf('.') > 0) {\n extension = fileName.split('.').pop().toLowerCase();\n if (IMAGE_EXTENSIONS.some(a => a === extension)) {\n return FileType.IMAGE;\n }\n if (VIDEO_EXTENSIONS.some(a => a === extension)) {\n return FileType.VIDEO;\n }\n if (AUDIO_EXTENSIONS.some(a => a === extension)) {\n return FileType.AUDIO;\n }\n }\n return FileType.DOCUMENT;\n }\n\n private setupUploadDirectory() {\n const uploadsDirName = 'uploads',\n appDir = cordova.file.dataDirectory;\n return this.cordovaFile.checkDir(appDir, uploadsDirName)\n .then(() => this._uploadDir = appDir + uploadsDirName,\n () => this.cordovaFile.createDir(appDir, uploadsDirName, true)\n .then(() => this._uploadDir = appDir + uploadsDirName));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpEvent,\n HttpEventType,\n HttpHeaders,\n HttpRequest,\n HttpResponse\n} from '@angular/common/http';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\nimport { Observer } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { FileExtensionFromMimePipe } from '@wm/components/base';\n\nimport { DeviceFileService } from './device-file.service';\nimport {endsWith, find, isArray, isEmpty} from \"lodash-es\";\n\nconst MAX_CONCURRENT_DOWNLOADS = 2;\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileDownloadService {\n static readonly SERVICE_NAME = 'DeviceFileDownloadService';\n private _downloadQueue = [];\n private _concurrentDownloads = 0;\n\n constructor(\n private cordovaFile: File,\n private http: HttpClient,\n private deviceFileService: DeviceFileService,\n public fileExtensionFromMimePipe: FileExtensionFromMimePipe) {\n\n }\n\n public download(url: string, isPersistent: boolean, destFolder?: string, destFile?: string, progressObserver?: Observer<any>, headers?: any): Promise<string> {\n return this.addToDownloadQueue(url, isPersistent, destFolder, destFile, progressObserver, headers);\n }\n\n // Adds to download request queue\n private addToDownloadQueue(url: string, isPersistent: boolean, destFolder?: string, destFile?: string, progressObserver?: Observer<any>, headers?: any): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n this._downloadQueue.push({\n url: url,\n headers: headers,\n isPersistent: isPersistent,\n destFolder: destFolder,\n destFile: destFile,\n resolve: resolve,\n reject: reject,\n progressObserver: progressObserver\n });\n if (this._concurrentDownloads < MAX_CONCURRENT_DOWNLOADS) {\n this.downloadNext();\n }\n });\n }\n\n private downloadNext(): void {\n if (this._downloadQueue.length > 0) {\n const req = this._downloadQueue.shift();\n this.downloadFile(req).then(filePath => {\n req.resolve(filePath);\n this.downloadNext();\n }, () => {\n req.reject();\n this.downloadNext();\n });\n }\n }\n\n // Start processing a download request\n private downloadFile(req): Promise<string> {\n let filePath, blob;\n this._concurrentDownloads++;\n\n return this.sendHttpRequest(req.url, req.progressObserver, req.headers).then((e) => {\n blob = (e as HttpResponse<Blob>).body;\n return this.getFileName(e, req, blob.type);\n }).then((fileName) => {\n if (!req.destFolder) {\n req.destFolder = this.deviceFileService.findFolderPath(req.isPersistent, fileName);\n }\n filePath = req.destFolder + fileName;\n return this.cordovaFile.writeFile(req.destFolder, fileName, blob);\n }).then(() => {\n this._concurrentDownloads--;\n return filePath;\n }, (response) => {\n this._concurrentDownloads--;\n this.cordovaFile.removeFile(req.destFolder, req.destFile);\n return Promise.reject(`Failed to downloaded ${req.url} with error ${JSON.stringify(response)}`);\n });\n }\n\n /**\n * Returns the filename\n * 1. if filename exists just return\n * 2. retrieve the filename from response headers i.e. content-disposition\n * 3. pick the filename from the end of the url\n * If filename doesnt contain the extension then extract using mimeType.\n * Generates newFileName if filename already exists.\n * @param response, download file response\n * @param req, download request params\n * @param mimeType mime type of file\n * @returns {Promise<string>}\n */\n private getFileName(response, req, mimeType) {\n const disposition = response.headers.get('Content-Disposition');\n let filename = req.destFile;\n if (!filename && disposition && disposition.indexOf('attachment') !== -1) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const matches = filenameRegex.exec(disposition);\n if (matches !== null && matches[1]) {\n filename = matches[1].replace(/['\"]/g, '');\n }\n }\n if (!filename) {\n filename = req.url.split('?')[0];\n filename = filename.split('/').pop();\n }\n\n let fileExtension;\n if (mimeType) {\n fileExtension = this.fileExtensionFromMimePipe.transform(mimeType);\n }\n let hasFileExtension;\n // one or more file extensions can have same mimeType then loop over the file extensions.\n if (isArray(fileExtension) && !isEmpty(fileExtension)) {\n hasFileExtension = find(fileExtension, extension => endsWith(filename, extension));\n //File extension will be array for some file formats\n fileExtension = fileExtension[0];\n }\n if (!hasFileExtension && !endsWith(filename, fileExtension)) {\n filename = filename + fileExtension;\n }\n\n const folder = req.destFolder || this.deviceFileService.findFolderPath(req.isPersistent, filename);\n return this.deviceFileService.newFileName(folder, filename);\n }\n\n private sendHttpRequest(url: string, progressObserver: Observer<HttpEvent<any>>, headers?: any): Promise<HttpResponse<any>> {\n let reqHeaders = new HttpHeaders();\n\n // headers\n if (headers) {\n Object.entries(headers).forEach(([k, v]) => reqHeaders = reqHeaders.append(k, v as string));\n }\n const req = new HttpRequest('GET', url, {\n headers: reqHeaders,\n responseType: 'blob',\n reportProgress: progressObserver != null\n });\n return this.http.request(req)\n .pipe(\n map(e => {\n if (progressObserver && progressObserver.next && e.type === HttpEventType.DownloadProgress) {\n progressObserver.next(e);\n }\n return e;\n }),\n filter(e => e.type === HttpEventType.Response),\n map( e => {\n if (progressObserver && progressObserver.complete) {\n progressObserver.complete();\n }\n return (e as HttpResponse<any>);\n })\n )\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { noop } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport { DeviceFileService } from './device-file.service';\nimport { DeviceFileDownloadService } from './device-file-download.service';\n\ndeclare const cordova;\n\nconst CACHE_FILE_INDEX_NAME = 'appCache.json';\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileCacheService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'DeviceFileCacheService';\n private _cacheIndex = {};\n private _writing;\n private _saveCache;\n\n public constructor(private cordovaFile: File,\n private fileService: DeviceFileService,\n private downloadService: DeviceFileDownloadService) {\n\n }\n\n public addEntry(url, filepath): void {\n this._cacheIndex[url] = filepath;\n this.writeCacheIndexToFile();\n }\n\n public getLocalPath(url: string, downloadIfNotExists: boolean, isPersistent: boolean, forceRefresh = false): Promise<string> {\n if (forceRefresh) {\n return this.download(url, isPersistent);\n }\n const filePath = this._cacheIndex[url];\n return this.fileService.isValidPath(filePath)\n .catch(() => {\n delete this._cacheIndex[url];\n if (downloadIfNotExists) {\n return this.download(url, isPersistent);\n } else {\n return Promise.reject('No cache entry for ' + url);\n }\n });\n }\n\n public invalidateCache(): void {\n this._cacheIndex = {};\n this.writeCacheIndexToFile();\n this.fileService.clearTemporaryStorage();\n }\n\n public start(): Promise<void> {\n return this.cordovaFile.readAsText(cordova.file.dataDirectory, CACHE_FILE_INDEX_NAME)\n .then(content => {\n this._cacheIndex = JSON.parse(content);\n }, noop);\n }\n\n public getServiceName() {\n return DeviceFileCacheService.SERVICE_NAME;\n }\n\n private download(url: string, isPersistent: boolean): Promise<string> {\n return this.downloadService.download(url, isPersistent)\n .then(filepath => {\n this._cacheIndex[url] = filepath;\n this.writeCacheIndexToFile();\n return filepath;\n });\n }\n\n private writeCacheIndexToFile(): void {\n if (!this._writing) {\n this._writing = true;\n this.cordovaFile.writeFile(cordova.file.dataDirectory, CACHE_FILE_INDEX_NAME, JSON.stringify(this._cacheIndex),\n {\n replace: true\n })\n .catch(noop)\n .then(() => {\n if (this._saveCache) {\n setTimeout(() => {\n this._writing = false;\n this._saveCache = false;\n this.writeCacheIndexToFile();\n }, 5000);\n } else {\n this._writing = false;\n }\n });\n } else {\n this._saveCache = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\nimport { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';\n\nimport { isAndroid, isIos, noop } from '@wm/core';\n\nimport { DeviceFileCacheService } from './device-file-cache.service';\nimport { DeviceFileDownloadService } from './device-file-download.service';\nimport { DeviceFileService } from './device-file.service';\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport {now} from \"lodash-es\";\n\ndeclare const cordova;\ndeclare const resolveLocalFileSystemURL;\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileOpenerService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'DeviceFileOpenerService';\n\n private _downloadsFolder;\n\n constructor(private cordovaFile: File,\n private cordovaFileOpener: FileOpener,\n private fileService: DeviceFileService,\n private cacheService: DeviceFileCacheService,\n private downloadService: DeviceFileDownloadService) {\n\n }\n\n // this method returns the mime type of file from the filePath.\n public getFileMimeType(filePath): Promise<any> {\n return new Promise<any> ((resolve) => {\n // Read the file entry from the file URL\n resolveLocalFileSystemURL(filePath, fileEntry => {\n fileEntry.file(metadata => {\n resolve(metadata.type);\n });\n });\n });\n }\n\n public openRemoteFile(url: string, extension: string, fileName?: string, headers?: any): Promise<void> {\n return this.getLocalPath(url, extension, fileName, headers)\n .then(filePath => {\n return this.getFileMimeType(filePath).then(type => {\n return this.cordovaFileOpener.open(filePath, type);\n });\n });\n }\n\n public start(): Promise<void> {\n let downloadsParent;\n if (isAndroid()) {\n downloadsParent = cordova.file.externalCacheDirectory;\n } else if (isIos()) {\n downloadsParent = cordova.file.documentsDirectory + 'NoCloud/';\n } else {\n downloadsParent = cordova.file.dataDirectory;\n }\n return this.cordovaFile.createDir(downloadsParent, 'downloads', false)\n .catch(noop)\n .then(() => {\n this._downloadsFolder = downloadsParent + 'downloads/';\n });\n }\n\n public getServiceName() {\n return DeviceFileCacheService.SERVICE_NAME;\n }\n\n private generateFileName(url: string, extension: string): string {\n let fileName = url.split('?')[0];\n fileName = fileName.split('/').pop();\n fileName = this.fileService.appendToFileName(fileName, '' + now());\n if (extension) {\n return fileName.split('.')[0] + '.' + extension;\n }\n return fileName;\n }\n\n private getLocalPath(url: string, extension?: string, filename?: string, headers?: any): Promise<string> {\n return new Promise( (resolve, reject) => {\n return this.cacheService.getLocalPath(url, false, false)\n .then( filePath => {\n let fileName, i, j, fromDir, fromFile;\n // Is it part of downloaded folder.\n if (filePath.startsWith(this._downloadsFolder)) {\n resolve(filePath);\n } else {\n //Extract extension from file downloaded earlier.\n j = filePath.lastIndexOf('.');\n extension = filePath.substring(j + 1);\n fileName = filename || this.generateFileName(url, extension);\n i = filePath.lastIndexOf('/');\n fromDir = filePath.substring(0, i);\n fromFile = filePath.substring(i + 1);\n this.cordovaFile.copyFile(fromDir, fromFile, this._downloadsFolder, fileName)\n .then(() => {\n const newFilePath = this._downloadsFolder + fileName;\n this.cacheService.addEntry(url, newFilePath);\n resolve(newFilePath);\n });\n }\n }).catch(() => {\n this.downloadService.download(url, false, this._downloadsFolder, filename, undefined, headers)\n .then(filePath => {\n this.cacheService.addEntry(url, filePath);\n resolve(filePath);\n }, reject);\n });\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {File} from '@awesome-cordova-plugins/file/ngx';\n\nimport { $appDigest, hasCordova, noop, fetchContent, isIos } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport {forEach} from \"lodash-es\";\n\ndeclare const cordova;\n\nconst REGISTRY_FILE_NAME = 'registry.info';\n\nexport interface Config {\n baseUrl: string;\n customUrlScheme: string;\n customUrl: string;\n buildTime: number;\n enableSSLPinning: boolean;\n offlineStorage: boolean;\n useNativeXHR: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceService {\n static readonly SERVICE_NAME = 'DeviceService';\n\n private _registry = {};\n private _isReady = false;\n private _whenReadyPromises = [];\n private _backBtnTapListeners = [];\n private _startUpServices: IDeviceStartUpService[] = [];\n private _config: Config = {} as Config;\n\n public constructor(private file: File) {\n const maxWaitTime = 10;\n setTimeout(() => {\n if (!this._isReady) {\n console.warn(`Device is not ready even after ${maxWaitTime} seconds`);\n console.warn('Waiting For %O', this._startUpServices.map(i => i.getServiceName()));\n }\n }, maxWaitTime * 1000);\n document.addEventListener('backbutton', this.executeBackTapListeners.bind(this));\n if (hasCordova()) {\n const port = location.port ? ':' + location.port : '';\n const configUrl = `${location.protocol}//${location.hostname}${port}${isIos() ? '' : '/_www'}/config.json`;\n fetchContent('json', configUrl, true, (response => {\n if (!response.error && response.baseUrl) {\n this._config = response;\n }\n }));\n }\n }\n\n public executeBackTapListeners($event) {\n forEach(this._backBtnTapListeners, fn => {\n return fn($event) !== false;\n });\n // explicitly applying the digest cycle as the backbutton listener is not rendering the page content.\n // This is because zone is not run (there is no change detection)\n // https://weblogs.thinktecture.com/thomas/2017/02/cordova-vs-zonejs-or-why-is-angulars-document-event-listener-not-in-a-zone.html\n $appDigest();\n }\n\n public addStartUpService(service: IDeviceStartUpService) {\n this._startUpServices.push(service);\n }\n\n public onBackButtonTap(fn: ($event) => boolean) {\n this._backBtnTapListeners.unshift(fn);\n return () => {\n const i = this._backBtnTapListeners.indexOf(fn);\n if (i >= 0) {\n this._backBtnTapListeners.splice(i, 1);\n }\n };\n }\n\n public start() {\n if (this._isReady || this._startUpServices.length === 0) {\n this._isReady = true;\n return Promise.resolve();\n } else {\n return new Promise<void>((resolve) => {\n if (hasCordova()) {\n document.addEventListener('deviceready', () => resolve(), false);\n } else {\n resolve();\n }\n }).then(() => {\n if (window['cordova']) {\n return this.file.readAsText(cordova.file.dataDirectory, REGISTRY_FILE_NAME)\n .then(content => this._registry = JSON.parse(content), noop);\n }\n }).then(() => {\n return Promise.all(this._startUpServices.map(s => {\n return s.start().catch((error) => {\n console.error('%s failed to start due to: %O', s.getServiceName(), error);\n return Promise.reject(error);\n });\n }));\n }).then(() => {\n window['wmDeviceReady'] = true;\n document.dispatchEvent(new CustomEvent('wmDeviceReady'));\n this._startUpServices.length = 0;\n this._whenReadyPromises.forEach(fn => fn());\n this._isReady = true;\n });\n }\n }\n\n public getServiceName() {\n return DeviceService.SERVICE_NAME;\n }\n\n public whenReady(): Promise<void> {\n if (this._isReady) {\n return Promise.resolve();\n } else {\n return new Promise<void>((resolve) => {\n this._whenReadyPromises.push(resolve);\n });\n }\n }\n\n public getBaseUrl() {\n return this._config.baseUrl === 'http://NOSERVERREQUIRED.com' ? 'NONE' : this._config.baseUrl;\n }\n\n public isAppConnectedToPreview() {\n return this._config.customUrl !== this._config.baseUrl && this.getBaseUrl() !== 'NONE';\n }\n\n public getConfig(): Config {\n return this._config;\n }\n\n public useNativeXHR() {\n return (isIos() || this._config.useNativeXHR === true)\n && hasCordova()\n && cordova.plugin\n && cordova.plugin.http;\n }\n\n /**\n * @returns {Promise<number>} promise resolved with the app build time\n */\n public getAppBuildTime(): Promise<number> {\n return Promise.resolve(this._config.buildTime);\n }\n\n /**\n * Stores an entry that survives app restarts and updates.\n *\n * @param {string} key\n * @param {Object} value\n * @returns {Promise<any>}\n */\n public storeEntry(key: string, value: Object): Promise<any> {\n this._registry[key] = value;\n return this.file.writeFile(cordova.file.dataDirectory,\n REGISTRY_FILE_NAME,\n JSON.stringify(this._registry),\n { replace: true });\n }\n\n /**\n * @param {string} key\n * @returns {any} entry corresponding to the key\n */\n public getEntry(key: string): any {\n return this._registry[key];\n }\n}\n","import { isIos } from '@wm/core';\n\nconst _XMLHttpRequest = window['XMLHttpRequest'];\nconst cordova = window['cordova'];\n\n\nconst enum EVENT {\n LOAD_START = 'loadstart',\n LOAD = 'load',\n LOAD_END = 'loadend',\n PROGRESS = 'progress',\n ERROR = 'error',\n ABORT = 'abort'\n}\n\nconst STATUS_TEXT = {\n '100': '100 Continue',\n '101': '101 Switching Protocol',\n '102': '102 Processing (WebDAV)',\n '103': '103 Early Hints',\n\n '200': '200 OK',\n '201': '201 Created',\n '202': '202 Accepted',\n '203': '203 Non-Authoritative Information',\n '204': '204 No Content',\n '205': '205 Reset Content',\n '206': '206 Partial Content',\n '207': '207 Multi-Status (WebDAV)',\n '208': '208 Already Reported (WebDAV)',\n '226': '226 IM Used (HTTP Delta encoding)',\n\n '300': '300 Multiple Choice',\n '301': '301 Moved Permanently',\n '302': '302 Found',\n '303': '303 See Other',\n '304': '304 Not Modified',\n '305': '305 Use Proxy',\n '306': '306 unused',\n '307': '307 Temporary Redirect',\n '308': '308 Permanent Redirect'\n};\n\nclass Internals {\n xhr = new _XMLHttpRequest();\n method = 'GET';\n requestHeaders = {};\n responseHeaders = {};\n responseHeaderText = '';\n url = '';\n async = true;\n listeners = {};\n\n constructor(public nXhr: NativeXMLHttpRequest) {}\n\n public triggerListeners(eventName: string, data?: any): void {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(function (l) {\n l.apply(window, data);\n });\n }\n }\n\n public copyNativeResponse(res): void {\n this.nXhr.status = res.status;\n this.nXhr.statusText = res.statusText || res.status;\n this.nXhr.response = res.data;\n this.nXhr.responseType = (res.headers && res.headers['content-type']) || 'plain/text';\n this.nXhr.responseURL = res.responseURL;\n this.nXhr.responseXML = res.responseXML;\n this.nXhr.responseText = (res.data && res.data.toString()) || res.error;\n this.responseHeaderText = ((): string => {\n const headers = [];\n for (let k in res.headers) {\n headers.push(k + ': ' + res.headers[k]);\n }\n return headers.join('\\r\\n');\n })();\n }\n\n public copyXMLHttpResponse(req: any): void {\n this.nXhr.status = req.status;\n this.nXhr.statusText = req.statusText;\n this.nXhr.response = req.response;\n this.nXhr.responseType = req.responseType;\n this.nXhr.responseURL = req.responseURL;\n this.nXhr.responseXML = req.responseXML;\n this.nXhr.responseText = req.responseText;\n this.responseHeaderText = req.getAllResponseHeaders();\n this.nXhr.getResponseHeader = header => req.getResponseHeader(header);\n }\n\n public sendViaXhr(body) {\n const self = this;\n this.xhr.onreadystatechange = this.nXhr.onreadystatechange;\n this.xhr.onload = function() {\n self.copyXMLHttpResponse(self.xhr);\n if (self.nXhr.onload) {\n self.nXhr.onload.apply(self.nXhr, arguments);\n }\n };\n this.xhr.onerror = this.nXhr.onerror;\n if (!this.async) {\n this.xhr.ontimeout = this.nXhr.ontimeout;\n this.xhr.timeout = this.nXhr.timeout;\n }\n this.xhr.withCredentials = this.nXhr.withCredentials;\n for (let k in this.listeners) {\n this.xhr.addEventListener(k, e => {\n this.copyXMLHttpResponse(this.xhr);\n this.triggerListeners(e.type);\n });\n }\n this.xhr.send(body);\n }\n\n public close() {\n for (let k in this.listeners) {\n this.listeners[k].length = 0;\n }\n }\n}\n\nexport class NativeXMLHttpRequest {\n public onreadystatechange = null;\n public readyState = 0;\n public response = null;\n public responseType = null;\n public responseText = null;\n public responseURL = null;\n public responseXML = null;\n public status = 0;\n public statusText = '';\n public ontimeout = null;\n public onload = null;\n public onloadend = null;\n public onerror = null;\n public timeout = 0;\n public withCredentials = false;\n private progress = {\n lengthComputable: false,\n loaded : 0,\n total: 0,\n close: (success = false): void => {}\n };\n public upload = {\n addEventListener : this.addEventListener.bind(this)\n };\n private _internal = new Internals(this);\n\n public abort() {\n this.status = -1;\n this._internal.triggerListeners(EVENT.ERROR);\n this.onerror && this.onerror();\n this._internal.xhr.abort();\n this.close();\n }\n\n public getResponseHeader(name: string) {\n return this.response.headers[name];\n }\n\n public getAllResponseHeaders() {\n return this._internal.responseHeaderText;\n }\n\n public setRequestHeader(header: string, value: string) {\n this._internal.requestHeaders[header] = value;\n this._internal.xhr.setRequestHeader(header, value);\n }\n\n public overrideMimeType(mime: string) {\n this._internal.xhr.overrideMimeType(mime);\n }\n\n public open(method: string, url: string, async = true, user?: string, password?: string) {\n this._internal.method = method;\n this._internal.url = url;\n this._internal.async = async;\n this._internal.xhr.open(method, url, async, user, password);\n }\n\n public send(body?: any, useBrowserXHR = false) {\n if (useBrowserXHR\n || this._internal.url.startsWith('http://localhost')\n || !this._internal.url.startsWith('http')) {\n this._internal.sendViaXhr(body);\n } else if (this.responseType === 'blob') {\n this.sendBlobViaNativePlugin(body);\n } else {\n this.sendViaNativePlugin(body);\n }\n };\n\n public addEventListener(eventName: string, handler: () => any) {\n this._internal.listeners[eventName] = this._internal.listeners[eventName] || [];\n this._internal.listeners[eventName].push(handler);\n }\n\n public removeEventListener(eventName: string, handler: () => any) {\n if (this._internal.listeners[eventName]) {\n const i = this._internal.listeners[eventName].indexOf(handler);\n this._internal.listeners[eventName].splice(i, 1);\n }\n }\n\n private prepareOptions(body: any) {\n body = body || {};\n const options = {\n headers: {},\n data: body,\n method: this._internal.method,\n serializer: 'raw'\n };\n\n if (body != null && body != undefined) {\n if (body.constructor && body.constructor.toString().indexOf('FormData()') >= 0) {\n options.serializer = 'multipart';\n this.startProgress();\n } else if(typeof body === 'string') {\n options.serializer = 'utf8';\n } else {\n options.serializer = 'urlencoded';\n }\n }\n for (let key in this._internal.requestHeaders) {\n options.headers[key] = this._internal.requestHeaders[key];\n }\n return options;\n }\n\n /*\n * Native plugin didn't provide any API to track upload progress.\n * This method generates a synthetic event which does not co-relates with the actual upload progress.\n */\n private startProgress(total?) {\n const _1mb = 1024 * 1024 * 8;\n total = total || _1mb;\n const interval = Math.ceil(total / _1mb) * 200;\n const slice = Math.ceil(total / _1mb) * (_1mb / 10);\n this.progress = {\n lengthComputable: true,\n loaded : 0,\n total: total,\n close: null\n };\n const triggerEvent = () => {\n this._internal.triggerListeners(EVENT.PROGRESS, [{\n lengthComputable: true,\n total: this.progress.total,\n loaded: this.progress.loaded\n }]);\n };\n const intervalId = setInterval(() => {\n if(this.progress.loaded + slice < total) {\n this.progress.loaded += slice;\n }\n triggerEvent();\n }, interval);\n this.progress.close = (success = false) => {\n if (success) {\n this.progress.loaded = this.progress.total;\n }\n triggerEvent();\n clearInterval(intervalId);\n };\n }\n\n private sendBlobViaNativePlugin(body: any): void {\n const options = this.prepareOptions(body);\n const tempfile = (isIos() ? cordova.file.tempDirectory : cordova.file.cacheDirectory) + Date.now();\n const timerId = setTimeout(() => {\n if(this.timeout > 0) {\n console.error('network call with request %O failed with timeout', this);\n this._internal.triggerListeners(EVENT.LOAD);\n this._internal.triggerListeners(EVENT.ERROR);\n this.onerror && this.onerror();\n this.ontimeout && this.ontimeout();\n this.close();\n }\n }, this.timeout > 0 ? this.timeout : 1);\n const onSuccess = (file, response) => {\n const res = {\n headers: (response && response.headers) || {},\n status: 200,\n data: file\n };\n let contentType = (response && response.headers && response.headers['content-type']);\n if (contentType) {\n res.data.type = contentType.split(';')[0];\n }\n console.log('network call with request %O successed with response : %O', this, res);\n this._internal.copyNativeResponse(res);\n this._internal.triggerListeners(EVENT.LOAD);\n this.onload && this.onload();\n this.onloadend && this.onloadend();\n clearTimeout(timerId);\n };\n const onError = (response) => {\n console.error('network call with request %O failed with response : %O', this, response);\n this._internal.triggerListeners(EVENT.LOAD, [response]);\n this._internal.triggerListeners(EVENT.ERROR, [response]);\n this.onerror && this.onerror();\n this.onloadend && this.onloadend();\n clearTimeout(timerId);\n };\n cordova.plugin.http.downloadFile(new URL(this._internal.url).href, {}, options.headers, tempfile,\n (entry, response) => {\n entry.file(f => onSuccess(f, response), onError);\n }, onError);\n }\n\n private sendViaNativePlugin(body: any) {\n const options = this.prepareOptions(body);\n const timerId = setTimeout(() => {\n if(this.timeout > 0) {\n console.error('network call with request %O failed with timeout', this);\n this._internal.triggerListeners(EVENT.LOAD);\n this._internal.triggerListeners(EVENT.ERROR);\n this.ontimeout && this.ontimeout();\n this.close();\n }\n }, this.timeout > 0 ? this.timeout : 1);\n new Promise((resolve, reject) => {\n cordova.plugin.http.sendRequest(new URL(this._internal.url).href, options, resolve, reject);\n }).then(response => {\n console.log('network call with request %O successed with response : %O', this, response);\n this.progress.close(true);\n this._internal.copyNativeResponse(response);\n this._internal.triggerListeners(EVENT.LOAD);\n this.onload && this.onload();\n this.onloadend && this.onloadend();\n }, response => {\n this.progress.close();\n this._internal.copyNativeResponse(response);\n console.error('network call with request %O failed with response : %O', this, response);\n this._internal.triggerListeners(EVENT.LOAD, [response]);\n this._internal.triggerListeners(EVENT.ERROR, [response]);\n this.onerror && this.onerror();\n this.onloadend && this.onloadend();\n }).finally(() => clearTimeout(timerId));\n }\n\n private close() {\n this.ontimeout = null;\n this.onload = null;\n this.onerror = null;\n this.onreadystatechange = null;\n this._internal.close();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Network } from '@awesome-cordova-plugins/network/ngx';\n\nimport { App, getAbortableDefer, hasCordova, isIos, noop, retryIfFails } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport { NativeXMLHttpRequest } from './../native.xhr';\nimport { DeviceService } from './device.service';\nimport {clone, endsWith, find, get, isEqual, startsWith} from \"lodash-es\";\n\ndeclare const navigator;\n\nconst AUTO_CONNECT_KEY = 'WM.NetworkService._autoConnect',\n IS_CONNECTED_KEY = 'WM.NetworkService.isConnected',\n excludedList = [new RegExp('/wmProperties.js')],\n networkState = {\n isConnecting : false,\n isConnected : true,\n isNetworkAvailable : true,\n isServiceAvailable : true,\n noServiceRequired: false\n };\n\nlet XML_HTTP_REQUEST = null;\n\n/**\n * If server is not connected and url does not match the unblock list of regular expressions,\n * then this function return true. Otherwise, return false.\n * @param url\n * @returns {boolean}\n */\nconst blockUrl = url => {\n let block = !networkState.isConnected && startsWith(url, 'http');\n if (block) {\n block = !find(excludedList, regExp => regExp.test(url));\n }\n return block;\n};\n\nconst getXMLHttpRequestToUse = ((useNativeXHR: boolean) => {\n const clazz = useNativeXHR ? NativeXMLHttpRequest : XMLHttpRequest;\n const orig = clazz.prototype.open;\n // Intercept all XHR calls\n clazz.prototype.open = function (method: string, url: string, async: boolean = true, user?: string, password?: string) {\n if (!networkState.noServiceRequired && blockUrl(url)) {\n const urlSplits = url.split('://');\n const pathIndex = urlSplits[1].indexOf('/');\n urlSplits[1] = 'localhost' + (pathIndex > 0 ? urlSplits[1].substr(pathIndex) : '/');\n url = urlSplits.join('://');\n }\n return orig.apply(this, [method, url, async, user, password]);\n };\n return clazz;\n});\n\n@Injectable({ providedIn: 'root' })\nexport class NetworkService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'NetworkService';\n\n private _autoConnect = localStorage.getItem(AUTO_CONNECT_KEY) !== 'false';\n private _lastKnownNetworkState: any;\n private _isCheckingServer = false;\n\n constructor(private httpClient: HttpClient, private app: App, private network: Network, private deviceService: DeviceService) {\n networkState.isConnected = localStorage.getItem(IS_CONNECTED_KEY) === 'true';\n XML_HTTP_REQUEST = XML_HTTP_REQUEST || getXMLHttpRequestToUse(deviceService.useNativeXHR());\n }\n\n /**\n * This method attempts to connect app to the server and returns a promise that will be resolved with\n * a boolean value based on the operation result.\n *\n * @returns {object} promise\n */\n public connect(): Promise<boolean> {\n this.setAutoConnect(true);\n return this.tryToConnect();\n }\n\n /**\n * When the auto connect is enabled, then app is automatically connected whenever server is available.\n * Every time when app goes offline, auto connect is enabled. Before app coming to online, one can disable\n * the auto connection flow using this method.\n */\n public disableAutoConnect = () => this.setAutoConnect(false);\n\n /**\n * This method disconnects the app from the server and returns a promise that will be resolved with\n * a boolean value based on the operation result. Use connect method to reconnect.\n *\n * @returns {object} promise\n */\n public disconnect(): Promise<boolean> {\n const p = this.tryToDisconnect();\n this.disableAutoConnect();\n return p;\n }\n\n /**\n * If pingServer is true, then it returns a promise that will be resolved with boolean based on service availability\n * check.If pingServer is false, returns a boolean value based on the last known service availability.\n *\n * @returns {boolean} if pingServer is true, then a promise is returned. Otherwise, a boolean value.\n */\n public isAvailable(pingServer = false): boolean | Promise<boolean> {\n if (pingServer) {\n return this.isServiceAvailable().then(() => {\n this.checkForNetworkStateChange();\n return networkState.isServiceAvailable;\n });\n }\n return networkState.isServiceAvailable;\n }\n\n /**\n * Returns true, if app is connected to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true, if app is connected to server. Otherwise, returns false.\n */\n public isConnected = () => {\n // checking for connection type.\n if (get(navigator, 'connection') && navigator.connection.type) {\n networkState.isConnected = networkState.isConnected && (navigator.connection.type !== 'none');\n }\n this.checkForNetworkStateChange();\n return networkState.isConnected;\n }\n\n /**\n * Returns true if app is trying to connect to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true if app is trying to connect to server. Otherwise, returns false.\n */\n public isConnecting = () => networkState.isConnecting;\n\n /**\n * This method returns a promise that is resolved when connection is established with server.\n *\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public onConnect() {\n let defer,\n cancelSubscription;\n if (this.isConnected()) {\n return Promise.resolve();\n }\n defer = getAbortableDefer();\n cancelSubscription = this.app.subscribe('onNetworkStateChange', () => {\n if (this.isConnected()) {\n defer.resolve(true);\n cancelSubscription();\n }\n });\n defer.promise.catch(function () {\n cancelSubscription();\n });\n return defer.promise;\n }\n\n /**\n * This is a util method. If fn cannot execute successfully and network lost connection, then the fn will\n * be invoked when network is back. The returned can also be aborted.\n *\n * @param {function()} fn method to invoke.\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public retryIfNetworkFails(fn) {\n const defer = getAbortableDefer();\n retryIfFails(fn, 0, 0, () => {\n let onConnectPromise;\n if (!this.isConnected()) {\n onConnectPromise = this.onConnect();\n defer.promise.catch(function () {\n onConnectPromise.abort();\n });\n return onConnectPromise;\n }\n return false;\n }).then(defer.resolve, defer.reject);\n return defer.promise;\n }\n\n public start(): Promise<any> {\n if (window['cordova']) {\n // Connection constant will be available only when network plugin is included.\n if (window['Connection'] && navigator.connection) {\n networkState.isNetworkAvailable = navigator.connection.type !== 'none';\n networkState.isConnected = networkState.isNetworkAvailable && networkState.isConnected;\n /*\n * When the device comes online, check is the service is available. If the service is available and auto\n * connect flag is true, then app is automatically connected to remote server.\n */\n this.network.onConnect().subscribe(() => {\n networkState.isNetworkAvailable = true;\n this.tryToConnect().catch(noop);\n });\n\n /*\n *When device goes offline, then change the network state and emit that notifies about network state change.\n */\n this.network.onDisconnect().subscribe(() => {\n networkState.isNetworkAvailable = false;\n networkState.isServiceAvailable = false;\n this.tryToDisconnect();\n });\n\n this.app.subscribe('onNetworkStateChange', (data) => {\n /**\n * If network is available and server is not available,then\n * try to connect when server is available.\n */\n if (data.isNetworkAvailable && !data.isServiceAvailable && !this._isCheckingServer && !data.noServiceRequired) {\n this._isCheckingServer = true;\n this.checkForServiceAvailiblity().then(() => {\n this._isCheckingServer = false;\n this.connect();\n }, () => {\n this._isCheckingServer = false;\n });\n }\n });\n }\n }\n // to set the default n/w connection values.\n return this.tryToConnect(true).catch(noop);\n }\n\n public getServiceName() {\n return NetworkService.SERVICE_NAME;\n }\n\n /**\n * This function adds the given regular expression to the unblockList. Even app is in offline mode,\n * the urls matching with the given regular expression are not blocked by NetworkService.\n *\n * @param {string} urlRegex regular expression\n */\n public unblock(urlRegex: string) {\n excludedList.push(new RegExp(urlRegex));\n }\n\n public getState() {\n return clone(networkState);\n }\n\n private checkForNetworkStateChange() {\n if (!isEqual(this._lastKnownNetworkState, networkState)) {\n this._lastKnownNetworkState = clone(networkState);\n this.app.notify('onNetworkStateChange', this._lastKnownNetworkState);\n }\n }\n\n /**\n * Returns a promise that is resolved when server is available.\n * @returns {*}\n */\n private checkForServiceAvailiblity(): Promise<void> {\n const maxTimeout = 4500;\n return new Promise<void>(resolve => {\n const intervalId = setInterval(() => {\n if (networkState.isNetworkAvailable) {\n this.isServiceAvailable(maxTimeout).then(available => {\n if (available) {\n clearInterval(intervalId);\n resolve();\n }\n });\n }\n }, 5000);\n });\n }\n\n /**\n * Pings server to check whether server is available. Based on ping response network state is modified.\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n */\n private isServiceAvailable(maxTimeout?: number): Promise<boolean> {\n if (this.app.deployedUrl === 'NONE') {\n networkState.isServiceAvailable = false;\n networkState.noServiceRequired = true;\n return Promise.resolve(false);\n }\n return this.pingServer(maxTimeout).then(response => {\n networkState.isServiceAvailable = response;\n if (!networkState.isServiceAvailable) {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n }\n return response;\n });\n }\n\n /**\n * Pings server\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n * default timeout value is 1min.\n */\n private pingServer(maxTimeout = 60000): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n const oReq = new XML_HTTP_REQUEST();\n let baseURL = this.app.deployedUrl;\n if (baseURL && !endsWith(baseURL, '/')) {\n baseURL += '/';\n } else {\n baseURL = baseURL || '';\n }\n\n const timer = setTimeout(() => {\n oReq.abort(); // abort request\n resolve(false);\n }, maxTimeout);\n\n oReq.addEventListener('load', () => {\n if (oReq.status === 200) {\n resolve(true);\n } else {\n resolve(false);\n }\n if (timer) {\n clearTimeout(timer);\n }\n });\n\n oReq.addEventListener('error', () => resolve(false));\n oReq.open('GET', baseURL + 'services/application/wmProperties.js?t=' + Date.now());\n oReq.send();\n });\n }\n\n private setAutoConnect(flag: boolean): void {\n this._autoConnect = flag;\n localStorage.setItem(AUTO_CONNECT_KEY, '' + flag);\n }\n\n /**\n * Tries to connect to remote server. Network State will be changed based on the success of connection\n * operation and emits an event notifying the network state change.\n *\n * @param silentMode {boolean} if true and connection is successful, then no event is emitted. Otherwise,\n * events are emitted for network status change.\n * @returns {*} a promise\n */\n private tryToConnect(silentMode = false): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this.isServiceAvailable(5000).then(() => {\n if (networkState.isServiceAvailable && this._autoConnect) {\n networkState.isConnecting = true;\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n setTimeout(() => {\n networkState.isConnecting = false;\n networkState.isConnected = true;\n localStorage.setItem(IS_CONNECTED_KEY, '' + true);\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n resolve(true);\n }, silentMode ? 0 : 5000);\n } else {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n localStorage.setItem(IS_CONNECTED_KEY, '' + false);\n reject();\n this.checkForNetworkStateChange();\n }\n });\n });\n }\n\n private tryToDisconnect(): Promise<boolean> {\n networkState.isConnected = false;\n networkState.isConnecting = false;\n this.checkForNetworkStateChange();\n localStorage.setItem(IS_CONNECTED_KEY, '' + networkState.isConnected);\n return Promise.resolve(networkState.isConnected);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { hasCordova, isIos } from '@wm/core';\n\nimport { DeviceFileCacheService } from './services/device-file-cache.service';\nimport { DeviceFileOpenerService } from './services/device-file-opener.service';\nimport { DeviceFileService } from './services/device-file.service';\nimport { DeviceService } from './services/device.service';\nimport { NetworkService } from './services/network.service';\nimport { NativeXMLHttpRequest } from './native.xhr';\n\ndeclare const cordova;\n\n@NgModule({\n declarations: [],\n imports: [],\n providers: [\n // add providers to mobile-runtime module.\n ],\n bootstrap: []\n})\nexport class MobileCoreModule {\n static initialized = false;\n // Startup services have to be added only once in the app life-cycle.\n static addStartupServices(deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n fileCacheService: DeviceFileCacheService,\n fileOpener: DeviceFileOpenerService,\n networkService: NetworkService) {\n if (this.initialized) {\n return;\n }\n deviceService.addStartUpService(networkService);\n if (hasCordova()) {\n deviceService.addStartUpService(deviceFileService);\n deviceService.addStartUpService(fileCacheService);\n deviceService.addStartUpService(fileOpener);\n }\n this.initialized = true;\n }\n\n constructor(\n deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n fileCacheService: DeviceFileCacheService,\n fileOpener: DeviceFileOpenerService,\n networkService: NetworkService\n ) {\n MobileCoreModule.addStartupServices(deviceService, deviceFileService, fileCacheService, fileOpener, networkService);\n const isSSLPinningEnabled = deviceService.getConfig().enableSSLPinning;\n if (hasCordova()) {\n document.addEventListener('wmDeviceReady', () => {\n if (deviceService.useNativeXHR()) {\n // ### ANGULAR9TODO###\n // Adding type as any to avoid error TS2739:\n (<any>window)['XMLHttpRequest'] = NativeXMLHttpRequest;\n if (isSSLPinningEnabled) {\n cordova.plugin.http.setServerTrustMode('pinned', () => {\n console.log('SSL Pinning enabled.!');\n }, e => {\n console.log('Failed to enable SSL Pinning. Due to: ' + e);\n }); \n }\n this.overrideResolveLocalFileSystemURL();\n }\n }, false);\n }\n }\n\n private overrideResolveLocalFileSystemURL() {\n const or = window['resolveLocalFileSystemURL'];\n window['resolveLocalFileSystemURL'] = (path, onSuccess, onError) => {\n if (path && path.startsWith('http://localhost')) {\n path = new URL(path).pathname;\n const lf = '/local-filesystem';\n if (path.startsWith(lf)) {\n path = 'file://' + path.substring(lf.length);\n }\n }\n or.call(window, path, onSuccess, onError);\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { convertToBlob } from '@wm/core';\nimport {forEach} from \"lodash-es\";\n\nexport interface IUploadResponse {\n text: string;\n response: any;\n headers: (string) => string;\n}\n\nexport class UploadRequest {\n\n private _files = [];\n private _params = [];\n private _headers = [];\n\n constructor (private url: string, private cordovaFile: File) {\n\n }\n\n public addFile(name: string, path: string, filename: string): UploadRequest {\n this._files.push({\n name: name,\n path: path,\n fileName: filename\n });\n return this;\n }\n\n public addHeader(name: string, value: string): UploadRequest {\n this._headers.push({\n name: name,\n value: value\n });\n return this;\n }\n\n public addParam(name: string, value: string): UploadRequest {\n this._params.push({\n name: name,\n value: value\n });\n return this;\n }\n\n public post(): Promise<IUploadResponse> {\n const formData = new FormData();\n this._params.forEach( e => formData.append(e.name, e.value));\n return Promise.all(this._files.map( e => {\n if (e.path) {\n return convertToBlob(e.path)\n .then(result => {\n return {\n name: e.name,\n fileName: e.fileName,\n blob: result.blob\n };\n });\n }\n return e;\n })).then(params => {\n params.forEach(e => formData.append(e.name, e.blob || e.path, e.fileName));\n return new Promise<IUploadResponse>((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open('POST', this.url);\n this._headers.forEach(e => request.setRequestHeader(e.name, e.value));\n request.onload = () => {\n resolve({\n headers: (name: string) => request.getResponseHeader(name),\n response: request.response,\n text: request.responseText as string\n });\n };\n request.onerror = reject;\n request.onabort = reject;\n request.send(formData);\n });\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileUploadService {\n static readonly SERVICE_NAME = 'DeviceFileUploadService';\n constructor(private cordovaFile: File) {}\n\n public upload(url: string, fileParamName: string, path: string, fileName?: string, params?: any, headers?: any): Promise<IUploadResponse> {\n const req = new UploadRequest(url, this.cordovaFile)\n .addFile(fileParamName, path, fileName);\n forEach(params, (k, v) => req.addParam(k, v));\n forEach(headers, (k, v) => req.addHeader(k, v));\n return req.post();\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { App, getValidJSON } from '@wm/core';\nimport {forEach, remove, split, startsWith} from \"lodash-es\";\n\ninterface Message {\n address: string;\n data: Map<string, string>;\n}\n\ninterface Handler {\n pattern: string;\n callback: (msg: string) => any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ExtAppMessageService {\n static readonly SERVICE_NAME = 'ExtAppMessageService';\n private handlers = [];\n\n constructor(private app: App) {\n document.addEventListener('externalAppMessageReceived', e => {\n const message = (e['detail'].message) as Message;\n this.handlers.forEach(handler => {\n const matches = handler && message.address.match(handler.pattern);\n if (matches && matches.length > 0) {\n handler.callBack(message);\n }\n });\n });\n }\n\n /**\n * adds a listener for a message whose address matches with the given regex pattern.\n *\n * @param {string} messageAddressPattern a regex pattern that is used to target messages to listen.\n * @param {Function} listener function to invoke when message that matches regex is received.\n * message received will be sent as first argument.\n * @returns {Function} a function which removes the listener when invoked.\n */\n public subscribe(messageAddressPattern, listener: (msg: Message) => any) {\n const handler = {\n pattern : new RegExp(messageAddressPattern),\n callBack : listener\n };\n this.handlers.push(handler);\n return () => remove(this.handlers, handler);\n }\n\n}\n\n(function (window, document) {\n 'use strict';\n // listen app-to-app communication via url schemes\n function subString(str, begin, end) {\n end = end < 0 ? undefined : end;\n return (str && begin >= 0 && str.length > begin && str.substring(begin, end)) || undefined;\n }\n function indexOf(str, pattern) {\n return str && str.indexOf(pattern);\n }\n /**\n * returns if oAuth flow is implicit or pkce using state object in redirect_uri response.\n *\n * @param {url} string which contains access token and state information.\n * @returns {Boolean}\n */\n function getFlow(url) {\n if (!url) {\n return false;\n }\n const stateObj = url.match(/\\{([^)]+)\\}/);\n if (stateObj) {\n const parsedObj = getValidJSON('{' + stateObj[1] + '}');\n if (parsedObj && parsedObj.flow) {\n return parsedObj.flow;\n }\n }\n return false;\n }\n function extractData(url) {\n let str = subString(url, indexOf(url, '?') + 1, indexOf(url, '#'));\n const data = {}, flow = getFlow(url);\n // access token comes as a hash for implicit flow\n if (flow === 'implicit') {\n str = url.match(/access_token=([^&#]*)/)[0];\n } else if (flow === 'pkce') {\n str = url.match(/code=([^&#]*)/)[0];\n }\n forEach(split(str, '&'), entry => {\n const esplits = entry.split('=');\n data[esplits[0]] = esplits[1];\n });\n return data;\n }\n function extractAddress(url) {\n // access token comes as a hash for implicit flow\n const addressKey = getFlow(url) === 'implicit' ? '#' : '?';\n return subString(url, indexOf(url, '://') + 3, indexOf(url, addressKey));\n }\n function createMessage(url) {\n return {\n 'address': extractAddress(url),\n 'data': extractData(url)\n };\n }\n window['handleOpenURL'] = function (url) {\n const handleOpenURL = window['handleOpenURL'];\n if (handleOpenURL.isReady && !startsWith(url, 'http')) {\n const message = createMessage(url);\n const e = new window['CustomEvent']('externalAppMessageReceived', {\n 'detail': {\n 'message': message\n }\n });\n document.dispatchEvent(e);\n }\n handleOpenURL.lastURL = url;\n };\n}(window, document));\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i3.DeviceFileService","i2.DeviceFileService","i3.DeviceFileDownloadService","i4.DeviceFileCacheService","i5.DeviceFileDownloadService","cordova","i4.DeviceService","i1.DeviceService","i3.DeviceFileCacheService","i4.DeviceFileOpenerService","i5.NetworkService"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../projects/mobile/core/src/services/device-file.service.ts","../../../../projects/mobile/core/src/services/device-file-download.service.ts","../../../../projects/mobile/core/src/services/device-file-cache.service.ts","../../../../projects/mobile/core/src/services/device-file-opener.service.ts","../../../../projects/mobile/core/src/services/device.service.ts","../../../../projects/mobile/core/src/native.xhr.ts","../../../../projects/mobile/core/src/services/network.service.ts","../../../../projects/mobile/core/src/core.module.ts","../../../../projects/mobile/core/src/services/device-file-upload.service.ts","../../../../projects/mobile/core/src/services/ext-app-message.service.ts","../../../../projects/mobile/core/src/index.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { AppVersion } from '@awesome-cordova-plugins/app-version/ngx';\nimport {File} from '@awesome-cordova-plugins/file/ngx';\n\nimport { isAndroid, noop } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport {now} from \"lodash-es\";\n\ndeclare const cordova;\ndeclare const resolveLocalFileSystemURL;\ndeclare const FileReader;\n\nexport enum FileType {\n AUDIO = 'AUDIO',\n DOCUMENT = 'DOCUMENT',\n IMAGE = 'IMAGE',\n VIDEO = 'VIDEO'\n}\n\nconst IMAGE_EXTENSIONS = ['gif', 'jpg', 'png', 'svg', 'webp', 'jpeg', 'jif', 'jfif', 'jfi'],\n VIDEO_EXTENSIONS = ['mp4', 'mpg', 'avi', 'wma', 'mp2', '3gp', '3g2', 'm4p', 'm4v', 'mpg', 'fiv'],\n AUDIO_EXTENSIONS = ['mp3', 'm4p', 'aiff', 'aa', 'aax', 'wma'];\n\nconst APP_FOLDER_STRUCTURE = [{\n name : '{APP_NAME}',\n children : [{\n name : 'Media',\n children : [\n {\n name : '{APP_NAME} Images',\n fileType : FileType.IMAGE\n },\n {\n name : '{APP_NAME} Audio',\n fileType : FileType.AUDIO\n },\n {\n name : '{APP_NAME} Vedios',\n fileType : FileType.VIDEO\n },\n {\n name : '{APP_NAME} Documents',\n fileType : FileType.DOCUMENT\n }\n ]\n }]\n}];\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'DeviceFileService';\n\n private _appName: string;\n private _fileTypeVsPathMap = {\n 'temporary' : {},\n 'persistent' : {}\n };\n private _uploadDir: string;\n\n constructor(private cordovaAppVersion: AppVersion, private cordovaFile: File) {\n\n }\n\n public addMediaToGallery(filePath: string): Promise<void> {\n if (isAndroid() && this.isPersistentType(filePath)) {\n return new Promise((resolve, reject) => {\n cordova.plugins.MediaScannerPlugin.scanFile(filePath, resolve, reject);\n });\n }\n return Promise.resolve();\n }\n\n public appendToFileName(fileName: string, attachment?: string): string {\n let splits;\n attachment = attachment || '_' + now();\n fileName = fileName || 'noname';\n splits = fileName.split('.');\n if (splits.length > 1) {\n splits[splits.length - 2] = splits[splits.length - 2] + attachment;\n return splits.join('.');\n }\n return fileName + attachment;\n }\n\n public clearTemporaryStorage(): Promise<any> {\n return this.cordovaFile.removeRecursively(this.getTemporaryRootPath() + this._appName + '/', 'Media');\n }\n\n public copy(persistent: boolean, sourceFilePath: string) {\n const sourceFilename = sourceFilePath.split('/').pop(),\n destFolder = this.findFolderPath(persistent, sourceFilename),\n sourceFolder = sourceFilePath.substring(0, sourceFilePath.lastIndexOf('/'));\n return this.newFileName(destFolder, sourceFilename)\n .then( destFilename => this.cordovaFile.copyFile(sourceFolder, sourceFilename, destFolder, destFilename)\n .then(() => destFolder + destFilename));\n }\n\n public findFolderPath(persistent: boolean, fileName: string) {\n const typeMap = persistent ? this._fileTypeVsPathMap.persistent : this._fileTypeVsPathMap.temporary,\n fileType = this.findFileType(fileName);\n return typeMap[fileType] || typeMap[FileType.DOCUMENT];\n }\n\n public getPersistentRootPath(): string {\n return cordova.file.dataDirectory;\n }\n\n public getTemporaryRootPath(): string {\n return cordova.file.cacheDirectory;\n }\n\n public getUploadDirectory(): string {\n return this._uploadDir;\n }\n\n public isPersistentType(filePath: string): boolean {\n return filePath.startsWith(this.getPersistentRootPath());\n }\n\n public isValidPath(filePath: string): Promise<string> {\n let folder, fileName;\n if (!filePath) {\n return Promise.reject('File path is required');\n }\n folder = filePath.substring(0, filePath.lastIndexOf('/') + 1);\n fileName = filePath.split('/').pop();\n return this.cordovaFile.checkFile(folder, fileName)\n .then(() => filePath);\n }\n\n public listFiles(folder: string, search: string | RegExp): Promise<Map<string, any>[]> {\n return new Promise((resolve, reject) => {\n resolveLocalFileSystemURL(folder, directory => {\n if (!directory.files) {\n directory.createReader().readEntries(entries => {\n if (search) {\n entries = entries.filter(e => e.name.match(search));\n }\n entries = entries.map( e => {\n return {\n name : e.name,\n isDirectory : e.isDirectory,\n path : e.nativeURL\n };\n });\n resolve(entries);\n }, reject);\n } else {\n resolve([]);\n }\n }, reject);\n });\n }\n\n public newFileName(folder: string, fileName: string): Promise<string> {\n return this.cordovaFile.checkFile(folder, fileName)\n .then(() => {\n const extIndex = fileName.lastIndexOf('.');\n if (extIndex > 0) {\n fileName = fileName.substring(0, extIndex) + '_' + now() + '.' + fileName.substring(extIndex + 1);\n } else {\n fileName = fileName + '_' + now();\n }\n return this.newFileName(folder, fileName);\n }, () => fileName);\n }\n\n public removeFile(filePath: string): Promise<any> {\n const i = filePath.lastIndexOf('/'),\n dir = filePath.substring(0, i),\n file = filePath.substring(i + 1);\n return this.cordovaFile.removeFile(dir, file);\n }\n\n /**\n * removes the directory at the specified location.\n *\n * @param dirPath absolute path of directory\n */\n public removeDir(dirPath: string): Promise<any> {\n const i = dirPath.lastIndexOf('/'),\n parentdir = dirPath.substring(0, i + 1),\n dir = dirPath.substring(i + 1),\n movedDir = dir + now();\n return this.cordovaFile.checkDir(parentdir, dir)\n .then(() => {\n /**\n * If folder is remove directly without moving, then INVALID_MODIFICATION_ERR is thrown in android\n * when a copy operation is done with the same directory name. To avoid this, directory will be moved\n * first and removed.\n */\n return this.cordovaFile.moveDir(parentdir, dir, parentdir, movedDir)\n .then(() => this.cordovaFile.removeDir(parentdir, movedDir));\n }).catch(noop);\n }\n\n public start(): Promise<any> {\n /**\n * Default READ_CHUNK_SIZE is 256 Kb. But with that setting readJson method is failing. This is an issue\n * with cordova file plugin. So, increasing it to 512 Kb to read large database schema files (>256 Kb).\n */\n FileReader.READ_CHUNK_SIZE = 512 * 1024;\n return Promise.resolve().then(() => {\n return this.cordovaAppVersion.getAppName();\n }).then(appName => {\n const promises = [];\n this._appName = appName;\n promises.push(this.createFolderIfNotExists(this.getTemporaryRootPath(),\n APP_FOLDER_STRUCTURE,\n this._fileTypeVsPathMap.temporary));\n promises.push(this.createFolderIfNotExists(this.getPersistentRootPath(),\n APP_FOLDER_STRUCTURE,\n this._fileTypeVsPathMap.persistent));\n promises.push(this.setupUploadDirectory());\n return Promise.all(promises);\n }).then(() => {\n if (isAndroid()) {\n // this is necessary to prevent multiple file permission popup.\n return this.cordovaFile.readAsText(cordova.file.externalRootDirectory, 'random-file-for-permission').catch(noop);\n }\n });\n }\n\n public getServiceName() {\n return DeviceFileService.SERVICE_NAME;\n }\n\n private createFolderIfNotExists(parent: string, folders, fileTypeLocationMap) {\n const childPromises = [];\n if (folders) {\n folders.forEach(folder => {\n let folderPath;\n folder.name = folder.name.replace('{APP_NAME}', this._appName);\n folderPath = parent + folder.name + '/';\n if (folder.fileType && !fileTypeLocationMap[folder.fileType]) {\n fileTypeLocationMap[folder.fileType] = folderPath;\n }\n const p = this.cordovaFile.createDir(parent, folder.name, false)\n .then(() => this.createFolderIfNotExists(folderPath, folder.children, fileTypeLocationMap),\n () => this.createFolderIfNotExists(folderPath, folder.children, fileTypeLocationMap));\n childPromises.push(p);\n });\n }\n if (childPromises.length > 0) {\n return Promise.all(childPromises);\n }\n }\n\n private findFileType(fileName) {\n let extension;\n if (fileName.indexOf('.') > 0) {\n extension = fileName.split('.').pop().toLowerCase();\n if (IMAGE_EXTENSIONS.some(a => a === extension)) {\n return FileType.IMAGE;\n }\n if (VIDEO_EXTENSIONS.some(a => a === extension)) {\n return FileType.VIDEO;\n }\n if (AUDIO_EXTENSIONS.some(a => a === extension)) {\n return FileType.AUDIO;\n }\n }\n return FileType.DOCUMENT;\n }\n\n private setupUploadDirectory() {\n const uploadsDirName = 'uploads',\n appDir = cordova.file.dataDirectory;\n return this.cordovaFile.checkDir(appDir, uploadsDirName)\n .then(() => this._uploadDir = appDir + uploadsDirName,\n () => this.cordovaFile.createDir(appDir, uploadsDirName, true)\n .then(() => this._uploadDir = appDir + uploadsDirName));\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpClient,\n HttpEvent,\n HttpEventType,\n HttpHeaders,\n HttpRequest,\n HttpResponse\n} from '@angular/common/http';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\nimport { Observer } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\nimport { FileExtensionFromMimePipe } from '@wm/components/base';\n\nimport { DeviceFileService } from './device-file.service';\nimport {endsWith, find, isArray, isEmpty} from \"lodash-es\";\n\nconst MAX_CONCURRENT_DOWNLOADS = 2;\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileDownloadService {\n static readonly SERVICE_NAME = 'DeviceFileDownloadService';\n private _downloadQueue = [];\n private _concurrentDownloads = 0;\n\n constructor(\n private cordovaFile: File,\n private http: HttpClient,\n private deviceFileService: DeviceFileService,\n public fileExtensionFromMimePipe: FileExtensionFromMimePipe) {\n\n }\n\n public download(url: string, isPersistent: boolean, destFolder?: string, destFile?: string, progressObserver?: Observer<any>, headers?: any): Promise<string> {\n return this.addToDownloadQueue(url, isPersistent, destFolder, destFile, progressObserver, headers);\n }\n\n // Adds to download request queue\n private addToDownloadQueue(url: string, isPersistent: boolean, destFolder?: string, destFile?: string, progressObserver?: Observer<any>, headers?: any): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n this._downloadQueue.push({\n url: url,\n headers: headers,\n isPersistent: isPersistent,\n destFolder: destFolder,\n destFile: destFile,\n resolve: resolve,\n reject: reject,\n progressObserver: progressObserver\n });\n if (this._concurrentDownloads < MAX_CONCURRENT_DOWNLOADS) {\n this.downloadNext();\n }\n });\n }\n\n private downloadNext(): void {\n if (this._downloadQueue.length > 0) {\n const req = this._downloadQueue.shift();\n this.downloadFile(req).then(filePath => {\n req.resolve(filePath);\n this.downloadNext();\n }, () => {\n req.reject();\n this.downloadNext();\n });\n }\n }\n\n // Start processing a download request\n private downloadFile(req): Promise<string> {\n let filePath, blob;\n this._concurrentDownloads++;\n\n return this.sendHttpRequest(req.url, req.progressObserver, req.headers).then((e) => {\n blob = (e as HttpResponse<Blob>).body;\n return this.getFileName(e, req, blob.type);\n }).then((fileName) => {\n if (!req.destFolder) {\n req.destFolder = this.deviceFileService.findFolderPath(req.isPersistent, fileName);\n }\n filePath = req.destFolder + fileName;\n return this.cordovaFile.writeFile(req.destFolder, fileName, blob);\n }).then(() => {\n this._concurrentDownloads--;\n return filePath;\n }, (response) => {\n this._concurrentDownloads--;\n this.cordovaFile.removeFile(req.destFolder, req.destFile);\n return Promise.reject(`Failed to downloaded ${req.url} with error ${JSON.stringify(response)}`);\n });\n }\n\n /**\n * Returns the filename\n * 1. if filename exists just return\n * 2. retrieve the filename from response headers i.e. content-disposition\n * 3. pick the filename from the end of the url\n * If filename doesnt contain the extension then extract using mimeType.\n * Generates newFileName if filename already exists.\n * @param response, download file response\n * @param req, download request params\n * @param mimeType mime type of file\n * @returns {Promise<string>}\n */\n private getFileName(response, req, mimeType) {\n const disposition = response.headers.get('Content-Disposition');\n let filename = req.destFile;\n if (!filename && disposition && disposition.indexOf('attachment') !== -1) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const matches = filenameRegex.exec(disposition);\n if (matches !== null && matches[1]) {\n filename = matches[1].replace(/['\"]/g, '');\n }\n }\n if (!filename) {\n filename = req.url.split('?')[0];\n filename = filename.split('/').pop();\n }\n\n let fileExtension;\n if (mimeType) {\n fileExtension = this.fileExtensionFromMimePipe.transform(mimeType);\n }\n let hasFileExtension;\n // one or more file extensions can have same mimeType then loop over the file extensions.\n if (isArray(fileExtension) && !isEmpty(fileExtension)) {\n hasFileExtension = find(fileExtension, extension => endsWith(filename, extension));\n //File extension will be array for some file formats\n fileExtension = fileExtension[0];\n }\n if (!hasFileExtension && !endsWith(filename, fileExtension)) {\n filename = filename + fileExtension;\n }\n\n const folder = req.destFolder || this.deviceFileService.findFolderPath(req.isPersistent, filename);\n return this.deviceFileService.newFileName(folder, filename);\n }\n\n private sendHttpRequest(url: string, progressObserver: Observer<HttpEvent<any>>, headers?: any): Promise<HttpResponse<any>> {\n let reqHeaders = new HttpHeaders();\n\n // headers\n if (headers) {\n Object.entries(headers).forEach(([k, v]) => reqHeaders = reqHeaders.append(k, v as string));\n }\n const req = new HttpRequest('GET', url, {\n headers: reqHeaders,\n responseType: 'blob',\n reportProgress: progressObserver != null\n });\n return this.http.request(req)\n .pipe(\n map(e => {\n if (progressObserver && progressObserver.next && e.type === HttpEventType.DownloadProgress) {\n progressObserver.next(e);\n }\n return e;\n }),\n filter(e => e.type === HttpEventType.Response),\n map( e => {\n if (progressObserver && progressObserver.complete) {\n progressObserver.complete();\n }\n return (e as HttpResponse<any>);\n })\n )\n .toPromise();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { noop } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport { DeviceFileService } from './device-file.service';\nimport { DeviceFileDownloadService } from './device-file-download.service';\n\ndeclare const cordova;\n\nconst CACHE_FILE_INDEX_NAME = 'appCache.json';\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileCacheService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'DeviceFileCacheService';\n private _cacheIndex = {};\n private _writing;\n private _saveCache;\n\n public constructor(private cordovaFile: File,\n private fileService: DeviceFileService,\n private downloadService: DeviceFileDownloadService) {\n\n }\n\n public addEntry(url, filepath): void {\n this._cacheIndex[url] = filepath;\n this.writeCacheIndexToFile();\n }\n\n public getLocalPath(url: string, downloadIfNotExists: boolean, isPersistent: boolean, forceRefresh = false): Promise<string> {\n if (forceRefresh) {\n return this.download(url, isPersistent);\n }\n const filePath = this._cacheIndex[url];\n return this.fileService.isValidPath(filePath)\n .catch(() => {\n delete this._cacheIndex[url];\n if (downloadIfNotExists) {\n return this.download(url, isPersistent);\n } else {\n return Promise.reject('No cache entry for ' + url);\n }\n });\n }\n\n public invalidateCache(): void {\n this._cacheIndex = {};\n this.writeCacheIndexToFile();\n this.fileService.clearTemporaryStorage();\n }\n\n public start(): Promise<void> {\n return this.cordovaFile.readAsText(cordova.file.dataDirectory, CACHE_FILE_INDEX_NAME)\n .then(content => {\n this._cacheIndex = JSON.parse(content);\n }, noop);\n }\n\n public getServiceName() {\n return DeviceFileCacheService.SERVICE_NAME;\n }\n\n private download(url: string, isPersistent: boolean): Promise<string> {\n return this.downloadService.download(url, isPersistent)\n .then(filepath => {\n this._cacheIndex[url] = filepath;\n this.writeCacheIndexToFile();\n return filepath;\n });\n }\n\n private writeCacheIndexToFile(): void {\n if (!this._writing) {\n this._writing = true;\n this.cordovaFile.writeFile(cordova.file.dataDirectory, CACHE_FILE_INDEX_NAME, JSON.stringify(this._cacheIndex),\n {\n replace: true\n })\n .catch(noop)\n .then(() => {\n if (this._saveCache) {\n setTimeout(() => {\n this._writing = false;\n this._saveCache = false;\n this.writeCacheIndexToFile();\n }, 5000);\n } else {\n this._writing = false;\n }\n });\n } else {\n this._saveCache = true;\n }\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\nimport { FileOpener } from '@awesome-cordova-plugins/file-opener/ngx';\n\nimport { isAndroid, isIos, noop } from '@wm/core';\n\nimport { DeviceFileCacheService } from './device-file-cache.service';\nimport { DeviceFileDownloadService } from './device-file-download.service';\nimport { DeviceFileService } from './device-file.service';\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport {now} from \"lodash-es\";\n\ndeclare const cordova;\ndeclare const resolveLocalFileSystemURL;\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileOpenerService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'DeviceFileOpenerService';\n\n private _downloadsFolder;\n\n constructor(private cordovaFile: File,\n private cordovaFileOpener: FileOpener,\n private fileService: DeviceFileService,\n private cacheService: DeviceFileCacheService,\n private downloadService: DeviceFileDownloadService) {\n\n }\n\n // this method returns the mime type of file from the filePath.\n public getFileMimeType(filePath): Promise<any> {\n return new Promise<any> ((resolve) => {\n // Read the file entry from the file URL\n resolveLocalFileSystemURL(filePath, fileEntry => {\n fileEntry.file(metadata => {\n resolve(metadata.type);\n });\n });\n });\n }\n\n public openRemoteFile(url: string, extension: string, fileName?: string, headers?: any): Promise<void> {\n return this.getLocalPath(url, extension, fileName, headers)\n .then(filePath => {\n return this.getFileMimeType(filePath).then(type => {\n return this.cordovaFileOpener.open(filePath, type);\n });\n });\n }\n\n public start(): Promise<void> {\n let downloadsParent;\n if (isAndroid()) {\n downloadsParent = cordova.file.externalCacheDirectory;\n } else if (isIos()) {\n downloadsParent = cordova.file.documentsDirectory + 'NoCloud/';\n } else {\n downloadsParent = cordova.file.dataDirectory;\n }\n return this.cordovaFile.createDir(downloadsParent, 'downloads', false)\n .catch(noop)\n .then(() => {\n this._downloadsFolder = downloadsParent + 'downloads/';\n });\n }\n\n public getServiceName() {\n return DeviceFileCacheService.SERVICE_NAME;\n }\n\n private generateFileName(url: string, extension: string): string {\n let fileName = url.split('?')[0];\n fileName = fileName.split('/').pop();\n fileName = this.fileService.appendToFileName(fileName, '' + now());\n if (extension) {\n return fileName.split('.')[0] + '.' + extension;\n }\n return fileName;\n }\n\n private getLocalPath(url: string, extension?: string, filename?: string, headers?: any): Promise<string> {\n return new Promise( (resolve, reject) => {\n return this.cacheService.getLocalPath(url, false, false)\n .then( filePath => {\n let fileName, i, j, fromDir, fromFile;\n // Is it part of downloaded folder.\n if (filePath.startsWith(this._downloadsFolder)) {\n resolve(filePath);\n } else {\n //Extract extension from file downloaded earlier.\n j = filePath.lastIndexOf('.');\n extension = filePath.substring(j + 1);\n fileName = filename || this.generateFileName(url, extension);\n i = filePath.lastIndexOf('/');\n fromDir = filePath.substring(0, i);\n fromFile = filePath.substring(i + 1);\n this.cordovaFile.copyFile(fromDir, fromFile, this._downloadsFolder, fileName)\n .then(() => {\n const newFilePath = this._downloadsFolder + fileName;\n this.cacheService.addEntry(url, newFilePath);\n resolve(newFilePath);\n });\n }\n }).catch(() => {\n this.downloadService.download(url, false, this._downloadsFolder, filename, undefined, headers)\n .then(filePath => {\n this.cacheService.addEntry(url, filePath);\n resolve(filePath);\n }, reject);\n });\n });\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport {File} from '@awesome-cordova-plugins/file/ngx';\n\nimport { $appDigest, hasCordova, noop, fetchContent, isIos } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport {forEach} from \"lodash-es\";\n\ndeclare const cordova;\n\nconst REGISTRY_FILE_NAME = 'registry.info';\n\nexport interface Config {\n baseUrl: string;\n customUrlScheme: string;\n customUrl: string;\n buildTime: number;\n enableSSLPinning: boolean;\n offlineStorage: boolean;\n useNativeXHR: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceService {\n static readonly SERVICE_NAME = 'DeviceService';\n\n private _registry = {};\n private _isReady = false;\n private _whenReadyPromises = [];\n private _backBtnTapListeners = [];\n private _startUpServices: IDeviceStartUpService[] = [];\n private _config: Config = {} as Config;\n\n public constructor(private file: File) {\n const maxWaitTime = 10;\n setTimeout(() => {\n if (!this._isReady) {\n console.warn(`Device is not ready even after ${maxWaitTime} seconds`);\n console.warn('Waiting For %O', this._startUpServices.map(i => i.getServiceName()));\n }\n }, maxWaitTime * 1000);\n document.addEventListener('backbutton', this.executeBackTapListeners.bind(this));\n if (hasCordova()) {\n const port = location.port ? ':' + location.port : '';\n const configUrl = `${location.protocol}//${location.hostname}${port}${isIos() ? '' : '/_www'}/config.json`;\n fetchContent('json', configUrl, true, (response => {\n if (!response.error && response.baseUrl) {\n this._config = response;\n }\n }));\n }\n }\n\n public executeBackTapListeners($event) {\n forEach(this._backBtnTapListeners, fn => {\n return fn($event) !== false;\n });\n // explicitly applying the digest cycle as the backbutton listener is not rendering the page content.\n // This is because zone is not run (there is no change detection)\n // https://weblogs.thinktecture.com/thomas/2017/02/cordova-vs-zonejs-or-why-is-angulars-document-event-listener-not-in-a-zone.html\n $appDigest();\n }\n\n public addStartUpService(service: IDeviceStartUpService) {\n this._startUpServices.push(service);\n }\n\n public onBackButtonTap(fn: ($event) => boolean) {\n this._backBtnTapListeners.unshift(fn);\n return () => {\n const i = this._backBtnTapListeners.indexOf(fn);\n if (i >= 0) {\n this._backBtnTapListeners.splice(i, 1);\n }\n };\n }\n\n public start() {\n if (this._isReady || this._startUpServices.length === 0) {\n this._isReady = true;\n return Promise.resolve();\n } else {\n return new Promise<void>((resolve) => {\n if (hasCordova()) {\n document.addEventListener('deviceready', () => resolve(), false);\n } else {\n resolve();\n }\n }).then(() => {\n if (window['cordova']) {\n return this.file.readAsText(cordova.file.dataDirectory, REGISTRY_FILE_NAME)\n .then(content => this._registry = JSON.parse(content), noop);\n }\n }).then(() => {\n return Promise.all(this._startUpServices.map(s => {\n return s.start().catch((error) => {\n console.error('%s failed to start due to: %O', s.getServiceName(), error);\n return Promise.reject(error);\n });\n }));\n }).then(() => {\n window['wmDeviceReady'] = true;\n document.dispatchEvent(new CustomEvent('wmDeviceReady'));\n this._startUpServices.length = 0;\n this._whenReadyPromises.forEach(fn => fn());\n this._isReady = true;\n });\n }\n }\n\n public getServiceName() {\n return DeviceService.SERVICE_NAME;\n }\n\n public whenReady(): Promise<void> {\n if (this._isReady) {\n return Promise.resolve();\n } else {\n return new Promise<void>((resolve) => {\n this._whenReadyPromises.push(resolve);\n });\n }\n }\n\n public getBaseUrl() {\n return this._config.baseUrl === 'http://NOSERVERREQUIRED.com' ? 'NONE' : this._config.baseUrl;\n }\n\n public isAppConnectedToPreview() {\n return this._config.customUrl !== this._config.baseUrl && this.getBaseUrl() !== 'NONE';\n }\n\n public getConfig(): Config {\n return this._config;\n }\n\n public useNativeXHR() {\n return (isIos() || this._config.useNativeXHR === true)\n && hasCordova()\n && cordova.plugin\n && cordova.plugin.http;\n }\n\n /**\n * @returns {Promise<number>} promise resolved with the app build time\n */\n public getAppBuildTime(): Promise<number> {\n return Promise.resolve(this._config.buildTime);\n }\n\n /**\n * Stores an entry that survives app restarts and updates.\n *\n * @param {string} key\n * @param {Object} value\n * @returns {Promise<any>}\n */\n public storeEntry(key: string, value: Object): Promise<any> {\n this._registry[key] = value;\n return this.file.writeFile(cordova.file.dataDirectory,\n REGISTRY_FILE_NAME,\n JSON.stringify(this._registry),\n { replace: true });\n }\n\n /**\n * @param {string} key\n * @returns {any} entry corresponding to the key\n */\n public getEntry(key: string): any {\n return this._registry[key];\n }\n}\n","import { isIos } from '@wm/core';\n\nconst _XMLHttpRequest = window['XMLHttpRequest'];\nconst cordova = window['cordova'];\n\n\nconst enum EVENT {\n LOAD_START = 'loadstart',\n LOAD = 'load',\n LOAD_END = 'loadend',\n PROGRESS = 'progress',\n ERROR = 'error',\n ABORT = 'abort'\n}\n\nconst STATUS_TEXT = {\n '100': '100 Continue',\n '101': '101 Switching Protocol',\n '102': '102 Processing (WebDAV)',\n '103': '103 Early Hints',\n\n '200': '200 OK',\n '201': '201 Created',\n '202': '202 Accepted',\n '203': '203 Non-Authoritative Information',\n '204': '204 No Content',\n '205': '205 Reset Content',\n '206': '206 Partial Content',\n '207': '207 Multi-Status (WebDAV)',\n '208': '208 Already Reported (WebDAV)',\n '226': '226 IM Used (HTTP Delta encoding)',\n\n '300': '300 Multiple Choice',\n '301': '301 Moved Permanently',\n '302': '302 Found',\n '303': '303 See Other',\n '304': '304 Not Modified',\n '305': '305 Use Proxy',\n '306': '306 unused',\n '307': '307 Temporary Redirect',\n '308': '308 Permanent Redirect'\n};\n\nclass Internals {\n xhr = new _XMLHttpRequest();\n method = 'GET';\n requestHeaders = {};\n responseHeaders = {};\n responseHeaderText = '';\n url = '';\n async = true;\n listeners = {};\n\n constructor(public nXhr: NativeXMLHttpRequest) {}\n\n public triggerListeners(eventName: string, data?: any): void {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(function (l) {\n l.apply(window, data);\n });\n }\n }\n\n public copyNativeResponse(res): void {\n this.nXhr.status = res.status;\n this.nXhr.statusText = res.statusText || res.status;\n this.nXhr.response = res.data;\n this.nXhr.responseType = (res.headers && res.headers['content-type']) || 'plain/text';\n this.nXhr.responseURL = res.responseURL;\n this.nXhr.responseXML = res.responseXML;\n this.nXhr.responseText = (res.data && res.data.toString()) || res.error;\n this.responseHeaderText = ((): string => {\n const headers = [];\n for (let k in res.headers) {\n headers.push(k + ': ' + res.headers[k]);\n }\n return headers.join('\\r\\n');\n })();\n }\n\n public copyXMLHttpResponse(req: any): void {\n this.nXhr.status = req.status;\n this.nXhr.statusText = req.statusText;\n this.nXhr.response = req.response;\n this.nXhr.responseType = req.responseType;\n this.nXhr.responseURL = req.responseURL;\n this.nXhr.responseXML = req.responseXML;\n this.nXhr.responseText = req.responseText;\n this.responseHeaderText = req.getAllResponseHeaders();\n this.nXhr.readyState = req.readyState;\n this.nXhr.getResponseHeader = header => req.getResponseHeader(header);\n }\n\n public sendViaXhr(body) {\n const self = this;\n this.xhr.onreadystatechange = () => {\n self.copyXMLHttpResponse(self.xhr);\n this.nXhr.onreadystatechange && this.nXhr.onreadystatechange();\n }\n this.xhr.onload = function() {\n self.copyXMLHttpResponse(self.xhr);\n if (self.nXhr.onload) {\n self.nXhr.onload.apply(self.nXhr, arguments);\n }\n };\n this.xhr.onerror = this.nXhr.onerror;\n if (!this.async) {\n this.xhr.ontimeout = this.nXhr.ontimeout;\n this.xhr.timeout = this.nXhr.timeout;\n }\n this.xhr.withCredentials = this.nXhr.withCredentials;\n for (let k in this.listeners) {\n this.xhr.addEventListener(k, e => {\n this.copyXMLHttpResponse(this.xhr);\n this.triggerListeners(e.type);\n });\n }\n this.xhr.send(body);\n }\n\n public close() {\n for (let k in this.listeners) {\n this.listeners[k].length = 0;\n }\n }\n}\n\nexport class NativeXMLHttpRequest {\n public onreadystatechange = null;\n public readyState = 0;\n public response = null;\n public responseType = null;\n public responseText = null;\n public responseURL = null;\n public responseXML = null;\n public status = 0;\n public statusText = '';\n public ontimeout = null;\n public onload = null;\n public onloadend = null;\n public onerror = null;\n public timeout = 0;\n public withCredentials = false;\n private progress = {\n lengthComputable: false,\n loaded : 0,\n total: 0,\n close: (success = false): void => {}\n };\n public upload = {\n addEventListener : this.addEventListener.bind(this)\n };\n private _internal = new Internals(this);\n\n public abort() {\n this.status = -1;\n this._internal.triggerListeners(EVENT.ERROR);\n this.onerror && this.onerror();\n this._internal.xhr.abort();\n this.close();\n }\n\n public getResponseHeader(name: string) {\n return this.response.headers[name];\n }\n\n public getAllResponseHeaders() {\n return this._internal.responseHeaderText;\n }\n\n public setRequestHeader(header: string, value: string) {\n this._internal.requestHeaders[header] = value;\n this._internal.xhr.setRequestHeader(header, value);\n }\n\n public overrideMimeType(mime: string) {\n this._internal.xhr.overrideMimeType(mime);\n }\n\n public open(method: string, url: string, async = true, user?: string, password?: string) {\n this._internal.method = method;\n this._internal.url = url;\n this._internal.async = async;\n this._internal.xhr.open(method, url, async, user, password);\n }\n\n public send(body?: any, useBrowserXHR = false) {\n if (useBrowserXHR\n || this._internal.url.startsWith('http://localhost')\n || !this._internal.url.startsWith('http')) {\n this._internal.sendViaXhr(body);\n } else if (this.responseType === 'blob') {\n this.sendBlobViaNativePlugin(body);\n } else {\n this.sendViaNativePlugin(body);\n }\n };\n\n public addEventListener(eventName: string, handler: () => any) {\n this._internal.listeners[eventName] = this._internal.listeners[eventName] || [];\n this._internal.listeners[eventName].push(handler);\n }\n\n public removeEventListener(eventName: string, handler: () => any) {\n if (this._internal.listeners[eventName]) {\n const i = this._internal.listeners[eventName].indexOf(handler);\n this._internal.listeners[eventName].splice(i, 1);\n }\n }\n\n private prepareOptions(body: any) {\n body = body || {};\n const options = {\n headers: {},\n data: body,\n method: this._internal.method,\n serializer: 'raw'\n };\n\n if (body != null && body != undefined) {\n if (body.constructor && body.constructor.toString().indexOf('FormData()') >= 0) {\n options.serializer = 'multipart';\n this.startProgress();\n } else if(typeof body === 'string') {\n options.serializer = 'utf8';\n } else {\n options.serializer = 'urlencoded';\n }\n }\n for (let key in this._internal.requestHeaders) {\n options.headers[key] = this._internal.requestHeaders[key];\n }\n return options;\n }\n\n /*\n * Native plugin didn't provide any API to track upload progress.\n * This method generates a synthetic event which does not co-relates with the actual upload progress.\n */\n private startProgress(total?) {\n const _1mb = 1024 * 1024 * 8;\n total = total || _1mb;\n const interval = Math.ceil(total / _1mb) * 200;\n const slice = Math.ceil(total / _1mb) * (_1mb / 10);\n this.progress = {\n lengthComputable: true,\n loaded : 0,\n total: total,\n close: null\n };\n const triggerEvent = () => {\n this._internal.triggerListeners(EVENT.PROGRESS, [{\n lengthComputable: true,\n total: this.progress.total,\n loaded: this.progress.loaded\n }]);\n };\n const intervalId = setInterval(() => {\n if(this.progress.loaded + slice < total) {\n this.progress.loaded += slice;\n }\n triggerEvent();\n }, interval);\n this.progress.close = (success = false) => {\n if (success) {\n this.progress.loaded = this.progress.total;\n }\n triggerEvent();\n clearInterval(intervalId);\n };\n }\n\n private sendBlobViaNativePlugin(body: any): void {\n const options = this.prepareOptions(body);\n const tempfile = (isIos() ? cordova.file.tempDirectory : cordova.file.cacheDirectory) + Date.now();\n const timerId = setTimeout(() => {\n if(this.timeout > 0) {\n console.error('network call with request %O failed with timeout', this);\n this._internal.triggerListeners(EVENT.LOAD);\n this._internal.triggerListeners(EVENT.ERROR);\n this.onerror && this.onerror();\n this.ontimeout && this.ontimeout();\n this.close();\n }\n }, this.timeout > 0 ? this.timeout : 1);\n const onSuccess = (file, response) => {\n const res = {\n headers: (response && response.headers) || {},\n status: 200,\n data: file\n };\n let contentType = (response && response.headers && response.headers['content-type']);\n if (contentType) {\n res.data.type = contentType.split(';')[0];\n }\n console.log('network call with request %O successed with response : %O', this, res);\n this._internal.copyNativeResponse(res);\n this._internal.triggerListeners(EVENT.LOAD);\n this.onload && this.onload();\n this.onloadend && this.onloadend();\n clearTimeout(timerId);\n this.readyState = 4;\n this.onreadystatechange && this.onreadystatechange();\n };\n const onError = (response) => {\n console.error('network call with request %O failed with response : %O', this, response);\n this._internal.triggerListeners(EVENT.LOAD, [response]);\n this._internal.triggerListeners(EVENT.ERROR, [response]);\n this.onerror && this.onerror();\n this.onloadend && this.onloadend();\n clearTimeout(timerId);\n this.readyState = 4;\n this.onreadystatechange && this.onreadystatechange();\n };\n cordova.plugin.http.downloadFile(new URL(this._internal.url).href, {}, options.headers, tempfile,\n (entry, response) => {\n entry.file(f => onSuccess(f, response), onError);\n }, onError);\n \n this.readyState = 1;\n this.onreadystatechange && this.onreadystatechange();\n }\n\n private sendViaNativePlugin(body: any) {\n const options = this.prepareOptions(body);\n const timerId = setTimeout(() => {\n if(this.timeout > 0) {\n console.error('network call with request %O failed with timeout', this);\n this._internal.triggerListeners(EVENT.LOAD);\n this._internal.triggerListeners(EVENT.ERROR);\n this.ontimeout && this.ontimeout();\n this.close();\n }\n }, this.timeout > 0 ? this.timeout : 1);\n new Promise((resolve, reject) => {\n cordova.plugin.http.sendRequest(new URL(this._internal.url).href, options, resolve, reject);\n this.readyState = 1;\n this.onreadystatechange && this.onreadystatechange();\n }).then(response => {\n console.log('network call with request %O successed with response : %O', this, response);\n this.progress.close(true);\n this._internal.copyNativeResponse(response);\n this._internal.triggerListeners(EVENT.LOAD);\n this.onload && this.onload();\n this.onloadend && this.onloadend();\n }, response => {\n this.progress.close();\n this._internal.copyNativeResponse(response);\n console.error('network call with request %O failed with response : %O', this, response);\n this._internal.triggerListeners(EVENT.LOAD, [response]);\n this._internal.triggerListeners(EVENT.ERROR, [response]);\n this.onerror && this.onerror();\n this.onloadend && this.onloadend();\n }).finally(() => {\n this.readyState = 4;\n this.onreadystatechange && this.onreadystatechange();\n clearTimeout(timerId);\n });\n }\n\n private close() {\n this.ontimeout = null;\n this.onload = null;\n this.onerror = null;\n this.onreadystatechange = null;\n this._internal.close();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\n\nimport { Network } from '@awesome-cordova-plugins/network/ngx';\n\nimport { App, getAbortableDefer, hasCordova, isIos, noop, retryIfFails } from '@wm/core';\n\nimport { IDeviceStartUpService } from './device-start-up-service';\nimport { NativeXMLHttpRequest } from './../native.xhr';\nimport { DeviceService } from './device.service';\nimport {clone, endsWith, find, get, isEqual, startsWith} from \"lodash-es\";\n\ndeclare const navigator;\n\nconst AUTO_CONNECT_KEY = 'WM.NetworkService._autoConnect',\n IS_CONNECTED_KEY = 'WM.NetworkService.isConnected',\n excludedList = [new RegExp('/wmProperties.js')],\n networkState = {\n isConnecting : false,\n isConnected : true,\n isNetworkAvailable : true,\n isServiceAvailable : true,\n noServiceRequired: false\n };\n\nlet XML_HTTP_REQUEST = null;\n\n/**\n * If server is not connected and url does not match the unblock list of regular expressions,\n * then this function return true. Otherwise, return false.\n * @param url\n * @returns {boolean}\n */\nconst blockUrl = url => {\n let block = !networkState.isConnected && startsWith(url, 'http');\n if (block) {\n block = !find(excludedList, regExp => regExp.test(url));\n }\n return block;\n};\n\nconst getXMLHttpRequestToUse = ((useNativeXHR: boolean) => {\n const clazz = useNativeXHR ? NativeXMLHttpRequest : XMLHttpRequest;\n const orig = clazz.prototype.open;\n // Intercept all XHR calls\n clazz.prototype.open = function (method: string, url: string, async: boolean = true, user?: string, password?: string) {\n if (!networkState.noServiceRequired && blockUrl(url)) {\n const urlSplits = url.split('://');\n const pathIndex = urlSplits[1].indexOf('/');\n urlSplits[1] = 'localhost' + (pathIndex > 0 ? urlSplits[1].substr(pathIndex) : '/');\n url = urlSplits.join('://');\n }\n return orig.apply(this, [method, url, async, user, password]);\n };\n return clazz;\n});\n\n@Injectable({ providedIn: 'root' })\nexport class NetworkService implements IDeviceStartUpService {\n static readonly SERVICE_NAME = 'NetworkService';\n\n private _autoConnect = localStorage.getItem(AUTO_CONNECT_KEY) !== 'false';\n private _lastKnownNetworkState: any;\n private _isCheckingServer = false;\n\n constructor(private httpClient: HttpClient, private app: App, private network: Network, private deviceService: DeviceService) {\n networkState.isConnected = localStorage.getItem(IS_CONNECTED_KEY) === 'true';\n XML_HTTP_REQUEST = XML_HTTP_REQUEST || getXMLHttpRequestToUse(deviceService.useNativeXHR());\n }\n\n /**\n * This method attempts to connect app to the server and returns a promise that will be resolved with\n * a boolean value based on the operation result.\n *\n * @returns {object} promise\n */\n public connect(): Promise<boolean> {\n this.setAutoConnect(true);\n return this.tryToConnect();\n }\n\n /**\n * When the auto connect is enabled, then app is automatically connected whenever server is available.\n * Every time when app goes offline, auto connect is enabled. Before app coming to online, one can disable\n * the auto connection flow using this method.\n */\n public disableAutoConnect = () => this.setAutoConnect(false);\n\n /**\n * This method disconnects the app from the server and returns a promise that will be resolved with\n * a boolean value based on the operation result. Use connect method to reconnect.\n *\n * @returns {object} promise\n */\n public disconnect(): Promise<boolean> {\n const p = this.tryToDisconnect();\n this.disableAutoConnect();\n return p;\n }\n\n /**\n * If pingServer is true, then it returns a promise that will be resolved with boolean based on service availability\n * check.If pingServer is false, returns a boolean value based on the last known service availability.\n *\n * @returns {boolean} if pingServer is true, then a promise is returned. Otherwise, a boolean value.\n */\n public isAvailable(pingServer = false): boolean | Promise<boolean> {\n if (pingServer) {\n return this.isServiceAvailable().then(() => {\n this.checkForNetworkStateChange();\n return networkState.isServiceAvailable;\n });\n }\n return networkState.isServiceAvailable;\n }\n\n /**\n * Returns true, if app is connected to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true, if app is connected to server. Otherwise, returns false.\n */\n public isConnected = () => {\n // checking for connection type.\n if (get(navigator, 'connection') && navigator.connection.type) {\n networkState.isConnected = networkState.isConnected && (navigator.connection.type !== 'none');\n }\n this.checkForNetworkStateChange();\n return networkState.isConnected;\n }\n\n /**\n * Returns true if app is trying to connect to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true if app is trying to connect to server. Otherwise, returns false.\n */\n public isConnecting = () => networkState.isConnecting;\n\n /**\n * This method returns a promise that is resolved when connection is established with server.\n *\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public onConnect() {\n let defer,\n cancelSubscription;\n if (this.isConnected()) {\n return Promise.resolve();\n }\n defer = getAbortableDefer();\n cancelSubscription = this.app.subscribe('onNetworkStateChange', () => {\n if (this.isConnected()) {\n defer.resolve(true);\n cancelSubscription();\n }\n });\n defer.promise.catch(function () {\n cancelSubscription();\n });\n return defer.promise;\n }\n\n /**\n * This is a util method. If fn cannot execute successfully and network lost connection, then the fn will\n * be invoked when network is back. The returned can also be aborted.\n *\n * @param {function()} fn method to invoke.\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public retryIfNetworkFails(fn) {\n const defer = getAbortableDefer();\n retryIfFails(fn, 0, 0, () => {\n let onConnectPromise;\n if (!this.isConnected()) {\n onConnectPromise = this.onConnect();\n defer.promise.catch(function () {\n onConnectPromise.abort();\n });\n return onConnectPromise;\n }\n return false;\n }).then(defer.resolve, defer.reject);\n return defer.promise;\n }\n\n public start(): Promise<any> {\n if (window['cordova']) {\n // Connection constant will be available only when network plugin is included.\n if (window['Connection'] && navigator.connection) {\n networkState.isNetworkAvailable = navigator.connection.type !== 'none';\n networkState.isConnected = networkState.isNetworkAvailable && networkState.isConnected;\n /*\n * When the device comes online, check is the service is available. If the service is available and auto\n * connect flag is true, then app is automatically connected to remote server.\n */\n this.network.onConnect().subscribe(() => {\n networkState.isNetworkAvailable = true;\n this.tryToConnect().catch(noop);\n });\n\n /*\n *When device goes offline, then change the network state and emit that notifies about network state change.\n */\n this.network.onDisconnect().subscribe(() => {\n networkState.isNetworkAvailable = false;\n networkState.isServiceAvailable = false;\n this.tryToDisconnect();\n });\n\n this.app.subscribe('onNetworkStateChange', (data) => {\n /**\n * If network is available and server is not available,then\n * try to connect when server is available.\n */\n if (data.isNetworkAvailable && !data.isServiceAvailable && !this._isCheckingServer && !data.noServiceRequired) {\n this._isCheckingServer = true;\n this.checkForServiceAvailiblity().then(() => {\n this._isCheckingServer = false;\n this.connect();\n }, () => {\n this._isCheckingServer = false;\n });\n }\n });\n }\n }\n // to set the default n/w connection values.\n return this.tryToConnect(true).catch(noop);\n }\n\n public getServiceName() {\n return NetworkService.SERVICE_NAME;\n }\n\n /**\n * This function adds the given regular expression to the unblockList. Even app is in offline mode,\n * the urls matching with the given regular expression are not blocked by NetworkService.\n *\n * @param {string} urlRegex regular expression\n */\n public unblock(urlRegex: string) {\n excludedList.push(new RegExp(urlRegex));\n }\n\n public getState() {\n return clone(networkState);\n }\n\n private checkForNetworkStateChange() {\n if (!isEqual(this._lastKnownNetworkState, networkState)) {\n this._lastKnownNetworkState = clone(networkState);\n this.app.notify('onNetworkStateChange', this._lastKnownNetworkState);\n }\n }\n\n /**\n * Returns a promise that is resolved when server is available.\n * @returns {*}\n */\n private checkForServiceAvailiblity(): Promise<void> {\n const maxTimeout = 4500;\n return new Promise<void>(resolve => {\n const intervalId = setInterval(() => {\n if (networkState.isNetworkAvailable) {\n this.isServiceAvailable(maxTimeout).then(available => {\n if (available) {\n clearInterval(intervalId);\n resolve();\n }\n });\n }\n }, 5000);\n });\n }\n\n /**\n * Pings server to check whether server is available. Based on ping response network state is modified.\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n */\n private isServiceAvailable(maxTimeout?: number): Promise<boolean> {\n if (this.app.deployedUrl === 'NONE') {\n networkState.isServiceAvailable = false;\n networkState.noServiceRequired = true;\n return Promise.resolve(false);\n }\n return this.pingServer(maxTimeout).then(response => {\n networkState.isServiceAvailable = response;\n if (!networkState.isServiceAvailable) {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n }\n return response;\n });\n }\n\n /**\n * Pings server\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n * default timeout value is 1min.\n */\n private pingServer(maxTimeout = 60000): Promise<boolean> {\n return new Promise<boolean>(resolve => {\n const oReq = new XML_HTTP_REQUEST();\n let baseURL = this.app.deployedUrl;\n if (baseURL && !endsWith(baseURL, '/')) {\n baseURL += '/';\n } else {\n baseURL = baseURL || '';\n }\n\n const timer = setTimeout(() => {\n oReq.abort(); // abort request\n resolve(false);\n }, maxTimeout);\n\n oReq.addEventListener('load', () => {\n if (oReq.status === 200) {\n resolve(true);\n } else {\n resolve(false);\n }\n if (timer) {\n clearTimeout(timer);\n }\n });\n\n oReq.addEventListener('error', () => resolve(false));\n oReq.open('GET', baseURL + 'services/application/wmProperties.js?t=' + Date.now());\n oReq.send();\n });\n }\n\n private setAutoConnect(flag: boolean): void {\n this._autoConnect = flag;\n localStorage.setItem(AUTO_CONNECT_KEY, '' + flag);\n }\n\n /**\n * Tries to connect to remote server. Network State will be changed based on the success of connection\n * operation and emits an event notifying the network state change.\n *\n * @param silentMode {boolean} if true and connection is successful, then no event is emitted. Otherwise,\n * events are emitted for network status change.\n * @returns {*} a promise\n */\n private tryToConnect(silentMode = false): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this.isServiceAvailable(5000).then(() => {\n if (networkState.isServiceAvailable && this._autoConnect) {\n networkState.isConnecting = true;\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n setTimeout(() => {\n networkState.isConnecting = false;\n networkState.isConnected = true;\n localStorage.setItem(IS_CONNECTED_KEY, '' + true);\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n resolve(true);\n }, silentMode ? 0 : 5000);\n } else {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n localStorage.setItem(IS_CONNECTED_KEY, '' + false);\n reject();\n this.checkForNetworkStateChange();\n }\n });\n });\n }\n\n private tryToDisconnect(): Promise<boolean> {\n networkState.isConnected = false;\n networkState.isConnecting = false;\n this.checkForNetworkStateChange();\n localStorage.setItem(IS_CONNECTED_KEY, '' + networkState.isConnected);\n return Promise.resolve(networkState.isConnected);\n }\n}\n","import { NgModule } from '@angular/core';\n\nimport { hasCordova, isIos } from '@wm/core';\n\nimport { DeviceFileCacheService } from './services/device-file-cache.service';\nimport { DeviceFileOpenerService } from './services/device-file-opener.service';\nimport { DeviceFileService } from './services/device-file.service';\nimport { DeviceService } from './services/device.service';\nimport { NetworkService } from './services/network.service';\nimport { NativeXMLHttpRequest } from './native.xhr';\n\ndeclare const cordova;\n\n@NgModule({\n declarations: [],\n imports: [],\n providers: [\n // add providers to mobile-runtime module.\n ],\n bootstrap: []\n})\nexport class MobileCoreModule {\n static initialized = false;\n // Startup services have to be added only once in the app life-cycle.\n static addStartupServices(deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n fileCacheService: DeviceFileCacheService,\n fileOpener: DeviceFileOpenerService,\n networkService: NetworkService) {\n if (this.initialized) {\n return;\n }\n deviceService.addStartUpService(networkService);\n if (hasCordova()) {\n deviceService.addStartUpService(deviceFileService);\n deviceService.addStartUpService(fileCacheService);\n deviceService.addStartUpService(fileOpener);\n }\n this.initialized = true;\n }\n\n constructor(\n deviceService: DeviceService,\n deviceFileService: DeviceFileService,\n fileCacheService: DeviceFileCacheService,\n fileOpener: DeviceFileOpenerService,\n networkService: NetworkService\n ) {\n MobileCoreModule.addStartupServices(deviceService, deviceFileService, fileCacheService, fileOpener, networkService);\n const isSSLPinningEnabled = deviceService.getConfig().enableSSLPinning;\n if (hasCordova()) {\n document.addEventListener('wmDeviceReady', () => {\n if (deviceService.useNativeXHR()) {\n // ### ANGULAR9TODO###\n // Adding type as any to avoid error TS2739:\n (<any>window)['XMLHttpRequest'] = NativeXMLHttpRequest;\n if (isSSLPinningEnabled) {\n cordova.plugin.http.setServerTrustMode('pinned', () => {\n console.log('SSL Pinning enabled.!');\n }, e => {\n console.log('Failed to enable SSL Pinning. Due to: ' + e);\n }); \n }\n this.overrideResolveLocalFileSystemURL();\n }\n }, false);\n }\n }\n\n private overrideResolveLocalFileSystemURL() {\n const or = window['resolveLocalFileSystemURL'];\n window['resolveLocalFileSystemURL'] = (path, onSuccess, onError) => {\n if (path && path.startsWith('http://localhost')) {\n path = new URL(path).pathname;\n const lf = '/local-filesystem';\n if (path.startsWith(lf)) {\n path = 'file://' + path.substring(lf.length);\n }\n }\n or.call(window, path, onSuccess, onError);\n };\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { File } from '@awesome-cordova-plugins/file/ngx';\n\nimport { convertToBlob } from '@wm/core';\nimport {forEach} from \"lodash-es\";\n\nexport interface IUploadResponse {\n text: string;\n response: any;\n headers: (string) => string;\n}\n\nexport class UploadRequest {\n\n private _files = [];\n private _params = [];\n private _headers = [];\n\n constructor (private url: string, private cordovaFile: File) {\n\n }\n\n public addFile(name: string, path: string, filename: string): UploadRequest {\n this._files.push({\n name: name,\n path: path,\n fileName: filename\n });\n return this;\n }\n\n public addHeader(name: string, value: string): UploadRequest {\n this._headers.push({\n name: name,\n value: value\n });\n return this;\n }\n\n public addParam(name: string, value: string): UploadRequest {\n this._params.push({\n name: name,\n value: value\n });\n return this;\n }\n\n public post(): Promise<IUploadResponse> {\n const formData = new FormData();\n this._params.forEach( e => formData.append(e.name, e.value));\n return Promise.all(this._files.map( e => {\n if (e.path) {\n return convertToBlob(e.path)\n .then(result => {\n return {\n name: e.name,\n fileName: e.fileName,\n blob: result.blob\n };\n });\n }\n return e;\n })).then(params => {\n params.forEach(e => formData.append(e.name, e.blob || e.path, e.fileName));\n return new Promise<IUploadResponse>((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open('POST', this.url);\n this._headers.forEach(e => request.setRequestHeader(e.name, e.value));\n request.onload = () => {\n resolve({\n headers: (name: string) => request.getResponseHeader(name),\n response: request.response,\n text: request.responseText as string\n });\n };\n request.onerror = reject;\n request.onabort = reject;\n request.send(formData);\n });\n });\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DeviceFileUploadService {\n static readonly SERVICE_NAME = 'DeviceFileUploadService';\n constructor(private cordovaFile: File) {}\n\n public upload(url: string, fileParamName: string, path: string, fileName?: string, params?: any, headers?: any): Promise<IUploadResponse> {\n const req = new UploadRequest(url, this.cordovaFile)\n .addFile(fileParamName, path, fileName);\n forEach(params, (k, v) => req.addParam(k, v));\n forEach(headers, (k, v) => req.addHeader(k, v));\n return req.post();\n }\n\n}\n","import { Injectable } from '@angular/core';\n\nimport { App, getValidJSON } from '@wm/core';\nimport {forEach, remove, split, startsWith} from \"lodash-es\";\n\ninterface Message {\n address: string;\n data: Map<string, string>;\n}\n\ninterface Handler {\n pattern: string;\n callback: (msg: string) => any;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ExtAppMessageService {\n static readonly SERVICE_NAME = 'ExtAppMessageService';\n private handlers = [];\n\n constructor(private app: App) {\n document.addEventListener('externalAppMessageReceived', e => {\n const message = (e['detail'].message) as Message;\n this.handlers.forEach(handler => {\n const matches = handler && message.address.match(handler.pattern);\n if (matches && matches.length > 0) {\n handler.callBack(message);\n }\n });\n });\n }\n\n /**\n * adds a listener for a message whose address matches with the given regex pattern.\n *\n * @param {string} messageAddressPattern a regex pattern that is used to target messages to listen.\n * @param {Function} listener function to invoke when message that matches regex is received.\n * message received will be sent as first argument.\n * @returns {Function} a function which removes the listener when invoked.\n */\n public subscribe(messageAddressPattern, listener: (msg: Message) => any) {\n const handler = {\n pattern : new RegExp(messageAddressPattern),\n callBack : listener\n };\n this.handlers.push(handler);\n return () => remove(this.handlers, handler);\n }\n\n}\n\n(function (window, document) {\n 'use strict';\n // listen app-to-app communication via url schemes\n function subString(str, begin, end) {\n end = end < 0 ? undefined : end;\n return (str && begin >= 0 && str.length > begin && str.substring(begin, end)) || undefined;\n }\n function indexOf(str, pattern) {\n return str && str.indexOf(pattern);\n }\n /**\n * returns if oAuth flow is implicit or pkce using state object in redirect_uri response.\n *\n * @param {url} string which contains access token and state information.\n * @returns {Boolean}\n */\n function getFlow(url) {\n if (!url) {\n return false;\n }\n const stateObj = url.match(/\\{([^)]+)\\}/);\n if (stateObj) {\n const parsedObj = getValidJSON('{' + stateObj[1] + '}');\n if (parsedObj && parsedObj.flow) {\n return parsedObj.flow;\n }\n }\n return false;\n }\n function extractData(url) {\n let str = subString(url, indexOf(url, '?') + 1, indexOf(url, '#'));\n const data = {}, flow = getFlow(url);\n // access token comes as a hash for implicit flow\n if (flow === 'implicit') {\n str = url.match(/access_token=([^&#]*)/)[0];\n } else if (flow === 'pkce') {\n str = url.match(/code=([^&#]*)/)[0];\n }\n forEach(split(str, '&'), entry => {\n const esplits = entry.split('=');\n data[esplits[0]] = esplits[1];\n });\n return data;\n }\n function extractAddress(url) {\n // access token comes as a hash for implicit flow\n const addressKey = getFlow(url) === 'implicit' ? '#' : '?';\n return subString(url, indexOf(url, '://') + 3, indexOf(url, addressKey));\n }\n function createMessage(url) {\n return {\n 'address': extractAddress(url),\n 'data': extractData(url)\n };\n }\n window['handleOpenURL'] = function (url) {\n const handleOpenURL = window['handleOpenURL'];\n if (handleOpenURL.isReady && !startsWith(url, 'http')) {\n const message = createMessage(url);\n const e = new window['CustomEvent']('externalAppMessageReceived', {\n 'detail': {\n 'message': message\n }\n });\n document.dispatchEvent(e);\n }\n handleOpenURL.lastURL = url;\n };\n}(window, document));\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i2","i1","i3.DeviceFileService","i2.DeviceFileService","i3.DeviceFileDownloadService","i4.DeviceFileCacheService","i5.DeviceFileDownloadService","cordova","i4.DeviceService","i1.DeviceService","i3.DeviceFileCacheService","i4.DeviceFileOpenerService","i5.NetworkService"],"mappings":"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"}