@sumaris-net/ngx-components 18.14.0 → 18.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1416) hide show
  1. package/esm2022/public_api.mjs +390 -0
  2. package/esm2022/src/app/admin/admin-routing.module.mjs +34 -0
  3. package/esm2022/src/app/admin/admin.module.mjs +32 -0
  4. package/esm2022/src/app/admin/services/filter/person.filter.mjs +76 -0
  5. package/esm2022/src/app/admin/services/person.service.mjs +184 -0
  6. package/esm2022/src/app/admin/services/validator/person.validator.mjs +72 -0
  7. package/esm2022/src/app/admin/users/users.mjs +379 -0
  8. package/esm2022/src/app/admin/users/users.module.mjs +56 -0
  9. package/esm2022/src/app/core/about/about.modal.mjs +86 -0
  10. package/esm2022/src/app/core/about/about.module.mjs +22 -0
  11. package/esm2022/src/app/core/account/account.module.mjs +75 -0
  12. package/esm2022/src/app/core/account/account.page.mjs +364 -0
  13. package/esm2022/src/app/core/account/new-token.form.mjs +106 -0
  14. package/esm2022/src/app/core/account/new-token.modal.mjs +66 -0
  15. package/esm2022/src/app/core/account/password/change-password.form.mjs +63 -0
  16. package/esm2022/src/app/core/account/password/change-password.module.mjs +22 -0
  17. package/esm2022/src/app/core/account/password/change-password.page.mjs +150 -0
  18. package/esm2022/src/app/core/account/token.table.mjs +157 -0
  19. package/esm2022/src/app/core/auth/auth.form.mjs +159 -0
  20. package/esm2022/src/app/core/auth/auth.modal.mjs +76 -0
  21. package/esm2022/src/app/core/auth/auth.module.mjs +56 -0
  22. package/esm2022/src/app/core/auth/reset-password.modal.mjs +89 -0
  23. package/esm2022/src/app/core/core.module.mjs +151 -0
  24. package/esm2022/src/app/core/core.testing.module.mjs +107 -0
  25. package/esm2022/src/app/core/form/array/form-array.mjs +328 -0
  26. package/esm2022/src/app/core/form/array/testing/form-array-test.module.mjs +23 -0
  27. package/esm2022/src/app/core/form/array/testing/form-array.test.mjs +94 -0
  28. package/esm2022/src/app/core/form/buttons/form-buttons-bar.component.mjs +108 -0
  29. package/esm2022/src/app/core/form/buttons/form-buttons-bar.module.mjs +31 -0
  30. package/esm2022/src/app/core/form/entity/editor.class.mjs +268 -0
  31. package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +420 -0
  32. package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +741 -0
  33. package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +24 -0
  34. package/esm2022/src/app/core/form/entity/entity.module.mjs +32 -0
  35. package/esm2022/src/app/core/form/entity/tab-editor.class.mjs +190 -0
  36. package/esm2022/src/app/core/form/form-container.class.mjs +341 -0
  37. package/esm2022/src/app/core/form/form.class.mjs +337 -0
  38. package/esm2022/src/app/core/form/form.module.mjs +70 -0
  39. package/esm2022/src/app/core/form/form.utils.mjs +232 -0
  40. package/esm2022/src/app/core/form/list/list.form.mjs +235 -0
  41. package/esm2022/src/app/core/form/list/list.module.mjs +31 -0
  42. package/esm2022/src/app/core/form/properties/properties.form.mjs +317 -0
  43. package/esm2022/src/app/core/form/properties/properties.module.mjs +37 -0
  44. package/esm2022/src/app/core/form/properties/properties.table.mjs +264 -0
  45. package/esm2022/src/app/core/form/properties/properties.utils.mjs +304 -0
  46. package/esm2022/src/app/core/form/properties/property.validator.mjs +70 -0
  47. package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +104 -0
  48. package/esm2022/src/app/core/form/properties/testing/properties-form.testing.module.mjs +23 -0
  49. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +73 -0
  50. package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.module.mjs +30 -0
  51. package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +161 -0
  52. package/esm2022/src/app/core/form/text-popover/text-popover.module.mjs +31 -0
  53. package/esm2022/src/app/core/form/username/username.form.mjs +55 -0
  54. package/esm2022/src/app/core/form/username/username.module.mjs +20 -0
  55. package/esm2022/src/app/core/graphql/graphql.module.mjs +14 -0
  56. package/esm2022/src/app/core/graphql/graphql.service.mjs +781 -0
  57. package/esm2022/src/app/core/graphql/graphql.utils.mjs +119 -0
  58. package/esm2022/src/app/core/home/home.mjs +403 -0
  59. package/esm2022/src/app/core/home/home.module.mjs +54 -0
  60. package/esm2022/src/app/core/icon/icon.component.mjs +40 -0
  61. package/esm2022/src/app/core/icon/icon.module.mjs +20 -0
  62. package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +394 -0
  63. package/esm2022/src/app/core/install/install-upgrade-card.module.mjs +31 -0
  64. package/esm2022/src/app/core/menu/menu.component.mjs +258 -0
  65. package/esm2022/src/app/core/menu/menu.model.mjs +272 -0
  66. package/esm2022/src/app/core/menu/menu.module.mjs +47 -0
  67. package/esm2022/src/app/core/menu/menu.service.mjs +666 -0
  68. package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +109 -0
  69. package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +50 -0
  70. package/esm2022/src/app/core/menu/testing/menu.testing.mjs +158 -0
  71. package/esm2022/src/app/core/menu/testing/menu.testing.module.mjs +60 -0
  72. package/esm2022/src/app/core/offline/update-offline-mode-card.component.mjs +28 -0
  73. package/esm2022/src/app/core/offline/update-offline-mode-card.module.mjs +31 -0
  74. package/esm2022/src/app/core/peer/select-peer.modal.mjs +344 -0
  75. package/esm2022/src/app/core/peer/select-peer.module.mjs +36 -0
  76. package/esm2022/src/app/core/register/register-confirm.page.mjs +90 -0
  77. package/esm2022/src/app/core/register/register.form.mjs +194 -0
  78. package/esm2022/src/app/core/register/register.modal.mjs +55 -0
  79. package/esm2022/src/app/core/register/register.module.mjs +23 -0
  80. package/esm2022/src/app/core/services/account.service.mjs +1358 -0
  81. package/esm2022/src/app/core/services/auth-guard.service.mjs +74 -0
  82. package/esm2022/src/app/core/services/base-entity-service.class.mjs +485 -0
  83. package/esm2022/src/app/core/services/base-graphql-service.class.mjs +230 -0
  84. package/esm2022/src/app/core/services/base58.mjs +83 -0
  85. package/esm2022/src/app/core/services/config/core.config.mjs +258 -0
  86. package/esm2022/src/app/core/services/config.service.mjs +384 -0
  87. package/esm2022/src/app/core/services/crypto.service.mjs +107 -0
  88. package/esm2022/src/app/core/services/errors.mjs +54 -0
  89. package/esm2022/src/app/core/services/local-settings.service.mjs +517 -0
  90. package/esm2022/src/app/core/services/model/account.model.mjs +178 -0
  91. package/esm2022/src/app/core/services/model/config.model.mjs +107 -0
  92. package/esm2022/src/app/core/services/model/department.model.mjs +35 -0
  93. package/esm2022/src/app/core/services/model/entity.decorators.mjs +97 -0
  94. package/esm2022/src/app/core/services/model/entity.model.mjs +338 -0
  95. package/esm2022/src/app/core/services/model/filter.model.mjs +93 -0
  96. package/esm2022/src/app/core/services/model/history.model.mjs +2 -0
  97. package/esm2022/src/app/core/services/model/model.enum.mjs +11 -0
  98. package/esm2022/src/app/core/services/model/node-feature.model.mjs +31 -0
  99. package/esm2022/src/app/core/services/model/peer.model.mjs +113 -0
  100. package/esm2022/src/app/core/services/model/person.model.mjs +114 -0
  101. package/esm2022/src/app/core/services/model/referential.model.mjs +205 -0
  102. package/esm2022/src/app/core/services/model/settings.model.mjs +6 -0
  103. package/esm2022/src/app/core/services/model/token.model.mjs +57 -0
  104. package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +220 -0
  105. package/esm2022/src/app/core/services/network.service.mjs +649 -0
  106. package/esm2022/src/app/core/services/network.types.mjs +2 -0
  107. package/esm2022/src/app/core/services/network.utils.mjs +35 -0
  108. package/esm2022/src/app/core/services/pipes/account.pipes.mjs +38 -0
  109. package/esm2022/src/app/core/services/pipes/department-to-string.pipe.mjs +23 -0
  110. package/esm2022/src/app/core/services/pipes/person-to-string.pipe.mjs +23 -0
  111. package/esm2022/src/app/core/services/pipes/pipes.module.mjs +54 -0
  112. package/esm2022/src/app/core/services/pipes/referential-to-string.pipe.mjs +21 -0
  113. package/esm2022/src/app/core/services/pipes/usage-mode.pipes.mjs +37 -0
  114. package/esm2022/src/app/core/services/platform.service.mjs +627 -0
  115. package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +427 -0
  116. package/esm2022/src/app/core/services/storage/entity-store.class.mjs +450 -0
  117. package/esm2022/src/app/core/services/testing/referential-filter.model.mjs +25 -0
  118. package/esm2022/src/app/core/services/testing/referential.validator.mjs +46 -0
  119. package/esm2022/src/app/core/services/validator/account.validator.mjs +45 -0
  120. package/esm2022/src/app/core/services/validator/base.validator.class.mjs +49 -0
  121. package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +57 -0
  122. package/esm2022/src/app/core/services/validator/user-settings.validator.mjs +27 -0
  123. package/esm2022/src/app/core/services/validator/user-token.validator.mjs +55 -0
  124. package/esm2022/src/app/core/settings/settings.module.mjs +23 -0
  125. package/esm2022/src/app/core/settings/settings.page.mjs +403 -0
  126. package/esm2022/src/app/core/table/async-table.class.mjs +1813 -0
  127. package/esm2022/src/app/core/table/column/actions-column.component.mjs +130 -0
  128. package/esm2022/src/app/core/table/column/nav-actions-column.component.mjs +117 -0
  129. package/esm2022/src/app/core/table/column/row-field.component.mjs +116 -0
  130. package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +415 -0
  131. package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +407 -0
  132. package/esm2022/src/app/core/table/memory-table.class.mjs +57 -0
  133. package/esm2022/src/app/core/table/table-select-columns.component.mjs +46 -0
  134. package/esm2022/src/app/core/table/table.class.mjs +1869 -0
  135. package/esm2022/src/app/core/table/table.model.mjs +21 -0
  136. package/esm2022/src/app/core/table/table.module.mjs +51 -0
  137. package/esm2022/src/app/core/table/table.pipes.mjs +77 -0
  138. package/esm2022/src/app/core/table/table.utils.mjs +34 -0
  139. package/esm2022/src/app/core/table/testing/table-validator.service.mjs +32 -0
  140. package/esm2022/src/app/core/table/testing/table.testing.mjs +329 -0
  141. package/esm2022/src/app/core/table/testing/table.testing.module.mjs +25 -0
  142. package/esm2022/src/app/core/table/testing/table2-validator.service.mjs +25 -0
  143. package/esm2022/src/app/core/table/testing/table2.testing.mjs +273 -0
  144. package/esm2022/src/app/shared/alerts.mjs +243 -0
  145. package/esm2022/src/app/shared/audio/audio.mjs +255 -0
  146. package/esm2022/src/app/shared/audio/audio.testing.mjs +32 -0
  147. package/esm2022/src/app/shared/audio/audio.testing.module.mjs +30 -0
  148. package/esm2022/src/app/shared/capacitor/keyboard.mjs +42 -0
  149. package/esm2022/src/app/shared/capacitor/plugins.mjs +9 -0
  150. package/esm2022/src/app/shared/constants.mjs +16 -0
  151. package/esm2022/src/app/shared/dates.mjs +180 -0
  152. package/esm2022/src/app/shared/debug/debug-service.class.mjs +3 -0
  153. package/esm2022/src/app/shared/debug/debug.component.mjs +44 -0
  154. package/esm2022/src/app/shared/debug/debug.module.mjs +23 -0
  155. package/esm2022/src/app/shared/directives/autofocus.directive.mjs +91 -0
  156. package/esm2022/src/app/shared/directives/autoresize.directive.mjs +75 -0
  157. package/esm2022/src/app/shared/directives/autotitle.directive.mjs +30 -0
  158. package/esm2022/src/app/shared/directives/directives.module.mjs +24 -0
  159. package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +52 -0
  160. package/esm2022/src/app/shared/directives/ng-var.directive.mjs +33 -0
  161. package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +62 -0
  162. package/esm2022/src/app/shared/directives/resizable/resizable.directive.mjs +45 -0
  163. package/esm2022/src/app/shared/directives/resizable/resizable.module.mjs +17 -0
  164. package/esm2022/src/app/shared/directives/throttled-click.directive.mjs +43 -0
  165. package/esm2022/src/app/shared/events.mjs +64 -0
  166. package/esm2022/src/app/shared/file/csv.utils.mjs +97 -0
  167. package/esm2022/src/app/shared/file/file.service.mjs +118 -0
  168. package/esm2022/src/app/shared/file/file.utils.mjs +117 -0
  169. package/esm2022/src/app/shared/file/images.utils.mjs +186 -0
  170. package/esm2022/src/app/shared/file/json.utils.mjs +58 -0
  171. package/esm2022/src/app/shared/file/uri.utils.mjs +29 -0
  172. package/esm2022/src/app/shared/file/url.utils.mjs +195 -0
  173. package/esm2022/src/app/shared/focusable.mjs +6 -0
  174. package/esm2022/src/app/shared/form/field.component.mjs +393 -0
  175. package/esm2022/src/app/shared/form/field.model.mjs +82 -0
  176. package/esm2022/src/app/shared/form/loading-spinner.mjs +35 -0
  177. package/esm2022/src/app/shared/forms.mjs +573 -0
  178. package/esm2022/src/app/shared/functions.mjs +672 -0
  179. package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +86 -0
  180. package/esm2022/src/app/shared/gesture/gesture-config.mjs +46 -0
  181. package/esm2022/src/app/shared/gesture/hammer.utils.mjs +2 -0
  182. package/esm2022/src/app/shared/graph/colors.utils.mjs +60 -0
  183. package/esm2022/src/app/shared/graph/graph-colors.mjs +214 -0
  184. package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +65 -0
  185. package/esm2022/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.mjs +23 -0
  186. package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +147 -0
  187. package/esm2022/src/app/shared/hotkeys/shared-hotkeys.module.mjs +24 -0
  188. package/esm2022/src/app/shared/http/http.utils.mjs +56 -0
  189. package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +443 -0
  190. package/esm2022/src/app/shared/image/gallery/image-gallery.module.mjs +62 -0
  191. package/esm2022/src/app/shared/image/gallery/testing/gallegry.model.testing.mjs +26 -0
  192. package/esm2022/src/app/shared/image/gallery/testing/gallery.service.testing.mjs +87 -0
  193. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +37 -0
  194. package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.module.mjs +59 -0
  195. package/esm2022/src/app/shared/image/image.model.mjs +2 -0
  196. package/esm2022/src/app/shared/image/image.module.mjs +24 -0
  197. package/esm2022/src/app/shared/image/image.service.mjs +109 -0
  198. package/esm2022/src/app/shared/inputs.mjs +279 -0
  199. package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +27 -0
  200. package/esm2022/src/app/shared/logging/log-level.model.mjs +48 -0
  201. package/esm2022/src/app/shared/logging/logger.model.mjs +47 -0
  202. package/esm2022/src/app/shared/logging/logging-service.class.mjs +125 -0
  203. package/esm2022/src/app/shared/logging/logging-service.config.mjs +2 -0
  204. package/esm2022/src/app/shared/logging/logging-service.module.mjs +30 -0
  205. package/esm2022/src/app/shared/markdown/markdown.component.mjs +321 -0
  206. package/esm2022/src/app/shared/markdown/markdown.directive.mjs +34 -0
  207. package/esm2022/src/app/shared/markdown/markdown.modal.mjs +99 -0
  208. package/esm2022/src/app/shared/markdown/markdown.module.mjs +87 -0
  209. package/esm2022/src/app/shared/markdown/markdown.service.mjs +204 -0
  210. package/esm2022/src/app/shared/markdown/markdown.utils.mjs +87 -0
  211. package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +55 -0
  212. package/esm2022/src/app/shared/markdown/testing/markdown.testing.module.mjs +30 -0
  213. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +46 -0
  214. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +1313 -0
  215. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.module.mjs +79 -0
  216. package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +18 -0
  217. package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +242 -0
  218. package/esm2022/src/app/shared/material/badge/badge.directive.mjs +251 -0
  219. package/esm2022/src/app/shared/material/badge/badge.module.mjs +20 -0
  220. package/esm2022/src/app/shared/material/badge/badge.test.mjs +42 -0
  221. package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +67 -0
  222. package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +371 -0
  223. package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +72 -0
  224. package/esm2022/src/app/shared/material/chips/chips.module.mjs +71 -0
  225. package/esm2022/src/app/shared/material/chips/material.chips.mjs +836 -0
  226. package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +151 -0
  227. package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +76 -0
  228. package/esm2022/src/app/shared/material/datetime/material.date.mjs +471 -0
  229. package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +457 -0
  230. package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +693 -0
  231. package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +136 -0
  232. package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +127 -0
  233. package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +118 -0
  234. package/esm2022/src/app/shared/material/duration/duration.module.mjs +61 -0
  235. package/esm2022/src/app/shared/material/duration/duration.utils.mjs +16 -0
  236. package/esm2022/src/app/shared/material/duration/material.duration.mjs +283 -0
  237. package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +85 -0
  238. package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +319 -0
  239. package/esm2022/src/app/shared/material/latlong/material.latlong-input.mjs +432 -0
  240. package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +231 -0
  241. package/esm2022/src/app/shared/material/latlong/material.latlong.module.mjs +68 -0
  242. package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +137 -0
  243. package/esm2022/src/app/shared/material/material.animations.mjs +200 -0
  244. package/esm2022/src/app/shared/material/material.config.mjs +3 -0
  245. package/esm2022/src/app/shared/material/material.module.mjs +229 -0
  246. package/esm2022/src/app/shared/material/material.testing.module.mjs +245 -0
  247. package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +51 -0
  248. package/esm2022/src/app/shared/material/stepper/material.stepper-i18n.mjs +23 -0
  249. package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +379 -0
  250. package/esm2022/src/app/shared/material/swipe/swipe.module.mjs +52 -0
  251. package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +67 -0
  252. package/esm2022/src/app/shared/material/test/test-component.mjs +264 -0
  253. package/esm2022/src/app/shared/material/testing/common.test.mjs +111 -0
  254. package/esm2022/src/app/shared/material/text/testing/text-form.testing.mjs +42 -0
  255. package/esm2022/src/app/shared/material/text/text-form.component.mjs +205 -0
  256. package/esm2022/src/app/shared/material/text/text-form.module.mjs +63 -0
  257. package/esm2022/src/app/shared/modules.mjs +12 -0
  258. package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +303 -0
  259. package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +49 -0
  260. package/esm2022/src/app/shared/named-filter/named-filter.module.mjs +24 -0
  261. package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +69 -0
  262. package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +74 -0
  263. package/esm2022/src/app/shared/named-filter/testing/named-filter.testing.module.mjs +28 -0
  264. package/esm2022/src/app/shared/observables.mjs +100 -0
  265. package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +217 -0
  266. package/esm2022/src/app/shared/pipes/badge.pipes.mjs +25 -0
  267. package/esm2022/src/app/shared/pipes/colors.pipe.mjs +29 -0
  268. package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +50 -0
  269. package/esm2022/src/app/shared/pipes/date-format.pipe.mjs +72 -0
  270. package/esm2022/src/app/shared/pipes/date-from-now.pipe.mjs +28 -0
  271. package/esm2022/src/app/shared/pipes/dates.pipe.mjs +18 -0
  272. package/esm2022/src/app/shared/pipes/display-with.pipe.mjs +23 -0
  273. package/esm2022/src/app/shared/pipes/duration.pipe.mjs +34 -0
  274. package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +53 -0
  275. package/esm2022/src/app/shared/pipes/form.pipes.mjs +219 -0
  276. package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +50 -0
  277. package/esm2022/src/app/shared/pipes/html.pipes.mjs +69 -0
  278. package/esm2022/src/app/shared/pipes/latlong-format.pipe.mjs +42 -0
  279. package/esm2022/src/app/shared/pipes/maps.pipe.mjs +65 -0
  280. package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +67 -0
  281. package/esm2022/src/app/shared/pipes/math.pipes.mjs +77 -0
  282. package/esm2022/src/app/shared/pipes/ng-init.pipe.mjs +19 -0
  283. package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +17 -0
  284. package/esm2022/src/app/shared/pipes/observable.pipes.mjs +63 -0
  285. package/esm2022/src/app/shared/pipes/pipes.module.mjs +285 -0
  286. package/esm2022/src/app/shared/pipes/property.pipes.mjs +135 -0
  287. package/esm2022/src/app/shared/pipes/selection.pipes.mjs +179 -0
  288. package/esm2022/src/app/shared/pipes/string.pipes.mjs +183 -0
  289. package/esm2022/src/app/shared/pipes/translate-context.pipe.mjs +44 -0
  290. package/esm2022/src/app/shared/pipes/types.pipes.mjs +74 -0
  291. package/esm2022/src/app/shared/pipes/url.pipes.mjs +35 -0
  292. package/esm2022/src/app/shared/platforms.mjs +81 -0
  293. package/esm2022/src/app/shared/print/print.service.mjs +305 -0
  294. package/esm2022/src/app/shared/regexps.mjs +96 -0
  295. package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +217 -0
  296. package/esm2022/src/app/shared/rx-state/rx-state.module.mjs +19 -0
  297. package/esm2022/src/app/shared/rx-state/rx-state.types.mjs +2 -0
  298. package/esm2022/src/app/shared/services/entity-service.class.mjs +10 -0
  299. package/esm2022/src/app/shared/services/job.utils.mjs +92 -0
  300. package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +353 -0
  301. package/esm2022/src/app/shared/services/progress-bar.service.mjs +31 -0
  302. package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +118 -0
  303. package/esm2022/src/app/shared/services/startable-service.class.mjs +107 -0
  304. package/esm2022/src/app/shared/services/translate-context.service.mjs +107 -0
  305. package/esm2022/src/app/shared/services/validator-service.class.mjs +2 -0
  306. package/esm2022/src/app/shared/services.mjs +85 -0
  307. package/esm2022/src/app/shared/shared-routing.module.mjs +72 -0
  308. package/esm2022/src/app/shared/shared.module.mjs +229 -0
  309. package/esm2022/src/app/shared/shared.testing.module.mjs +108 -0
  310. package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +279 -0
  311. package/esm2022/src/app/shared/storage/storage-explorer.module.mjs +42 -0
  312. package/esm2022/src/app/shared/storage/storage-explorer.testing-routing.module.mjs +27 -0
  313. package/esm2022/src/app/shared/storage/storage-explorer.testing.module.mjs +25 -0
  314. package/esm2022/src/app/shared/storage/storage.service.mjs +134 -0
  315. package/esm2022/src/app/shared/storage/storage.utils.mjs +13 -0
  316. package/esm2022/src/app/shared/testing/maskito.test.mjs +41 -0
  317. package/esm2022/src/app/shared/testing/observable.test.mjs +94 -0
  318. package/esm2022/src/app/shared/testing/tests.page.mjs +37 -0
  319. package/esm2022/src/app/shared/toast/toast.testing.mjs +54 -0
  320. package/esm2022/src/app/shared/toast/toast.testing.module.mjs +31 -0
  321. package/esm2022/src/app/shared/toast/toasts.mjs +134 -0
  322. package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +62 -0
  323. package/esm2022/src/app/shared/toolbar/toolbar.mjs +267 -0
  324. package/esm2022/src/app/shared/toolbar/toolbar.module.mjs +26 -0
  325. package/esm2022/src/app/shared/types.mjs +2 -0
  326. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +59 -0
  327. package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.module.mjs +30 -0
  328. package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +109 -0
  329. package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +216 -0
  330. package/esm2022/src/app/shared/upload-file/upload-file.model.mjs +26 -0
  331. package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +115 -0
  332. package/esm2022/src/app/shared/validator/validators.mjs +621 -0
  333. package/esm2022/src/app/shared/version/versions.mjs +81 -0
  334. package/esm2022/src/app/social/config/social.config.mjs +9 -0
  335. package/esm2022/src/app/social/feed/discourse/discourse-feed.service.mjs +167 -0
  336. package/esm2022/src/app/social/feed/discourse/discourse.model.mjs +2 -0
  337. package/esm2022/src/app/social/feed/discourse/discourse.utils.mjs +168 -0
  338. package/esm2022/src/app/social/feed/feed.component.mjs +121 -0
  339. package/esm2022/src/app/social/feed/feed.directive.mjs +151 -0
  340. package/esm2022/src/app/social/feed/feed.model.mjs +68 -0
  341. package/esm2022/src/app/social/feed/feed.module.mjs +22 -0
  342. package/esm2022/src/app/social/feed/feed.service.mjs +3 -0
  343. package/esm2022/src/app/social/job/job.module.mjs +23 -0
  344. package/esm2022/src/app/social/job/progression/job-progression.component.mjs +35 -0
  345. package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +235 -0
  346. package/esm2022/src/app/social/job/progression/job-progression.list.mjs +47 -0
  347. package/esm2022/src/app/social/job/progression/job-progression.model.mjs +29 -0
  348. package/esm2022/src/app/social/job/progression/job-progression.service.mjs +91 -0
  349. package/esm2022/src/app/social/job/testing/job-progression.testing.mjs +38 -0
  350. package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +34 -0
  351. package/esm2022/src/app/social/job/testing/job.testing.module.mjs +22 -0
  352. package/esm2022/src/app/social/message/message.form.mjs +141 -0
  353. package/esm2022/src/app/social/message/message.modal.mjs +110 -0
  354. package/esm2022/src/app/social/message/message.model.mjs +75 -0
  355. package/esm2022/src/app/social/message/message.module.mjs +22 -0
  356. package/esm2022/src/app/social/message/message.service.mjs +110 -0
  357. package/esm2022/src/app/social/social.errors.mjs +10 -0
  358. package/esm2022/src/app/social/social.module.mjs +22 -0
  359. package/esm2022/src/app/social/social.testing.module.mjs +40 -0
  360. package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +187 -0
  361. package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +277 -0
  362. package/esm2022/src/app/social/user-event/notification/user-event-notification.modal.mjs +81 -0
  363. package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +273 -0
  364. package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +129 -0
  365. package/esm2022/src/app/social/user-event/testing/user-event.testing.module.mjs +22 -0
  366. package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +128 -0
  367. package/esm2022/src/app/social/user-event/user-event.model.mjs +2 -0
  368. package/esm2022/src/app/social/user-event/user-event.module.mjs +24 -0
  369. package/esm2022/src/app/social/user-event/user-event.service.mjs +512 -0
  370. package/esm2022/src/environments/environment.class.mjs +66 -0
  371. package/esm2022/src/environments/environment.loader.mjs +77 -0
  372. package/esm2022/src/environments/environment.mjs +118 -0
  373. package/esm2022/sumaris-net.ngx-components.mjs +5 -0
  374. package/fesm2022/sumaris-net.ngx-components.mjs +49754 -0
  375. package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -0
  376. package/index.d.ts +5 -0
  377. package/package.json +19 -133
  378. package/public_api.d.ts +354 -0
  379. package/src/app/admin/admin-routing.module.d.ts +9 -0
  380. package/src/app/admin/admin.module.d.ts +10 -0
  381. package/src/app/admin/services/filter/person.filter.d.ts +22 -0
  382. package/src/app/admin/services/person.service.d.ts +37 -0
  383. package/src/app/admin/services/validator/person.validator.d.ts +23 -0
  384. package/src/app/admin/users/users.d.ts +61 -0
  385. package/src/app/admin/users/users.module.d.ts +14 -0
  386. package/src/app/core/about/about.modal.d.ts +32 -0
  387. package/src/app/core/about/about.module.d.ts +11 -0
  388. package/src/app/core/account/account.module.d.ts +18 -0
  389. package/src/app/core/account/account.page.d.ts +83 -0
  390. package/src/app/core/account/new-token.form.d.ts +29 -0
  391. package/src/app/core/account/new-token.modal.d.ts +29 -0
  392. package/src/app/core/account/password/change-password.form.d.ts +19 -0
  393. package/src/app/core/account/password/change-password.module.d.ts +11 -0
  394. package/src/app/core/account/password/change-password.page.d.ts +36 -0
  395. package/src/app/core/account/token.table.d.ts +27 -0
  396. package/src/app/core/auth/auth.form.d.ts +38 -0
  397. package/src/app/core/auth/auth.modal.d.ts +24 -0
  398. package/src/app/core/auth/auth.module.d.ts +13 -0
  399. package/src/app/core/auth/reset-password.modal.d.ts +29 -0
  400. package/src/app/core/core.module.d.ts +28 -0
  401. package/src/app/core/core.testing.module.d.ts +15 -0
  402. package/src/app/core/form/array/form-array.d.ts +137 -0
  403. package/src/app/core/form/array/testing/form-array-test.module.d.ts +12 -0
  404. package/src/app/core/form/array/testing/form-array.test.d.ts +26 -0
  405. package/src/app/core/form/buttons/form-buttons-bar.component.d.ts +37 -0
  406. package/src/app/core/form/buttons/form-buttons-bar.module.d.ts +9 -0
  407. package/src/app/core/form/entity/editor.class.d.ts +84 -0
  408. package/src/app/core/form/entity/entity-editor-modal.class.d.ts +126 -0
  409. package/src/app/core/form/entity/entity-editor.class.d.ts +204 -0
  410. package/src/app/core/form/entity/entity-metadata.component.d.ts +13 -0
  411. package/src/app/core/form/entity/entity.module.d.ts +10 -0
  412. package/src/app/core/form/entity/tab-editor.class.d.ts +66 -0
  413. package/src/app/core/form/form-container.class.d.ts +127 -0
  414. package/src/app/core/form/form.class.d.ts +144 -0
  415. package/src/app/core/form/form.module.d.ts +14 -0
  416. package/src/app/core/form/form.utils.d.ts +287 -0
  417. package/src/app/core/form/list/list.form.d.ts +81 -0
  418. package/src/app/core/form/list/list.module.d.ts +9 -0
  419. package/src/app/core/form/properties/properties.form.d.ts +92 -0
  420. package/src/app/core/form/properties/properties.module.d.ts +11 -0
  421. package/src/app/core/form/properties/properties.table.d.ts +72 -0
  422. package/src/app/core/form/properties/properties.utils.d.ts +59 -0
  423. package/src/app/core/form/properties/property.validator.d.ts +27 -0
  424. package/src/app/core/form/properties/testing/properties-form.test.d.ts +22 -0
  425. package/src/app/core/form/properties/testing/properties-form.testing.module.d.ts +12 -0
  426. package/src/app/core/form/text-popover/testing/text-popover.testing.d.ts +16 -0
  427. package/src/app/core/form/text-popover/testing/text-popover.testing.module.d.ts +11 -0
  428. package/src/app/core/form/text-popover/text-popover.component.d.ts +80 -0
  429. package/src/app/core/form/text-popover/text-popover.module.d.ts +9 -0
  430. package/src/app/core/form/username/username.form.d.ts +19 -0
  431. package/src/app/core/form/username/username.module.d.ts +9 -0
  432. package/src/app/core/graphql/graphql.module.d.ts +7 -0
  433. package/src/app/core/graphql/graphql.service.d.ts +142 -0
  434. package/src/app/core/graphql/graphql.utils.d.ts +47 -0
  435. package/src/app/core/home/home.d.ts +117 -0
  436. package/src/app/core/home/home.module.d.ts +16 -0
  437. package/src/app/core/icon/icon.component.d.ts +13 -0
  438. package/src/app/core/icon/icon.module.d.ts +9 -0
  439. package/src/app/core/install/install-upgrade-card.component.d.ts +63 -0
  440. package/src/app/core/install/install-upgrade-card.module.d.ts +9 -0
  441. package/src/app/core/menu/menu.component.d.ts +66 -0
  442. package/src/app/core/menu/menu.model.d.ts +144 -0
  443. package/src/app/core/menu/menu.module.d.ts +12 -0
  444. package/src/app/core/menu/menu.service.d.ts +93 -0
  445. package/src/app/core/menu/sub-menu-tab.directive.d.ts +29 -0
  446. package/src/app/core/menu/testing/menu-other.testing.d.ts +15 -0
  447. package/src/app/core/menu/testing/menu.testing.d.ts +51 -0
  448. package/src/app/core/menu/testing/menu.testing.module.d.ts +12 -0
  449. package/src/app/core/offline/update-offline-mode-card.component.d.ts +11 -0
  450. package/src/app/core/offline/update-offline-mode-card.module.d.ts +9 -0
  451. package/src/app/core/peer/select-peer.modal.d.ts +101 -0
  452. package/src/app/core/peer/select-peer.module.d.ts +12 -0
  453. package/src/app/core/register/register-confirm.page.d.ts +24 -0
  454. package/src/app/core/register/register.form.d.ts +49 -0
  455. package/src/app/core/register/register.modal.d.ts +14 -0
  456. package/src/app/core/register/register.module.d.ts +12 -0
  457. package/src/app/core/services/account.service.d.ts +207 -0
  458. package/src/app/core/services/auth-guard.service.d.ts +17 -0
  459. package/src/app/core/services/base-entity-service.class.d.ts +135 -0
  460. package/src/app/core/services/base-graphql-service.class.d.ts +77 -0
  461. package/src/app/core/services/base58.d.ts +7 -0
  462. package/src/app/core/services/config/core.config.d.ts +46 -0
  463. package/src/app/core/services/config.service.d.ts +63 -0
  464. package/src/app/core/services/crypto.service.d.ts +44 -0
  465. package/src/app/core/services/errors.d.ts +65 -0
  466. package/src/app/core/services/local-settings.service.d.ts +100 -0
  467. package/src/app/core/services/model/account.model.d.ts +56 -0
  468. package/src/app/core/services/model/config.model.d.ts +36 -0
  469. package/src/app/core/services/model/department.model.d.ts +11 -0
  470. package/src/app/core/services/model/entity.decorators.d.ts +17 -0
  471. package/src/app/core/services/model/entity.model.d.ts +133 -0
  472. package/src/app/core/services/model/filter.model.d.ts +37 -0
  473. package/src/app/core/services/model/history.model.d.ts +20 -0
  474. package/src/app/core/services/model/model.enum.d.ts +7 -0
  475. package/src/app/core/services/model/node-feature.model.d.ts +14 -0
  476. package/src/app/core/services/model/peer.model.d.ts +35 -0
  477. package/src/app/core/services/model/person.model.d.ts +37 -0
  478. package/src/app/core/services/model/referential.model.d.ts +84 -0
  479. package/src/app/core/services/model/settings.model.d.ts +29 -0
  480. package/src/app/core/services/model/token.model.d.ts +22 -0
  481. package/src/app/core/services/model/tree-item-entity.model.d.ts +61 -0
  482. package/src/app/core/services/network.service.d.ts +160 -0
  483. package/src/app/core/services/network.types.d.ts +4 -0
  484. package/src/app/core/services/network.utils.d.ts +38 -0
  485. package/src/app/core/services/pipes/account.pipes.d.ts +15 -0
  486. package/src/app/core/services/pipes/department-to-string.pipe.d.ts +9 -0
  487. package/src/app/core/services/pipes/person-to-string.pipe.d.ts +11 -0
  488. package/src/app/core/services/pipes/pipes.module.d.ts +11 -0
  489. package/src/app/core/services/pipes/referential-to-string.pipe.d.ts +13 -0
  490. package/src/app/core/services/pipes/usage-mode.pipes.d.ts +15 -0
  491. package/src/app/core/services/platform.service.d.ts +110 -0
  492. package/src/app/core/services/storage/entities-storage.service.d.ts +108 -0
  493. package/src/app/core/services/storage/entity-store.class.d.ts +113 -0
  494. package/src/app/core/services/testing/referential-filter.model.d.ts +9 -0
  495. package/src/app/core/services/testing/referential.validator.d.ts +22 -0
  496. package/src/app/core/services/validator/account.validator.d.ts +24 -0
  497. package/src/app/core/services/validator/base.validator.class.d.ts +21 -0
  498. package/src/app/core/services/validator/local-settings.validator.d.ts +18 -0
  499. package/src/app/core/services/validator/user-settings.validator.d.ts +10 -0
  500. package/src/app/core/services/validator/user-token.validator.d.ts +13 -0
  501. package/src/app/core/settings/settings.module.d.ts +12 -0
  502. package/src/app/core/settings/settings.page.d.ts +88 -0
  503. package/src/app/core/table/async-table.class.d.ts +395 -0
  504. package/src/app/core/table/column/actions-column.component.d.ts +62 -0
  505. package/src/app/core/table/column/nav-actions-column.component.d.ts +46 -0
  506. package/src/app/core/table/column/row-field.component.d.ts +40 -0
  507. package/src/app/core/table/entities-async-table-datasource.class.d.ts +103 -0
  508. package/src/app/core/table/entities-table-datasource.class.d.ts +102 -0
  509. package/src/app/core/table/memory-table.class.d.ts +25 -0
  510. package/src/app/core/table/table-select-columns.component.d.ts +22 -0
  511. package/src/app/core/table/table.class.d.ts +400 -0
  512. package/src/app/core/table/table.model.d.ts +31 -0
  513. package/src/app/core/table/table.module.d.ts +14 -0
  514. package/src/app/core/table/table.pipes.d.ts +29 -0
  515. package/src/app/core/table/table.utils.d.ts +13 -0
  516. package/src/app/core/table/testing/table-validator.service.d.ts +17 -0
  517. package/src/app/core/table/testing/table.testing.d.ts +54 -0
  518. package/src/app/core/table/testing/table.testing.module.d.ts +14 -0
  519. package/src/app/core/table/testing/table2-validator.service.d.ts +15 -0
  520. package/src/app/core/table/testing/table2.testing.d.ts +48 -0
  521. package/src/app/shared/alerts.d.ts +55 -0
  522. package/src/app/shared/audio/audio.d.ts +45 -0
  523. package/src/app/shared/audio/audio.testing.d.ts +13 -0
  524. package/src/app/shared/audio/audio.testing.module.d.ts +11 -0
  525. package/src/app/shared/capacitor/keyboard.d.ts +16 -0
  526. package/src/app/shared/capacitor/plugins.d.ts +7 -0
  527. package/src/app/shared/constants.d.ts +13 -0
  528. package/src/app/shared/dates.d.ts +61 -0
  529. package/src/app/shared/debug/debug-service.class.d.ts +5 -0
  530. package/src/app/shared/debug/debug.component.d.ts +14 -0
  531. package/src/app/shared/debug/debug.module.d.ts +12 -0
  532. package/src/app/shared/directives/autofocus.directive.d.ts +18 -0
  533. package/src/app/shared/directives/autoresize.directive.d.ts +20 -0
  534. package/src/app/shared/directives/autotitle.directive.d.ts +11 -0
  535. package/src/app/shared/directives/directives.module.d.ts +14 -0
  536. package/src/app/shared/directives/drag-and-drop.directive.d.ts +17 -0
  537. package/src/app/shared/directives/ng-var.directive.d.ts +12 -0
  538. package/src/app/shared/directives/resizable/resizable.component.d.ts +21 -0
  539. package/src/app/shared/directives/resizable/resizable.directive.d.ts +12 -0
  540. package/src/app/shared/directives/resizable/resizable.module.d.ts +8 -0
  541. package/src/app/shared/directives/throttled-click.directive.d.ts +16 -0
  542. package/src/app/shared/events.d.ts +29 -0
  543. package/src/app/shared/file/csv.utils.d.ts +30 -0
  544. package/src/app/shared/file/file.service.d.ts +23 -0
  545. package/src/app/shared/file/file.utils.d.ts +20 -0
  546. package/src/app/shared/file/images.utils.d.ts +36 -0
  547. package/src/app/shared/file/json.utils.d.ts +19 -0
  548. package/src/app/shared/file/uri.utils.d.ts +8 -0
  549. package/src/app/shared/file/url.utils.d.ts +99 -0
  550. package/src/app/shared/focusable.d.ts +4 -0
  551. package/src/app/shared/form/field.component.d.ts +85 -0
  552. package/src/app/shared/form/field.model.d.ts +82 -0
  553. package/src/app/shared/form/loading-spinner.d.ts +8 -0
  554. package/src/app/shared/forms.d.ts +162 -0
  555. package/src/app/shared/functions.d.ts +206 -0
  556. package/src/app/shared/geolocation/geolocation.utils.d.ts +19 -0
  557. package/src/app/shared/gesture/gesture-config.d.ts +15 -0
  558. package/src/app/shared/gesture/hammer.utils.d.ts +16 -0
  559. package/src/app/shared/graph/colors.utils.d.ts +17 -0
  560. package/src/app/shared/graph/graph-colors.d.ts +63 -0
  561. package/src/app/shared/guard/component-dirty.guard.d.ts +14 -0
  562. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.d.ts +8 -0
  563. package/src/app/shared/hotkeys/hotkeys.service.d.ts +48 -0
  564. package/src/app/shared/hotkeys/shared-hotkeys.module.d.ts +11 -0
  565. package/src/app/shared/http/http.utils.d.ts +28 -0
  566. package/src/app/shared/image/gallery/image-gallery.component.d.ts +137 -0
  567. package/src/app/shared/image/gallery/image-gallery.module.d.ts +15 -0
  568. package/src/app/shared/image/gallery/testing/gallegry.model.testing.d.ts +12 -0
  569. package/src/app/shared/image/gallery/testing/gallery.service.testing.d.ts +33 -0
  570. package/src/app/shared/image/gallery/testing/gallery.testing.d.ts +16 -0
  571. package/src/app/shared/image/gallery/testing/gallery.testing.module.d.ts +13 -0
  572. package/src/app/shared/image/image.model.d.ts +7 -0
  573. package/src/app/shared/image/image.module.d.ts +8 -0
  574. package/src/app/shared/image/image.service.d.ts +36 -0
  575. package/src/app/shared/inputs.d.ts +36 -0
  576. package/src/app/shared/interceptors/progess.interceptor.d.ts +8 -0
  577. package/src/app/shared/logging/log-level.model.d.ts +38 -0
  578. package/src/app/shared/logging/logger.model.d.ts +68 -0
  579. package/src/app/shared/logging/logging-service.class.d.ts +39 -0
  580. package/src/app/shared/logging/logging-service.config.d.ts +25 -0
  581. package/src/app/shared/logging/logging-service.module.d.ts +9 -0
  582. package/src/app/shared/markdown/markdown.component.d.ts +86 -0
  583. package/src/app/shared/markdown/markdown.directive.d.ts +13 -0
  584. package/src/app/shared/markdown/markdown.modal.d.ts +49 -0
  585. package/src/app/shared/markdown/markdown.module.d.ts +17 -0
  586. package/src/app/shared/markdown/markdown.service.d.ts +37 -0
  587. package/src/app/shared/markdown/markdown.utils.d.ts +26 -0
  588. package/src/app/shared/markdown/testing/markdown.test.d.ts +18 -0
  589. package/src/app/shared/markdown/testing/markdown.testing.module.d.ts +12 -0
  590. package/src/app/shared/material/autocomplete/material.autocomplete.config.d.ts +74 -0
  591. package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +211 -0
  592. package/src/app/shared/material/autocomplete/material.autocomplete.module.d.ts +22 -0
  593. package/src/app/shared/material/autocomplete/material.autocomplete.utils.d.ts +5 -0
  594. package/src/app/shared/material/autocomplete/testing/autocomplete.test.d.ts +48 -0
  595. package/src/app/shared/material/badge/badge.directive.d.ts +43 -0
  596. package/src/app/shared/material/badge/badge.module.d.ts +10 -0
  597. package/src/app/shared/material/badge/badge.test.d.ts +21 -0
  598. package/src/app/shared/material/boolean/boolean.module.d.ts +20 -0
  599. package/src/app/shared/material/boolean/material.boolean.d.ts +93 -0
  600. package/src/app/shared/material/boolean/testing/boolean.test.page.d.ts +26 -0
  601. package/src/app/shared/material/chips/chips.module.d.ts +21 -0
  602. package/src/app/shared/material/chips/material.chips.d.ts +164 -0
  603. package/src/app/shared/material/chips/testing/chips.test.d.ts +32 -0
  604. package/src/app/shared/material/datetime/datetime.module.d.ts +24 -0
  605. package/src/app/shared/material/datetime/material.date.d.ts +90 -0
  606. package/src/app/shared/material/datetime/material.dateshort.d.ts +89 -0
  607. package/src/app/shared/material/datetime/material.datetime.d.ts +116 -0
  608. package/src/app/shared/material/datetime/testing/mat-date-time.test.d.ts +37 -0
  609. package/src/app/shared/material/datetime/testing/mat-date.test.d.ts +32 -0
  610. package/src/app/shared/material/datetime/testing/mat-dateshort.test.d.ts +31 -0
  611. package/src/app/shared/material/duration/duration.module.d.ts +18 -0
  612. package/src/app/shared/material/duration/duration.utils.d.ts +2 -0
  613. package/src/app/shared/material/duration/material.duration.d.ts +64 -0
  614. package/src/app/shared/material/duration/testing/mat-duration.test.d.ts +23 -0
  615. package/src/app/shared/material/latlong/latlong.utils.d.ts +59 -0
  616. package/src/app/shared/material/latlong/material.latlong-input.d.ts +85 -0
  617. package/src/app/shared/material/latlong/material.latlong.d.ts +90 -0
  618. package/src/app/shared/material/latlong/material.latlong.module.d.ts +21 -0
  619. package/src/app/shared/material/latlong/testing/latlong.test.d.ts +28 -0
  620. package/src/app/shared/material/material.animations.d.ts +8 -0
  621. package/src/app/shared/material/material.config.d.ts +3 -0
  622. package/src/app/shared/material/material.module.d.ts +45 -0
  623. package/src/app/shared/material/material.testing.module.d.ts +32 -0
  624. package/src/app/shared/material/paginator/material.paginator-i18n.d.ts +12 -0
  625. package/src/app/shared/material/stepper/material.stepper-i18n.d.ts +10 -0
  626. package/src/app/shared/material/swipe/material.swipe.d.ts +89 -0
  627. package/src/app/shared/material/swipe/swipe.module.d.ts +16 -0
  628. package/src/app/shared/material/swipe/testing/swipe.test.d.ts +22 -0
  629. package/src/app/shared/material/test/test-component.d.ts +75 -0
  630. package/src/app/shared/material/testing/common.test.d.ts +25 -0
  631. package/src/app/shared/material/text/testing/text-form.testing.d.ts +19 -0
  632. package/src/app/shared/material/text/text-form.component.d.ts +66 -0
  633. package/src/app/shared/material/text/text-form.module.d.ts +16 -0
  634. package/src/app/shared/modules.d.ts +9 -0
  635. package/src/app/shared/named-filter/named-filter-selector.component.d.ts +62 -0
  636. package/src/app/shared/named-filter/named-filter.model.d.ts +32 -0
  637. package/src/app/shared/named-filter/named-filter.module.d.ts +13 -0
  638. package/src/app/shared/named-filter/named-filter.service.d.ts +32 -0
  639. package/src/app/shared/named-filter/testing/named-filter-selector.testing.d.ts +34 -0
  640. package/src/app/shared/named-filter/testing/named-filter.testing.module.d.ts +10 -0
  641. package/src/app/shared/observables.d.ts +30 -0
  642. package/src/app/shared/pipes/arrays.pipe.d.ts +82 -0
  643. package/src/app/shared/pipes/badge.pipes.d.ts +7 -0
  644. package/src/app/shared/pipes/colors.pipe.d.ts +9 -0
  645. package/src/app/shared/pipes/date-diff-duration.pipe.d.ts +25 -0
  646. package/src/app/shared/pipes/date-format.pipe.d.ts +35 -0
  647. package/src/app/shared/pipes/date-from-now.pipe.d.ts +12 -0
  648. package/src/app/shared/pipes/dates.pipe.d.ts +10 -0
  649. package/src/app/shared/pipes/display-with.pipe.d.ts +8 -0
  650. package/src/app/shared/pipes/duration.pipe.d.ts +23 -0
  651. package/src/app/shared/pipes/file-size.pipe.d.ts +30 -0
  652. package/src/app/shared/pipes/form.pipes.d.ts +69 -0
  653. package/src/app/shared/pipes/highlight.pipe.d.ts +11 -0
  654. package/src/app/shared/pipes/html.pipes.d.ts +22 -0
  655. package/src/app/shared/pipes/latlong-format.pipe.d.ts +20 -0
  656. package/src/app/shared/pipes/maps.pipe.d.ts +23 -0
  657. package/src/app/shared/pipes/maskito.pipe.d.ts +14 -0
  658. package/src/app/shared/pipes/math.pipes.d.ts +26 -0
  659. package/src/app/shared/pipes/ng-init.pipe.d.ts +8 -0
  660. package/src/app/shared/pipes/number-format.pipe.d.ts +9 -0
  661. package/src/app/shared/pipes/observable.pipes.d.ts +25 -0
  662. package/src/app/shared/pipes/pipes.module.d.ts +35 -0
  663. package/src/app/shared/pipes/property.pipes.d.ts +41 -0
  664. package/src/app/shared/pipes/selection.pipes.d.ts +62 -0
  665. package/src/app/shared/pipes/string.pipes.d.ts +68 -0
  666. package/src/app/shared/pipes/translate-context.pipe.d.ts +17 -0
  667. package/src/app/shared/pipes/types.pipes.d.ts +30 -0
  668. package/src/app/shared/pipes/url.pipes.d.ts +27 -0
  669. package/src/app/shared/platforms.d.ts +16 -0
  670. package/src/app/shared/print/print.service.d.ts +94 -0
  671. package/src/app/shared/regexps.d.ts +32 -0
  672. package/src/app/shared/rx-state/rx-state.decorators.d.ts +43 -0
  673. package/src/app/shared/rx-state/rx-state.module.d.ts +10 -0
  674. package/src/app/shared/rx-state/rx-state.types.d.ts +4 -0
  675. package/src/app/shared/services/entity-service.class.d.ts +75 -0
  676. package/src/app/shared/services/job.utils.d.ts +20 -0
  677. package/src/app/shared/services/memory-entity-service.class.d.ts +79 -0
  678. package/src/app/shared/services/progress-bar.service.d.ts +20 -0
  679. package/src/app/shared/services/startable-observable-service.class.d.ts +36 -0
  680. package/src/app/shared/services/startable-service.class.d.ts +37 -0
  681. package/src/app/shared/services/translate-context.service.d.ts +29 -0
  682. package/src/app/shared/services/validator-service.class.d.ts +11 -0
  683. package/src/app/shared/services.d.ts +17 -0
  684. package/src/app/shared/shared-routing.module.d.ts +23 -0
  685. package/src/app/shared/shared.module.d.ts +33 -0
  686. package/src/app/shared/shared.testing.module.d.ts +20 -0
  687. package/src/app/shared/storage/storage-explorer.component.d.ts +59 -0
  688. package/src/app/shared/storage/storage-explorer.module.d.ts +13 -0
  689. package/src/app/shared/storage/storage-explorer.testing-routing.module.d.ts +9 -0
  690. package/src/app/shared/storage/storage-explorer.testing.module.d.ts +10 -0
  691. package/src/app/shared/storage/storage.service.d.ts +22 -0
  692. package/src/app/shared/storage/storage.utils.d.ts +19 -0
  693. package/src/app/shared/testing/maskito.test.d.ts +10 -0
  694. package/src/app/shared/testing/observable.test.d.ts +25 -0
  695. package/src/app/shared/testing/tests.page.d.ts +20 -0
  696. package/src/app/shared/toast/toast.testing.d.ts +15 -0
  697. package/src/app/shared/toast/toast.testing.module.d.ts +12 -0
  698. package/src/app/shared/toast/toasts.d.ts +16 -0
  699. package/src/app/shared/toolbar/modal-toolbar.d.ts +21 -0
  700. package/src/app/shared/toolbar/toolbar.d.ts +70 -0
  701. package/src/app/shared/toolbar/toolbar.module.d.ts +16 -0
  702. package/src/app/shared/types.d.ts +36 -0
  703. package/src/app/shared/upload-file/testing/upload-file.testing.d.ts +21 -0
  704. package/src/app/shared/upload-file/testing/upload-file.testing.module.d.ts +11 -0
  705. package/src/app/shared/upload-file/upload-file-popover.component.d.ts +41 -0
  706. package/src/app/shared/upload-file/upload-file.component.d.ts +50 -0
  707. package/src/app/shared/upload-file/upload-file.model.d.ts +30 -0
  708. package/src/app/shared/validator/form-error-adapter.class.d.ts +33 -0
  709. package/src/app/shared/validator/validators.d.ts +139 -0
  710. package/src/app/shared/version/versions.d.ts +26 -0
  711. package/src/app/social/config/social.config.d.ts +4 -0
  712. package/src/app/social/feed/discourse/discourse-feed.service.d.ts +55 -0
  713. package/src/app/social/feed/discourse/discourse.model.d.ts +7 -0
  714. package/src/app/social/feed/discourse/discourse.utils.d.ts +44 -0
  715. package/src/app/social/feed/feed.component.d.ts +39 -0
  716. package/src/app/social/feed/feed.directive.d.ts +32 -0
  717. package/src/app/social/feed/feed.model.d.ts +69 -0
  718. package/src/app/social/feed/feed.module.d.ts +11 -0
  719. package/src/app/social/feed/feed.service.d.ts +13 -0
  720. package/src/app/social/job/job.module.d.ts +12 -0
  721. package/src/app/social/job/progression/job-progression.component.d.ts +23 -0
  722. package/src/app/social/job/progression/job-progression.icon.d.ts +62 -0
  723. package/src/app/social/job/progression/job-progression.list.d.ts +19 -0
  724. package/src/app/social/job/progression/job-progression.model.d.ts +10 -0
  725. package/src/app/social/job/progression/job-progression.service.d.ts +33 -0
  726. package/src/app/social/job/testing/job-progression.testing.d.ts +13 -0
  727. package/src/app/social/job/testing/job-progression.testing.service.d.ts +9 -0
  728. package/src/app/social/job/testing/job.testing.module.d.ts +11 -0
  729. package/src/app/social/message/message.form.d.ts +36 -0
  730. package/src/app/social/message/message.modal.d.ts +43 -0
  731. package/src/app/social/message/message.model.d.ts +33 -0
  732. package/src/app/social/message/message.module.d.ts +12 -0
  733. package/src/app/social/message/message.service.d.ts +32 -0
  734. package/src/app/social/social.errors.d.ts +9 -0
  735. package/src/app/social/social.module.d.ts +20 -0
  736. package/src/app/social/social.testing.module.d.ts +13 -0
  737. package/src/app/social/user-event/notification/user-event-notification.icon.d.ts +46 -0
  738. package/src/app/social/user-event/notification/user-event-notification.list.d.ts +75 -0
  739. package/src/app/social/user-event/notification/user-event-notification.modal.d.ts +36 -0
  740. package/src/app/social/user-event/testing/user-event.testing.d.ts +44 -0
  741. package/src/app/social/user-event/testing/user-event.testing.model.d.ts +42 -0
  742. package/src/app/social/user-event/testing/user-event.testing.module.d.ts +11 -0
  743. package/src/app/social/user-event/testing/user-event.testing.service.d.ts +42 -0
  744. package/src/app/social/user-event/user-event.model.d.ts +44 -0
  745. package/src/app/social/user-event/user-event.module.d.ts +14 -0
  746. package/src/app/social/user-event/user-event.service.d.ts +124 -0
  747. package/src/environments/environment.class.d.ts +83 -0
  748. package/src/environments/environment.d.ts +2 -0
  749. package/src/environments/environment.loader.d.ts +24 -0
  750. package/.editorconfig +0 -24
  751. package/.eslintrc.json +0 -95
  752. package/.gitattribute +0 -1
  753. package/.github/CONTRIBUTING.md +0 -10
  754. package/.github/ISSUE_TEMPLATE.md +0 -6
  755. package/.github/PULL_REQUEST_TEMPLATE.md +0 -10
  756. package/.github/github_disclaimer.md +0 -14
  757. package/.gitlab-ci.yml +0 -46
  758. package/.graphqlconfig +0 -15
  759. package/.prettierignore +0 -9
  760. package/.prettierrc.json +0 -17
  761. package/angular.json +0 -239
  762. package/capacitor.config.ts +0 -49
  763. package/graphql.config.yml +0 -13
  764. package/ionic.config.json +0 -7
  765. package/karma.conf.js +0 -38
  766. package/ng-package.json +0 -21
  767. package/public_api.ts +0 -436
  768. package/resources/README.md +0 -7
  769. package/resources/icon/TODO.md +0 -11
  770. package/resources/icon.png +0 -0
  771. package/resources/icon.png.md5 +0 -1
  772. package/resources/icon.xcf +0 -0
  773. package/resources/ios/icon/icon-1024.png +0 -0
  774. package/resources/ios/icon/icon-108@2x.png +0 -0
  775. package/resources/ios/icon/icon-20.png +0 -0
  776. package/resources/ios/icon/icon-20@2x.png +0 -0
  777. package/resources/ios/icon/icon-20@3x.png +0 -0
  778. package/resources/ios/icon/icon-24@2x.png +0 -0
  779. package/resources/ios/icon/icon-27.5@2x.png +0 -0
  780. package/resources/ios/icon/icon-29.png +0 -0
  781. package/resources/ios/icon/icon-29@2x.png +0 -0
  782. package/resources/ios/icon/icon-29@3x.png +0 -0
  783. package/resources/ios/icon/icon-40.png +0 -0
  784. package/resources/ios/icon/icon-40@2x.png +0 -0
  785. package/resources/ios/icon/icon-40@3x.png +0 -0
  786. package/resources/ios/icon/icon-44@2x.png +0 -0
  787. package/resources/ios/icon/icon-50.png +0 -0
  788. package/resources/ios/icon/icon-50@2x.png +0 -0
  789. package/resources/ios/icon/icon-60.png +0 -0
  790. package/resources/ios/icon/icon-60@2x.png +0 -0
  791. package/resources/ios/icon/icon-60@3x.png +0 -0
  792. package/resources/ios/icon/icon-72.png +0 -0
  793. package/resources/ios/icon/icon-72@2x.png +0 -0
  794. package/resources/ios/icon/icon-76.png +0 -0
  795. package/resources/ios/icon/icon-76@2x.png +0 -0
  796. package/resources/ios/icon/icon-83.5@2x.png +0 -0
  797. package/resources/ios/icon/icon-86@2x.png +0 -0
  798. package/resources/ios/icon/icon-98@2x.png +0 -0
  799. package/resources/ios/icon/icon-small.png +0 -0
  800. package/resources/ios/icon/icon-small@2x.png +0 -0
  801. package/resources/ios/icon/icon-small@3x.png +0 -0
  802. package/resources/ios/icon/icon.png +0 -0
  803. package/resources/ios/icon/icon@2x.png +0 -0
  804. package/resources/ios/splash/Default-1792h~iphone.png +0 -0
  805. package/resources/ios/splash/Default-2436h.png +0 -0
  806. package/resources/ios/splash/Default-2688h~iphone.png +0 -0
  807. package/resources/ios/splash/Default-568h@2x~iphone.png +0 -0
  808. package/resources/ios/splash/Default-667h.png +0 -0
  809. package/resources/ios/splash/Default-736h.png +0 -0
  810. package/resources/ios/splash/Default-Landscape-1792h~iphone.png +0 -0
  811. package/resources/ios/splash/Default-Landscape-2436h.png +0 -0
  812. package/resources/ios/splash/Default-Landscape-2688h~iphone.png +0 -0
  813. package/resources/ios/splash/Default-Landscape-736h.png +0 -0
  814. package/resources/ios/splash/Default-Landscape@2x~ipad.png +0 -0
  815. package/resources/ios/splash/Default-Landscape@~ipadpro.png +0 -0
  816. package/resources/ios/splash/Default-Landscape~ipad.png +0 -0
  817. package/resources/ios/splash/Default-Portrait@2x~ipad.png +0 -0
  818. package/resources/ios/splash/Default-Portrait@~ipadpro.png +0 -0
  819. package/resources/ios/splash/Default-Portrait~ipad.png +0 -0
  820. package/resources/ios/splash/Default@2x~iphone.png +0 -0
  821. package/resources/ios/splash/Default@2x~universal~anyany.png +0 -0
  822. package/resources/ios/splash/Default~iphone.png +0 -0
  823. package/resources/splash.png +0 -0
  824. package/resources/splash.png.md5 +0 -1
  825. package/scripts/build-android.sh +0 -18
  826. package/scripts/docker-start.sh +0 -6
  827. package/scripts/emulate-android.sh +0 -17
  828. package/scripts/env-android.sh +0 -83
  829. package/scripts/env-clean.sh +0 -23
  830. package/scripts/env-global.sh +0 -154
  831. package/scripts/install-android-sdk-tools.sh +0 -73
  832. package/scripts/ionic-update.sh +0 -24
  833. package/scripts/node/build-i18n.js +0 -37
  834. package/scripts/node/playground.ts +0 -9
  835. package/scripts/node/resources.js +0 -108
  836. package/scripts/release.sh +0 -162
  837. package/scripts/run-android.sh +0 -59
  838. package/scripts/test.sh +0 -19
  839. package/src/app/admin/admin-routing.module.ts +0 -26
  840. package/src/app/admin/admin.module.ts +0 -20
  841. package/src/app/admin/services/filter/person.filter.ts +0 -86
  842. package/src/app/admin/services/person.service.ts +0 -244
  843. package/src/app/admin/services/validator/person.validator.ts +0 -86
  844. package/src/app/admin/users/users.html +0 -613
  845. package/src/app/admin/users/users.module.ts +0 -32
  846. package/src/app/admin/users/users.scss +0 -80
  847. package/src/app/admin/users/users.ts +0 -387
  848. package/src/app/app-routing.module.ts +0 -165
  849. package/src/app/app.component.html +0 -18
  850. package/src/app/app.component.scss +0 -4
  851. package/src/app/app.component.ts +0 -257
  852. package/src/app/app.module.ts +0 -366
  853. package/src/app/core/about/about.modal.html +0 -145
  854. package/src/app/core/about/about.modal.scss +0 -22
  855. package/src/app/core/about/about.modal.ts +0 -69
  856. package/src/app/core/about/about.module.ts +0 -14
  857. package/src/app/core/account/account.module.ts +0 -43
  858. package/src/app/core/account/account.page.html +0 -329
  859. package/src/app/core/account/account.page.scss +0 -20
  860. package/src/app/core/account/account.page.ts +0 -389
  861. package/src/app/core/account/new-token.form.html +0 -90
  862. package/src/app/core/account/new-token.form.ts +0 -99
  863. package/src/app/core/account/new-token.modal.html +0 -52
  864. package/src/app/core/account/new-token.modal.ts +0 -68
  865. package/src/app/core/account/password/change-password.form.html +0 -62
  866. package/src/app/core/account/password/change-password.form.scss +0 -0
  867. package/src/app/core/account/password/change-password.form.ts +0 -58
  868. package/src/app/core/account/password/change-password.module.ts +0 -14
  869. package/src/app/core/account/password/change-password.page.html +0 -41
  870. package/src/app/core/account/password/change-password.page.scss +0 -49
  871. package/src/app/core/account/password/change-password.page.ts +0 -158
  872. package/src/app/core/account/token.table.html +0 -160
  873. package/src/app/core/account/token.table.scss +0 -7
  874. package/src/app/core/account/token.table.ts +0 -160
  875. package/src/app/core/auth/auth.form.html +0 -108
  876. package/src/app/core/auth/auth.form.scss +0 -0
  877. package/src/app/core/auth/auth.form.ts +0 -165
  878. package/src/app/core/auth/auth.modal.html +0 -50
  879. package/src/app/core/auth/auth.modal.scss +0 -0
  880. package/src/app/core/auth/auth.modal.ts +0 -78
  881. package/src/app/core/auth/auth.module.ts +0 -35
  882. package/src/app/core/auth/reset-password.modal.html +0 -59
  883. package/src/app/core/auth/reset-password.modal.ts +0 -83
  884. package/src/app/core/core.module.ts +0 -72
  885. package/src/app/core/core.testing.module.ts +0 -80
  886. package/src/app/core/form/array/form-array.ts +0 -409
  887. package/src/app/core/form/array/testing/form-array-test.module.ts +0 -15
  888. package/src/app/core/form/array/testing/form-array.test.html +0 -196
  889. package/src/app/core/form/array/testing/form-array.test.ts +0 -119
  890. package/src/app/core/form/buttons/form-buttons-bar.component.html +0 -82
  891. package/src/app/core/form/buttons/form-buttons-bar.component.scss +0 -19
  892. package/src/app/core/form/buttons/form-buttons-bar.component.ts +0 -89
  893. package/src/app/core/form/buttons/form-buttons-bar.module.ts +0 -20
  894. package/src/app/core/form/entity/editor.class.ts +0 -295
  895. package/src/app/core/form/entity/entity-editor-modal.class.ts +0 -494
  896. package/src/app/core/form/entity/entity-editor.class.ts +0 -894
  897. package/src/app/core/form/entity/entity-metadata.component.html +0 -57
  898. package/src/app/core/form/entity/entity-metadata.component.scss +0 -40
  899. package/src/app/core/form/entity/entity-metadata.component.ts +0 -18
  900. package/src/app/core/form/entity/entity.module.ts +0 -20
  901. package/src/app/core/form/entity/tab-editor.class.ts +0 -224
  902. package/src/app/core/form/form-container.class.ts +0 -381
  903. package/src/app/core/form/form.class.ts +0 -377
  904. package/src/app/core/form/form.module.ts +0 -38
  905. package/src/app/core/form/form.utils.ts +0 -336
  906. package/src/app/core/form/list/list.form.html +0 -68
  907. package/src/app/core/form/list/list.form.scss +0 -40
  908. package/src/app/core/form/list/list.form.ts +0 -266
  909. package/src/app/core/form/list/list.module.ts +0 -20
  910. package/src/app/core/form/properties/properties.form.html +0 -160
  911. package/src/app/core/form/properties/properties.form.scss +0 -21
  912. package/src/app/core/form/properties/properties.form.ts +0 -331
  913. package/src/app/core/form/properties/properties.module.ts +0 -24
  914. package/src/app/core/form/properties/properties.table.html +0 -228
  915. package/src/app/core/form/properties/properties.table.scss +0 -0
  916. package/src/app/core/form/properties/properties.table.ts +0 -275
  917. package/src/app/core/form/properties/properties.utils.ts +0 -391
  918. package/src/app/core/form/properties/property.validator.ts +0 -82
  919. package/src/app/core/form/properties/testing/properties-form.test.html +0 -23
  920. package/src/app/core/form/properties/testing/properties-form.test.ts +0 -109
  921. package/src/app/core/form/properties/testing/properties-form.testing.module.ts +0 -14
  922. package/src/app/core/form/text-popover/testing/text-popover.testing.html +0 -50
  923. package/src/app/core/form/text-popover/testing/text-popover.testing.module.ts +0 -21
  924. package/src/app/core/form/text-popover/testing/text-popover.testing.ts +0 -76
  925. package/src/app/core/form/text-popover/text-popover.component.html +0 -89
  926. package/src/app/core/form/text-popover/text-popover.component.scss +0 -7
  927. package/src/app/core/form/text-popover/text-popover.component.ts +0 -176
  928. package/src/app/core/form/text-popover/text-popover.module.ts +0 -19
  929. package/src/app/core/form/username/username.form.html +0 -27
  930. package/src/app/core/form/username/username.form.ts +0 -44
  931. package/src/app/core/form/username/username.module.ts +0 -12
  932. package/src/app/core/graphql/graphql.module.ts +0 -7
  933. package/src/app/core/graphql/graphql.service.ts +0 -962
  934. package/src/app/core/graphql/graphql.utils.ts +0 -166
  935. package/src/app/core/home/home.html +0 -327
  936. package/src/app/core/home/home.module.ts +0 -31
  937. package/src/app/core/home/home.scss +0 -300
  938. package/src/app/core/home/home.ts +0 -453
  939. package/src/app/core/icon/icon.component.html +0 -19
  940. package/src/app/core/icon/icon.component.ts +0 -22
  941. package/src/app/core/icon/icon.module.ts +0 -13
  942. package/src/app/core/install/install-upgrade-card.component.html +0 -144
  943. package/src/app/core/install/install-upgrade-card.component.scss +0 -3
  944. package/src/app/core/install/install-upgrade-card.component.ts +0 -445
  945. package/src/app/core/install/install-upgrade-card.module.ts +0 -18
  946. package/src/app/core/menu/menu.component.html +0 -219
  947. package/src/app/core/menu/menu.component.scss +0 -304
  948. package/src/app/core/menu/menu.component.ts +0 -251
  949. package/src/app/core/menu/menu.filter.ts +0 -28
  950. package/src/app/core/menu/menu.model.ts +0 -356
  951. package/src/app/core/menu/menu.module.ts +0 -27
  952. package/src/app/core/menu/menu.service.ts +0 -727
  953. package/src/app/core/menu/sub-menu-tab.directive.ts +0 -99
  954. package/src/app/core/menu/testing/menu-other.testing.ts +0 -57
  955. package/src/app/core/menu/testing/menu.testing.html +0 -143
  956. package/src/app/core/menu/testing/menu.testing.module.ts +0 -52
  957. package/src/app/core/menu/testing/menu.testing.scss +0 -5
  958. package/src/app/core/menu/testing/menu.testing.ts +0 -175
  959. package/src/app/core/offline/update-offline-mode-card.component.html +0 -39
  960. package/src/app/core/offline/update-offline-mode-card.component.scss +0 -3
  961. package/src/app/core/offline/update-offline-mode-card.component.ts +0 -23
  962. package/src/app/core/offline/update-offline-mode-card.module.ts +0 -20
  963. package/src/app/core/peer/select-peer.modal.html +0 -317
  964. package/src/app/core/peer/select-peer.modal.scss +0 -41
  965. package/src/app/core/peer/select-peer.modal.ts +0 -366
  966. package/src/app/core/peer/select-peer.module.ts +0 -23
  967. package/src/app/core/register/register-confirm.page.html +0 -51
  968. package/src/app/core/register/register-confirm.page.scss +0 -56
  969. package/src/app/core/register/register-confirm.page.ts +0 -90
  970. package/src/app/core/register/register.form.html +0 -143
  971. package/src/app/core/register/register.form.scss +0 -10
  972. package/src/app/core/register/register.form.ts +0 -218
  973. package/src/app/core/register/register.modal.html +0 -66
  974. package/src/app/core/register/register.modal.ts +0 -50
  975. package/src/app/core/register/register.module.ts +0 -15
  976. package/src/app/core/services/account.service.ts +0 -1567
  977. package/src/app/core/services/auth-guard.service.ts +0 -70
  978. package/src/app/core/services/base-entity-service.class.ts +0 -659
  979. package/src/app/core/services/base-graphql-service.class.ts +0 -319
  980. package/src/app/core/services/base58.ts +0 -90
  981. package/src/app/core/services/config/core.config.ts +0 -263
  982. package/src/app/core/services/config.service.ts +0 -425
  983. package/src/app/core/services/crypto.service.ts +0 -126
  984. package/src/app/core/services/errors.ts +0 -80
  985. package/src/app/core/services/local-settings.service.spec.ts +0 -39
  986. package/src/app/core/services/local-settings.service.ts +0 -610
  987. package/src/app/core/services/model/account.model.ts +0 -188
  988. package/src/app/core/services/model/config.model.ts +0 -116
  989. package/src/app/core/services/model/department.model.ts +0 -34
  990. package/src/app/core/services/model/entity.decorators.ts +0 -110
  991. package/src/app/core/services/model/entity.model.ts +0 -409
  992. package/src/app/core/services/model/filter.model.ts +0 -127
  993. package/src/app/core/services/model/history.model.ts +0 -25
  994. package/src/app/core/services/model/model.enum.ts +0 -10
  995. package/src/app/core/services/model/node-feature.model.ts +0 -31
  996. package/src/app/core/services/model/peer.model.ts +0 -119
  997. package/src/app/core/services/model/person.model.ts +0 -122
  998. package/src/app/core/services/model/referential.model.ts +0 -253
  999. package/src/app/core/services/model/settings.model.ts +0 -37
  1000. package/src/app/core/services/model/token.model.ts +0 -60
  1001. package/src/app/core/services/model/tree-item-entity.model.ts +0 -256
  1002. package/src/app/core/services/network.service.spec.ts +0 -47
  1003. package/src/app/core/services/network.service.ts +0 -771
  1004. package/src/app/core/services/network.types.ts +0 -7
  1005. package/src/app/core/services/network.utils.ts +0 -83
  1006. package/src/app/core/services/pipes/account.pipes.ts +0 -22
  1007. package/src/app/core/services/pipes/department-to-string.pipe.ts +0 -13
  1008. package/src/app/core/services/pipes/person-to-string.pipe.ts +0 -13
  1009. package/src/app/core/services/pipes/pipes.module.ts +0 -30
  1010. package/src/app/core/services/pipes/referential-to-string.pipe.ts +0 -18
  1011. package/src/app/core/services/pipes/usage-mode.pipes.ts +0 -23
  1012. package/src/app/core/services/platform.service.spec.ts +0 -50
  1013. package/src/app/core/services/platform.service.ts +0 -694
  1014. package/src/app/core/services/storage/entities-storage.service.ts +0 -557
  1015. package/src/app/core/services/storage/entity-store.class.ts +0 -589
  1016. package/src/app/core/services/testing/local-settings.config.ts +0 -35
  1017. package/src/app/core/services/testing/referential-filter.model.ts +0 -28
  1018. package/src/app/core/services/testing/referential.validator.ts +0 -58
  1019. package/src/app/core/services/testing/user-settings.config.ts +0 -77
  1020. package/src/app/core/services/validator/account.validator.ts +0 -50
  1021. package/src/app/core/services/validator/base.validator.class.ts +0 -51
  1022. package/src/app/core/services/validator/local-settings.validator.ts +0 -59
  1023. package/src/app/core/services/validator/user-settings.validator.ts +0 -22
  1024. package/src/app/core/services/validator/user-token.validator.ts +0 -54
  1025. package/src/app/core/settings/settings.module.ts +0 -15
  1026. package/src/app/core/settings/settings.page.html +0 -300
  1027. package/src/app/core/settings/settings.page.ts +0 -455
  1028. package/src/app/core/table/async-table.class.ts +0 -2021
  1029. package/src/app/core/table/column/actions-column.component.html +0 -219
  1030. package/src/app/core/table/column/actions-column.component.scss +0 -17
  1031. package/src/app/core/table/column/actions-column.component.ts +0 -83
  1032. package/src/app/core/table/column/nav-actions-column.component.html +0 -119
  1033. package/src/app/core/table/column/nav-actions-column.component.ts +0 -108
  1034. package/src/app/core/table/column/row-field.component.html +0 -43
  1035. package/src/app/core/table/column/row-field.component.scss +0 -0
  1036. package/src/app/core/table/column/row-field.component.ts +0 -63
  1037. package/src/app/core/table/entities-async-table-datasource.class.ts +0 -515
  1038. package/src/app/core/table/entities-table-datasource.class.ts +0 -503
  1039. package/src/app/core/table/memory-table.class.ts +0 -56
  1040. package/src/app/core/table/table-select-columns.component.html +0 -56
  1041. package/src/app/core/table/table-select-columns.component.ts +0 -49
  1042. package/src/app/core/table/table.class.ts +0 -2082
  1043. package/src/app/core/table/table.model.ts +0 -39
  1044. package/src/app/core/table/table.module.ts +0 -28
  1045. package/src/app/core/table/table.pipes.ts +0 -87
  1046. package/src/app/core/table/table.utils.ts +0 -42
  1047. package/src/app/core/table/testing/multi-table.testing.html +0 -456
  1048. package/src/app/core/table/testing/multi-table.testing.ts +0 -263
  1049. package/src/app/core/table/testing/table-validator.service.ts +0 -29
  1050. package/src/app/core/table/testing/table.testing.html +0 -556
  1051. package/src/app/core/table/testing/table.testing.module.ts +0 -16
  1052. package/src/app/core/table/testing/table.testing.scss +0 -32
  1053. package/src/app/core/table/testing/table.testing.ts +0 -329
  1054. package/src/app/core/table/testing/table2-validator.service.ts +0 -19
  1055. package/src/app/core/table/testing/table2.testing.html +0 -470
  1056. package/src/app/core/table/testing/table2.testing.scss +0 -25
  1057. package/src/app/core/table/testing/table2.testing.ts +0 -274
  1058. package/src/app/shared/alerts.ts +0 -296
  1059. package/src/app/shared/audio/audio.testing.html +0 -29
  1060. package/src/app/shared/audio/audio.testing.module.ts +0 -21
  1061. package/src/app/shared/audio/audio.testing.ts +0 -27
  1062. package/src/app/shared/audio/audio.ts +0 -273
  1063. package/src/app/shared/base64.utils.ts +0 -66
  1064. package/src/app/shared/capacitor/keyboard.ts +0 -38
  1065. package/src/app/shared/capacitor/plugins.ts +0 -12
  1066. package/src/app/shared/constants.ts +0 -19
  1067. package/src/app/shared/dates.ts +0 -206
  1068. package/src/app/shared/debug/debug-service.class.ts +0 -7
  1069. package/src/app/shared/debug/debug.component.html +0 -13
  1070. package/src/app/shared/debug/debug.component.scss +0 -21
  1071. package/src/app/shared/debug/debug.component.spec.ts +0 -24
  1072. package/src/app/shared/debug/debug.component.ts +0 -25
  1073. package/src/app/shared/debug/debug.module.ts +0 -14
  1074. package/src/app/shared/directives/autofocus.directive.ts +0 -93
  1075. package/src/app/shared/directives/autoresize.directive.ts +0 -67
  1076. package/src/app/shared/directives/autotitle.directive.ts +0 -17
  1077. package/src/app/shared/directives/directives.module.ts +0 -16
  1078. package/src/app/shared/directives/drag-and-drop.directive.ts +0 -46
  1079. package/src/app/shared/directives/ng-var.directive.ts +0 -31
  1080. package/src/app/shared/directives/resizable/resizable.component.ts +0 -48
  1081. package/src/app/shared/directives/resizable/resizable.directive.ts +0 -43
  1082. package/src/app/shared/directives/resizable/resizable.module.ts +0 -9
  1083. package/src/app/shared/directives/resizable/resizable.style.scss +0 -37
  1084. package/src/app/shared/directives/resizable/resizable.template.html +0 -6
  1085. package/src/app/shared/directives/throttled-click.directive.ts +0 -36
  1086. package/src/app/shared/events.ts +0 -93
  1087. package/src/app/shared/file/csv.utils.ts +0 -123
  1088. package/src/app/shared/file/file.service.ts +0 -129
  1089. package/src/app/shared/file/file.utils.ts +0 -142
  1090. package/src/app/shared/file/images.utils.ts +0 -214
  1091. package/src/app/shared/file/json.utils.ts +0 -82
  1092. package/src/app/shared/file/uri.utils.ts +0 -31
  1093. package/src/app/shared/file/url.utils.ts +0 -193
  1094. package/src/app/shared/focusable.ts +0 -8
  1095. package/src/app/shared/form/field.component.html +0 -380
  1096. package/src/app/shared/form/field.component.scss +0 -7
  1097. package/src/app/shared/form/field.component.ts +0 -344
  1098. package/src/app/shared/form/field.model.ts +0 -158
  1099. package/src/app/shared/form/loading-spinner.ts +0 -16
  1100. package/src/app/shared/forms.ts +0 -651
  1101. package/src/app/shared/functions.spec.ts +0 -197
  1102. package/src/app/shared/functions.ts +0 -694
  1103. package/src/app/shared/geolocation/geolocation.utils.ts +0 -105
  1104. package/src/app/shared/gesture/gesture-config.ts +0 -43
  1105. package/src/app/shared/gesture/hammer.utils.ts +0 -14
  1106. package/src/app/shared/graph/colors.utils.ts +0 -69
  1107. package/src/app/shared/graph/graph-colors.ts +0 -270
  1108. package/src/app/shared/guard/component-dirty.guard.ts +0 -67
  1109. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.html +0 -11
  1110. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.scss +0 -37
  1111. package/src/app/shared/hotkeys/dialog/hotkeys-dialog.component.ts +0 -14
  1112. package/src/app/shared/hotkeys/hotkeys.service.ts +0 -165
  1113. package/src/app/shared/hotkeys/shared-hotkeys.module.ts +0 -15
  1114. package/src/app/shared/http/http.utils.ts +0 -95
  1115. package/src/app/shared/image/gallery/image-gallery.component.html +0 -282
  1116. package/src/app/shared/image/gallery/image-gallery.component.scss +0 -218
  1117. package/src/app/shared/image/gallery/image-gallery.component.ts +0 -434
  1118. package/src/app/shared/image/gallery/image-gallery.module.ts +0 -35
  1119. package/src/app/shared/image/gallery/testing/gallegry.model.testing.ts +0 -23
  1120. package/src/app/shared/image/gallery/testing/gallery.service.testing.ts +0 -99
  1121. package/src/app/shared/image/gallery/testing/gallery.testing.html +0 -27
  1122. package/src/app/shared/image/gallery/testing/gallery.testing.module.ts +0 -39
  1123. package/src/app/shared/image/gallery/testing/gallery.testing.ts +0 -34
  1124. package/src/app/shared/image/image.model.ts +0 -8
  1125. package/src/app/shared/image/image.module.ts +0 -12
  1126. package/src/app/shared/image/image.service.ts +0 -111
  1127. package/src/app/shared/image/image.testing.module.ts +0 -16
  1128. package/src/app/shared/inputs.ts +0 -330
  1129. package/src/app/shared/interceptors/progess.interceptor.ts +0 -24
  1130. package/src/app/shared/logging/log-level.model.ts +0 -53
  1131. package/src/app/shared/logging/logger.model.ts +0 -117
  1132. package/src/app/shared/logging/logging-service.class.ts +0 -131
  1133. package/src/app/shared/logging/logging-service.config.ts +0 -29
  1134. package/src/app/shared/logging/logging-service.module.ts +0 -19
  1135. package/src/app/shared/markdown/markdown.component.html +0 -55
  1136. package/src/app/shared/markdown/markdown.component.scss +0 -75
  1137. package/src/app/shared/markdown/markdown.component.ts +0 -350
  1138. package/src/app/shared/markdown/markdown.directive.ts +0 -28
  1139. package/src/app/shared/markdown/markdown.modal.html +0 -42
  1140. package/src/app/shared/markdown/markdown.modal.ts +0 -91
  1141. package/src/app/shared/markdown/markdown.module.ts +0 -65
  1142. package/src/app/shared/markdown/markdown.service.ts +0 -234
  1143. package/src/app/shared/markdown/markdown.utils.ts +0 -90
  1144. package/src/app/shared/markdown/testing/markdown.test.html +0 -50
  1145. package/src/app/shared/markdown/testing/markdown.test.ts +0 -49
  1146. package/src/app/shared/markdown/testing/markdown.testing.module.ts +0 -22
  1147. package/src/app/shared/material/autocomplete/material.autocomplete.config.ts +0 -127
  1148. package/src/app/shared/material/autocomplete/material.autocomplete.html +0 -400
  1149. package/src/app/shared/material/autocomplete/material.autocomplete.module.ts +0 -41
  1150. package/src/app/shared/material/autocomplete/material.autocomplete.scss +0 -54
  1151. package/src/app/shared/material/autocomplete/material.autocomplete.ts +0 -1375
  1152. package/src/app/shared/material/autocomplete/material.autocomplete.utils.ts +0 -21
  1153. package/src/app/shared/material/autocomplete/testing/autocomplete.test.html +0 -1164
  1154. package/src/app/shared/material/autocomplete/testing/autocomplete.test.spec.ts +0 -33
  1155. package/src/app/shared/material/autocomplete/testing/autocomplete.test.ts +0 -272
  1156. package/src/app/shared/material/badge/badge.directive.ts +0 -217
  1157. package/src/app/shared/material/badge/badge.module.ts +0 -12
  1158. package/src/app/shared/material/badge/badge.test.html +0 -275
  1159. package/src/app/shared/material/badge/badge.test.ts +0 -34
  1160. package/src/app/shared/material/boolean/boolean.module.ts +0 -36
  1161. package/src/app/shared/material/boolean/material.boolean.html +0 -271
  1162. package/src/app/shared/material/boolean/material.boolean.scss +0 -27
  1163. package/src/app/shared/material/boolean/material.boolean.ts +0 -343
  1164. package/src/app/shared/material/boolean/testing/boolean.test.page.html +0 -469
  1165. package/src/app/shared/material/boolean/testing/boolean.test.page.ts +0 -66
  1166. package/src/app/shared/material/chips/chips.module.ts +0 -38
  1167. package/src/app/shared/material/chips/material.chips.html +0 -233
  1168. package/src/app/shared/material/chips/material.chips.scss +0 -67
  1169. package/src/app/shared/material/chips/material.chips.ts +0 -834
  1170. package/src/app/shared/material/chips/testing/chips.test.html +0 -207
  1171. package/src/app/shared/material/chips/testing/chips.test.ts +0 -169
  1172. package/src/app/shared/material/datetime/datetime.module.ts +0 -42
  1173. package/src/app/shared/material/datetime/material.date.html +0 -186
  1174. package/src/app/shared/material/datetime/material.date.scss +0 -17
  1175. package/src/app/shared/material/datetime/material.date.ts +0 -512
  1176. package/src/app/shared/material/datetime/material.dateshort.html +0 -194
  1177. package/src/app/shared/material/datetime/material.dateshort.scss +0 -23
  1178. package/src/app/shared/material/datetime/material.dateshort.ts +0 -497
  1179. package/src/app/shared/material/datetime/material.datetime.html +0 -325
  1180. package/src/app/shared/material/datetime/material.datetime.scss +0 -87
  1181. package/src/app/shared/material/datetime/material.datetime.ts +0 -758
  1182. package/src/app/shared/material/datetime/testing/mat-date-time.test.html +0 -794
  1183. package/src/app/shared/material/datetime/testing/mat-date-time.test.ts +0 -155
  1184. package/src/app/shared/material/datetime/testing/mat-date.test.html +0 -564
  1185. package/src/app/shared/material/datetime/testing/mat-date.test.ts +0 -145
  1186. package/src/app/shared/material/datetime/testing/mat-dateshort.test.html +0 -530
  1187. package/src/app/shared/material/datetime/testing/mat-dateshort.test.ts +0 -133
  1188. package/src/app/shared/material/duration/duration.module.ts +0 -33
  1189. package/src/app/shared/material/duration/duration.utils.ts +0 -18
  1190. package/src/app/shared/material/duration/material.duration.html +0 -116
  1191. package/src/app/shared/material/duration/material.duration.scss +0 -28
  1192. package/src/app/shared/material/duration/material.duration.ts +0 -308
  1193. package/src/app/shared/material/duration/testing/mat-duration.test.html +0 -170
  1194. package/src/app/shared/material/duration/testing/mat-duration.test.ts +0 -88
  1195. package/src/app/shared/material/latlong/latlong.utils.ts +0 -376
  1196. package/src/app/shared/material/latlong/material.latlong-input.html +0 -95
  1197. package/src/app/shared/material/latlong/material.latlong-input.scss +0 -66
  1198. package/src/app/shared/material/latlong/material.latlong-input.ts +0 -445
  1199. package/src/app/shared/material/latlong/material.latlong.html +0 -90
  1200. package/src/app/shared/material/latlong/material.latlong.module.ts +0 -37
  1201. package/src/app/shared/material/latlong/material.latlong.scss +0 -0
  1202. package/src/app/shared/material/latlong/material.latlong.ts +0 -203
  1203. package/src/app/shared/material/latlong/testing/latlong.test.html +0 -1008
  1204. package/src/app/shared/material/latlong/testing/latlong.test.ts +0 -144
  1205. package/src/app/shared/material/material.animations.ts +0 -269
  1206. package/src/app/shared/material/material.config.ts +0 -5
  1207. package/src/app/shared/material/material.module.ts +0 -94
  1208. package/src/app/shared/material/material.testing.module.ts +0 -192
  1209. package/src/app/shared/material/memory/memory.utils.ts +0 -57
  1210. package/src/app/shared/material/numpad/numpad.animation.ts +0 -1
  1211. package/src/app/shared/material/numpad/numpad.append-to-input.directive.ts +0 -110
  1212. package/src/app/shared/material/numpad/numpad.component.ts +0 -73
  1213. package/src/app/shared/material/numpad/numpad.container.html +0 -37
  1214. package/src/app/shared/material/numpad/numpad.container.scss +0 -55
  1215. package/src/app/shared/material/numpad/numpad.container.ts +0 -152
  1216. package/src/app/shared/material/numpad/numpad.content.html +0 -13
  1217. package/src/app/shared/material/numpad/numpad.content.ts +0 -10
  1218. package/src/app/shared/material/numpad/numpad.directive.ts +0 -159
  1219. package/src/app/shared/material/numpad/numpad.dom-service.ts +0 -35
  1220. package/src/app/shared/material/numpad/numpad.model.ts +0 -53
  1221. package/src/app/shared/material/numpad/numpad.module.ts +0 -18
  1222. package/src/app/shared/material/numpad/testing/numpad.test.html +0 -146
  1223. package/src/app/shared/material/numpad/testing/numpad.test.ts +0 -44
  1224. package/src/app/shared/material/paginator/material.paginator-i18n.ts +0 -47
  1225. package/src/app/shared/material/stepper/material.stepper-i18n.ts +0 -17
  1226. package/src/app/shared/material/swipe/material.swipe.html +0 -85
  1227. package/src/app/shared/material/swipe/material.swipe.scss +0 -55
  1228. package/src/app/shared/material/swipe/material.swipe.ts +0 -366
  1229. package/src/app/shared/material/swipe/swipe.module.ts +0 -29
  1230. package/src/app/shared/material/swipe/testing/swipe.test.html +0 -112
  1231. package/src/app/shared/material/swipe/testing/swipe.test.ts +0 -74
  1232. package/src/app/shared/material/test/test-component.css +0 -22
  1233. package/src/app/shared/material/test/test-component.html +0 -40
  1234. package/src/app/shared/material/test/test-component.ts +0 -295
  1235. package/src/app/shared/material/testing/common.test.html +0 -227
  1236. package/src/app/shared/material/testing/common.test.ts +0 -126
  1237. package/src/app/shared/material/text/testing/text-form.testing.html +0 -213
  1238. package/src/app/shared/material/text/testing/text-form.testing.ts +0 -30
  1239. package/src/app/shared/material/text/text-form.component.html +0 -63
  1240. package/src/app/shared/material/text/text-form.component.scss +0 -8
  1241. package/src/app/shared/material/text/text-form.component.ts +0 -177
  1242. package/src/app/shared/material/text/text-form.module.ts +0 -36
  1243. package/src/app/shared/modules.ts +0 -12
  1244. package/src/app/shared/named-filter/named-filter-selector.component.html +0 -77
  1245. package/src/app/shared/named-filter/named-filter-selector.component.scss +0 -3
  1246. package/src/app/shared/named-filter/named-filter-selector.component.ts +0 -287
  1247. package/src/app/shared/named-filter/named-filter.model.ts +0 -64
  1248. package/src/app/shared/named-filter/named-filter.module.ts +0 -15
  1249. package/src/app/shared/named-filter/named-filter.service.ts +0 -100
  1250. package/src/app/shared/named-filter/testing/named-filter-selector.testing.html +0 -61
  1251. package/src/app/shared/named-filter/testing/named-filter-selector.testing.ts +0 -80
  1252. package/src/app/shared/named-filter/testing/named-filter.testing.module.ts +0 -20
  1253. package/src/app/shared/named-filter/testing/named-filter.testing.service.ts +0 -83
  1254. package/src/app/shared/observables.ts +0 -139
  1255. package/src/app/shared/pipes/arrays.pipe.ts +0 -153
  1256. package/src/app/shared/pipes/badge.pipes.ts +0 -18
  1257. package/src/app/shared/pipes/colors.pipe.ts +0 -24
  1258. package/src/app/shared/pipes/date-diff-duration.pipe.ts +0 -53
  1259. package/src/app/shared/pipes/date-format.pipe.ts +0 -73
  1260. package/src/app/shared/pipes/date-from-now.pipe.ts +0 -17
  1261. package/src/app/shared/pipes/dates.pipe.ts +0 -13
  1262. package/src/app/shared/pipes/display-with.pipe.ts +0 -13
  1263. package/src/app/shared/pipes/duration.pipe.spec.ts +0 -41
  1264. package/src/app/shared/pipes/duration.pipe.ts +0 -28
  1265. package/src/app/shared/pipes/file-size.pipe.ts +0 -50
  1266. package/src/app/shared/pipes/form.pipes.ts +0 -209
  1267. package/src/app/shared/pipes/highlight.pipe.ts +0 -41
  1268. package/src/app/shared/pipes/html.pipes.ts +0 -49
  1269. package/src/app/shared/pipes/latlong-format.pipe.ts +0 -28
  1270. package/src/app/shared/pipes/maps.pipe.ts +0 -41
  1271. package/src/app/shared/pipes/maskito.pipe.ts +0 -68
  1272. package/src/app/shared/pipes/math.pipes.ts +0 -46
  1273. package/src/app/shared/pipes/ng-init.pipe.ts +0 -13
  1274. package/src/app/shared/pipes/number-format.pipe.ts +0 -11
  1275. package/src/app/shared/pipes/observable.pipes.ts +0 -46
  1276. package/src/app/shared/pipes/pipes.module.ts +0 -162
  1277. package/src/app/shared/pipes/property.pipes.ts +0 -115
  1278. package/src/app/shared/pipes/selection.pipes.ts +0 -165
  1279. package/src/app/shared/pipes/string.pipes.ts +0 -128
  1280. package/src/app/shared/pipes/translate-context.pipe.ts +0 -27
  1281. package/src/app/shared/pipes/types.pipes.ts +0 -52
  1282. package/src/app/shared/pipes/url.pipes.ts +0 -29
  1283. package/src/app/shared/platforms.ts +0 -99
  1284. package/src/app/shared/print/print.service.ts +0 -337
  1285. package/src/app/shared/regexps.ts +0 -112
  1286. package/src/app/shared/rx-state/rx-state.decorators.ts +0 -281
  1287. package/src/app/shared/rx-state/rx-state.module.ts +0 -11
  1288. package/src/app/shared/rx-state/rx-state.types.ts +0 -5
  1289. package/src/app/shared/services/entity-service.class.ts +0 -120
  1290. package/src/app/shared/services/job.utils.ts +0 -124
  1291. package/src/app/shared/services/memory-entity-service.class.ts +0 -435
  1292. package/src/app/shared/services/progress-bar.service.ts +0 -40
  1293. package/src/app/shared/services/startable-observable-service.class.ts +0 -129
  1294. package/src/app/shared/services/startable-service.class.ts +0 -120
  1295. package/src/app/shared/services/storage.utils.ts +0 -53
  1296. package/src/app/shared/services/translate-context.service.ts +0 -112
  1297. package/src/app/shared/services/validator-service.class.ts +0 -13
  1298. package/src/app/shared/services.ts +0 -134
  1299. package/src/app/shared/shared-routing.module.ts +0 -69
  1300. package/src/app/shared/shared.module.spec.ts +0 -13
  1301. package/src/app/shared/shared.module.ts +0 -168
  1302. package/src/app/shared/shared.testing.module.ts +0 -61
  1303. package/src/app/shared/storage/storage-explorer.component.html +0 -160
  1304. package/src/app/shared/storage/storage-explorer.component.scss +0 -37
  1305. package/src/app/shared/storage/storage-explorer.component.spec.ts +0 -24
  1306. package/src/app/shared/storage/storage-explorer.component.ts +0 -268
  1307. package/src/app/shared/storage/storage-explorer.module.ts +0 -24
  1308. package/src/app/shared/storage/storage-explorer.testing-routing.module.ts +0 -19
  1309. package/src/app/shared/storage/storage-explorer.testing.module.ts +0 -19
  1310. package/src/app/shared/storage/storage.service.ts +0 -131
  1311. package/src/app/shared/storage/storage.utils.ts +0 -25
  1312. package/src/app/shared/testing/maskito.test.html +0 -40
  1313. package/src/app/shared/testing/maskito.test.ts +0 -33
  1314. package/src/app/shared/testing/observable.test.html +0 -53
  1315. package/src/app/shared/testing/observable.test.scss +0 -3
  1316. package/src/app/shared/testing/observable.test.ts +0 -101
  1317. package/src/app/shared/testing/tests.page.html +0 -22
  1318. package/src/app/shared/testing/tests.page.ts +0 -32
  1319. package/src/app/shared/toast/toast.testing.html +0 -50
  1320. package/src/app/shared/toast/toast.testing.module.ts +0 -22
  1321. package/src/app/shared/toast/toast.testing.ts +0 -52
  1322. package/src/app/shared/toast/toasts.ts +0 -161
  1323. package/src/app/shared/toolbar/modal-toolbar.html +0 -30
  1324. package/src/app/shared/toolbar/modal-toolbar.scss +0 -0
  1325. package/src/app/shared/toolbar/modal-toolbar.ts +0 -64
  1326. package/src/app/shared/toolbar/toolbar.html +0 -68
  1327. package/src/app/shared/toolbar/toolbar.module.ts +0 -18
  1328. package/src/app/shared/toolbar/toolbar.scss +0 -0
  1329. package/src/app/shared/toolbar/toolbar.ts +0 -262
  1330. package/src/app/shared/types.ts +0 -44
  1331. package/src/app/shared/upload-file/testing/upload-file.testing.html +0 -30
  1332. package/src/app/shared/upload-file/testing/upload-file.testing.module.ts +0 -21
  1333. package/src/app/shared/upload-file/testing/upload-file.testing.ts +0 -65
  1334. package/src/app/shared/upload-file/upload-file-popover.component.html +0 -46
  1335. package/src/app/shared/upload-file/upload-file-popover.component.scss +0 -6
  1336. package/src/app/shared/upload-file/upload-file-popover.component.ts +0 -115
  1337. package/src/app/shared/upload-file/upload-file.component.html +0 -57
  1338. package/src/app/shared/upload-file/upload-file.component.scss +0 -60
  1339. package/src/app/shared/upload-file/upload-file.component.ts +0 -222
  1340. package/src/app/shared/upload-file/upload-file.model.ts +0 -40
  1341. package/src/app/shared/validator/form-error-adapter.class.ts +0 -139
  1342. package/src/app/shared/validator/validators.ts +0 -725
  1343. package/src/app/shared/version/versions.ts +0 -89
  1344. package/src/app/social/config/social.config.ts +0 -10
  1345. package/src/app/social/feed/discourse/discourse-feed.service.ts +0 -216
  1346. package/src/app/social/feed/discourse/discourse.model.ts +0 -9
  1347. package/src/app/social/feed/discourse/discourse.utils.ts +0 -210
  1348. package/src/app/social/feed/feed.component.html +0 -85
  1349. package/src/app/social/feed/feed.component.scss +0 -59
  1350. package/src/app/social/feed/feed.component.spec.ts +0 -24
  1351. package/src/app/social/feed/feed.component.ts +0 -115
  1352. package/src/app/social/feed/feed.directive.ts +0 -164
  1353. package/src/app/social/feed/feed.model.ts +0 -139
  1354. package/src/app/social/feed/feed.module.ts +0 -13
  1355. package/src/app/social/feed/feed.service.ts +0 -14
  1356. package/src/app/social/job/job.module.ts +0 -14
  1357. package/src/app/social/job/progression/job-progression.component.html +0 -19
  1358. package/src/app/social/job/progression/job-progression.component.scss +0 -15
  1359. package/src/app/social/job/progression/job-progression.component.ts +0 -39
  1360. package/src/app/social/job/progression/job-progression.icon.html +0 -32
  1361. package/src/app/social/job/progression/job-progression.icon.scss +0 -7
  1362. package/src/app/social/job/progression/job-progression.icon.ts +0 -277
  1363. package/src/app/social/job/progression/job-progression.list.html +0 -25
  1364. package/src/app/social/job/progression/job-progression.list.scss +0 -17
  1365. package/src/app/social/job/progression/job-progression.list.ts +0 -40
  1366. package/src/app/social/job/progression/job-progression.model.ts +0 -26
  1367. package/src/app/social/job/progression/job-progression.service.ts +0 -97
  1368. package/src/app/social/job/testing/job-progression.testing.html +0 -11
  1369. package/src/app/social/job/testing/job-progression.testing.service.ts +0 -33
  1370. package/src/app/social/job/testing/job-progression.testing.ts +0 -28
  1371. package/src/app/social/job/testing/job.testing.module.ts +0 -13
  1372. package/src/app/social/message/message.form.html +0 -71
  1373. package/src/app/social/message/message.form.scss +0 -6
  1374. package/src/app/social/message/message.form.ts +0 -128
  1375. package/src/app/social/message/message.modal.html +0 -68
  1376. package/src/app/social/message/message.modal.ts +0 -117
  1377. package/src/app/social/message/message.model.ts +0 -78
  1378. package/src/app/social/message/message.module.ts +0 -14
  1379. package/src/app/social/message/message.service.ts +0 -104
  1380. package/src/app/social/social.errors.ts +0 -10
  1381. package/src/app/social/social.module.ts +0 -23
  1382. package/src/app/social/social.testing.module.ts +0 -33
  1383. package/src/app/social/user-event/notification/user-event-notification.icon.html +0 -49
  1384. package/src/app/social/user-event/notification/user-event-notification.icon.scss +0 -4
  1385. package/src/app/social/user-event/notification/user-event-notification.icon.ts +0 -176
  1386. package/src/app/social/user-event/notification/user-event-notification.list.html +0 -151
  1387. package/src/app/social/user-event/notification/user-event-notification.list.scss +0 -73
  1388. package/src/app/social/user-event/notification/user-event-notification.list.ts +0 -282
  1389. package/src/app/social/user-event/notification/user-event-notification.modal.html +0 -71
  1390. package/src/app/social/user-event/notification/user-event-notification.modal.ts +0 -60
  1391. package/src/app/social/user-event/testing/user-event.testing.html +0 -54
  1392. package/src/app/social/user-event/testing/user-event.testing.model.ts +0 -142
  1393. package/src/app/social/user-event/testing/user-event.testing.module.ts +0 -13
  1394. package/src/app/social/user-event/testing/user-event.testing.service.ts +0 -161
  1395. package/src/app/social/user-event/testing/user-event.testing.ts +0 -300
  1396. package/src/app/social/user-event/user-event.model.ts +0 -55
  1397. package/src/app/social/user-event/user-event.module.ts +0 -16
  1398. package/src/app/social/user-event/user-event.service.ts +0 -686
  1399. package/src/browserslist +0 -9
  1400. package/src/environments/environment.class.ts +0 -113
  1401. package/src/environments/environment.loader.ts +0 -90
  1402. package/src/environments/environment.prod.ts +0 -49
  1403. package/src/environments/environment.test.ts +0 -92
  1404. package/src/environments/environment.ts +0 -136
  1405. package/src/favicon.ico +0 -0
  1406. package/src/global.scss +0 -13
  1407. package/src/index.html +0 -76
  1408. package/src/main.ts +0 -19
  1409. package/src/polyfills.ts +0 -34
  1410. package/src/schema.graphql +0 -4381
  1411. package/src/service-worker.js +0 -31
  1412. package/src/test.ts +0 -30
  1413. package/tsconfig-cs.json +0 -57
  1414. package/tsconfig.app.json +0 -15
  1415. package/tsconfig.json +0 -48
  1416. package/tsconfig.spec.json +0 -18
