ngx-firebase 1.1.12 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/README.md +51 -11
  2. package/fesm2022/ngx-firebase.mjs +158 -0
  3. package/fesm2022/ngx-firebase.mjs.map +1 -0
  4. package/package.json +40 -30
  5. package/types/ngx-firebase.d.ts +55 -0
  6. package/bundles/ngx-firebase-capacitor.umd.js +0 -763
  7. package/bundles/ngx-firebase-capacitor.umd.js.map +0 -1
  8. package/bundles/ngx-firebase-capacitor.umd.min.js +0 -16
  9. package/bundles/ngx-firebase-capacitor.umd.min.js.map +0 -1
  10. package/bundles/ngx-firebase-iap.umd.js +0 -718
  11. package/bundles/ngx-firebase-iap.umd.js.map +0 -1
  12. package/bundles/ngx-firebase-iap.umd.min.js +0 -2
  13. package/bundles/ngx-firebase-iap.umd.min.js.map +0 -1
  14. package/bundles/ngx-firebase-ionic-auth-ui.umd.js +0 -2116
  15. package/bundles/ngx-firebase-ionic-auth-ui.umd.js.map +0 -1
  16. package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js +0 -16
  17. package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js.map +0 -1
  18. package/bundles/ngx-firebase-ionic.umd.js +0 -979
  19. package/bundles/ngx-firebase-ionic.umd.js.map +0 -1
  20. package/bundles/ngx-firebase-ionic.umd.min.js +0 -16
  21. package/bundles/ngx-firebase-ionic.umd.min.js.map +0 -1
  22. package/bundles/ngx-firebase-testing.umd.js +0 -801
  23. package/bundles/ngx-firebase-testing.umd.js.map +0 -1
  24. package/bundles/ngx-firebase-testing.umd.min.js +0 -2
  25. package/bundles/ngx-firebase-testing.umd.min.js.map +0 -1
  26. package/bundles/ngx-firebase.umd.js +0 -2271
  27. package/bundles/ngx-firebase.umd.js.map +0 -1
  28. package/bundles/ngx-firebase.umd.min.js +0 -2
  29. package/bundles/ngx-firebase.umd.min.js.map +0 -1
  30. package/capacitor/capacitor.module.d.ts +0 -9
  31. package/capacitor/interfaces/config.d.ts +0 -12
  32. package/capacitor/interfaces/index.d.ts +0 -1
  33. package/capacitor/ngx-firebase-capacitor.d.ts +0 -5
  34. package/capacitor/ngx-firebase-capacitor.metadata.json +0 -1
  35. package/capacitor/package.json +0 -25
  36. package/capacitor/public-api.d.ts +0 -3
  37. package/capacitor/services/analytics-firebase-capacitor.service.d.ts +0 -9
  38. package/capacitor/services/crashlytics-firebase-capacitor.service.d.ts +0 -8
  39. package/capacitor/services/credential-factory-capacitor.service.d.ts +0 -18
  40. package/capacitor/services/index.d.ts +0 -3
  41. package/esm2015/capacitor/capacitor.module.js +0 -78
  42. package/esm2015/capacitor/interfaces/config.js +0 -3
  43. package/esm2015/capacitor/interfaces/index.js +0 -2
  44. package/esm2015/capacitor/ngx-firebase-capacitor.js +0 -6
  45. package/esm2015/capacitor/public-api.js +0 -4
  46. package/esm2015/capacitor/services/analytics-firebase-capacitor.service.js +0 -43
  47. package/esm2015/capacitor/services/crashlytics-firebase-capacitor.service.js +0 -40
  48. package/esm2015/capacitor/services/credential-factory-capacitor.service.js +0 -182
  49. package/esm2015/capacitor/services/index.js +0 -4
  50. package/esm2015/iap/iap.module.js +0 -32
  51. package/esm2015/iap/interfaces/index.js +0 -5
  52. package/esm2015/iap/ngx-firebase-iap.js +0 -5
  53. package/esm2015/iap/public-api.js +0 -5
  54. package/esm2015/iap/services/iap.service.js +0 -317
  55. package/esm2015/iap/tokens/index.js +0 -4
  56. package/esm2015/ionic/animations/index.js +0 -30
  57. package/esm2015/ionic/components/avatar/avatar.component.js +0 -98
  58. package/esm2015/ionic/components/avatar/index.js +0 -2
  59. package/esm2015/ionic/components/index.js +0 -3
  60. package/esm2015/ionic/components/popover-menu/index.js +0 -3
  61. package/esm2015/ionic/components/popover-menu/interface.js +0 -2
  62. package/esm2015/ionic/components/popover-menu/popover-menu.component.js +0 -34
  63. package/esm2015/ionic/ionic.module.js +0 -46
  64. package/esm2015/ionic/ngx-firebase-ionic.js +0 -5
  65. package/esm2015/ionic/public-api.js +0 -5
  66. package/esm2015/ionic/services/alerts-ionic.service.js +0 -107
  67. package/esm2015/ionic/services/index.js +0 -6
  68. package/esm2015/ionic/services/legality-dialog-ionic.service.js +0 -85
  69. package/esm2015/ionic/services/loading-ionic.service.js +0 -46
  70. package/esm2015/ionic/services/picker-ionic.service.js +0 -44
  71. package/esm2015/ionic/services/toast-ionic.service.js +0 -49
  72. package/esm2015/ionic-auth-ui/animations/index.js +0 -30
  73. package/esm2015/ionic-auth-ui/components/email-confirmation/email-confirmation.component.js +0 -99
  74. package/esm2015/ionic-auth-ui/components/email-field/email-field.component.js +0 -25
  75. package/esm2015/ionic-auth-ui/components/form-field/form-field.component.js +0 -82
  76. package/esm2015/ionic-auth-ui/components/index.js +0 -12
  77. package/esm2015/ionic-auth-ui/components/name-field/name-field.component.js +0 -30
  78. package/esm2015/ionic-auth-ui/components/or-divider/or-divider.component.js +0 -11
  79. package/esm2015/ionic-auth-ui/components/password-field/password-field.component.js +0 -138
  80. package/esm2015/ionic-auth-ui/components/password-field/passwordValidatorFunctions.js +0 -62
  81. package/esm2015/ionic-auth-ui/components/providers/providers.component.js +0 -70
  82. package/esm2015/ionic-auth-ui/components/reauthenticate/reauthenticate.component.js +0 -99
  83. package/esm2015/ionic-auth-ui/components/register/register.component.js +0 -142
  84. package/esm2015/ionic-auth-ui/components/register-with-email/register-with-email.component.js +0 -60
  85. package/esm2015/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.js +0 -26
  86. package/esm2015/ionic-auth-ui/components/signin/signin.component.js +0 -92
  87. package/esm2015/ionic-auth-ui/components/terms-field/terms-field.component.js +0 -99
  88. package/esm2015/ionic-auth-ui/components/user/user.component.js +0 -195
  89. package/esm2015/ionic-auth-ui/ionic-auth-ui.module.js +0 -92
  90. package/esm2015/ionic-auth-ui/ngx-firebase-ionic-auth-ui.js +0 -23
  91. package/esm2015/ionic-auth-ui/pages/index.js +0 -5
  92. package/esm2015/ionic-auth-ui/pages/register/index.js +0 -2
  93. package/esm2015/ionic-auth-ui/pages/register/register.page.js +0 -56
  94. package/esm2015/ionic-auth-ui/pages/signin/index.js +0 -2
  95. package/esm2015/ionic-auth-ui/pages/signin/signin.page.js +0 -78
  96. package/esm2015/ionic-auth-ui/pages/user/index.js +0 -2
  97. package/esm2015/ionic-auth-ui/pages/user/user.page.js +0 -11
  98. package/esm2015/ionic-auth-ui/pages/verifyemail/index.js +0 -2
  99. package/esm2015/ionic-auth-ui/pages/verifyemail/verifyemail.page.js +0 -85
  100. package/esm2015/ionic-auth-ui/public-api.js +0 -5
  101. package/esm2015/ngx-firebase.js +0 -6
  102. package/esm2015/public-api.js +0 -6
  103. package/esm2015/shared/guards/index.js +0 -3
  104. package/esm2015/shared/guards/logged-in.guard.js +0 -60
  105. package/esm2015/shared/guards/verify-email.guard.js +0 -41
  106. package/esm2015/shared/interfaces/accounts.enum.js +0 -9
  107. package/esm2015/shared/interfaces/authprovider.enum.js +0 -15
  108. package/esm2015/shared/interfaces/config.interface.js +0 -61
  109. package/esm2015/shared/interfaces/index.js +0 -8
  110. package/esm2015/shared/interfaces/main.interface.js +0 -7
  111. package/esm2015/shared/interfaces/providers.interface.js +0 -2
  112. package/esm2015/shared/interfaces/tokens.js +0 -19
  113. package/esm2015/shared/interfaces/ui-providers.interface.js +0 -2
  114. package/esm2015/shared/services/analytics.service.js +0 -24
  115. package/esm2015/shared/services/auth-process.service.js +0 -752
  116. package/esm2015/shared/services/crashlytics.service.js +0 -42
  117. package/esm2015/shared/services/device-info.service.js +0 -14
  118. package/esm2015/shared/services/firebase.service.js +0 -37
  119. package/esm2015/shared/services/firestore-sync.service.js +0 -60
  120. package/esm2015/shared/services/index.js +0 -10
  121. package/esm2015/shared/services/performance.service.js +0 -28
  122. package/esm2015/shared/services/remoteconfig.service.js +0 -49
  123. package/esm2015/shared/services/ui.service.js +0 -45
  124. package/esm2015/shared/shared.module.js +0 -175
  125. package/esm2015/shared/types/DisplayWidth.js +0 -9
  126. package/esm2015/shared/types/Location.js +0 -2
  127. package/esm2015/shared/types/ValueAccessorControlComponent.js +0 -85
  128. package/esm2015/shared/types/ValueAccessorValueComponent.js +0 -40
  129. package/esm2015/shared/types/index.js +0 -5
  130. package/esm2015/testing/fakeavatar.module.js +0 -22
  131. package/esm2015/testing/fakes/FakeAuthProcessService.js +0 -31
  132. package/esm2015/testing/fakes/FakeAvatarComponent.js +0 -13
  133. package/esm2015/testing/fakes/FakeFireService.js +0 -21
  134. package/esm2015/testing/fakes/FakeFirestoreSyncService.js +0 -11
  135. package/esm2015/testing/fakes/FakeIAPurchaseService.js +0 -11
  136. package/esm2015/testing/fakes/FakePickerService.js +0 -9
  137. package/esm2015/testing/fakes/FakeRemoteConfigService.js +0 -44
  138. package/esm2015/testing/fakes/FakeTranslateService.js +0 -21
  139. package/esm2015/testing/fakes/FakeUiService.js +0 -26
  140. package/esm2015/testing/fakes/angular-fire/FakeAngularFireAuth.js +0 -30
  141. package/esm2015/testing/fakes/angular-fire/FakeAngularFireFunctions.js +0 -17
  142. package/esm2015/testing/fakes/angular-fire/FakeAngularFirePerformance.js +0 -17
  143. package/esm2015/testing/fakes/angular-fire/FakeAngularFireStorage.js +0 -8
  144. package/esm2015/testing/fakes/angular-fire/FakeAngularFirestore.js +0 -8
  145. package/esm2015/testing/fakes/angular-fire/FakeUserCredential.js +0 -18
  146. package/esm2015/testing/fakes/index.js +0 -19
  147. package/esm2015/testing/ngx-firebase-testing.js +0 -6
  148. package/esm2015/testing/public-api.js +0 -5
  149. package/esm2015/testing/test.module.js +0 -66
  150. package/esm2015/testing/utils/index.js +0 -17
  151. package/esm2015/testing/utils/patchConsole.js +0 -14
  152. package/fesm2015/ngx-firebase-capacitor.js +0 -328
  153. package/fesm2015/ngx-firebase-capacitor.js.map +0 -1
  154. package/fesm2015/ngx-firebase-iap.js +0 -354
  155. package/fesm2015/ngx-firebase-iap.js.map +0 -1
  156. package/fesm2015/ngx-firebase-ionic-auth-ui.js +0 -1482
  157. package/fesm2015/ngx-firebase-ionic-auth-ui.js.map +0 -1
  158. package/fesm2015/ngx-firebase-ionic.js +0 -495
  159. package/fesm2015/ngx-firebase-ionic.js.map +0 -1
  160. package/fesm2015/ngx-firebase-testing.js +0 -388
  161. package/fesm2015/ngx-firebase-testing.js.map +0 -1
  162. package/fesm2015/ngx-firebase.js +0 -1482
  163. package/fesm2015/ngx-firebase.js.map +0 -1
  164. package/iap/iap.module.d.ts +0 -5
  165. package/iap/interfaces/index.d.ts +0 -11
  166. package/iap/ngx-firebase-iap.d.ts +0 -4
  167. package/iap/ngx-firebase-iap.metadata.json +0 -1
  168. package/iap/package.json +0 -23
  169. package/iap/public-api.d.ts +0 -4
  170. package/iap/services/iap.service.d.ts +0 -47
  171. package/iap/tokens/index.d.ts +0 -3
  172. package/ionic/animations/index.d.ts +0 -1
  173. package/ionic/components/avatar/avatar.component.d.ts +0 -27
  174. package/ionic/components/avatar/index.d.ts +0 -1
  175. package/ionic/components/index.d.ts +0 -2
  176. package/ionic/components/popover-menu/index.d.ts +0 -2
  177. package/ionic/components/popover-menu/interface.d.ts +0 -6
  178. package/ionic/components/popover-menu/popover-menu.component.d.ts +0 -10
  179. package/ionic/ionic.module.d.ts +0 -2
  180. package/ionic/ngx-firebase-ionic.d.ts +0 -4
  181. package/ionic/ngx-firebase-ionic.metadata.json +0 -1
  182. package/ionic/package.json +0 -30
  183. package/ionic/public-api.d.ts +0 -4
  184. package/ionic/services/alerts-ionic.service.d.ts +0 -13
  185. package/ionic/services/index.d.ts +0 -5
  186. package/ionic/services/legality-dialog-ionic.service.d.ts +0 -10
  187. package/ionic/services/loading-ionic.service.d.ts +0 -17
  188. package/ionic/services/picker-ionic.service.d.ts +0 -9
  189. package/ionic/services/toast-ionic.service.d.ts +0 -11
  190. package/ionic-auth-ui/animations/index.d.ts +0 -1
  191. package/ionic-auth-ui/components/email-confirmation/email-confirmation.component.d.ts +0 -31
  192. package/ionic-auth-ui/components/email-field/email-field.component.d.ts +0 -7
  193. package/ionic-auth-ui/components/form-field/form-field.component.d.ts +0 -28
  194. package/ionic-auth-ui/components/index.d.ts +0 -11
  195. package/ionic-auth-ui/components/name-field/name-field.component.d.ts +0 -8
  196. package/ionic-auth-ui/components/or-divider/or-divider.component.d.ts +0 -2
  197. package/ionic-auth-ui/components/password-field/password-field.component.d.ts +0 -34
  198. package/ionic-auth-ui/components/password-field/passwordValidatorFunctions.d.ts +0 -4
  199. package/ionic-auth-ui/components/providers/providers.component.d.ts +0 -26
  200. package/ionic-auth-ui/components/reauthenticate/reauthenticate.component.d.ts +0 -30
  201. package/ionic-auth-ui/components/register/register.component.d.ts +0 -26
  202. package/ionic-auth-ui/components/register-with-email/register-with-email.component.d.ts +0 -24
  203. package/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.d.ts +0 -7
  204. package/ionic-auth-ui/components/signin/signin.component.d.ts +0 -28
  205. package/ionic-auth-ui/components/terms-field/terms-field.component.d.ts +0 -27
  206. package/ionic-auth-ui/components/user/user.component.d.ts +0 -45
  207. package/ionic-auth-ui/ionic-auth-ui.module.d.ts +0 -32
  208. package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.d.ts +0 -22
  209. package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.metadata.json +0 -1
  210. package/ionic-auth-ui/package.json +0 -30
  211. package/ionic-auth-ui/pages/index.d.ts +0 -4
  212. package/ionic-auth-ui/pages/register/index.d.ts +0 -1
  213. package/ionic-auth-ui/pages/register/register.page.d.ts +0 -16
  214. package/ionic-auth-ui/pages/signin/index.d.ts +0 -1
  215. package/ionic-auth-ui/pages/signin/signin.page.d.ts +0 -22
  216. package/ionic-auth-ui/pages/user/index.d.ts +0 -1
  217. package/ionic-auth-ui/pages/user/user.page.d.ts +0 -3
  218. package/ionic-auth-ui/pages/verifyemail/index.d.ts +0 -1
  219. package/ionic-auth-ui/pages/verifyemail/verifyemail.page.d.ts +0 -19
  220. package/ionic-auth-ui/public-api.d.ts +0 -4
  221. package/ngx-firebase.d.ts +0 -5
  222. package/ngx-firebase.metadata.json +0 -1
  223. package/public-api.d.ts +0 -5
  224. package/shared/guards/index.d.ts +0 -2
  225. package/shared/guards/logged-in.guard.d.ts +0 -13
  226. package/shared/guards/verify-email.guard.d.ts +0 -11
  227. package/shared/interfaces/accounts.enum.d.ts +0 -7
  228. package/shared/interfaces/authprovider.enum.d.ts +0 -13
  229. package/shared/interfaces/config.interface.d.ts +0 -63
  230. package/shared/interfaces/index.d.ts +0 -7
  231. package/shared/interfaces/main.interface.d.ts +0 -13
  232. package/shared/interfaces/providers.interface.d.ts +0 -63
  233. package/shared/interfaces/tokens.d.ts +0 -16
  234. package/shared/interfaces/ui-providers.interface.d.ts +0 -65
  235. package/shared/services/analytics.service.d.ts +0 -10
  236. package/shared/services/auth-process.service.d.ts +0 -172
  237. package/shared/services/crashlytics.service.d.ts +0 -11
  238. package/shared/services/device-info.service.d.ts +0 -3
  239. package/shared/services/firebase.service.d.ts +0 -16
  240. package/shared/services/firestore-sync.service.d.ts +0 -16
  241. package/shared/services/index.d.ts +0 -9
  242. package/shared/services/performance.service.d.ts +0 -12
  243. package/shared/services/remoteconfig.service.d.ts +0 -18
  244. package/shared/services/ui.service.d.ts +0 -22
  245. package/shared/shared.module.d.ts +0 -14
  246. package/shared/types/DisplayWidth.d.ts +0 -7
  247. package/shared/types/Location.d.ts +0 -8
  248. package/shared/types/ValueAccessorControlComponent.d.ts +0 -27
  249. package/shared/types/ValueAccessorValueComponent.d.ts +0 -19
  250. package/shared/types/index.d.ts +0 -4
  251. package/testing/fakeavatar.module.d.ts +0 -2
  252. package/testing/fakes/FakeAuthProcessService.d.ts +0 -28
  253. package/testing/fakes/FakeAvatarComponent.d.ts +0 -3
  254. package/testing/fakes/FakeFireService.d.ts +0 -20
  255. package/testing/fakes/FakeFirestoreSyncService.d.ts +0 -9
  256. package/testing/fakes/FakeIAPurchaseService.d.ts +0 -9
  257. package/testing/fakes/FakePickerService.d.ts +0 -6
  258. package/testing/fakes/FakeRemoteConfigService.d.ts +0 -19
  259. package/testing/fakes/FakeTranslateService.d.ts +0 -15
  260. package/testing/fakes/FakeUiService.d.ts +0 -25
  261. package/testing/fakes/angular-fire/FakeAngularFireAuth.d.ts +0 -52
  262. package/testing/fakes/angular-fire/FakeAngularFireFunctions.d.ts +0 -11
  263. package/testing/fakes/angular-fire/FakeAngularFirePerformance.d.ts +0 -10
  264. package/testing/fakes/angular-fire/FakeAngularFireStorage.d.ts +0 -5
  265. package/testing/fakes/angular-fire/FakeAngularFirestore.d.ts +0 -5
  266. package/testing/fakes/angular-fire/FakeUserCredential.d.ts +0 -9
  267. package/testing/fakes/index.d.ts +0 -16
  268. package/testing/ngx-firebase-testing.d.ts +0 -5
  269. package/testing/ngx-firebase-testing.metadata.json +0 -1
  270. package/testing/package.json +0 -29
  271. package/testing/public-api.d.ts +0 -4
  272. package/testing/test.module.d.ts +0 -4
  273. package/testing/utils/index.d.ts +0 -5
  274. package/testing/utils/patchConsole.d.ts +0 -4
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-firebase.js","sources":["../../../projects/ngx-firebase/src/shared/services/device-info.service.ts","../../../projects/ngx-firebase/src/shared/services/remoteconfig.service.ts","../../../projects/ngx-firebase/src/shared/interfaces/authprovider.enum.ts","../../../projects/ngx-firebase/src/shared/interfaces/accounts.enum.ts","../../../projects/ngx-firebase/src/shared/interfaces/config.interface.ts","../../../projects/ngx-firebase/src/shared/interfaces/main.interface.ts","../../../projects/ngx-firebase/src/shared/interfaces/tokens.ts","../../../projects/ngx-firebase/src/shared/services/analytics.service.ts","../../../projects/ngx-firebase/src/shared/services/crashlytics.service.ts","../../../projects/ngx-firebase/src/shared/services/performance.service.ts","../../../projects/ngx-firebase/src/shared/services/firebase.service.ts","../../../projects/ngx-firebase/src/shared/services/firestore-sync.service.ts","../../../projects/ngx-firebase/src/shared/services/ui.service.ts","../../../projects/ngx-firebase/src/shared/services/auth-process.service.ts","../../../projects/ngx-firebase/src/shared/types/DisplayWidth.ts","../../../projects/ngx-firebase/src/shared/types/ValueAccessorValueComponent.ts","../../../projects/ngx-firebase/src/shared/types/ValueAccessorControlComponent.ts","../../../projects/ngx-firebase/src/shared/guards/logged-in.guard.ts","../../../projects/ngx-firebase/src/shared/guards/verify-email.guard.ts","../../../projects/ngx-firebase/src/shared/shared.module.ts","../../../projects/ngx-firebase/src/ngx-firebase.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MalDeviceInfoService {\n\n get dateFormat(): string {\n return 'dd/MM/yyyy';\n }\n\n}\n","import { Injectable, Injector, Optional } from '@angular/core';\nimport { AngularFireRemoteConfig, mapToObject, DEFAULTS as REMOTE_CONFIG_DEFAULTS } from '@angular/fire/remote-config';\nimport { of } from 'rxjs';\nimport { Value, ValueSource } from '@firebase/remote-config-types';\n\nclass StaticValue implements Value {\n constructor(private value: any) { }\n asBoolean() { return this.value as boolean; }\n asString() { return this.value as string; }\n asNumber() { return this.value as number; }\n getSource() { return 'static' as ValueSource; }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteConfigService {\n\n defaults: { [key: string]: any } = this.injector.get(REMOTE_CONFIG_DEFAULTS) || {};\n\n remoteConfig$ = of(this.defaults);\n parameters = of([]);\n async getBoolean(key: string): Promise<boolean> { return (await this.getValue(key)).asBoolean(); }\n async getNumber(key: string): Promise<number> { return (await this.getValue(key)).asNumber(); }\n async getString(key: string): Promise<string> { return (await this.getValue(key)).asString(); }\n getValue(key: string): Promise<Value> { return Promise.resolve(new StaticValue(this.defaults[key])); }\n\n constructor(\n @Optional() remoteConfigProvider: AngularFireRemoteConfig,\n private injector: Injector\n ) {\n if (remoteConfigProvider) {\n this.getBoolean = remoteConfigProvider.getBoolean;\n this.getNumber = remoteConfigProvider.getNumber;\n this.getString = remoteConfigProvider.getString;\n this.getValue = remoteConfigProvider.getValue;\n this.remoteConfig$ = remoteConfigProvider.parameters.pipe(\n mapToObject(this.defaults)\n );\n }\n }\n\n}\n","export enum AuthProvider {\n ALL = 'all',\n ANONYMOUS = 'anonymous',\n EmailAndPassword = 'firebase',\n Google = 'google',\n Apple = 'apple',\n Facebook = 'facebook',\n Twitter = 'twitter',\n Github = 'github',\n Microsoft = 'microsoft',\n Yahoo = 'yahoo',\n PhoneNumber = 'phoneNumber'\n}\n","export enum Accounts {\n NONE = 'account',\n CHECK = 'account-check',\n EDIT = 'account-edit',\n OFF = 'account-off',\n REMOVE = 'account-remove',\n}\n","// import * as firebase from 'firebase';\n\nimport { FirebaseAppConfig } from '@angular/fire';\nimport { ConfigTemplate } from '@angular/fire/remote-config';\nimport { AuthProvider } from './authprovider.enum';\n\nexport interface MalAuthUIConfig {\n authGuardFallbackURL: string;\n authGuardLoggedInURL: string;\n authGuardVerifyEmailURL?: string;\n enableFirestoreSync: boolean;\n reSignInUrl: string;\n\n // Toasts\n toastMessageOnAuthSuccess: boolean | string;\n toastMessageOnAuthError: boolean | string;\n toastDefaultDurationMil: number;\n\n logoUrl?: string;\n\n // Terms and Conditions\n tosUrl?: string;\n privacyPolicyUrl?: string;\n\n // Password length min/max in forms independently of each componenet min/max.\n // `min/max` input parameters in components should be within this range.\n passwordMaxLength: number;\n passwordMinLength: number;\n passwordRequireLowercase: boolean;\n passwordRequireUppercase: boolean;\n passwordRequireSpecial: boolean;\n passwordRequireNumbers: boolean;\n\n // Same as password but for the name\n nameMaxLength: number;\n nameMinLength: number;\n\n // Custom Backgrounds\n verifyEmailBackground?: string;\n\n supportedProviders: AuthProvider.ALL | AuthProvider[];\n\n guestEnabled: boolean;\n\n allowAccountEdit: boolean;\n allowAccountDelete: boolean;\n allowAccountLogout: boolean;\n\n // If set, sign-in/up form is not available until email has been verified.\n // Plus protected routes are still protected even though user is connected.\n guardProtectedRoutesUntilEmailIsVerified: boolean;\n\n // Control whether or not email verification is used\n enableEmailVerification: boolean;\n}\n\nexport enum MalServiceEnabled {\n emulate = 2,\n enabled = 1,\n disabled = 0\n}\n\nexport type UseEmulatorArguments = [string, number];\n\nexport interface MalServicesConifg {\n firebaseAnalytics: boolean;\n firebaseCrashlytics: boolean;\n firebasePerformance: boolean;\n firebaseRemoteConfig: boolean;\n inAppPurchase: boolean;\n firebaseAuth: true | UseEmulatorArguments;\n firebaseFirestore: true | UseEmulatorArguments;\n firebaseFunctions: true | UseEmulatorArguments;\n firebaseRegion?: string;\n}\n\n\nexport interface MalUserProvidedConfig<T extends ConfigTemplate = ConfigTemplate> {\n firebase: FirebaseAppConfig;\n services?: Partial<MalServicesConifg>;\n authUi?: Partial<MalAuthUIConfig>;\n configDefaults?: T;\n}\n\nexport interface MalSharedConfig<T extends ConfigTemplate = ConfigTemplate> {\n firebase: FirebaseAppConfig;\n services: MalServicesConifg;\n authUi: MalAuthUIConfig;\n configDefaults: T;\n}\n\nexport const defaultAuthFirebaseUIConfig: Omit<MalSharedConfig, 'firebase' | 'configDefaults'> = {\n services: {\n firebaseAnalytics: true,\n firebaseCrashlytics: true,\n firebasePerformance: true,\n firebaseRemoteConfig: true,\n inAppPurchase: true,\n firebaseAuth: true,\n firebaseFirestore: true,\n firebaseFunctions: true\n },\n authUi: {\n enableFirestoreSync: true,\n toastMessageOnAuthSuccess: true,\n toastMessageOnAuthError: true,\n toastDefaultDurationMil: 3000,\n authGuardFallbackURL: '/',\n authGuardLoggedInURL: '/',\n authGuardVerifyEmailURL: undefined,\n reSignInUrl: '/auth/signin',\n\n // Password length min/max in forms independently of each componenet min/max.\n // `min/max` input parameters in components should be within this range.\n passwordMaxLength: 60,\n passwordMinLength: 8,\n passwordRequireLowercase: true,\n passwordRequireUppercase: true,\n passwordRequireSpecial: true,\n passwordRequireNumbers: true,\n\n // Same as password but for the name\n nameMaxLength: 50,\n nameMinLength: 2,\n\n supportedProviders: AuthProvider.ALL,\n\n guestEnabled: false,\n\n allowAccountEdit: true,\n allowAccountDelete: true,\n allowAccountLogout: true,\n\n // If set, sign-in/up form is not available until email has been verified.\n // Plus protected routes are still protected even though user is connected.\n guardProtectedRoutesUntilEmailIsVerified: true,\n\n // Default to email verification on\n enableEmailVerification: true\n }\n};\n\n// Merge default config with user provided config.\nexport function malSharedConfigFactory<T extends ConfigTemplate>(userProvidedConfig: MalUserProvidedConfig<T>): MalSharedConfig<T> {\n return {\n firebase: userProvidedConfig.firebase,\n services: Object.assign({}, defaultAuthFirebaseUIConfig.services, userProvidedConfig.services || {}),\n authUi: Object.assign({}, defaultAuthFirebaseUIConfig.authUi, userProvidedConfig.authUi || {}),\n configDefaults: userProvidedConfig.configDefaults || {} as T\n };\n}\n","export interface ICredentials {\n email: string;\n password: string;\n}\n\nexport interface ISignInOptions {\n displayName?: string;\n credentials?: ICredentials;\n skipTosCheck?: boolean;\n}\n\n// tslint:disable-next-line max-len\nexport const PHONE_NUMBER_REGEX = new RegExp(['^[+]{0,1}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\.]{0,1}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]{4,12}$'].join(''));\n\nexport enum FirebaseErrorCodes {\n requiresRecentLogin = 'auth/requires-recent-login'\n}\n","// This token is the official token containing the final configuration; ie. the merge between default and user provided configurations\nimport { InjectionToken } from '@angular/core';\n\nimport { MalSharedConfig, MalUserProvidedConfig } from './config.interface';\nimport { IAnalyticsProvider, IAuthMergeUserService, IAuthProcessService, ICrashlyticsProvider, ICredentialFactoryProvider } from './providers.interface';\nimport { ILoadingUIProvider, IAlertsUIProvider, IPickerUIProvider, IToastUIProvider, ILegalityDialogUIProvider} from './ui-providers.interface'\n\n// Firebase Functional Areas\nexport const MalAnalyticsProviderToken = new InjectionToken<IAnalyticsProvider>('MalAnalyticsProviderToken');\nexport const MalCrashlyticsProviderToken = new InjectionToken<ICrashlyticsProvider>('MalCrashlyticsProviderToken');\nexport const MalAuthServiceProviderToken = new InjectionToken<IAuthProcessService>('MalAuthServiceProviderToken');\n\n// Auth Process Service\nexport const MalMergeUserServiceToken = new InjectionToken<IAuthMergeUserService>('MalMergeUserServiceToken');\nexport const MalCredentialFactoryProviderToken = new InjectionToken<ICredentialFactoryProvider>('MalCredentialFactoryProviderToken');\n\n// Configuration\nexport const MalUserProvidedConfigToken = new InjectionToken<MalUserProvidedConfig>('MalUserProvidedConfigToken');\nexport const MalSharedConfigToken = new InjectionToken<MalSharedConfig>('MalSharedConfigToken');\n\n// UI Providers\nexport const MalLoadingUIProviderToken = new InjectionToken<ILoadingUIProvider>('MalLoadingUIProviderToken');\nexport const MalAlertsUIProviderToken = new InjectionToken<IAlertsUIProvider>('MalAlertsUIProviderToken');\nexport const MalPickerUIProviderToken = new InjectionToken<IPickerUIProvider>('MalPickerMalPickerUIProviderTokenUIProvider');\nexport const MalToastUIProviderToken = new InjectionToken<IToastUIProvider>('MalToastUIProviderToken');\nexport const MalLegaliyDialogUIProiderToken = new InjectionToken<ILegalityDialogUIProvider>(\"MalLegaliyDialogUIProiderToken\");","import { forwardRef, Inject, Injectable, Optional } from '@angular/core';\nimport { IAnalyticsProvider, MalAnalyticsProviderToken } from '../interfaces';\n\n@Injectable()\nexport class AnalyticsService implements IAnalyticsProvider {\n\n // Analytics NoOp\n logEvent = async (name: string, params?: { [key: string]: any }) => { console.log('NotLogged:LogEvent ' + name, params); };\n setScreenName = (screenName: string, screenClass?: string) => Promise.resolve();\n setUserId = (userId: string | null) => { };\n\n constructor(\n @Optional() @Inject(forwardRef(() => MalAnalyticsProviderToken)) private analytics: IAnalyticsProvider\n ) {\n if (this.analytics) {\n this.logEvent = this.analytics.logEvent;\n this.setScreenName = this.analytics.setScreenName;\n this.setUserId = this.analytics.setUserId;\n }\n }\n\n}\n","import { Injectable, Optional, forwardRef, Inject } from '@angular/core';\nimport { AndroidException, ICrashlyticsProvider, iOSException, MalCrashlyticsProviderToken } from '../interfaces';\n\n@Injectable()\nexport class CrashlyticsService implements ICrashlyticsProvider {\n\n // Crashlyitcs\n private _recordException = (_options: iOSException | AndroidException) => Promise.resolve();\n private _addLogMessage = (message: string) => Promise.resolve();\n private _setUserId = (uid: string | null) => { };\n\n constructor(\n @Optional() @Inject(forwardRef(() => MalCrashlyticsProviderToken)) private crashlyticsProvider: ICrashlyticsProvider,\n ) {\n if (this.crashlyticsProvider) {\n this._recordException = this.crashlyticsProvider.recordException;\n this._addLogMessage = this.crashlyticsProvider.addLogMessage;\n }\n }\n\n setUserId(uid: string | null) {\n this._setUserId(uid);\n }\n\n recordException(options: string | iOSException | AndroidException | Error): Promise<void> {\n let e: iOSException | AndroidException = { message: 'An unknown error occured' };\n if ('string' === typeof options) {\n e.message = options;\n } else if (options instanceof Error) {\n e.message = options.message;\n } else if (e.message) {\n e = options;\n }\n return this._recordException(e);\n }\n\n addLogMessage(message: string): Promise<void> {\n console.log('addLogMessage ' + message);\n return this._addLogMessage(message);\n }\n\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { AngularFirePerformance } from '@angular/fire/performance';\nimport { IPerformanceTrace, IPerformanceProvider } from '../interfaces';\n\nexport class PerformanceTraceNoop implements IPerformanceTrace {\n start() { }\n stop() { }\n putAttribute(key: string, value: any) { }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PerformanceService implements IPerformanceProvider {\n\n dataCollectionEnabled = Promise.resolve(false);\n\n createTrace(label: string): Promise<IPerformanceTrace> {\n return Promise.resolve(new PerformanceTraceNoop());\n }\n\n constructor(\n @Optional() performanceProvider: AngularFirePerformance\n ) {\n if (performanceProvider) {\n this.createTrace = performanceProvider.trace;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { IFirebaseProvider } from '../interfaces';\nimport { AnalyticsService } from './analytics.service';\nimport { CrashlyticsService } from './crashlytics.service';\nimport { PerformanceService } from './performance.service';\n\n@Injectable({ providedIn: 'root' })\nexport class FirebaseService implements IFirebaseProvider {\n\n recordException = this.crashlyticsService.recordException.bind(this.crashlyticsService);\n addLogMessage = this.crashlyticsService.addLogMessage.bind(this.crashlyticsService);\n\n setScreenName = this.analyticsService.setScreenName.bind(this.analyticsService);\n logEvent = this.analyticsService.logEvent.bind(this.analyticsService);\n\n createTrace = this.performanceService.createTrace;\n\n constructor(\n private crashlyticsService: CrashlyticsService,\n private analyticsService: AnalyticsService,\n private performanceService: PerformanceService\n ) {\n }\n\n async setUserId(userId: string | null) {\n this.analyticsService.setUserId(userId);\n this.crashlyticsService.setUserId(userId);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';\nimport { UserInfo } from '@firebase/auth-types';\nimport { SetOptions } from '@firebase/firestore-types'\nimport { FirebaseService } from './firebase.service';\n\nconst USER_COLLECTION = '/users';\n\nexport interface UserProfile extends UserInfo {\n acceptedTos: string | null;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FirestoreSyncService {\n\n constructor(\n public afs: AngularFirestore,\n public fire: FirebaseService\n ) {\n }\n\n public async getUserData(uid: string): Promise<UserProfile | null> {\n try {\n const doc = await this.getUserDocRefByUID(uid).get().toPromise();\n return doc.data() || null;\n } catch (error) {\n this.fire.recordException(error);\n return null;\n }\n }\n\n private getUserDocRefByUID(uid: string): AngularFirestoreDocument<UserProfile> {\n return this.afs.doc(`${USER_COLLECTION}/${uid}`);\n }\n\n public async setUserData(uid: string, user: Partial<UserProfile>, options?: SetOptions): Promise<void> {\n try {\n return this.afs.doc(`${USER_COLLECTION}/${uid}`).set(user, options);\n } catch (error) {\n this.fire.recordException(error);\n }\n }\n\n public async updateUserData(uid: string, user: Partial<UserProfile>): Promise<void> {\n try {\n return this.getUserDocRefByUID(uid).update({ ...user, uid });\n } catch (error) {\n this.fire.recordException(error);\n }\n }\n\n}\n","import { forwardRef, Inject, Injectable } from '@angular/core';\nimport {\n ILegalityDialogUIProvider, MalLegaliyDialogUIProiderToken,\n IAlertsUIProvider, ILoadingUIProvider, IToastUIProvider, MalAlertsUIProviderToken,\n MalLoadingUIProviderToken, MalToastUIProviderToken, IUIProvider\n} from '../interfaces';\nimport { FirebaseService } from './firebase.service';\n\n@Injectable({ providedIn: 'root' })\nexport class UiService implements IUIProvider {\n\n toast = this.toastService.toast.bind(this.toastService);\n createToast = this.toastService.createToast.bind(this.toastService);\n errorToast = this.toastService.errorToast.bind(this.toastService);\n\n okAlert = this.alertService.okAlert.bind(this.alertService);\n infoAlert = this.alertService.infoAlert.bind(this.alertService);\n errorAlert = this.alertService.errorAlert.bind(this.alertService);\n textboxInputAlert = this.alertService.textboxInputAlert.bind(this.alertService);\n yesNoAlert = this.alertService.yesNoAlert.bind(this.alertService);\n\n createLoading = this.loadingService.createLoading.bind(this.loadingService);\n watchLoading = this.loadingService.watchLoading.bind(this.loadingService);\n\n confirmTos = this.legalityDialog.confirmTos.bind(this.legalityDialog);\n\n constructor(\n @Inject(forwardRef(() => MalToastUIProviderToken)) private toastService: IToastUIProvider,\n @Inject(forwardRef(() => MalAlertsUIProviderToken)) private alertService: IAlertsUIProvider,\n @Inject(forwardRef(() => MalLoadingUIProviderToken)) private loadingService: ILoadingUIProvider,\n @Inject(forwardRef(() => MalLegaliyDialogUIProiderToken)) private legalityDialog: ILegalityDialogUIProvider,\n private fire: FirebaseService\n ) {\n }\n\n logError(error: Error, messagePrefix?: string | null) {\n console.log(error);\n this.fire.recordException(error);\n if (messagePrefix !== null) {\n this.toastService.errorToast(error, messagePrefix);\n }\n }\n\n}\n","// Angular\nimport { EventEmitter, forwardRef, Inject, Injectable, Optional } from '@angular/core';\n\n// RXJS\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, take } from 'rxjs/operators';\n\n// Firebase & AngularFire\nimport { firebase } from '@firebase/app';\nimport 'firebase/auth';\nimport { User, UserInfo, UserCredential, AuthProvider as FirebaseAuthProvider } from '@firebase/auth-types';\nimport { AngularFireAuth } from '@angular/fire/auth';\n\n// Mal\nimport { FirestoreSyncService } from './firestore-sync.service';\nimport {\n MalCredentialFactoryProviderToken,\n MalMergeUserServiceToken, MalSharedConfigToken,\n MalSharedConfig, AuthProvider, ISignInOptions, Accounts, IAuthMergeUserService,\n ICredentialFactoryProvider, FirebaseErrorCodes\n} from '../interfaces';\nimport { UiService } from './ui.service';\nimport { FirebaseService } from './firebase.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProcessService {\n\n public readonly onErrorEmitter: EventEmitter<any> = new EventEmitter<any>();\n public readonly onSignInEmitter: EventEmitter<User> = new EventEmitter<User>();\n public readonly onRegisterEmitter: EventEmitter<User> = new EventEmitter<User>();\n public readonly onSignOutEmitter: EventEmitter<void> = new EventEmitter<void>();\n public readonly onUserUpdatedEmitter: EventEmitter<UserInfo> = new EventEmitter<UserInfo>();\n public readonly onUserDeletedEmitter: EventEmitter<void> = new EventEmitter<void>();\n public readonly showProfileDialog: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Useful to know about auth state even between reloads.\n *\n **/\n private _user$ = new BehaviorSubject<User | null>(null);\n get user(): User | null {\n return this._user$.value;\n }\n\n public readonly user$ = this.afa.user;\n\n /**\n * Useful to know about auth state even between reloads.\n **/\n private _authState$ = new BehaviorSubject<User | null>(null);\n public readonly authState$ = this.afa.authState;\n\n /**\n * Obersable for current user - that only emits when the uid changes\n * Useful to reset session info when user changes.\n */\n public uid$: Observable<string | null> =\n this.user$.pipe(\n map(user => user?.uid || null),\n distinctUntilChanged()\n );\n\n /**\n * UserInterface helper observables - indicating what user actions are currently permitted and\n * the current status of authentication.\n */\n public readonly isLoggedIn$: Observable<boolean> = this.user$.pipe(map(user => null !== user));\n public readonly isAnonymous$: Observable<boolean> = this.user$.pipe(map(user => null !== user && user.isAnonymous));\n public readonly isNamedUser$: Observable<boolean> = this.user$.pipe(map(user => null !== user && !user.isAnonymous));\n public readonly isNotNamedUser$: Observable<boolean> = this.user$.pipe(map(user => null === user || user.isAnonymous));\n public readonly canEdit$ = this.isLoggedIn$;\n public readonly canRegister$: Observable<boolean> = this.isNotNamedUser$;\n public readonly canSignIn$: Observable<boolean> = this.isLoggedIn$.pipe(map(isLoggedIn => !isLoggedIn));\n public readonly canSignInAsGuest$: Observable<boolean> =\n this.isLoggedIn$.pipe(map(isLoggedIn => !isLoggedIn && this.config.authUi.guestEnabled));\n public readonly canSignOut$: Observable<boolean> = this.isNamedUser$;\n\n /**\n * Observable. Emits whenever currentUser signsOut\n */\n public readonly onSignOut$: Observable<void> = this.authState$.pipe(\n filter(user => user === null),\n map(() => { return; })\n );\n\n /**\n * Observable emits whenever a new user signsIn\n */\n public readonly onSignIn$: Observable<User> = this.authState$.pipe(\n filter(user => null !== user),\n map(user => user as User)\n );\n\n public get reauthenticateProviders$(): Observable<AuthProvider[]> {\n return this.user$.pipe(\n map(user => (user?.providerData || [])\n .map(item => {\n switch (item?.providerId) {\n case 'google.com': return AuthProvider.Google;\n default: console.log('NO MATCH', item); return;\n }\n })\n .filter(item => !!item) as AuthProvider[]\n )\n );\n }\n\n private readonly tokenRefreshed$: Subject<void> = new Subject<void>();\n\n // Legacy field that is set to true after sign up.\n // Value is lost in case of reload. The idea here is to know if we just sent a verification email.\n emailConfirmationSent?: boolean;\n // Legacy fieled that contain the mail to confirm. Same lifecycle than emailConfirmationSent.\n emailToConfirm?: string;\n\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n @Optional() @Inject(forwardRef(() => MalMergeUserServiceToken)) public mergeService: IAuthMergeUserService,\n @Optional() @Inject(forwardRef(() => MalCredentialFactoryProviderToken)) public credFactory: ICredentialFactoryProvider,\n private fireStoreService: FirestoreSyncService,\n private afa: AngularFireAuth, // TODO should be private\n private fire: FirebaseService,\n private ui: UiService\n ) {\n this.afa.user.subscribe(user => this._user$.next(user));\n this.afa.authState.subscribe(authState => this._authState$.next(authState));\n this.authState$.subscribe(user => {\n this.fire.setUserId(user?.uid || null);\n });\n this.onSignOut$.subscribe(() => this.onSignOutEmitter.emit());\n }\n\n /**\n * Returns true if current platform is webplatform supported by @angular/fire\n */\n get isWebPlatform(): boolean {\n return ['https:', 'http:', 'chrome-extension'].includes(location.protocol);\n }\n\n /**\n * Indicates if the specified provider is supported on the current platform\n */\n async isProviderSupported(provider: AuthProvider): Promise<boolean> {\n return (this.config.authUi.supportedProviders === AuthProvider.ALL || this.config.authUi.supportedProviders.includes(provider))\n && (this.isWebPlatform || (this.credFactory && await this.credFactory.isProviderSupported(provider)));\n }\n\n public async refreshToken(): Promise<void> {\n const user = await this.afa.currentUser;\n if (user) {\n await user.getIdToken(true);\n await this.tokenRefreshed$.next();\n }\n }\n\n public selectCurrentUserClaim<T>(claim: string): Observable<T | null | undefined> {\n return new Observable<T | null | undefined>(subscriber => {\n const handleTokenRefresh = async (user: User | null) => {\n if (user) {\n const token = await user.getIdTokenResult();\n subscriber.next(token.claims[claim]);\n } else {\n subscriber.next(null);\n }\n };\n this.tokenRefreshed$.subscribe(async () => {\n const user = await this.afa.currentUser;\n await handleTokenRefresh(user);\n });\n this.afa.user.subscribe(async user => {\n await handleTokenRefresh(user);\n });\n });\n }\n\n public getCurrentUserClaim<T>(claim: string): Promise<T | null | undefined> {\n return this.selectCurrentUserClaim<T>(claim).pipe(take(1)).toPromise();\n }\n\n /**\n * Reset the password of currently authenticated user via email\n *\n * @param email - the email to reset\n */\n public async resetPassword(email: string): Promise<void> {\n try {\n this.fire.addLogMessage('Password reset email sent');\n this.afa.sendPasswordResetEmail(email);\n this.ui.toast(\n 'auth.resetPassword.onResetRequestedTo',\n { duration: this.config.authUi.toastDefaultDurationMil, interpolateParams: { email }, position: 'bottom' }\n );\n } catch (error) {\n await this.handleError(error);\n }\n }\n\n /**\n * General sign in mechanism to authenticate the users with a firebase project\n * using a traditional way, via username and password or by using an authentication provider\n * like google, facebook, twitter and github\n *\n * [Current State -> Target State]\n * Null -> Anon/named: OK\n * Anon -> Anon: Throws Error\n * Anon -> Named: Triggers MergeService\n * Named -> Any: Throws Error\n *\n * @param provider - the provider to authenticate with (google, facebook, twitter, github)\n * @param credentials optional email and password\n */\n public async signInWith(provider: AuthProvider, options?: ISignInOptions)\n : Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`SignInWithProvider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n let userCred: UserCredential | null = null;\n\n const currentUser = await this.afa.currentUser;\n\n // Only merge an anonymous user >>> non-anonymous user\n // Don't catch any errors, so they are caught by function and trigger a login abort.\n let mergeContext: any = null;\n if (currentUser && currentUser.isAnonymous && this.mergeService && provider !== AuthProvider.ANONYMOUS) {\n mergeContext = await this.mergeService.prepareSource(currentUser);\n }\n\n switch (provider) {\n case AuthProvider.ANONYMOUS:\n if (currentUser) {\n throw new Error('Cannot signIn anonymously whilst already signedIn, SignOut first');\n }\n if (await this.confirmTos(null, options)) {\n loading.present();\n userCred = await this.afa.signInAnonymously();\n await loading.dismiss();\n await this.confirmTos(userCred, { skipTosCheck: true }); // Save tosAcceptance in firestore\n }\n break;\n\n case AuthProvider.EmailAndPassword:\n if (currentUser && !currentUser.isAnonymous) {\n throw new Error('Cannot signIn whilst already signedIn, SignOut first');\n }\n if (!options?.credentials) {\n throw new Error('Credentials are required when signing in with AuthProvider.EmailAndPassword');\n }\n loading.present();\n userCred = await this.afa.signInWithEmailAndPassword(options.credentials.email, options.credentials.password);\n await loading.dismiss();\n if (!await this.confirmTos(userCred, options)) {\n await this.signOut();\n userCred = null;\n };\n break;\n\n case AuthProvider.PhoneNumber:\n // coming soon - see feature/sms branch\n break;\n\n default:\n if (currentUser && !currentUser.isAnonymous) {\n throw new Error('Cannot signIn whilst already signedIn, SignOut first');\n }\n if (this.credFactory && await this.credFactory.isProviderSupported(provider)) {\n loading.present();\n const factoryCred = await this.credFactory.getCredential(provider);\n if (factoryCred) {\n userCred = await this.afa.signInWithCredential(factoryCred);\n }\n await loading.dismiss();\n } else if (this.isWebPlatform) {\n loading.present();\n userCred = await this.afa.signInWithPopup(this.getAuthProvider(provider));\n await loading.dismiss();\n /*\n a: null\ncode: \"auth/popup-closed-by-user\"\nmessage: \"The popup has been closed by the user before finalizing the operation.\"\n__proto__: Error\n*/\n } else {\n throw new Error('A CredentialFactory is required to use AuthProcessService on a non-web platform');\n }\n await loading.dismiss();\n if (!await this.confirmTos(userCred, options)) {\n await this.signOut();\n userCred = null;\n };\n break;\n }\n\n // Will be null if user cancels operation\n if (userCred) {\n await this.handleSignInSuccess(userCred);\n if (userCred.user && mergeContext && this.mergeService) {\n try {\n await this.mergeService.applyToTarget(userCred.user, mergeContext);\n } catch (error) {\n // If a failure occurs in merge applyToTarget we can't do much about it (we are already logged in as new user)\n // but we should at least log it. The onus is really on the applyToTarget function to handle it's own errors.\n this.fire.recordException(error);\n }\n }\n this.onSignInEmitter.emit(userCred.user);\n }\n\n await loading.dismiss();\n return userCred || null;\n\n } catch (error) {\n // code auth/user-not-found\n await this.handleError(error);\n await loading.dismiss();\n return null;\n }\n }\n\n /**\n */\n public async reauthenicateWithProvider(provider: AuthProvider, options?: ISignInOptions)\n : Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`reauthenicateWithProvider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n let userCred: UserCredential | null = null;\n\n // Throw error if reauthentication attempted whilst signed in as guest, nor not signed in.\n const currentUser = await this.afa.currentUser;\n if (!currentUser || currentUser.isAnonymous) {\n throw new Error('Caanot reauthticate if no currentUser or currentUser is anonymous');\n }\n\n loading.present();\n\n switch (provider) {\n case AuthProvider.ANONYMOUS:\n throw new Error('Cannot reauthenticate with anonymous Credentials');\n\n case AuthProvider.EmailAndPassword:\n if (!options?.credentials) {\n throw new Error('Credentials are required when signing in with AuthProvider.EmailAndPassword');\n }\n if (!currentUser.email) {\n throw new Error('Cannot reauthenticate with email for an account without email');\n }\n if (!firebase.auth) {\n throw new Error('firebase.auth is undefined');\n }\n this.fire.addLogMessage(`creating email credential with firebase; email=${options.credentials.email}`);\n const authCred = firebase.auth.EmailAuthProvider.credential(currentUser.email, options.credentials.password);\n userCred = await currentUser.reauthenticateWithCredential(authCred);\n break;\n\n case AuthProvider.PhoneNumber:\n // coming soon - see feature/sms branch\n break;\n\n default:\n if (this.credFactory && await this.credFactory.isProviderSupported(provider)) {\n const factoryCred = await this.credFactory.getCredential(provider);\n if (factoryCred) {\n userCred = await currentUser.reauthenticateWithCredential(factoryCred);\n }\n } else if (this.isWebPlatform) {\n userCred = await currentUser.reauthenticateWithPopup(this.getAuthProvider(provider));\n } else {\n throw new Error('A CredentialFactory is required to use AuthProcessService on a non-web platform');\n }\n break;\n }\n\n await loading.dismiss();\n return userCred || null;\n\n } catch (error) {\n // code auth/user-not-found\n await this.handleError(error);\n await loading.dismiss();\n return null;\n }\n }\n\n /**\n * Link the current user to credentials from another auth provider.\n *\n * @param provider Provider to link.\n */\n public async linkCurrentUserToProvider(provider: AuthProvider, options?: ISignInOptions): Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`Linking current anon user to provider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n const currentUser = await this.afa.currentUser;\n if (null === currentUser) {\n throw new Error('CurrentUser is null');\n }\n\n await loading.present();\n let userCred: UserCredential | null = null;\n switch (provider) {\n case AuthProvider.ANONYMOUS:\n throw new Error('Linking anonymous user makes no sense');\n\n case AuthProvider.EmailAndPassword:\n if (!options?.credentials) {\n throw new Error('Credentials required to link to email credentential');\n }\n if (!firebase.auth) {\n throw new Error('firebase.auth is undefined');\n }\n this.fire.addLogMessage(`creating email credential with firebase; email=${options.credentials.email}`);\n const authCred = firebase.auth.EmailAuthProvider.credential(options.credentials.email, options.credentials.password);\n this.fire.addLogMessage(`linking userCredential to email authCredential`);\n userCred = await currentUser.linkWithCredential(authCred);\n break;\n\n case AuthProvider.PhoneNumber:\n throw new Error('Linking phone number not suported');\n\n default:\n if (this.credFactory && await this.credFactory.isProviderSupported(provider)) {\n const factoryCred = await this.credFactory.getCredential(provider);\n if (factoryCred) {\n userCred = await currentUser.linkWithCredential(factoryCred);\n }\n } else if (this.isWebPlatform) {\n userCred = await currentUser.linkWithPopup(this.getAuthProvider(provider));\n } else {\n throw new Error('A CredentialFactory is required to use AuthProcessService on a non-web platform');\n }\n }\n\n if (userCred && userCred.user) { // Null if user cancels (or perhaps fails) sign-in\n const userData = this.parseUserInfo(userCred.user);\n if (\n userData.displayName\n && (userCred.user.displayName !== userData.displayName || userCred.user.photoURL !== userData.displayName)\n ) {\n this.fire.addLogMessage(`Updating user profile; displayName=${userData.displayName}, photoUrl=${userData.photoURL}`); // tslint:disable-line max-line-length\n await this.updateUserInfo({ displayName: userData.displayName, photoURL: userData.photoURL });\n }\n await this.handleSignInSuccess(userCred);\n }\n\n await loading.dismiss();\n return userCred || null;\n\n } catch (error) {\n // Merge\n await this.handleError(error);\n await loading.dismiss();\n return null;\n\n }\n }\n\n /**\n * Creates a firebase user account authenticated with the specified provider.\n * If AuthProvider.EmailAndPassword is specified credentials and displayname must also be provided.\n */\n public async registerWith(provider: AuthProvider, options?: ISignInOptions): Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`SigningUp with provider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n\n // If the current user is anonymous - link the credentials to the existing user.\n // Otherwise if the user is logged in un-Anonymously, throw error\n const currentUser = await this.afa.currentUser;\n if (currentUser?.isAnonymous) { // Anonymous User\n return this.linkCurrentUserToProvider(provider, options);\n } else if (null !== currentUser) { // Non-Anonymous User\n throw new Error('Cannot Register whilst signed in as a non-Anonymous user. SignOut first');\n } else if (!await this.confirmTos(null, options)) { // No current user\n this.fire.addLogMessage('User declined TOS during register');\n return null;\n }\n\n let userCred: UserCredential | null = null;\n switch (provider) {\n\n case AuthProvider.EmailAndPassword:\n if (!options?.credentials || !options?.displayName) {\n throw new Error('Credentials & displayName required to SignUp by email');\n }\n await loading.present();\n this.fire.addLogMessage(`creaating user with email and password; email=${options.credentials.email}`);\n userCred = await this.afa.createUserWithEmailAndPassword(options.credentials.email, options.credentials.password);\n if (null === userCred.user) {\n throw new Error('User is null following successful signUp');\n }\n await this.updateUserInfo({ displayName: options.displayName });\n await this.confirmTos(userCred, { skipTosCheck: true }); // To save the tosAcceptance\n if (this.config.authUi.enableEmailVerification) {\n await userCred.user.sendEmailVerification();\n }\n // Legacy fields\n this.emailConfirmationSent = true;\n this.emailToConfirm = userCred.user.email || undefined;\n await this.handleSignInSuccess(userCred);\n await loading.dismiss();\n break;\n\n default:\n userCred = await this.signInWith(provider, { ...options, skipTosCheck: true });\n\n }\n\n if (userCred.user) {\n this.onRegisterEmitter.emit(userCred.user);\n }\n return userCred || null;\n } catch (error) {\n // This is where I would handle merge\n await this.handleError(error);\n await loading.dismiss();\n return null;\n }\n\n }\n\n /**\n * Present dialog and confirm the user agress to the privacy policy and terms of service (if either configured).\n * If nether configured returns true;\n *\n * @returns True if either user agrees to TOS/PrivacyUrl || no TOS/PrivacyUrl configured.\n */\n private async confirmTos(userCred: UserCredential | null = null, options: { skipTosCheck?: boolean } = {}): Promise<boolean> {\n if (this.config.authUi.tosUrl || this.config.authUi.privacyPolicyUrl) {\n let acceptedTos: string | null = (options.skipTosCheck) ? new Date().toISOString() : null;\n\n if (!acceptedTos && userCred?.user && !userCred?.additionalUserInfo?.isNewUser && this.config.authUi.enableFirestoreSync) {\n const userData = await this.fireStoreService.getUserData(userCred.user.uid);\n acceptedTos = userData?.acceptedTos || null;\n }\n\n if (!acceptedTos && await this.ui.confirmTos()) {\n acceptedTos = new Date().toISOString();\n }\n\n if (userCred?.user && this.config.authUi.enableFirestoreSync) {\n await this.fireStoreService.setUserData(userCred.user.uid, { acceptedTos }, { merge: true });\n }\n\n return !!acceptedTos;\n\n } else { // No tosUrl || privacyPolicyUrl\n return true;\n }\n }\n\n /**\n * Send the currently authenticated user another verficiation email.\n */\n async sendNewVerificationEmail(): Promise<void> {\n try {\n const currentUser = await this.afa.currentUser;\n if (!currentUser) {\n throw new Error('No signed in user');\n }\n await currentUser.sendEmailVerification();\n } catch (error) {\n this.fire.recordException(error);\n throw error;\n }\n }\n\n /**\n * SignOut the currently authenticated user.\n */\n async signOut() {\n try {\n await this.afa.signOut();\n if (this.credFactory) {\n this.credFactory.signOut();\n }\n } catch (error) {\n await this.handleError(error);\n }\n }\n\n /**\n * Update the details for the authenticated user of in the firebase authentication and sync with firestore.\n *\n * @param userInfo - UserInfo object containing those properties for which change is requried. Only provider\n * the properties actually to be changed. Others should be ommitted.\n */\n public async updateUserInfo(userInfo: Partial<UserInfo>): Promise<void> {\n try {\n const user: User | null = await this.afa.currentUser;\n if (!user) {\n throw new Error('No currentUser');\n }\n\n if (userInfo.email) {\n await user.updateEmail(userInfo.email);\n }\n\n if (userInfo.phoneNumber) {\n await user.updatePhoneNumber(userInfo.phoneNumber as any); // TODO - bet this doesn't actually work\n }\n\n if (userInfo.displayName || userInfo.photoURL) {\n await user.updateProfile({\n displayName: userInfo.displayName,\n photoURL: userInfo.photoURL\n });\n }\n await this.afa.updateCurrentUser(user);\n\n if (this.config.authUi.enableFirestoreSync) {\n // await this.fireStoreService.updateUserData(user.uid, this.parseUserInfo(user));\n await this.fireStoreService.updateUserData(user.uid, {\n displayName: user.displayName,\n email: user.email,\n photoURL: user.photoURL\n });\n }\n\n this.onUserUpdatedEmitter.emit();\n\n } catch (error) {\n this.fire.recordException(error);\n }\n }\n\n /**\n * Extract UserInfo object from the User object\n * If multiple providers are supplied these are amalgamated to create the most complete\n * UserInfo object possible\n */\n public parseUserInfo(user: User): UserInfo {\n const userInfo: UserInfo = {\n uid: user.uid,\n displayName: user.displayName,\n email: user.email,\n phoneNumber: user.phoneNumber,\n photoURL: user.photoURL,\n providerId: user.providerId\n };\n if (user.providerData) {\n user.providerData.forEach(item => {\n if (!userInfo.displayName && item?.displayName) { userInfo.displayName = item.displayName; }\n if (!userInfo.email && item?.email) { userInfo.email = item.email; }\n if (!userInfo.phoneNumber && item?.phoneNumber) { userInfo.phoneNumber = item.phoneNumber; }\n if (!userInfo.photoURL && item?.photoURL) { userInfo.photoURL = item.photoURL; }\n if (!userInfo.providerId && item?.providerId) { userInfo.providerId = item.providerId; }\n });\n }\n return userInfo;\n }\n\n /**\n * Returns the UserPhotoUrl, or an appropraite placeholder if not provided\n * ToDo - this would probably bet better inside a user-photo component\n */\n public getUserPhotoUrl(): Observable<string | null> {\n return this.user$.pipe(\n map((user: User | null) => {\n if (!user) {\n return null;\n } else if (user.photoURL) {\n return user.photoURL;\n } else if (user.emailVerified) {\n return `assets/user/${Accounts.CHECK}.svg`;\n } else if (user.isAnonymous) {\n return `assets/user/${Accounts.OFF}.svg`;\n } else {\n return `assets/user/${Accounts.NONE}.svg`;\n }\n })\n );\n }\n\n /**\n * Common handler for successful signIn\n * Refreshes FireStore User document based on current user (if enabled)\n * And provides welcome back toast (if enabled)\n *\n * @param cred UserCredential object provided by signIn function\n */\n async handleSignInSuccess(cred: UserCredential) {\n if (null === cred.user) {\n throw new Error('user is null whilst handling sucessful login');\n }\n // if (this.config.authUi.enableFirestoreSync) {\n // Now done by server-side trigger await this.fireStoreService.createUserData(userData);\n // try {\n // const userData = this.parseUserInfo(cred.user);\n // this.fire.addLogMessage(`About to create user data in firestore; user=${JSON.stringify(userData)}`);\n // } catch (error) {\n // this.fire.recordException(error);\n // }\n // }\n if (this.config.authUi.toastMessageOnAuthSuccess) {\n const successMessage = ('string' === typeof this.config.authUi.toastMessageOnAuthSuccess)\n ? this.config.authUi.toastMessageOnAuthSuccess\n : `Hello ${cred.user.displayName ? cred.user.displayName : ''}!`;\n this.ui.toast(successMessage, { duration: this.config.authUi.toastDefaultDurationMil });\n }\n }\n\n /**\n * Refresh user info. Can be useful for instance to get latest status regarding email verification.\n */\n async reloadUserInfo() {\n const user = await this.user$.pipe(take(1)).toPromise();\n if (user) {\n await user.reload();\n }\n }\n\n /**\n * Deletes the current user\n */\n async deleteUser() {\n const currentUser = await this.afa.currentUser;\n const currentUid = currentUser?.uid;\n if (!currentUser || !currentUid) {\n throw new Error('Unable to delete currentUser if null');\n }\n try {\n // Userdata deleted by DB trigger\n await currentUser.delete();\n this.onUserDeletedEmitter.emit();\n } catch (error) {\n if (error.code !== FirebaseErrorCodes.requiresRecentLogin) {\n this.fire.recordException(error);\n }\n throw (error);\n }\n }\n\n /**\n * Logs the error and provides user error notifcation if appropriate\n */\n async handleError(error: any) {\n await this.fire.recordException(error);\n this.onErrorEmitter.emit(error);\n if (this.config.authUi.toastMessageOnAuthError) {\n let message: string = 'auth.common.pleaseRetry';\n if (error && typeof error === 'string') {\n message = error;\n } else if (error && error.message) {\n message = error.message;\n } else if (error && typeof error === 'object') {\n message = JSON.stringify(error);\n } else if (error) {\n message = error.toString();\n }\n await this.ui.toast(message, { duration: this.config.authUi.toastDefaultDurationMil });\n }\n }\n\n /**\n * Returns a firebase auth provider object for the specified provider\n */\n private getAuthProvider(provider: AuthProvider): FirebaseAuthProvider {\n if (!firebase.auth) {\n throw new Error('firebase.auth is undefined');\n }\n switch (provider) {\n case AuthProvider.Google: return new firebase.auth.GoogleAuthProvider();\n case AuthProvider.Apple: return new firebase.auth.OAuthProvider('apple.com');\n case AuthProvider.Facebook: return new firebase.auth.FacebookAuthProvider();\n case AuthProvider.Twitter: return new firebase.auth.TwitterAuthProvider();\n case AuthProvider.Github: return new firebase.auth.GithubAuthProvider();\n case AuthProvider.Microsoft: return new firebase.auth.OAuthProvider('microsoft.com');\n case AuthProvider.Yahoo: return new firebase.auth.OAuthProvider('yahoo.com');\n default: throw new Error(`${provider} is not available as auth provider`);\n }\n }\n\n}\n","export enum DisplayWidth {\n xs = 1,\n sm = 576,\n md = 768,\n lg = 992,\n xl = 1200\n}\n","import { Input, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, Validator, ValidationErrors, AbstractControl } from '@angular/forms';\n\ndeclare type ValueAccessorHandler<T> = (_: T) => void;\ndeclare type ValidatorChangeHandler = () => void;\n\n/* @Component({\n template: ''\n}) */\nexport class ValueAccessorValueComponent<T> implements ControlValueAccessor, Validator {\n\n @Input()\n get value(): T | undefined { return this._value; }\n set value(val: T | undefined) {\n if (val) {\n this._value = val;\n this.valueChange.emit(val);\n this.propagateChange(val);\n }\n }\n protected _value: T | undefined;\n\n @Output()\n valueChange: EventEmitter<T> = new EventEmitter<T>();\n\n validate(control: AbstractControl): ValidationErrors | null {\n return null;\n }\n\n propagateChange: ValueAccessorHandler<T> = (_: T) => { };\n propagateTouch: ValueAccessorHandler<T> = (_: T) => { }; // TODO - Not implemented.\n propagateValidatorChange: ValidatorChangeHandler = () => { }; // TODO - Not implemented.\n\n writeValue(value: T) {\n this.value = value;\n }\n\n registerOnChange(fn: ValueAccessorHandler<T>) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: ValueAccessorHandler<T>) {\n this.propagateTouch = fn;\n }\n\n registerOnValidatorChange(fn: ValidatorChangeHandler) {\n this.propagateValidatorChange = fn;\n }\n\n}\n","import { Input, Output, EventEmitter, OnDestroy, AfterViewInit, Injector, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, Validator, ValidationErrors, AbstractControl, FormControl, NgControl } from '@angular/forms';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/* @Component({\n template: ''\n}) */\nexport class ValueAccessorControlComponent<T> implements ControlValueAccessor, Validator, OnInit, OnDestroy, AfterViewInit {\n\n public parentControl?: NgControl | null;\n public control?: FormControl;\n private get _control(): FormControl {\n if (!this.control) {\n throw new Error('ValueAccessorControlComponent: this.control must be eclipsed in the subclass');\n }\n return this.control;\n }\n\n protected destroy$: ReplaySubject<void> = new ReplaySubject<void>();\n\n @Input()\n set value(val: T | undefined) {\n if (val) {\n this._control.setValue(val);\n } else {\n this._control.reset();\n }\n }\n get value(): T | undefined {\n return this._control.value;\n }\n\n @Output()\n valueChange: EventEmitter<T | undefined> = new EventEmitter<T | undefined>();\n\n constructor(\n private injector: Injector,\n private cdRef: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n this._control.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(val => {\n if (this._control.dirty) {\n this.propagateChange(val);\n this.propagateTouch();\n this.valueChange.emit(val);\n }\n });\n this._control.statusChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.propagateValidatorChange());\n }\n\n ngAfterViewInit() {\n this.parentControl = this.injector.get(NgControl, null);\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n propagateChange = (val: T | undefined) => { };\n propagateTouch = () => { };\n propagateValidatorChange = () => { };\n\n writeValue(value: T | undefined) {\n this.value = value;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.propagateTouch = fn;\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.propagateValidatorChange = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this._control.disable();\n } else {\n this._control.enable();\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this._control.errors;\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { MalSharedConfig, MalSharedConfigToken } from '../interfaces';\nimport { AuthProcessService } from '../services/auth-process.service';\nimport { User } from '@firebase/auth-types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggedInGuard implements CanActivate, CanLoad {\n constructor(\n @Inject(MalSharedConfigToken)\n private config: MalSharedConfig,\n private router: Router,\n private aps: AuthProcessService\n ) {\n }\n\n private guardOutcome(redirectUrl?: string): Observable<boolean | UrlTree> {\n return this.aps.user$.pipe(\n take(1),\n map((user: User | null) => {\n if (user) {\n if (this.config.authUi.guardProtectedRoutesUntilEmailIsVerified && !user.emailVerified) {\n if (this.config.authUi.authGuardVerifyEmailURL) {\n return this.router.createUrlTree(\n [`${this.config.authUi.authGuardVerifyEmailURL}`], { queryParams: { redirectUrl } }\n );\n } else if (this.config.authUi.authGuardFallbackURL) {\n return this.router.createUrlTree(\n [`${this.config.authUi.authGuardFallbackURL}`], { queryParams: { redirectUrl } }\n );\n } else {\n return false;\n }\n } else {\n return true;\n }\n } else {\n if (this.config.authUi.authGuardFallbackURL) {\n return this.router.createUrlTree(\n [`${this.config.authUi.authGuardFallbackURL}`], { queryParams: { redirectUrl } }\n );\n }\n return false;\n }\n })\n );\n }\n\n canLoad(route: Route, segments: UrlSegment[]): Observable<boolean | UrlTree> {\n return this.guardOutcome(segments[0].parameters.url);\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {\n return this.guardOutcome(state.url);\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MalSharedConfig, MalSharedConfigToken } from '../interfaces';\nimport { AuthProcessService } from '../services/auth-process.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VerifyEmailGuard implements CanActivate {\n constructor(\n @Inject(MalSharedConfigToken)\n private config: MalSharedConfig,\n private router: Router,\n private aps: AuthProcessService\n ) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {\n return this.aps.user$.pipe(\n map(user => {\n if (user\n && !user.emailVerified\n && !user.isAnonymous\n && this.config.authUi.authGuardVerifyEmailURL\n ) {\n return this.router.createUrlTree([`${this.config.authUi.authGuardVerifyEmailURL}`], { queryParams: { redirectUrl: state.url } });\n } else {\n return true;\n }\n })\n );\n }\n\n}\n","// @angular/*\nimport { NgModule, ModuleWithProviders, Optional, NgZone, PLATFORM_ID, isDevMode } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\n// Ionic\nimport { IonicModule } from '@ionic/angular';\n\n// Imported\nimport { TranslateModule } from '@ngx-translate/core';\n\n// Configuration\nimport {\n malSharedConfigFactory, MalSharedConfig, MalUserProvidedConfig, UseEmulatorArguments,\n MalSharedConfigToken, MalUserProvidedConfigToken\n} from './interfaces';\n\n// @angular/fire\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseAppConfig, FirebaseApp, FirebaseOptions, AngularFireModule } from '@angular/fire';\nimport { AngularFireAuth, AngularFireAuthModule, USE_EMULATOR as AUTH_EMULATOR } from '@angular/fire/auth';\nimport { AngularFirestoreModule, USE_EMULATOR as FIRESTORE_EMULATOR } from '@angular/fire/firestore';\nimport { AngularFireRemoteConfig, ConfigTemplate, DEFAULTS as REMOTE_CONFIG_DEFAULTS, SETTINGS as REMOTE_CONFIG_SETTINGS } from '@angular/fire/remote-config';\nimport { DATA_COLLECTION_ENABLED, INSTRUMENTATION_ENABLED } from '@angular/fire/performance';\nimport { Settings as RemoteConfigSettings } from '@firebase/remote-config-types';\nimport { AngularFirePerformance } from '@angular/fire/performance';\nimport { USE_EMULATOR as FUNCTIONS_EMULATOR, AngularFireFunctionsModule, REGION } from '@angular/fire/functions';\n\n// Guards\nimport { LoggedInGuard, VerifyEmailGuard } from './guards';\n\n// Components\n// import { ValueAccessorControlComponent } from './types/ValueAccessorControlComponent';\n// import { ValueAccessorValueComponent } from './types/ValueAccessorValueComponent';\n\n// services\nimport { FirestoreSyncService } from './services/firestore-sync.service';\nimport { AuthProcessService } from './services/auth-process.service';\nimport { CrashlyticsService } from './services/crashlytics.service';\nimport { AnalyticsService } from './services/analytics.service';\nimport { RemoteConfigService } from './services/remoteconfig.service';\nimport { PerformanceService } from './services/performance.service';\nimport { FirebaseService } from './services/firebase.service';\nimport { UiService } from './services/ui.service';\n\nconst MODULES = [\n HttpClientModule,\n AngularFireAuthModule,\n AngularFirestoreModule,\n AngularFireFunctionsModule\n];\n\n@NgModule({\n imports: [\n ...MODULES,\n TranslateModule.forChild(),\n AngularFireModule,\n ],\n exports: [\n ...MODULES,\n TranslateModule\n ]\n})\nexport class MalSharedModule {\n\n static forRoot(\n config: MalUserProvidedConfig,\n appNameFactory: () => string | undefined = () => undefined,\n ): ModuleWithProviders<MalSharedModule> {\n return {\n ngModule: MalSharedModule,\n providers:\n [\n {\n provide: MalUserProvidedConfigToken,\n useValue: config\n },\n {\n provide: MalSharedConfigToken,\n useFactory: malSharedConfigFactory,\n deps: [MalUserProvidedConfigToken]\n },\n {\n provide: REMOTE_CONFIG_DEFAULTS,\n useValue: config.configDefaults\n },\n {\n provide: REMOTE_CONFIG_SETTINGS,\n useFactory: () => isDevMode() ? { minimumFetchIntervalMillis: 3600000 } : {} // 1 hour§\n },\n {\n provide: FIREBASE_OPTIONS,\n useValue: config.firebase\n },\n {\n provide: FIREBASE_APP_NAME,\n useFactory: appNameFactory\n },\n {\n provide: AUTH_EMULATOR,\n useFactory: authEmulatorFactory,\n deps: [MalSharedConfigToken]\n },\n {\n provide: FIRESTORE_EMULATOR,\n useFactory: firestoreEmulatorFactory,\n deps: [MalSharedConfigToken]\n },\n {\n provide: FUNCTIONS_EMULATOR,\n useFactory: functionsEmulatorFactory,\n deps: [MalSharedConfigToken]\n },\n {\n provide: REGION,\n useValue: config.services?.firebaseRegion || null\n },\n {\n provide: AngularFirePerformance,\n useFactory: performanceProviderFactory,\n deps: [\n MalSharedConfigToken,\n FirebaseApp,\n [new Optional(), DATA_COLLECTION_ENABLED],\n [new Optional(), INSTRUMENTATION_ENABLED],\n NgZone,\n PLATFORM_ID\n ]\n },\n {\n provide: AngularFireRemoteConfig,\n useFactory: remoteConfigFirebaseService,\n deps: [\n MalSharedConfigToken,\n FIREBASE_OPTIONS,\n FIREBASE_APP_NAME,\n REMOTE_CONFIG_SETTINGS,\n REMOTE_CONFIG_DEFAULTS,\n NgZone,\n PLATFORM_ID\n ]\n },\n AnalyticsService,\n CrashlyticsService,\n FirebaseService,\n UiService,\n RemoteConfigService,\n AuthProcessService,\n FirestoreSyncService,\n PerformanceService,\n AngularFireAuth,\n LoggedInGuard,\n VerifyEmailGuard\n ],\n };\n }\n\n}\n\nexport function performanceProviderFactory(\n config: MalSharedConfig,\n app: FirebaseApp,\n dataCollectionEnabled: boolean,\n instrumentationEnabled: boolean,\n zone: NgZone,\n platformId: any\n): AngularFirePerformance | null {\n if (config.services.firebasePerformance) {\n return new AngularFirePerformance(app, dataCollectionEnabled, instrumentationEnabled, zone, platformId);\n }\n return null;\n}\n\nexport function remoteConfigFirebaseService(\n config: MalSharedConfig,\n options: FirebaseOptions,\n nameOrConfig: string | FirebaseAppConfig,\n settings: RemoteConfigSettings,\n defaultConfig: ConfigTemplate,\n zone: NgZone,\n platformId: any\n): AngularFireRemoteConfig | null {\n if (config.services.firebaseRemoteConfig) {\n return new AngularFireRemoteConfig(options, nameOrConfig, settings, defaultConfig, zone, platformId);\n }\n return null;\n}\n\nexport function authEmulatorFactory(config: MalSharedConfig): UseEmulatorArguments | undefined {\n if (true === config.services.firebaseAuth) {\n return undefined;\n } else {\n return config.services.firebaseAuth;\n }\n}\n\nexport function firestoreEmulatorFactory(config: MalSharedConfig): UseEmulatorArguments | undefined {\n if (true === config.services.firebaseFirestore) {\n return undefined;\n } else {\n return config.services.firebaseFirestore;\n }\n}\n\nexport function functionsEmulatorFactory(config: MalSharedConfig): UseEmulatorArguments | undefined {\n if (true === config.services.firebaseFunctions) {\n return undefined;\n } else {\n return config.services.firebaseFunctions;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {IAlertsUIProvider as ɵp,IAnalyticsProvider as ɵb,IAuthMergeUserService as ɵi,ICrashlyticsProvider as ɵd,ICredentialFactoryProvider as ɵj,ILegalityDialogUIProvider as ɵr,ILoadingUIProvider as ɵq,IToastUIProvider as ɵo,MalAlertsUIProviderToken as ɵl,MalAnalyticsProviderToken as ɵa,MalCrashlyticsProviderToken as ɵc,MalCredentialFactoryProviderToken as ɵg,MalLegaliyDialogUIProiderToken as ɵn,MalLoadingUIProviderToken as ɵm,MalMergeUserServiceToken as ɵf,MalSharedConfig as ɵh,MalSharedConfigToken as ɵe,MalToastUIProviderToken as ɵk} from './shared/interfaces';"],"names":["REMOTE_CONFIG_DEFAULTS","REMOTE_CONFIG_SETTINGS","AUTH_EMULATOR","FIRESTORE_EMULATOR","FUNCTIONS_EMULATOR"],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { ModuleWithProviders } from '@angular/core';
2
- import { MalIAPOptions } from './interfaces';
3
- export declare class MalIAPModule {
4
- static forRoot(options: MalIAPOptions): ModuleWithProviders<MalIAPModule>;
5
- }
@@ -1,11 +0,0 @@
1
- import { IAPProductOptions } from '@ionic-native/in-app-purchase-2/ngx';
2
- export declare enum IAPProductTypes {
3
- PAID_SUBSCRIPTION = "PAID_SUBSCRIPTION"
4
- }
5
- export interface MalIAPProductOptions extends IAPProductOptions {
6
- type: IAPProductTypes;
7
- }
8
- export interface MalIAPOptions {
9
- validatorUrl: string;
10
- products: MalIAPProductOptions[];
11
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":4,"metadata":{"MalIAPModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":27,"character":9,"context":{"name":"functionsInAppPurchase2Factory"},"module":"./iap.module"}}}},"IAPProductTypes":{"PAID_SUBSCRIPTION":"PAID_SUBSCRIPTION"},"MalIAPProductOptions":{"__symbolic":"interface"},"MalIAPOptions":{"__symbolic":"interface"},"MalIAPOptionsToken":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":38},"arguments":["IAPOptionsToken"]},"slimDown":{"__symbolic":"function"},"ProductStates":{"owned":"owned","approved":"approved","initiated":"initiated","requested":"requested","valid":"valid","registered":"registered","downloading":"downloading","downloaded":"downloaded","finsihed":"finished"},"IAPurchaseService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"selectAllProducts":[{"__symbolic":"method"}],"selectProduct":[{"__symbolic":"method"}],"selectIsOwned":[{"__symbolic":"method"}],"selectVerified":[{"__symbolic":"method"}],"selectOwned":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":147,"character":5}}],null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":151,"character":5},"arguments":[{"__symbolic":"reference","name":"MalIAPOptionsToken"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":152,"character":5},"arguments":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfigToken","line":152,"character":29}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":146,"character":17},{"__symbolic":"reference","module":"@ionic-native/in-app-purchase-2/ngx","name":"InAppPurchase2","line":147,"character":31},{"__symbolic":"reference","module":"ngx-firebase","name":"AuthProcessService","line":148,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":149,"character":20},{"__symbolic":"reference","module":"ngx-firebase","name":"FirebaseService","line":150,"character":18},{"__symbolic":"reference","name":"MalIAPOptions"},{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfig","line":152,"character":74}]}],"load":[{"__symbolic":"method"}],"purchase":[{"__symbolic":"method"}],"finish":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"MalIAPModule":"./iap.module","IAPProductTypes":"./interfaces","MalIAPProductOptions":"./interfaces","MalIAPOptions":"./interfaces","MalIAPOptionsToken":"./tokens","slimDown":"./services/iap.service","ProductStates":"./services/iap.service","IAPurchaseService":"./services/iap.service"},"importAs":"ngx-firebase/iap"}
package/iap/package.json DELETED
@@ -1,23 +0,0 @@
1
- {
2
- "peerDependencies": {
3
- "@angular/common": "^11.2.5",
4
- "@angular/core": "^11.2.5",
5
- "@ngx-translate/core": "^13.0.0",
6
- "@ionic-native/core": "^5.30.0",
7
- "@ionic-native/in-app-purchase-2": "^5.30.0",
8
- "@capacitor/core": "2.4.2",
9
- "@capacitor/ios": "^2.4.3",
10
- "capacitor-firebase-auth": "file:../../../capacitor-firebase-auth-2.3.2-firebase8.tgz",
11
- "zone.js": "^0.11.3",
12
- "rxjs": "~6.5.4"
13
- },
14
- "main": "../bundles/ngx-firebase-iap.umd.js",
15
- "module": "../fesm2015/ngx-firebase-iap.js",
16
- "es2015": "../fesm2015/ngx-firebase-iap.js",
17
- "esm2015": "../esm2015/iap/ngx-firebase-iap.js",
18
- "fesm2015": "../fesm2015/ngx-firebase-iap.js",
19
- "typings": "ngx-firebase-iap.d.ts",
20
- "metadata": "ngx-firebase-iap.metadata.json",
21
- "sideEffects": false,
22
- "name": "ngx-firebase/iap"
23
- }
@@ -1,4 +0,0 @@
1
- export * from './iap.module';
2
- export * from './interfaces';
3
- export * from './tokens';
4
- export * from './services/iap.service';
@@ -1,47 +0,0 @@
1
- import { NgZone } from '@angular/core';
2
- import { AuthProcessService, FirebaseService, MalSharedConfig } from 'ngx-firebase';
3
- import { Platform } from '@ionic/angular';
4
- import { InAppPurchase2, IAPProduct } from '@ionic-native/in-app-purchase-2/ngx';
5
- import { Observable } from 'rxjs';
6
- import { MalIAPOptions } from '../interfaces';
7
- export declare function slimDown(p: IAPProduct[]): Partial<IAPProduct>[];
8
- export declare function slimDown(p: IAPProduct): Partial<IAPProduct>;
9
- export declare enum ProductStates {
10
- owned = "owned",
11
- approved = "approved",
12
- initiated = "initiated",
13
- requested = "requested",
14
- valid = "valid",
15
- registered = "registered",
16
- downloading = "downloading",
17
- downloaded = "downloaded",
18
- finsihed = "finished"
19
- }
20
- export declare class IAPurchaseService {
21
- private plt;
22
- private store;
23
- private aps;
24
- private ngZone;
25
- private fire;
26
- private options;
27
- private sharedConfig;
28
- readonly activeStates: string[];
29
- private _isLoading$;
30
- isLoading$: Observable<boolean>;
31
- get isLoading(): boolean;
32
- set isLoading(val: boolean);
33
- private readonly isModuleEnabled;
34
- readonly products$: Observable<IAPProduct[]>;
35
- readonly activeProducts$: Observable<IAPProduct[]>;
36
- readonly productsHeld$: Observable<IAPProduct[]>;
37
- selectAllProducts(): Observable<IAPProduct[]>;
38
- selectProduct(product: string | IAPProduct): Observable<IAPProduct>;
39
- selectIsOwned(product: string | IAPProduct): Observable<boolean>;
40
- selectVerified(product?: string | IAPProduct): Observable<IAPProduct>;
41
- selectOwned(product?: string | IAPProduct): Observable<IAPProduct>;
42
- constructor(plt: Platform, store: InAppPurchase2, aps: AuthProcessService, ngZone: NgZone, fire: FirebaseService, options: MalIAPOptions, sharedConfig: MalSharedConfig);
43
- private load;
44
- purchase(product: IAPProduct | string, waitForOwned?: boolean): Observable<IAPProduct>;
45
- finish(product: IAPProduct): Promise<IAPProduct>;
46
- refresh(): Promise<void>;
47
- }
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- import { MalIAPOptions } from '../interfaces';
3
- export declare const MalIAPOptionsToken: InjectionToken<MalIAPOptions[]>;
@@ -1 +0,0 @@
1
- export declare const NgxAuthFirebaseuiAnimations: import("@angular/animations").AnimationTriggerMetadata[];
@@ -1,27 +0,0 @@
1
- import { EventEmitter } from '@angular/core';
2
- import { User } from '@firebase/auth-types';
3
- import { Observable } from 'rxjs';
4
- import { PopoverController } from '@ionic/angular';
5
- import { LinkMenuItem } from '../popover-menu';
6
- import { AuthProcessService, UiService, FirebaseService } from 'ngx-firebase';
7
- export declare class AuthAvatarComponent {
8
- aps: AuthProcessService;
9
- private popoverController;
10
- private ui;
11
- private fire;
12
- layout: 'default' | 'simple';
13
- canLogout: boolean;
14
- links: LinkMenuItem[];
15
- canViewAccount: boolean;
16
- canDeleteAccount: boolean;
17
- canEditAccount: boolean;
18
- showIfAnon: boolean;
19
- showProfileDialog: EventEmitter<any>;
20
- onSignOut: EventEmitter<void>;
21
- user$: Observable<User | null>;
22
- displayNameInitials$: Observable<string>;
23
- constructor(aps: AuthProcessService, popoverController: PopoverController, ui: UiService, fire: FirebaseService);
24
- openAvatarMenu(ev: any): Promise<void>;
25
- doShowProfile(ev: any): Promise<void>;
26
- signOut(): Promise<void>;
27
- }
@@ -1 +0,0 @@
1
- export * from './avatar.component';
@@ -1,2 +0,0 @@
1
- export * from './avatar/index';
2
- export * from './popover-menu/index';
@@ -1,2 +0,0 @@
1
- export * from './popover-menu.component';
2
- export * from './interface';
@@ -1,6 +0,0 @@
1
- export interface LinkMenuItem {
2
- text: string;
3
- icon?: string;
4
- disabled?: boolean;
5
- callback?: Function;
6
- }
@@ -1,10 +0,0 @@
1
- import { PopoverController } from '@ionic/angular';
2
- import { UiService } from 'ngx-firebase';
3
- import { LinkMenuItem } from './interface';
4
- export declare class AuthPopoverMenuComponent {
5
- private popoverController;
6
- private ui;
7
- links: LinkMenuItem[];
8
- constructor(popoverController: PopoverController, ui: UiService);
9
- doLinkClick(link: LinkMenuItem): void;
10
- }
@@ -1,2 +0,0 @@
1
- export declare class MalIonicModule {
2
- }
@@ -1,4 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":4,"metadata":{"AuthAvatarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"mal-auth-avatar","template":"<ng-container *ngIf=\"(user$ | async) as user\">\n <ion-avatar name='auth-avatar' class=\"avatar\" *ngIf=\"user?.photoURL || !(displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n <img [alt]=\"user.name\" [src]=\"user.photoURL\" onerror=\"this.onerror=null;this.src='/assets/images/person.png';\">\n </ion-avatar>\n <ion-button class=\"avatar\" *ngIf=\"!user?.photoURL && (displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n {{ displayNameInitials$ | async }}\n </ion-button>\n</ng-container>","styles":["ion-button.avatar{background-color:var(--ion-color-primary-tint);border-radius:50%;font-weight:700}.avatar{border:.75px solid var(--ion-color-primary);box-shadow:2px 2px var(--ion-color-primary-tint);max-width:var(--mal-avatar-size,35px)!important;max-height:var(--mal-avatar-size,35px)!important}"]}]}],"members":{"layout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"canLogout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"links":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"canViewAccount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"canDeleteAccount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"canEditAccount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"showIfAnon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"showProfileDialog":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":3}}]}],"onSignOut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-firebase","name":"AuthProcessService","line":61,"character":16},{"__symbolic":"reference","module":"@ionic/angular","name":"PopoverController","line":62,"character":31},{"__symbolic":"reference","module":"ngx-firebase","name":"UiService","line":63,"character":16},{"__symbolic":"reference","module":"ngx-firebase","name":"FirebaseService","line":64,"character":18}]}],"openAvatarMenu":[{"__symbolic":"method"}],"doShowProfile":[{"__symbolic":"method"}],"signOut":[{"__symbolic":"method"}]}},"AuthPopoverMenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"template":"<ion-button *ngFor=\"let link of links\"\n expand=\"block\"\n [disabled]=\"link.disabled\"\n (click)=\"doLinkClick(link)\">\n {{ link.text | translate }}\n</ion-button>"}]}],"members":{"links":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"PopoverController","line":14,"character":31},{"__symbolic":"reference","module":"ngx-firebase","name":"UiService","line":15,"character":16}]}],"doLinkClick":[{"__symbolic":"method"}]}},"LinkMenuItem":{"__symbolic":"interface"},"NgxAuthFirebaseuiAnimations":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":24,"character":2},"arguments":["animate",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":24,"character":22},"arguments":["void => *",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"useAnimation","line":24,"character":47},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animation","line":2,"character":24},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":4,"character":4},"arguments":[{"opacity":"{{opacity}}","transform":"scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":8,"character":4},"arguments":["{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":8,"character":69},"arguments":["*"]}]}],{"params":{"duration":"200ms","delay":"0ms","opacity":"0","scale":"1","x":"0","y":"0","z":"0"}}]}]}]]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":26,"character":2},"arguments":["animateStagger",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":27,"character":4},"arguments":["50",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":27,"character":16},"arguments":["*"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":28,"character":4},"arguments":["100",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":28,"character":17},"arguments":["*"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":29,"character":4},"arguments":["200",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":29,"character":17},"arguments":["*"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":31,"character":4},"arguments":["void => 50",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":31,"character":29},"arguments":["@*",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"stagger","line":31,"character":42},"arguments":["50ms",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":31,"character":59}}]]}],{"optional":true}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":32,"character":4},"arguments":["void => 100",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":32,"character":30},"arguments":["@*",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"stagger","line":32,"character":43},"arguments":["100ms",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":32,"character":61}}]]}],{"optional":true}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":33,"character":4},"arguments":["void => 200",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":33,"character":30},"arguments":["@*",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"stagger","line":33,"character":43},"arguments":["200ms",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":33,"character":61}}]]}],{"optional":true}]}]}]]}],"MalIonicAlertsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":9,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":10,"character":30}]}],"yesNoAlert":[{"__symbolic":"method"}],"okAlert":[{"__symbolic":"method"}],"errorAlert":[{"__symbolic":"method"}],"infoAlert":[{"__symbolic":"method"}],"textboxInputAlert":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MalIonicLoadingService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"LoadingController","line":11,"character":35},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":12,"character":34},{"__symbolic":"reference","module":"ngx-firebase","name":"RemoteConfigService","line":13,"character":30}]}],"createLoading":[{"__symbolic":"method"}],"watchLoading":[{"__symbolic":"method"}]}},"MalIonicPickerService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"PickerController","line":9,"character":34},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":10,"character":34}]}],"picker":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MalIonicToastService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":9,"character":30},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":10,"character":34}]}],"createToast":[{"__symbolic":"method"}],"toast":[{"__symbolic":"method"}],"errorToast":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MalIonicLegalityDialogService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":5},"arguments":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfigToken","line":10,"character":29}]}],null,null],"parameters":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfig","line":10,"character":67},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":11,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":12,"character":23}]}],"confirmTos":[{"__symbolic":"method"}]}},"MalIonicModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":33,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedModule","line":35,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":36,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":37,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":38,"character":4}],"exports":[{"__symbolic":"reference","name":"AuthAvatarComponent"},{"__symbolic":"reference","name":"AuthPopoverMenuComponent"}],"declarations":[{"__symbolic":"reference","name":"AuthAvatarComponent"},{"__symbolic":"reference","name":"AuthPopoverMenuComponent"}],"providers":[{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalAlertsUIProviderToken","line":44,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicAlertsService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalLoadingUIProviderToken","line":45,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicLoadingService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalPickerUIProviderToken","line":46,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicPickerService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalToastUIProviderToken","line":47,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicToastService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalLegaliyDialogUIProiderToken","line":48,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicLegalityDialogService"}}]}]}],"members":{}}},"origins":{"AuthAvatarComponent":"./components/avatar/avatar.component","AuthPopoverMenuComponent":"./components/popover-menu/popover-menu.component","LinkMenuItem":"./components/popover-menu/interface","NgxAuthFirebaseuiAnimations":"./animations/index","MalIonicAlertsService":"./services/alerts-ionic.service","MalIonicLoadingService":"./services/loading-ionic.service","MalIonicPickerService":"./services/picker-ionic.service","MalIonicToastService":"./services/toast-ionic.service","MalIonicLegalityDialogService":"./services/legality-dialog-ionic.service","MalIonicModule":"./ionic.module"},"importAs":"ngx-firebase/ionic"}
@@ -1,30 +0,0 @@
1
- {
2
- "peerDependencies": {
3
- "@angular/animations": "^11.2.5",
4
- "@angular/cdk": "^11.2.4",
5
- "@angular/common": "^11.2.5",
6
- "@angular/core": "^11.2.5",
7
- "@angular/flex-layout": "^11.0.0-beta.33",
8
- "@angular/forms": "^11.2.5",
9
- "@angular/platform-browser": "^11.2.5",
10
- "@angular/platform-browser-dynamic": "^11.2.5",
11
- "@angular/router": "^11.2.5",
12
- "@ionic-native/core": "^5.30.0",
13
- "@ionic/angular": "^5.5.0",
14
- "@ngx-translate/core": "^13.0.0",
15
- "@capacitor/core": "^2.4.7",
16
- "@capacitor/ios": "^2.4.7",
17
- "ionic4-tooltips": "^2.0.2",
18
- "zone.js": "^0.11.3",
19
- "rxjs": "~6.5.4"
20
- },
21
- "main": "../bundles/ngx-firebase-ionic.umd.js",
22
- "module": "../fesm2015/ngx-firebase-ionic.js",
23
- "es2015": "../fesm2015/ngx-firebase-ionic.js",
24
- "esm2015": "../esm2015/ionic/ngx-firebase-ionic.js",
25
- "fesm2015": "../fesm2015/ngx-firebase-ionic.js",
26
- "typings": "ngx-firebase-ionic.d.ts",
27
- "metadata": "ngx-firebase-ionic.metadata.json",
28
- "sideEffects": false,
29
- "name": "ngx-firebase/ionic"
30
- }
@@ -1,4 +0,0 @@
1
- export * from './components/index';
2
- export * from './animations/index';
3
- export * from './services/index';
4
- export * from './ionic.module';
@@ -1,13 +0,0 @@
1
- import { AlertController } from '@ionic/angular';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { IYesNoAlertOptions, IOkAlertOptions, ITextAlertOptions, IAlertsUIProvider } from 'ngx-firebase';
4
- export declare class MalIonicAlertsService implements IAlertsUIProvider {
5
- private alertController;
6
- private translateService;
7
- constructor(alertController: AlertController, translateService: TranslateService);
8
- yesNoAlert(message: string, options?: IYesNoAlertOptions): Promise<boolean>;
9
- okAlert(message: string, options?: IOkAlertOptions): Promise<void>;
10
- errorAlert(message: string, options?: IOkAlertOptions): Promise<void>;
11
- infoAlert(message: string, options?: IOkAlertOptions): Promise<void>;
12
- textboxInputAlert(options: ITextAlertOptions): Promise<string | null>;
13
- }
@@ -1,5 +0,0 @@
1
- export * from './alerts-ionic.service';
2
- export * from './loading-ionic.service';
3
- export * from './picker-ionic.service';
4
- export * from './toast-ionic.service';
5
- export * from './legality-dialog-ionic.service';
@@ -1,10 +0,0 @@
1
- import { AlertController } from '@ionic/angular';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { ILegalityDialogUIProvider, MalSharedConfig } from 'ngx-firebase';
4
- export declare class MalIonicLegalityDialogService implements ILegalityDialogUIProvider {
5
- config: MalSharedConfig;
6
- private alertController;
7
- private translate;
8
- constructor(config: MalSharedConfig, alertController: AlertController, translate: TranslateService);
9
- confirmTos(): Promise<boolean | null>;
10
- }
@@ -1,17 +0,0 @@
1
- import { LoadingController } from '@ionic/angular';
2
- import { Observable, Subscription } from 'rxjs';
3
- import { TranslateService } from '@ngx-translate/core';
4
- import { ILoadingUIProvider, RemoteConfigService } from 'ngx-firebase';
5
- export declare class MalIonicLoadingService implements ILoadingUIProvider {
6
- private loadingController;
7
- private translateService;
8
- private remoteConfig;
9
- constructor(loadingController: LoadingController, translateService: TranslateService, remoteConfig: RemoteConfigService);
10
- createLoading(message?: string): Promise<HTMLIonLoadingElement>;
11
- watchLoading(source: Observable<boolean>, options?: {
12
- debounce?: number;
13
- message?: string;
14
- timeoutMs?: number | null;
15
- debug?: string;
16
- }): Promise<Subscription>;
17
- }
@@ -1,9 +0,0 @@
1
- import { PickerController } from '@ionic/angular';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import { IPickerServiceOptions, IPickerUIProvider } from 'ngx-firebase';
4
- export declare class MalIonicPickerService implements IPickerUIProvider {
5
- private pickerController;
6
- private translateService;
7
- constructor(pickerController: PickerController, translateService: TranslateService);
8
- picker<T>(options: IPickerServiceOptions): Promise<T | null>;
9
- }