@@ -1,1567 +0,0 @@
1
- import { Inject, Injectable, InjectionToken, Optional } from '@angular/core';
2
- import { CryptoService, Keypair } from './crypto.service';
3
- import { Department } from './model/department.model';
4
- import { Account, AccountUtils, UserSettings } from './model/account.model';
5
- import { Person, PersonUtils, UserProfileLabel } from './model/person.model';
6
- import { LocalSettings, UsageMode } from './model/settings.model';
7
- import { BehaviorSubject, from, Observable, Subject, Subscription } from 'rxjs';
8
- import { FetchPolicy, gql } from '@apollo/client/core';
9
- import { Storage } from '@ionic/storage-angular';
10
-
11
- import { isEmptyArray, isNil, removeDuplicatesFromArray, sleep, toNumber } from '../../shared/functions';
12
- import { BaseGraphqlService } from './base-graphql-service.class';
13
- import { ErrorCodes, ServerErrorCodes } from './errors';
14
- import { GraphqlService } from '../graphql/graphql.service';
15
- import { LocalSettingsService } from './local-settings.service';
16
- import { FormFieldDefinition, FormFieldDefinitionMap } from '../../shared/form/field.model';
17
- import { NetworkService } from './network.service';
18
- import { AuthTokenType } from './network.types';
19
- import { FileService } from '../../shared/file/file.service';
20
- import { MINIFY_ENTITY_FOR_POD, Referential, ReferentialUtils } from './model/referential.model';
21
- import { StatusIds } from './model/model.enum';
22
- import { Base58 } from './base58';
23
- import { Environment, ENVIRONMENT } from '../../../environments/environment.class';
24
- import { fromDateISOString } from '../../shared/dates';
25
- import { firstNotNilPromise } from '../../shared/observables';
26
- import { debounceTime, filter, map, switchMap } from 'rxjs/operators';
27
- import { BaseEntityGraphqlMutations, BaseEntityGraphqlQueries, BaseEntityGraphqlSubscriptions } from './base-entity-service.class';
28
- import { Moment } from 'moment';
29
- import { ShowToastOptions, Toasts } from '../../shared/toast/toasts';
30
- import { OverlayEventDetail } from '@ionic/core';
31
- import { ToastController } from '@ionic/angular';
32
- import { TranslateService } from '@ngx-translate/core';
33
- import { TokenScope, UserToken } from './model/token.model';
34
- import { AppPropertiesUtils } from '../form/properties/properties.utils';
35
-
36
- export declare interface AccountDetails {
37
- loaded: boolean;
38
- keypair: Keypair;
39
- authToken: string;
40
- authBasic?: string;
41
- pubkey: string;
42
- person: Person;
43
- department: Department;
44
- mainProfile: string;
45
- }
46
-
47
- export interface AuthData {
48
- username: string;
49
- password: string;
50
- offline?: boolean;
51
- }
52
-
53
- export interface RegisterData extends AuthData {
54
- account: Account;
55
- }
56
-
57
- export interface ChangePasswordData {
58
- password: string;
59
- confirmPassword: string;
60
- email: string;
61
- }
62
-
63
- const TOKEN_STORAGE_KEY = 'token';
64
- const PUBKEY_STORAGE_KEY = 'pubkey';
65
- const SECKEY_STORAGE_KEY = 'seckey';
66
- const ACCOUNT_STORAGE_KEY = 'account';
67
-
68
- const DEFAULT_AVATAR_IMAGE = 'assets/img/person.png';
69
-
70
- export interface UserSettingsOptions {
71
- options: FormFieldDefinitionMap;
72
- remoteLocalSettingsKeys?: (keyof LocalSettings | string)[];
73
- }
74
-
75
- export const APP_USER_SETTINGS_OPTIONS = new InjectionToken<UserSettingsOptions>('UserSettingsOptions');
76
- export const APP_USER_TOKEN_SCOPES = new InjectionToken<TokenScope[]>('UserTokenScopes');
77
-
78
- /* ------------------------------------
79
- * GraphQL queries
80
- * ------------------------------------*/
81
- const Fragments = {
82
- account: gql`
83
- fragment AccountFragment on AccountVO {
84
- id
85
- firstName
86
- lastName
87
- email
88
- pubkey
89
- avatar
90
- statusId
91
- updateDate
92
- creationDate
93
- profiles
94
- settings {
95
- ...UserSettingsFragment
96
- }
97
- department {
98
- id
99
- label
100
- name
101
- __typename
102
- }
103
- __typename
104
- }
105
- `,
106
-
107
- settings: gql`
108
- fragment UserSettingsFragment on UserSettingsVO {
109
- id
110
- locale
111
- latLongFormat
112
- content
113
- nonce
114
- updateDate
115
- __typename
116
- }
117
- `,
118
-
119
- token: gql`
120
- fragment UserTokenFragment on UserTokenVO {
121
- id
122
- pubkey
123
- name
124
- flags
125
- expirationDate
126
- lastUsedDate
127
- creationDate
128
- updateDate
129
- __typename
130
- }
131
- `,
132
- };
133
-
134
- // Account queries
135
- const Queries: Partial<BaseEntityGraphqlQueries> & { loadWithTokens: any } = {
136
- load: gql`
137
- query Account {
138
- data: account {
139
- ...AccountFragment
140
- }
141
- }
142
- ${Fragments.account}
143
- ${Fragments.settings}
144
- `,
145
-
146
- loadWithTokens: gql`
147
- query AccountWithToken {
148
- data: account {
149
- ...AccountFragment
150
- tokens {
151
- ...UserTokenFragment
152
- }
153
- }
154
- }
155
- ${Fragments.account}
156
- ${Fragments.settings}
157
- ${Fragments.token}
158
- `,
159
- };
160
-
161
- // Check email query
162
- const IsEmailExistsQuery: any = gql`
163
- query IsEmailExists($email: String, $hash: String) {
164
- isEmailExists(email: $email, hash: $hash)
165
- }
166
- `;
167
-
168
- export declare interface IsEmailExistsVariables {
169
- email: string;
170
- hash: string;
171
- }
172
-
173
- // Account mutations
174
- const Mutations: Partial<BaseEntityGraphqlMutations> & { saveWithTokens: any; saveSettings: any; create: any } = {
175
- save: gql`
176
- mutation SaveAccount($data: AccountVOInput) {
177
- data: saveAccount(account: $data) {
178
- ...AccountFragment
179
- }
180
- }
181
- ${Fragments.account}
182
- ${Fragments.settings}
183
- `,
184
-
185
- saveWithTokens: gql`
186
- mutation SaveAccountWithTokens($data: AccountVOInput) {
187
- data: saveAccount(account: $data) {
188
- ...AccountFragment
189
- tokens {
190
- ...UserTokenFragment
191
- }
192
- }
193
- }
194
- ${Fragments.account}
195
- ${Fragments.settings}
196
- ${Fragments.token}
197
- `,
198
-
199
- create: gql`
200
- mutation CreateAccount($data: AccountVOInput) {
201
- data: createAccount(account: $data) {
202
- ...AccountFragment
203
- }
204
- }
205
- ${Fragments.account}
206
- ${Fragments.settings}
207
- `,
208
-
209
- saveSettings: gql`
210
- mutation SaveSettings($data: UserSettingsVOInput) {
211
- data: saveSettings(settings: $data) {
212
- ...UserSettingsFragment
213
- }
214
- }
215
- ${Fragments.settings}
216
- `,
217
- };
218
-
219
- // Sent confirmation email
220
- const SendConfirmEmailQuery: any = gql`
221
- query sendAccountConfirmationEmail($email: String, $locale: String) {
222
- data: sendAccountConfirmationEmail(email: $email, locale: $locale)
223
- }
224
- `;
225
-
226
- // Confirm account email
227
- const ConfirmEmailQuery: any = gql`
228
- query confirmAccountEmail($email: String, $code: String) {
229
- data: confirmAccountEmail(email: $email, code: $code)
230
- }
231
- `;
232
-
233
- // Send email to reset password
234
- const SendResetPasswordEmailQuery: any = gql`
235
- query SendResetPasswordEmail($username: String!, $locale: String!) {
236
- sendResetPasswordEmail(username: $username, locale: $locale)
237
- }
238
- `;
239
-
240
- const ResetAccountPubkeyQuery: any = gql`
241
- query ResetPubkey($username: String!, $token: String!) {
242
- data: resetAccountPubkey(username: $username, token: $token)
243
- }
244
- `;
245
-
246
- const UpdatePubKeyQuery: any = gql`
247
- query UpdateAccountPubkey($pubkey: String!) {
248
- data: updateAccountPubkey(pubkey: $pubkey)
249
- }
250
- `;
251
-
252
- // Authentication query
253
- const AuthQuery: any = gql`
254
- query Auth($token: String) {
255
- authenticate(token: $token)
256
- }
257
- `;
258
-
259
- // New auth challenge query
260
- const AuthChallengeQuery: any = gql`
261
- query AuthChallenge {
262
- authChallenge {
263
- challenge
264
- pubkey
265
- signature
266
- }
267
- }
268
- `;
269
-
270
- interface IAuthChallenge {
271
- pubkey: string;
272
- challenge: string;
273
- signature: string;
274
- }
275
-
276
- const AccountSubscriptions: BaseEntityGraphqlSubscriptions = {
277
- listenChanges: gql`
278
- subscription updateAccount($interval: Int) {
279
- data: updateAccount(interval: $interval) {
280
- id
281
- updateDate
282
- }
283
- }
284
- `,
285
- };
286
-
287
- export interface AccountWatchOptions {
288
- intervalInSeconds?: number;
289
- }
290
-
291
- @Injectable({ providedIn: 'root', deps: [ENVIRONMENT] })
292
- export class AccountService extends BaseGraphqlService<Account, any, number, Account> {
293
- onLogin = new Subject<Account>();
294
- onWillLogout = new Subject<Account>();
295
- onLogout = new Subject<void>();
296
- onChange = new Subject<Account>();
297
- onAuthTokenChange = new BehaviorSubject<string | undefined>(undefined);
298
- onAuthBasicChange = new BehaviorSubject<string | undefined>(undefined);
299
-
300
- private _listenChangesSubscription: Subscription = null;
301
- private readonly _enableListenChanges: boolean;
302
- private readonly _listenIntervalInSeconds: number;
303
- private _cache: AccountDetails = {
304
- loaded: false,
305
- keypair: null,
306
- authToken: null,
307
- authBasic: null,
308
- pubkey: null,
309
- mainProfile: null,
310
- person: null,
311
- department: null,
312
- };
313
- private readonly _optionDefs: FormFieldDefinition[];
314
- private readonly _remoteLocalSettingsKeys: (keyof LocalSettings | string)[];
315
- private _$additionalFields = new BehaviorSubject<FormFieldDefinition[]>([]);
316
- private _tokenType$ = new BehaviorSubject<AuthTokenType>(undefined);
317
- private _apiTokenEnabled = true;
318
-
319
- get account(): Account {
320
- return this._cache.loaded ? this._data : undefined;
321
- }
322
-
323
- get person(): Person {
324
- if (this._cache.loaded && !this._cache.person) {
325
- this._cache.person = this._cache.loaded ? this._data.asPerson() : undefined;
326
- }
327
- return this._cache.person;
328
- }
329
-
330
- get department(): Department {
331
- if (this._cache.loaded && !this._cache.department) {
332
- this._cache.department = this._cache.loaded ? this._data.asPerson().department : undefined;
333
- }
334
- return this._cache.department;
335
- }
336
-
337
- get tokenType(): AuthTokenType {
338
- return this._tokenType$.value;
339
- }
340
-
341
- set tokenType(value: AuthTokenType) {
342
- if (this._tokenType$.value !== value) {
343
- console.info('[account] Using authentication token type: ' + value);
344
- this._tokenType$.next(value);
345
- // Reset values
346
- this._cache.authToken = undefined;
347
- this.onAuthTokenChange.next(undefined);
348
- this._cache.authBasic = undefined;
349
- this.onAuthBasicChange.next(undefined);
350
- }
351
- }
352
-
353
- get apiTokenEnabled(): boolean {
354
- return this._apiTokenEnabled;
355
- }
356
-
357
- set apiTokenEnabled(value: boolean) {
358
- this._apiTokenEnabled = value;
359
- }
360
-
361
- constructor(
362
- protected network: NetworkService,
363
- protected graphql: GraphqlService,
364
- protected settings: LocalSettingsService,
365
- protected storage: Storage,
366
- protected file: FileService,
367
- @Optional() private translate: TranslateService,
368
- @Optional() private toastController: ToastController,
369
- @Inject(ENVIRONMENT) protected environment: Environment,
370
- @Optional() @Inject(APP_USER_SETTINGS_OPTIONS) options: UserSettingsOptions
371
- ) {
372
- super(graphql, environment);
373
- this._enableListenChanges = !environment.account || environment.account.enableListenChanges !== false; // True by default
374
- this._listenIntervalInSeconds = toNumber(environment.account && environment.account.listenIntervalInSeconds, 0); // no timer by default
375
-
376
- this._debug = !environment.production;
377
- if (this._debug) console.debug('[account-service] Creating service');
378
- this._optionDefs = Object.values(options?.options || {});
379
- this._remoteLocalSettingsKeys = options?.remoteLocalSettingsKeys || [];
380
-
381
- this.resetData();
382
-
383
- // Send auth token to the graphql layer, when changed
384
- this.onAuthTokenChange.subscribe((token) => this.graphql.setAuthToken(token));
385
- this.onAuthBasicChange.subscribe((basic) => this.graphql.setAuthBasic(basic));
386
-
387
- // Force network to wait account service, after getting connection to the peer
388
- this.network.on('beforeTryOnlineFinish', async (online) => {
389
- // If online, wait a full restart, because it can force offline mode
390
- if (online && (!this.started || this.isLogin())) {
391
- console.debug('[account] Force networkService.tryOnline() to wait, that graphql and account service is restarted...');
392
- await sleep(500); // wait graphql service to be restarted
393
- if (!this.started) await this.ready();
394
- }
395
- });
396
- }
397
-
398
- async ngOnStart(): Promise<Account> {
399
- await Promise.all([
400
- this.settings.ready(),
401
- // Wait token type to be set
402
- firstNotNilPromise(this._tokenType$, { stop: this.stopSubject }),
403
- ]);
404
-
405
- // Listen graphql start (or restart)
406
- this.registerSubscription(
407
- this.graphql.stopSubject.subscribe(() => {
408
- if (this.started && this.isLogin()) {
409
- console.debug('[account] Restarting, to retry to authenticate...');
410
- this.restart();
411
- }
412
- })
413
- );
414
-
415
- await this.restoreLocally();
416
- await this.listenSettings();
417
-
418
- return this._data;
419
- }
420
-
421
- protected async ngOnStop(): Promise<void> {
422
- const hadAuthToken = this._cache.authToken && true;
423
- const hadAuthBasic = this._cache.authBasic && true;
424
- const hadAuth = hadAuthToken || hadAuthBasic;
425
- this.resetData();
426
- if (hadAuth) {
427
- this.onLogout.next();
428
- this.onChange.next(undefined);
429
- if (hadAuthToken) this.onAuthTokenChange.next(undefined);
430
- if (hadAuthBasic) this.onAuthBasicChange.next(undefined);
431
- }
432
- }
433
-
434
- isLogin(): boolean {
435
- return !!(this._cache.pubkey && this._cache.loaded);
436
- }
437
-
438
- isAuth(): boolean {
439
- return !!(this._cache.pubkey && this._cache.keypair && this._cache.keypair.secretKey);
440
- }
441
-
442
- hasMinProfile(userProfile: UserProfileLabel): boolean {
443
- // should be login, and status ENABLE or TEMPORARY
444
- if (!this._data || !this._data.pubkey || (this._data.statusId !== StatusIds.ENABLE && this._data.statusId !== StatusIds.TEMPORARY)) {
445
- return false;
446
- }
447
- return PersonUtils.hasUpperOrEqualsProfile(this._data.profiles, userProfile);
448
- }
449
-
450
- hasExactProfile(label: UserProfileLabel): boolean {
451
- return AccountUtils.hasExactProfile(this._data, label);
452
- }
453
-
454
- hasProfileAndIsEnable(userProfile: UserProfileLabel): boolean {
455
- return AccountUtils.hasProfileAndIsEnable(this._data, userProfile);
456
- }
457
-
458
- isAdmin(): boolean {
459
- return this.hasProfileAndIsEnable('ADMIN');
460
- }
461
-
462
- isSupervisor(): boolean {
463
- return this.hasProfileAndIsEnable('SUPERVISOR');
464
- }
465
-
466
- isUser(): boolean {
467
- return this.hasProfileAndIsEnable('USER');
468
- }
469
-
470
- /**
471
- * @deprecated
472
- * @param mode
473
- */
474
- isUsageMode(mode: UsageMode): boolean {
475
- return this.settings.isUsageMode(mode);
476
- }
477
-
478
- isOnlyGuest(): boolean {
479
- // Should be login, and status ENABLE or TEMPORARY
480
- if (!this._data || !this._data.pubkey || (this._data.statusId !== StatusIds.ENABLE && this._data.statusId !== StatusIds.TEMPORARY)) return false;
481
- // Profile less then user
482
- return !PersonUtils.hasUpperOrEqualsProfile(this._data.profiles, 'USER');
483
- }
484
-
485
- /**
486
- *
487
- * @param recorderDepartment
488
- * @deprecated use ProgramRefService.canUserWriteEntity() instead
489
- */
490
- canUserWriteDataForDepartment(recorderDepartment: Referential | any): boolean {
491
- if (ReferentialUtils.isEmpty(recorderDepartment)) {
492
- return this.isAdmin();
493
- }
494
-
495
- // Should be login, and status ENABLE
496
- if (!this._data || !this._data.pubkey || this._data.statusId !== StatusIds.ENABLE) return false;
497
-
498
- if (!this._data.department || !this._data.department.id) {
499
- console.warn('User account has no department ! Unable to check write right against recorderDepartment');
500
- return false;
501
- }
502
-
503
- // Same recorder department: OK, user can write
504
- if (this._data.department.id === recorderDepartment.id) return true;
505
-
506
- // Cannot write
507
- return false;
508
- }
509
-
510
- async register(data: RegisterData): Promise<Account> {
511
- if (this.isLogin()) {
512
- throw new Error('User already login. Please logout before register.');
513
- }
514
- if (!data.username || !data.password) throw new Error('Missing required username or password');
515
-
516
- if (this._debug) console.debug('[account] Register new user account...', data.account);
517
- this._cache.loaded = false;
518
- const now = Date.now();
519
-
520
- try {
521
- const keypair = await CryptoService.scryptKeypair(data.username, data.password);
522
- data.account.pubkey = Base58.encode(keypair.publicKey);
523
-
524
- // Default values
525
- data.account.settings = data.account.settings || new UserSettings();
526
- data.account.settings.merge(this.settings.settings, this._remoteLocalSettingsKeys, true);
527
- data.account.department.id = data.account.department.id || this.environment.defaultDepartmentId;
528
-
529
- this._cache.keypair = keypair;
530
- const account = await this.saveRemotely(data.account, keypair);
531
-
532
- // Default values
533
- account.avatar = account.avatar || this.environment.baseUrl + DEFAULT_AVATAR_IMAGE;
534
- this._cache.mainProfile = PersonUtils.getMainProfile(account.profiles);
535
-
536
- this._data = account;
537
- this._cache.pubkey = account.pubkey;
538
-
539
- // Try to auth on pod
540
- await this.authenticate(data);
541
-
542
- this._cache.loaded = true;
543
-
544
- await this.saveLocally();
545
-
546
- console.debug(`[account] Account successfully registered in ${Date.now() - now}ms`);
547
-
548
- // Emit events
549
- this.onLogin.next(this._data);
550
- this.onChange.next(this._data);
551
-
552
- // Listen remote changes
553
- if (this._enableListenChanges) this.startListenRemoteChanges();
554
-
555
- return this._data;
556
- } catch (error) {
557
- console.error((error && error.message) || error);
558
- this.resetData();
559
- throw error;
560
- }
561
- }
562
-
563
- async authenticate(data?: AuthData) {
564
- // Wait the auth token, then continue
565
- const tokenType = await firstNotNilPromise(this._tokenType$);
566
-
567
- // Basic auth
568
- if (tokenType === 'basic' || tokenType === 'basic-and-token') {
569
- // Generate the authBasic, if used
570
- if (!this._cache.authBasic) {
571
- // Skip if token already provided
572
- if (!(this._cache.authToken && tokenType === 'basic-and-token')) {
573
- if (!data || !data.username || !data.password) throw new Error('Missing username and password');
574
- this._cache.authBasic = CryptoService.encodeBase64(`${data.username}:${data.password}`);
575
- }
576
- }
577
- this.onAuthBasicChange.next(this._cache.authBasic);
578
- }
579
-
580
- // Generate the authToken, if used
581
- if (tokenType === 'token' || tokenType === 'basic-and-token') {
582
- try {
583
- this._cache.authToken = await this.authenticateAndGetToken(this._cache.authToken);
584
- } catch (error) {
585
- // Never authenticate, or not ready for offline mode => exit
586
- console.error(error);
587
- this.resetData();
588
- throw error;
589
- }
590
- }
591
-
592
- // Forget authBasic, to switch to authToken
593
- if (tokenType === 'basic-and-token') {
594
- this._cache.authBasic = undefined;
595
- this.onAuthBasicChange.next(undefined);
596
- }
597
- }
598
-
599
- async login(data: AuthData): Promise<Account> {
600
- if (!data || !data.username || !data.password) throw new Error('Missing required username or password');
601
-
602
- console.debug('[account] Login...');
603
-
604
- let keypair;
605
- try {
606
- keypair = await CryptoService.scryptKeypair(data.username, data.password);
607
- } catch (error) {
608
- console.error(error);
609
- this.resetData();
610
- throw { code: ErrorCodes.UNKNOWN_ERROR, message: 'ERROR.SCRYPT_ERROR' };
611
- }
612
-
613
- // Store pubkey+keypair
614
- this._cache.pubkey = Base58.encode(keypair.publicKey);
615
- this._cache.keypair = keypair;
616
-
617
- // Try to load previous token
618
- let previousToken: string = await this.storage.get(TOKEN_STORAGE_KEY);
619
- previousToken = (previousToken && previousToken.startsWith(this._cache.pubkey) && previousToken) || null;
620
-
621
- // Offline mode
622
- const offline = this.settings.hasOfflineFeature() && (this.network.offline || data.offline === true);
623
- if (offline) {
624
- this._cache.authToken = previousToken;
625
-
626
- // Make sure network if set as offline
627
- this.network.setForceOffline(true, { showToast: false });
628
- console.info(`[account] Login [OK] {pubkey: ${this._cache.pubkey.substr(0, 8)}}, {offline: true}`);
629
- }
630
-
631
- // Online mode: try to auth on pod
632
- else {
633
- try {
634
- await this.authenticate(data);
635
- } catch (error) {
636
- // Never authenticate, or not ready for offline mode => exit
637
- console.error(error);
638
- this.resetData();
639
- throw error;
640
- }
641
- }
642
-
643
- // Load account data
644
- try {
645
- await this.loadData({ offline, fetchPolicy: 'network-only' });
646
- } catch (err) {
647
- // If account not found, check if email is valid
648
- if (err && +err.code === ErrorCodes.LOAD_ACCOUNT_ERROR) {
649
- // Check email exists
650
- if (data.username.indexOf('@') !== -1) {
651
- let isEmailExists;
652
- try {
653
- isEmailExists = await this.isEmailExists(data.username);
654
- } catch (otherError) {
655
- throw err; // resend the first error
656
- }
657
-
658
- // Email not exists (no account)
659
- if (!isEmailExists) {
660
- throw { code: ErrorCodes.UNKNOWN_ACCOUNT_EMAIL, message: 'ERROR.UNKNOWN_ACCOUNT_EMAIL' };
661
- }
662
- }
663
-
664
- // Email exists, so error = 'bad password'
665
- throw { code: ErrorCodes.BAD_PASSWORD, message: 'ERROR.BAD_PASSWORD' };
666
- }
667
-
668
- throw err; // resend the first error
669
- }
670
-
671
- try {
672
- // Store to local storage
673
- await this.saveLocally();
674
- } catch (error) {
675
- console.error(error);
676
- this.resetData();
677
- throw error;
678
- }
679
-
680
- // Emit event to observers
681
- this.onLogin.next(this._data);
682
- this.onChange.next(this._data);
683
-
684
- if (this._enableListenChanges) this.startListenRemoteChanges();
685
-
686
- return this._data;
687
- }
688
-
689
- async reload(opts?: { showToast?: boolean }): Promise<Account> {
690
- if (!this._cache.pubkey) throw new Error('User not logged');
691
- if (this.network.offline) throw new Error('Cannot check account in offline mode');
692
-
693
- const now = Date.now();
694
- console.debug(`[account] Reloading account...`);
695
- const wasLogin = this.isLogin();
696
-
697
- try {
698
- await this.loadData();
699
- await this.saveLocally();
700
-
701
- console.debug(`[account] Reloading account [OK] in ${Date.now() - now}ms`);
702
-
703
- // Emit login event to subscribers
704
- this.onLogin.next(this._data);
705
- this.onChange.next(this._data);
706
-
707
- // Display toast (without await, because not need to wait toast close event)
708
- if (!opts || opts.showToast !== false) {
709
- this.showToast({ message: 'ACCOUNT.INFO.RELOADED', type: 'info' });
710
- }
711
-
712
- return this._data;
713
- } catch (error) {
714
- // Cannot reload but was login: force to logout
715
- if (wasLogin && !this.isLogin()) {
716
- console.error(`[account] Reloading account failed. Will force logout...`, error);
717
- await this.logout();
718
- } else {
719
- throw error;
720
- }
721
- }
722
- }
723
-
724
- /**
725
- * Create or update an user account, to the remote storage
726
- *
727
- * @param account
728
- */
729
- async save(account: Account): Promise<Account> {
730
- if (!this._cache.pubkey) return Promise.reject('User not logged');
731
- if (this._cache.pubkey !== account.pubkey) return Promise.reject('Not user account');
732
-
733
- account = await this.saveRemotely(account, this._cache.keypair);
734
-
735
- // Set defaults
736
- account.avatar = account.avatar || this.environment.baseUrl + DEFAULT_AVATAR_IMAGE;
737
- this._cache.mainProfile = PersonUtils.getMainProfile(account.profiles);
738
-
739
- this._data = account;
740
-
741
- // Update cache
742
- this._cache.person = account.asPerson();
743
- this._cache.department = this._cache.person.department;
744
-
745
- this._cache.loaded = true;
746
-
747
- // Save locally (in storage)
748
- await this.saveLocally();
749
-
750
- // Send event
751
- this.onLogin.next(this._data);
752
- this.onChange.next(this._data);
753
-
754
- return this._data;
755
- }
756
-
757
- async logout(): Promise<void> {
758
- const hadAuthToken = this._cache.authToken && true;
759
- const hadAuthBasic = this._cache.authBasic && true;
760
- const pubkey = this._cache && this._cache.pubkey;
761
-
762
- // Notify observers
763
- this.onWillLogout.next(this.account);
764
-
765
- this.resetData();
766
-
767
- if (!this.settings.hasOfflineFeature()) {
768
- // Remove all data from the local storage
769
- await Promise.all([
770
- this.storage.remove(PUBKEY_STORAGE_KEY),
771
- this.storage.remove(TOKEN_STORAGE_KEY),
772
- this.storage.remove(ACCOUNT_STORAGE_KEY),
773
- (pubkey && this.storage.remove(ACCOUNT_STORAGE_KEY + '#' + pubkey)) || Promise.resolve(),
774
- this.storage.remove(SECKEY_STORAGE_KEY),
775
- ]);
776
- }
777
-
778
- // Offline features enable: need to keep some data
779
- else {
780
- // Always remove only secret key
781
- // But keep:
782
- // - account by pubkey
783
- // - auth token
784
- await Promise.all([this.storage.remove(PUBKEY_STORAGE_KEY), this.storage.remove(ACCOUNT_STORAGE_KEY), this.storage.remove(SECKEY_STORAGE_KEY)]);
785
- }
786
-
787
- // Clean page history, in local settings
788
- await this.settings.clearPageHistory();
789
-
790
- // Notify observers
791
- this.onLogout.next();
792
- if (hadAuthToken) this.onAuthTokenChange.next(undefined);
793
- if (hadAuthBasic) this.onAuthBasicChange.next(undefined);
794
- this.onChange.next(undefined);
795
- }
796
-
797
- /**
798
- * Load a account
799
- *
800
- * @param opts
801
- */
802
- async load(opts?: { offline?: boolean; fetchPolicy?: FetchPolicy; query?: any }): Promise<Account | undefined> {
803
- const now = this._debug && Date.now();
804
- if (this._debug) console.debug(`[account] Loading account...`);
805
- let json: any;
806
-
807
- // Load locally
808
- const offline =
809
- (this.network.offline && (!opts || (opts.fetchPolicy !== 'network-only' && opts.fetchPolicy !== 'no-cache'))) ||
810
- (opts && opts.offline === true);
811
- if (offline) {
812
- json = await this.storage.get(ACCOUNT_STORAGE_KEY);
813
- json = (json && typeof json === 'string' && JSON.parse(json)) || json;
814
- json = (json && this._cache.pubkey && json.pubkey === this._cache.pubkey && json) || null;
815
- if (!json && this._cache.pubkey) {
816
- json = await this.storage.get(ACCOUNT_STORAGE_KEY + '#' + this._cache.pubkey);
817
- json = (json && typeof json === 'string' && JSON.parse(json)) || json;
818
- }
819
- }
820
-
821
- // Load remotely
822
- else {
823
- const query = opts?.query || (this.apiTokenEnabled ? Queries.loadWithTokens : Queries.load);
824
- const { data } = await this.graphql.query<{ data: any }>({
825
- query,
826
- error: { code: ErrorCodes.LOAD_ACCOUNT_ERROR, message: 'ERROR.LOAD_ACCOUNT_ERROR' },
827
- fetchPolicy: (opts && opts.fetchPolicy) || 'no-cache' || undefined,
828
- });
829
- json = data;
830
- }
831
-
832
- if (json) {
833
- const account = Account.fromObject(json);
834
- if (this._debug) console.debug(`[account] Account loaded in ${Date.now() - now}ms`, account);
835
- return account;
836
- } else {
837
- console.warn(`[account] Account not found !`);
838
- return undefined;
839
- }
840
- }
841
-
842
- async generateToken(flags: number): Promise<string | undefined> {
843
- const now = this._debug && Date.now();
844
- if (this._debug) console.debug(`[account] Generate token...`);
845
-
846
- const authChallenge = await this.getAuthChallenge();
847
- // Add Flags to challenge
848
- const challenge = `${authChallenge.challenge}:${flags}`;
849
- const signature = await CryptoService.sign(challenge, this._cache.keypair);
850
- const newToken = `${this._cache.pubkey}:${challenge}|${signature}`;
851
-
852
- if (newToken) {
853
- if (this._debug) console.debug(`[account] Token generated in ${Date.now() - now}ms`);
854
- } else {
855
- console.warn(`[account] Token generation failed !`);
856
- }
857
-
858
- return newToken;
859
- }
860
-
861
- /**
862
- * Check if email is available for new account registration.
863
- * Throw an error if not available
864
- *
865
- * @param email
866
- */
867
- async checkEmailAvailable(email: string): Promise<void> {
868
- const isEmailExists = await this.isEmailExists(email);
869
- if (isEmailExists) {
870
- throw { code: ErrorCodes.EMAIL_ALREADY_REGISTERED, message: 'ERROR.EMAIL_ALREADY_REGISTERED' };
871
- }
872
- }
873
-
874
- /**
875
- * Check if email is exists in server.
876
- *
877
- * @param email
878
- */
879
- async isEmailExists(email: string): Promise<boolean> {
880
- if (this._debug) console.debug('[account] Checking if {' + email + '} exists...');
881
-
882
- const data = await this.graphql.query<{ isEmailExists: boolean }, IsEmailExistsVariables>({
883
- query: IsEmailExistsQuery,
884
- variables: {
885
- email,
886
- hash: undefined,
887
- },
888
- });
889
-
890
- if (this._debug) console.debug('[account] Email exist: ' + (data && data.isEmailExists));
891
-
892
- return data && data.isEmailExists;
893
- }
894
-
895
- async sendConfirmationEmail(email: string, locale?: string): Promise<boolean> {
896
- locale = locale || this.settings.locale;
897
- console.debug('[account] Sending confirmation email to {' + email + '} with locale {' + locale + '}...');
898
-
899
- const { data } = await this.graphql.query<{ data: boolean }>({
900
- query: SendConfirmEmailQuery,
901
- variables: {
902
- email,
903
- locale,
904
- },
905
- error: {
906
- code: ErrorCodes.SENT_CONFIRMATION_EMAIL_FAILED,
907
- message: 'ERROR.SENT_ACCOUNT_CONFIRMATION_EMAIL_FAILED',
908
- },
909
- });
910
-
911
- return data;
912
- }
913
-
914
- async confirmEmail(email: string, code: string): Promise<boolean> {
915
- console.debug('[account] Sending confirm request for email {' + email + '} with code {' + code + '}...');
916
-
917
- const { data } = await this.graphql.query<{ data: boolean }>({
918
- query: ConfirmEmailQuery,
919
- variables: {
920
- email,
921
- code,
922
- },
923
- error: {
924
- code: ErrorCodes.CONFIRM_EMAIL_FAILED,
925
- message: 'ERROR.CONFIRM_ACCOUNT_EMAIL_FAILED',
926
- },
927
- });
928
- return data;
929
- }
930
-
931
- async sendResetPasswordEmail(username: string, locale?: string): Promise<boolean> {
932
- locale = locale || this.settings.locale;
933
-
934
- console.debug(`[account] Sending change password email to {${username}} with locale {${locale}}...`);
935
-
936
- const { data: isOk } = await this.graphql.query<{ data: boolean }>({
937
- query: SendResetPasswordEmailQuery,
938
- variables: {
939
- username,
940
- locale,
941
- },
942
- error: {
943
- code: ErrorCodes.AUTH_SEND_RESET_PASSWORD_EMAIL_ERROR,
944
- message: 'ACCOUNT.ERROR.SEND_RESET_PASSWORD_EMAIL_ERROR',
945
- },
946
- fetchPolicy: 'no-cache',
947
- });
948
- return isOk;
949
- }
950
-
951
- async updatePubkey(data: AuthData): Promise<boolean> {
952
- if (!data.username || !data.password) throw new Error('Missing required username or password');
953
- if (!this.isLogin()) throw new Error('Should be login');
954
-
955
- const keypair = await CryptoService.scryptKeypair(data.username, data.password);
956
- const pubkey = Base58.encode(keypair.publicKey);
957
-
958
- console.debug(`[account] Updating account pubkey to ${pubkey} ...`);
959
-
960
- const { data: res } = await this.graphql.query<{ data: boolean }>({
961
- query: UpdatePubKeyQuery,
962
- variables: { pubkey },
963
- error: {
964
- code: ErrorCodes.AUTH_UPDATE_PUBKEY_ERROR,
965
- message: 'ACCOUNT.ERROR.UPDATE_PUBKEY_ERROR',
966
- },
967
- fetchPolicy: 'no-cache',
968
- });
969
-
970
- console.debug(`[account] Updating account pubkey response`, res);
971
-
972
- if (res) {
973
- await this.logout();
974
- await this.login(data);
975
- }
976
-
977
- return res;
978
- }
979
-
980
- async resetPubkey(data: AuthData, token: string): Promise<boolean> {
981
- if (this.isLogin()) {
982
- await this.logout();
983
- }
984
-
985
- // Parse challenge
986
- const challenge = token.split('|', 2)[0].split(':', 2)[1];
987
- const keypair = await CryptoService.scryptKeypair(data.username, data.password);
988
- const pubkey = Base58.encode(keypair.publicKey);
989
- const signature = await CryptoService.sign(challenge, keypair);
990
- const newToken = `${pubkey}:${challenge}|${signature}`;
991
-
992
- console.debug(`[account] Resetting account pubkey, using token: `, newToken);
993
-
994
- const { data: res } = await this.graphql.query<{ data: boolean }>({
995
- query: ResetAccountPubkeyQuery,
996
- variables: { token: newToken, username: data.username },
997
- error: {
998
- code: ErrorCodes.AUTH_RESET_PUBKEY_ERROR,
999
- message: 'ACCOUNT.ERROR.RESET_PUBKEY_ERROR',
1000
- },
1001
- fetchPolicy: 'no-cache',
1002
- });
1003
-
1004
- // Login
1005
- if (res) {
1006
- await this.login(data);
1007
- }
1008
-
1009
- return res;
1010
- }
1011
-
1012
- listenChanges(opts?: AccountWatchOptions): Subscription {
1013
- if (this._enableListenChanges) return new Subscription(); // Already started: skip
1014
-
1015
- return this.startListenRemoteChanges(opts);
1016
- }
1017
-
1018
- get additionalFields(): FormFieldDefinition[] {
1019
- return this._$additionalFields.getValue();
1020
- }
1021
-
1022
- get $additionalFields(): Observable<FormFieldDefinition[]> {
1023
- return this._$additionalFields.asObservable();
1024
- }
1025
-
1026
- getAdditionalField(key: string): FormFieldDefinition | undefined {
1027
- return this._$additionalFields.getValue().find((f) => f.key === key);
1028
- }
1029
-
1030
- registerAdditionalField(field: FormFieldDefinition) {
1031
- const values = this._$additionalFields.getValue();
1032
- if (values.some((f) => f.key === field.key)) {
1033
- throw new Error(`Additional account field {key: ${field.key}} already define.`);
1034
- }
1035
- if (this._debug) console.debug(`[account] Found additional account's field {key: ${field.key}}`);
1036
- this._$additionalFields.next(values.concat(field));
1037
- }
1038
-
1039
- get optionDefs(): FormFieldDefinition[] {
1040
- return this._optionDefs;
1041
- }
1042
-
1043
- registerOption(def: FormFieldDefinition) {
1044
- if (this._optionDefs.findIndex((f) => f.key === def.key) !== -1) {
1045
- throw new Error(`Additional option {${def.key}} already define.`);
1046
- }
1047
- if (this._debug) console.debug(`[account] Adding additional option {${def.key}}`, def);
1048
- this._optionDefs.push(def);
1049
- }
1050
-
1051
- registerOptions(defs: FormFieldDefinition[]) {
1052
- (defs || []).forEach((def) => this.registerOption(def));
1053
- }
1054
-
1055
- /* -- protected method -- */
1056
-
1057
- protected resetData() {
1058
- this.stopListenRemoteChanges();
1059
- this._cache.loaded = false;
1060
- this._cache.keypair = null;
1061
- this._cache.authToken = null;
1062
- this._cache.authBasic = null;
1063
- this._cache.pubkey = null;
1064
- this._cache.mainProfile = null;
1065
- this._cache.person = null;
1066
- this._cache.department = null;
1067
- this._data = new Account();
1068
- }
1069
-
1070
- protected async loadData(opts?: { offline?: boolean; fetchPolicy?: FetchPolicy }): Promise<Account> {
1071
- if (!this._cache.pubkey) throw new Error('User not logged');
1072
-
1073
- this._cache.loaded = false;
1074
-
1075
- console.debug('[account-service] Loading account data...');
1076
- try {
1077
- const account = (await this.load(opts)) || new Account();
1078
-
1079
- // Set defaults
1080
- account.avatar = account.avatar || this.environment.baseUrl + DEFAULT_AVATAR_IMAGE;
1081
- account.settings = account.settings || new UserSettings();
1082
- account.settings.locale = account.settings.locale || this.settings.locale;
1083
- account.settings.latLongFormat = account.settings.latLongFormat || this.settings.latLongFormat || 'DDMM';
1084
- account.settings.content = account.settings.content || {};
1085
-
1086
- // Read main profile
1087
- this._cache.mainProfile = PersonUtils.getMainProfile(account.profiles);
1088
-
1089
- // Update, instead of replace it
1090
- if (this._data) {
1091
- this._data.fromObject(account);
1092
- } else {
1093
- this._data = account;
1094
- }
1095
- this._cache.loaded = true;
1096
-
1097
- // Apply settings, found in remote account
1098
- if (account.settings && this.settings.settings.accountInheritance) {
1099
- console.debug('[account-service] Copying account settings into local settings...');
1100
- const localSettings = this.settings.settings;
1101
- const accountSettings = account.settings.asLocalSettings();
1102
- const definitions = removeDuplicatesFromArray([...this.optionDefs, ...this.settings.optionDefs], 'key');
1103
- const mergedProperties = AppPropertiesUtils.sanitize(
1104
- {
1105
- ...localSettings.properties,
1106
- ...accountSettings.properties,
1107
- },
1108
- { definitions }
1109
- );
1110
-
1111
- // Merge local/account settings
1112
- const settings = {
1113
- ...localSettings,
1114
- ...accountSettings,
1115
- properties: mergedProperties,
1116
- };
1117
-
1118
- await this.settings.apply(settings);
1119
- }
1120
-
1121
- return this._data;
1122
- } catch (error) {
1123
- this.resetData();
1124
- if (error.code && error.message) throw error;
1125
-
1126
- console.error(error);
1127
- throw {
1128
- code: ErrorCodes.LOAD_ACCOUNT_ERROR,
1129
- message: 'ERROR.LOAD_ACCOUNT_ERROR',
1130
- };
1131
- }
1132
- }
1133
-
1134
- protected async listenSettings(): Promise<void> {
1135
- // When settings changed: save it remotely
1136
- this.registerSubscription(
1137
- this.settings.onChange
1138
- .pipe(
1139
- debounceTime(1000),
1140
- filter(() => this.isLogin() && this.network.online)
1141
- )
1142
- .subscribe((settings) => this.saveLocalSettingsRemotely(settings))
1143
- );
1144
- }
1145
-
1146
- protected async restoreLocally(): Promise<Account | undefined> {
1147
- // Restore from storage
1148
- const values = await Promise.all([
1149
- this.storage.get(PUBKEY_STORAGE_KEY),
1150
- this.storage.get(TOKEN_STORAGE_KEY),
1151
- this.storage.get(SECKEY_STORAGE_KEY),
1152
- ]);
1153
- let pubkey = values[0];
1154
- let token = values[1];
1155
- const seckey = values[2];
1156
-
1157
- // DEV only - auth by token
1158
- if (!this.environment.production && this.environment.defaultAuthValues?.token) {
1159
- token = token || this.environment.defaultAuthValues.token;
1160
- pubkey = pubkey || token?.split(':', 2)[0];
1161
- }
1162
-
1163
- // Quit if no pubkey (not logged)
1164
- if (!pubkey) return;
1165
-
1166
- // Quit if could not auth on pod
1167
- const canRemoteAuth = token || seckey || false;
1168
- if (!canRemoteAuth) return;
1169
-
1170
- if (this._debug) console.debug(`[account] Account restoration...`);
1171
-
1172
- this._cache.authToken = token;
1173
- this._cache.pubkey = pubkey;
1174
- this._cache.keypair =
1175
- (seckey && {
1176
- publicKey: Base58.decode(pubkey),
1177
- secretKey: Base58.decode(seckey),
1178
- }) ||
1179
- null;
1180
-
1181
- // Online mode: try to connect to pod
1182
- if (this.network.online) {
1183
- try {
1184
- await this.authenticate();
1185
- if (!this._cache.authToken && !this._cache.authBasic) throw new Error('Authentication failed');
1186
- } catch (error) {
1187
- // Offline feature are enable: continue in offline mode
1188
- if (this.settings.hasOfflineFeature()) {
1189
- console.warn('[account] Unable to authenticate on pod: forcing offline mode');
1190
- this.network.setForceOffline(true, { showToast: false });
1191
- // Continue
1192
- }
1193
- // No offline features enable (=offline mode not allowed)
1194
- else {
1195
- console.error(error);
1196
- this.logout();
1197
- return;
1198
- }
1199
- }
1200
- }
1201
-
1202
- // Get the account, from pubkey
1203
- let jsonAccount = await this.storage.get(`${ACCOUNT_STORAGE_KEY}#${pubkey}`);
1204
- if (!jsonAccount) {
1205
- // Try using the old storage key
1206
- const accountStr = await this.storage.get(ACCOUNT_STORAGE_KEY);
1207
- jsonAccount = accountStr && ((typeof accountStr === 'string' && JSON.parse(jsonAccount)) || accountStr);
1208
- }
1209
-
1210
- // Invalid account: do not use it
1211
- if (!jsonAccount || jsonAccount.pubkey !== pubkey) {
1212
- // DEV only: create a fake account with given username
1213
- if (!this.environment.production && this.environment.defaultAuthValues.username) {
1214
- const username = this.environment.defaultAuthValues.username;
1215
- jsonAccount = { pubkey, username, firstName: username, lastName: username };
1216
- } else {
1217
- return;
1218
- }
1219
- }
1220
-
1221
- // Transform to entity
1222
- const account = Account.fromObject(jsonAccount);
1223
-
1224
- // Update data
1225
- this._data = account;
1226
- this._cache.mainProfile = PersonUtils.getMainProfile(account.profiles);
1227
- this._cache.loaded = true;
1228
-
1229
- // Emit event
1230
- this.onLogin.next(this._data);
1231
- this.onChange.next(this._data);
1232
-
1233
- if (this._enableListenChanges) this.startListenRemoteChanges();
1234
-
1235
- if (this._debug) console.debug(`[account] Account restoration [OK] {pubkey: ${pubkey.substr(0, 8)}}, {profile: ${this._cache.mainProfile}}`);
1236
-
1237
- return account;
1238
- }
1239
-
1240
- /**
1241
- * Save account into the local storage
1242
- */
1243
- protected async saveLocally(): Promise<void> {
1244
- if (!this._cache.pubkey) throw new Error('User not logged');
1245
-
1246
- if (this._debug) console.debug(`[account] Saving account {${this._cache.pubkey.substring(0, 6)}} in local storage...`);
1247
-
1248
- // Convert account to json
1249
- const json = this._data.asObject({ keepTypename: true });
1250
- const seckey = (this._cache.keypair && this._cache.keypair.secretKey && Base58.encode(this._cache.keypair.secretKey)) || null;
1251
-
1252
- // Convert avatar URL to dataUrl (e.g. 'data:image/png:<base64 content>')
1253
- const hasAvatarUrl =
1254
- json.avatar && !json.avatar.endsWith(DEFAULT_AVATAR_IMAGE) && (json.avatar.startsWith('http://') || json.avatar.startsWith('https://'));
1255
- if (hasAvatarUrl && this.network.online) {
1256
- await this.file
1257
- .getImage(json.avatar, {
1258
- thumbnail: true,
1259
- outputType: 'dataUrl',
1260
- })
1261
- .then((dataUrl) => {
1262
- if (dataUrl && this._debug) console.debug('[account] Image fetched: ', dataUrl.substring(0, 50));
1263
-
1264
- // TODO: make sure to display Base64 image in the menu top header
1265
- //jsonAccount.avatar = dataUrl;
1266
- })
1267
- .catch((err) => {
1268
- console.error(`[account] Error while fetching image: ${json.avatar}: ${err}`);
1269
- });
1270
- }
1271
-
1272
- try {
1273
- await Promise.all([
1274
- this.storage.set(PUBKEY_STORAGE_KEY, this._cache.pubkey),
1275
- this.storage.set(TOKEN_STORAGE_KEY, this._cache.authToken),
1276
- this.storage.set(`${ACCOUNT_STORAGE_KEY}#${this._cache.pubkey}`, json),
1277
- // Secret key (optional)
1278
- (seckey && this.storage.set(SECKEY_STORAGE_KEY, seckey)) || this.storage.remove(SECKEY_STORAGE_KEY),
1279
- // Remove old storage key
1280
- this.storage.remove(ACCOUNT_STORAGE_KEY),
1281
- ]);
1282
-
1283
- if (this._debug) console.debug('[account] Account saved in local storage');
1284
- } catch (err) {
1285
- console.error('[account] Error while saving account locally: ' + ((err && err.message) || err), err);
1286
- }
1287
- }
1288
-
1289
- async saveLocalSettingsRemotely(source: LocalSettings) {
1290
- if (!source || !this.isLogin() || source.accountInheritance === false) return; // Skip
1291
- const account = this.account;
1292
-
1293
- // Merge local settings into account's settings
1294
- const settings = UserSettings.fromObject(account.settings) || new UserSettings();
1295
- const changed = settings.merge(source, this._remoteLocalSettingsKeys);
1296
-
1297
- if (!changed) return; // Skip if unchanged
1298
-
1299
- // Save remotely
1300
- this.account.settings = settings;
1301
- await this.saveSettingsRemotely(settings);
1302
- }
1303
-
1304
- /**
1305
- * Create or update an user account
1306
- *
1307
- * @param account
1308
- * @param keyPair
1309
- */
1310
- protected async saveRemotely(account: Account, keyPair?: Keypair): Promise<Account> {
1311
- account.pubkey = account.pubkey || (keyPair && Base58.encode(keyPair.publicKey));
1312
- if (!account.pubkey) throw new Error('Missing account pubkey');
1313
-
1314
- const now = this._debug && Date.now();
1315
- if (this._debug) console.debug(`[account] Saving account remotely...`);
1316
-
1317
- const isNew = isNil(account.id);
1318
-
1319
- // If this is an update: get existing account's updateDate, to avoid 'version error' when saving
1320
- if (!isNew) {
1321
- const existingAccount = await this.load({ fetchPolicy: 'network-only' });
1322
- if (!existingAccount || !existingAccount.updateDate) {
1323
- throw { code: ErrorCodes.ACCOUNT_NOT_EXISTS, message: 'ERROR.ACCOUNT_NOT_EXISTS' };
1324
- }
1325
- this.copyIdAndUpdateDate(existingAccount, account);
1326
- }
1327
-
1328
- // Merging settings - FIXME - Ludo - A revoir avec la MR sur le user settings
1329
- //account.settings.content['pages'] = this.settings.settings.pages;
1330
- //account.settings.content['pageHistory'] = this.settings.settings.pageHistory;
1331
-
1332
- // Convert to json
1333
- const json = account.asObject(MINIFY_ENTITY_FOR_POD);
1334
-
1335
- // User not allow to change his profiles
1336
- delete json.profiles;
1337
-
1338
- const mutation = isNew ? Mutations.create : this._apiTokenEnabled ? Mutations.saveWithTokens : Mutations.save;
1339
-
1340
- // Execute mutation
1341
- const { data } = await this.graphql.mutate<{ data: Account }>({
1342
- mutation,
1343
- variables: { data: json },
1344
- error: {
1345
- code: ErrorCodes.SAVE_ACCOUNT_ERROR,
1346
- message: 'ERROR.SAVE_ACCOUNT_ERROR',
1347
- },
1348
- });
1349
-
1350
- // Copy update properties
1351
- this.copyIdAndUpdateDate(data, account);
1352
-
1353
- if (this._debug) console.debug(`[account] Account remotely saved in ${Date.now() - now}ms`);
1354
-
1355
- return account;
1356
- }
1357
-
1358
- /**
1359
- * Create or update user settings
1360
- *
1361
- * @param settings
1362
- */
1363
- protected async saveSettingsRemotely(settings: UserSettings) {
1364
- const now = this._debug && Date.now();
1365
- if (this._debug) console.debug(`[account] Saving settings remotely...`);
1366
-
1367
- const json = settings.asObject(MINIFY_ENTITY_FOR_POD);
1368
-
1369
- // Execute mutation
1370
- const { data } = await this.graphql.mutate<{ data: UserSettings }>({
1371
- mutation: Mutations.saveSettings,
1372
- variables: { data: json },
1373
- error: {
1374
- code: ErrorCodes.SAVE_SETTINGS_ERROR,
1375
- message: 'ERROR.SAVE_SETTINGS_ERROR',
1376
- },
1377
- });
1378
-
1379
- // Copy update properties
1380
- this.copyIdAndUpdateDateSettings(data, settings);
1381
-
1382
- if (this._debug) console.debug(`[account] Settings remotely saved in ${Date.now() - now}ms`);
1383
-
1384
- // Save into account
1385
- if (this.account) this.account.settings = settings;
1386
- }
1387
-
1388
- protected async authenticateAndGetToken(token?: string, counter?: number): Promise<string> {
1389
- if (!this._cache.pubkey) throw new Error('User not logged');
1390
-
1391
- if (!counter) console.info('[account] Authentication on pod...');
1392
-
1393
- if (counter > 4) {
1394
- if (this._debug) console.debug(`[account] Failed to authentication on pod (after ${counter} attempts)`);
1395
- throw { code: ErrorCodes.AUTH_SERVER_ERROR, message: 'ERROR.AUTH_SERVER_ERROR' };
1396
- }
1397
-
1398
- // Check if valid
1399
- if (token) {
1400
- const data = await this.graphql.query<{ authenticate: boolean }, { token: string }>({
1401
- query: AuthQuery,
1402
- variables: {
1403
- token,
1404
- },
1405
- error: {
1406
- code: ErrorCodes.UNAUTHORIZED,
1407
- message: 'ERROR.UNAUTHORIZED',
1408
- },
1409
- fetchPolicy: 'no-cache',
1410
- });
1411
-
1412
- // Token is accepted by the server
1413
- if (data && data.authenticate) {
1414
- // Store the token
1415
- this.onAuthTokenChange.next(token);
1416
-
1417
- console.info(`[account] Authentication on pod [OK] {pubkey: '${this._cache.pubkey.substr(0, 8)}'}`);
1418
- return token; // return the token
1419
- }
1420
-
1421
- // Continue (will retry with another challenge)
1422
- }
1423
-
1424
- // Generate a new token
1425
- const authChallenge = await this.getAuthChallenge();
1426
- // TODO: check server pubkey as a valid certificate
1427
-
1428
- // Do the challenge
1429
- const signature = await CryptoService.sign(authChallenge.challenge, this._cache.keypair);
1430
- const newToken = `${this._cache.pubkey}:${authChallenge.challenge}|${signature}`;
1431
-
1432
- // iterate with the new token
1433
- return await this.authenticateAndGetToken(newToken, (counter || 1) + 1 /* increment */);
1434
- }
1435
-
1436
- protected async getAuthChallenge(): Promise<IAuthChallenge> {
1437
- const challengeError = {
1438
- code: ErrorCodes.AUTH_CHALLENGE_ERROR,
1439
- message: 'ERROR.AUTH_CHALLENGE_ERROR',
1440
- };
1441
- const { authChallenge } = await this.graphql.query<{
1442
- authChallenge: IAuthChallenge;
1443
- }>({
1444
- query: AuthChallengeQuery,
1445
- variables: {},
1446
- error: challengeError,
1447
- fetchPolicy: 'network-only',
1448
- });
1449
-
1450
- // Check challenge
1451
- if (!authChallenge) throw challengeError; // Should never occur
1452
-
1453
- // Check server signature
1454
- const signatureOK = await CryptoService.verify(authChallenge.challenge, authChallenge.signature, authChallenge.pubkey);
1455
- if (!signatureOK) {
1456
- console.warn('FIXME: Bad peer signature on auth challenge !', authChallenge);
1457
- }
1458
- return authChallenge;
1459
- }
1460
-
1461
- protected startListenRemoteChanges(opts?: AccountWatchOptions): Subscription {
1462
- if (this._listenChangesSubscription) this.stopListenRemoteChanges(); // Stop previous subscription
1463
- if (this.network.offline) return new Subscription(); // Offline: skip
1464
-
1465
- this._listenChangesSubscription = this.watchChanges(opts).subscribe({
1466
- next: (data) => {
1467
- console.debug(`[account] Remote update detected at ${data.updateDate}`);
1468
- this.reload();
1469
- },
1470
- error: (err) => {
1471
- if (err && +err.code === ServerErrorCodes.NOT_FOUND) {
1472
- console.info('[account] [WS] Account not exists anymore: force user to logout...', err);
1473
- this.logout();
1474
- } else if (err && +err.code === ServerErrorCodes.UNAUTHORIZED) {
1475
- console.info('[account] [WS] Account not authorized: force user to logout...', err);
1476
- this.logout();
1477
- } else {
1478
- console.warn('[account] [WS] Received error:', err);
1479
- }
1480
- },
1481
- });
1482
- this._listenChangesSubscription.add(() => {
1483
- console.debug(`[account] Stop watching remote changes`);
1484
- this._listenChangesSubscription = null;
1485
- });
1486
- return this._listenChangesSubscription;
1487
- }
1488
-
1489
- protected stopListenRemoteChanges() {
1490
- this._listenChangesSubscription?.unsubscribe();
1491
- }
1492
-
1493
- protected watchChanges(opts?: AccountWatchOptions): Observable<Account> {
1494
- if (!this.started) {
1495
- // Wait service ready, then loop
1496
- return from(this.ready()).pipe(switchMap(() => this.watchChanges(opts)));
1497
- }
1498
-
1499
- if (!this._cache.pubkey) throw new Error('Not logged in');
1500
- if (this.network.offline) throw new Error('Cannot watch account changes: network is offline.');
1501
-
1502
- const variables = {
1503
- interval: toNumber(opts && opts.intervalInSeconds, this._listenIntervalInSeconds),
1504
- };
1505
-
1506
- console.debug(`[account] Watching remote changes, every ${variables.interval}s`);
1507
-
1508
- return this.graphql
1509
- .subscribe<{ data: any }>({
1510
- query: AccountSubscriptions.listenChanges,
1511
- variables,
1512
- error: {
1513
- code: ErrorCodes.SUBSCRIBE_ACCOUNT_ERROR,
1514
- message: 'ACCOUNT.ERROR.SUBSCRIBE_ERROR',
1515
- },
1516
- })
1517
- .pipe(
1518
- map(({ data }) => data),
1519
- // Keep only if newer
1520
- filter((data) => {
1521
- const currentUpdateDate: Moment = fromDateISOString(this._data?.updateDate);
1522
- const remoteUpdateDate: Moment = fromDateISOString(data?.updateDate);
1523
- return remoteUpdateDate && (!currentUpdateDate || !remoteUpdateDate.isSame(currentUpdateDate, 'millisecond'));
1524
- })
1525
- );
1526
- }
1527
-
1528
- protected copyIdAndUpdateDate(source: Account | undefined, target: Account) {
1529
- if (!source) return;
1530
-
1531
- target.id = source.id || target.id;
1532
- target.updateDate = source.updateDate || target.updateDate;
1533
-
1534
- // Update settings
1535
- this.copyIdAndUpdateDateSettings(source.settings, target.settings);
1536
-
1537
- // Update tokens
1538
- if (this._apiTokenEnabled) {
1539
- this.copyIdAndUpdateDateToken(source.tokens, target.tokens);
1540
- }
1541
- }
1542
-
1543
- protected copyIdAndUpdateDateSettings(source: UserSettings | undefined, target: UserSettings) {
1544
- if (!source) return;
1545
-
1546
- target.id = source.id || target.id;
1547
- target.updateDate = source.updateDate || target.updateDate;
1548
- }
1549
-
1550
- protected copyIdAndUpdateDateToken(sources: UserToken[] | undefined, targets: UserToken[]) {
1551
- if (isEmptyArray(sources)) return;
1552
-
1553
- sources.forEach((source) => {
1554
- const target = targets.find((value) => UserToken.equals(value, source));
1555
- if (target) {
1556
- target.id = source.id || target.id;
1557
- target.creationDate = source.creationDate || target.creationDate;
1558
- target.updateDate = source.updateDate || target.updateDate;
1559
- target.token = undefined;
1560
- }
1561
- });
1562
- }
1563
-
1564
- protected showToast<T = any>(opts: ShowToastOptions): Promise<OverlayEventDetail<T>> {
1565
- return Toasts.show(this.toastController, this.translate, opts);
1566
- }
1567
- }