@chem-po/firebase-native 0.0.16 → 0.0.18
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.
- package/README.md +215 -0
- package/lib/commonjs/adapter/auth.js +431 -0
- package/lib/commonjs/adapter/auth.js.map +1 -0
- package/lib/commonjs/adapter/db.js +103 -0
- package/lib/commonjs/adapter/db.js.map +1 -0
- package/lib/commonjs/adapter/index.js +16 -0
- package/lib/commonjs/adapter/index.js.map +1 -0
- package/lib/commonjs/adapter/storage.js +52 -0
- package/lib/commonjs/adapter/storage.js.map +1 -0
- package/lib/commonjs/auth/functions.js +11 -0
- package/lib/commonjs/auth/functions.js.map +1 -0
- package/lib/commonjs/auth/index.js +17 -0
- package/lib/commonjs/auth/index.js.map +1 -0
- package/lib/commonjs/components/AuthenticatorVerify.js +90 -0
- package/lib/commonjs/components/AuthenticatorVerify.js.map +1 -0
- package/lib/commonjs/components/FirebaseSignIn.js +196 -0
- package/lib/commonjs/components/FirebaseSignIn.js.map +1 -0
- package/lib/commonjs/components/PhoneVerify.js +123 -0
- package/lib/commonjs/components/PhoneVerify.js.map +1 -0
- package/lib/commonjs/components/TwoFactorAuthModal.js +118 -0
- package/lib/commonjs/components/TwoFactorAuthModal.js.map +1 -0
- package/lib/commonjs/components/index.js +28 -0
- package/lib/commonjs/components/index.js.map +1 -0
- package/lib/commonjs/contexts/FirebaseContext.js +48 -0
- package/lib/commonjs/contexts/FirebaseContext.js.map +1 -0
- package/lib/commonjs/contexts/index.js +17 -0
- package/lib/commonjs/contexts/index.js.map +1 -0
- package/lib/commonjs/db/index.js +17 -0
- package/lib/commonjs/db/index.js.map +1 -0
- package/lib/commonjs/db/utils.js +120 -0
- package/lib/commonjs/db/utils.js.map +1 -0
- package/lib/commonjs/hooks/backend.js +12 -0
- package/lib/commonjs/hooks/backend.js.map +1 -0
- package/lib/commonjs/hooks/index.js +17 -0
- package/lib/commonjs/hooks/index.js.map +1 -0
- package/lib/commonjs/hooks/useAuthenticatorVerify.js +52 -0
- package/lib/commonjs/hooks/useAuthenticatorVerify.js.map +1 -0
- package/lib/commonjs/hooks/usePhoneVerify.js +83 -0
- package/lib/commonjs/hooks/usePhoneVerify.js.map +1 -0
- package/lib/commonjs/icons/Google.js +29 -0
- package/lib/commonjs/icons/Google.js.map +1 -0
- package/lib/commonjs/index.js +105 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/storage/index.js +17 -0
- package/lib/commonjs/storage/index.js.map +1 -0
- package/lib/commonjs/storage/utils.js +37 -0
- package/lib/commonjs/storage/utils.js.map +1 -0
- package/lib/commonjs/types/adapter.js +6 -0
- package/lib/commonjs/types/adapter.js.map +1 -0
- package/lib/commonjs/types/auth.js +6 -0
- package/lib/commonjs/types/auth.js.map +1 -0
- package/lib/commonjs/types/db.js +6 -0
- package/lib/commonjs/types/db.js.map +1 -0
- package/lib/commonjs/types/functions.js +6 -0
- package/lib/commonjs/types/functions.js.map +1 -0
- package/lib/commonjs/types/index.js +6 -0
- package/lib/commonjs/types/index.js.map +1 -0
- package/lib/commonjs/types/storage.js +6 -0
- package/lib/commonjs/types/storage.js.map +1 -0
- package/lib/commonjs/utils/validation.js +71 -0
- package/lib/commonjs/utils/validation.js.map +1 -0
- package/lib/module/adapter/auth.js +424 -0
- package/lib/module/adapter/auth.js.map +1 -0
- package/lib/module/adapter/db.js +96 -0
- package/lib/module/adapter/db.js.map +1 -0
- package/lib/module/adapter/index.js +9 -0
- package/lib/module/adapter/index.js.map +1 -0
- package/lib/module/adapter/storage.js +45 -0
- package/lib/module/adapter/storage.js.map +1 -0
- package/lib/module/auth/functions.js +3 -0
- package/lib/module/auth/functions.js.map +1 -0
- package/lib/module/auth/index.js +2 -0
- package/lib/module/auth/index.js.map +1 -0
- package/lib/module/components/AuthenticatorVerify.js +82 -0
- package/lib/module/components/AuthenticatorVerify.js.map +1 -0
- package/lib/module/components/FirebaseSignIn.js +187 -0
- package/lib/module/components/FirebaseSignIn.js.map +1 -0
- package/lib/module/components/PhoneVerify.js +116 -0
- package/lib/module/components/PhoneVerify.js.map +1 -0
- package/lib/module/components/TwoFactorAuthModal.js +110 -0
- package/lib/module/components/TwoFactorAuthModal.js.map +1 -0
- package/lib/module/components/index.js +3 -0
- package/lib/module/components/index.js.map +1 -0
- package/lib/module/contexts/FirebaseContext.js +39 -0
- package/lib/module/contexts/FirebaseContext.js.map +1 -0
- package/lib/module/contexts/index.js +2 -0
- package/lib/module/contexts/index.js.map +1 -0
- package/lib/module/db/index.js +2 -0
- package/lib/module/db/index.js.map +1 -0
- package/lib/module/db/utils.js +111 -0
- package/lib/module/db/utils.js.map +1 -0
- package/lib/module/hooks/backend.js +5 -0
- package/lib/module/hooks/backend.js.map +1 -0
- package/lib/module/hooks/index.js +2 -0
- package/lib/module/hooks/index.js.map +1 -0
- package/lib/module/hooks/useAuthenticatorVerify.js +45 -0
- package/lib/module/hooks/useAuthenticatorVerify.js.map +1 -0
- package/lib/module/hooks/usePhoneVerify.js +76 -0
- package/lib/module/hooks/usePhoneVerify.js.map +1 -0
- package/lib/module/icons/Google.js +22 -0
- package/lib/module/icons/Google.js.map +1 -0
- package/lib/module/index.js +10 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/storage/index.js +2 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/storage/utils.js +30 -0
- package/lib/module/storage/utils.js.map +1 -0
- package/lib/module/types/adapter.js +2 -0
- package/lib/module/types/adapter.js.map +1 -0
- package/lib/module/types/auth.js +2 -0
- package/lib/module/types/auth.js.map +1 -0
- package/lib/module/types/db.js +2 -0
- package/lib/module/types/db.js.map +1 -0
- package/lib/module/types/functions.js +2 -0
- package/lib/module/types/functions.js.map +1 -0
- package/lib/module/types/index.js +2 -0
- package/lib/module/types/index.js.map +1 -0
- package/lib/module/types/storage.js +2 -0
- package/lib/module/types/storage.js.map +1 -0
- package/lib/module/utils/validation.js +62 -0
- package/lib/module/utils/validation.js.map +1 -0
- package/lib/typescript/adapter/auth.d.ts +7 -0
- package/lib/typescript/adapter/auth.d.ts.map +1 -0
- package/lib/typescript/adapter/db.d.ts +5 -0
- package/lib/typescript/adapter/db.d.ts.map +1 -0
- package/lib/typescript/adapter/index.d.ts +9 -0
- package/lib/typescript/adapter/index.d.ts.map +1 -0
- package/lib/typescript/adapter/storage.d.ts +4 -0
- package/lib/typescript/adapter/storage.d.ts.map +1 -0
- package/lib/typescript/auth/functions.d.ts +4 -0
- package/lib/typescript/auth/functions.d.ts.map +1 -0
- package/lib/typescript/auth/index.d.ts +2 -0
- package/lib/typescript/auth/index.d.ts.map +1 -0
- package/lib/typescript/components/AuthenticatorVerify.d.ts +3 -0
- package/lib/typescript/components/AuthenticatorVerify.d.ts.map +1 -0
- package/lib/typescript/components/FirebaseSignIn.d.ts +6 -0
- package/lib/typescript/components/FirebaseSignIn.d.ts.map +1 -0
- package/lib/typescript/components/PhoneVerify.d.ts +6 -0
- package/lib/typescript/components/PhoneVerify.d.ts.map +1 -0
- package/lib/typescript/components/TwoFactorAuthModal.d.ts +3 -0
- package/lib/typescript/components/TwoFactorAuthModal.d.ts.map +1 -0
- package/lib/typescript/components/index.d.ts +3 -0
- package/lib/typescript/components/index.d.ts.map +1 -0
- package/lib/typescript/contexts/FirebaseContext.d.ts +9 -0
- package/lib/typescript/contexts/FirebaseContext.d.ts.map +1 -0
- package/lib/typescript/contexts/index.d.ts +2 -0
- package/lib/typescript/contexts/index.d.ts.map +1 -0
- package/lib/typescript/db/index.d.ts +2 -0
- package/lib/typescript/db/index.d.ts.map +1 -0
- package/lib/typescript/db/utils.d.ts +6 -0
- package/lib/typescript/db/utils.d.ts.map +1 -0
- package/lib/typescript/hooks/backend.d.ts +2 -0
- package/lib/typescript/hooks/backend.d.ts.map +1 -0
- package/lib/typescript/hooks/index.d.ts +2 -0
- package/lib/typescript/hooks/index.d.ts.map +1 -0
- package/lib/typescript/hooks/useAuthenticatorVerify.d.ts +8 -0
- package/lib/typescript/hooks/useAuthenticatorVerify.d.ts.map +1 -0
- package/lib/typescript/hooks/usePhoneVerify.d.ts +9 -0
- package/lib/typescript/hooks/usePhoneVerify.d.ts.map +1 -0
- package/lib/typescript/icons/Google.d.ts +5 -0
- package/lib/typescript/icons/Google.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +10 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/storage/index.d.ts +2 -0
- package/lib/typescript/storage/index.d.ts.map +1 -0
- package/lib/typescript/storage/utils.d.ts +4 -0
- package/lib/typescript/storage/utils.d.ts.map +1 -0
- package/lib/typescript/types/adapter.d.ts +6 -0
- package/lib/typescript/types/adapter.d.ts.map +1 -0
- package/lib/typescript/types/auth.d.ts +12 -0
- package/lib/typescript/types/auth.d.ts.map +1 -0
- package/lib/typescript/types/db.d.ts +8 -0
- package/lib/typescript/types/db.d.ts.map +1 -0
- package/lib/typescript/types/functions.d.ts +3 -0
- package/lib/typescript/types/functions.d.ts.map +1 -0
- package/lib/typescript/types/index.d.ts +24 -0
- package/lib/typescript/types/index.d.ts.map +1 -0
- package/lib/typescript/types/storage.d.ts +3 -0
- package/lib/typescript/types/storage.d.ts.map +1 -0
- package/lib/typescript/utils/validation.d.ts +21 -0
- package/lib/typescript/utils/validation.d.ts.map +1 -0
- package/package.json +29 -12
- package/src/adapter/auth.ts +474 -0
- package/src/adapter/db.ts +146 -0
- package/src/adapter/index.ts +30 -0
- package/src/adapter/storage.ts +58 -0
- package/src/auth/functions.ts +7 -0
- package/src/auth/index.ts +1 -0
- package/src/components/AuthenticatorVerify.tsx +75 -0
- package/src/components/FirebaseSignIn.tsx +187 -0
- package/src/components/PhoneVerify.tsx +102 -0
- package/src/components/TwoFactorAuthModal.tsx +133 -0
- package/src/components/index.ts +2 -0
- package/src/contexts/FirebaseContext.tsx +54 -0
- package/src/contexts/index.ts +1 -0
- package/src/db/index.ts +1 -0
- package/src/db/utils.ts +142 -0
- package/src/hooks/backend.ts +4 -0
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useAuthenticatorVerify.ts +45 -0
- package/src/hooks/usePhoneVerify.ts +76 -0
- package/src/icons/Google.tsx +24 -0
- package/src/index.ts +9 -0
- package/src/storage/index.ts +1 -0
- package/src/storage/utils.ts +29 -0
- package/src/types/adapter.ts +13 -0
- package/src/types/auth.ts +13 -0
- package/src/types/db.ts +10 -0
- package/src/types/functions.ts +3 -0
- package/src/types/index.ts +26 -0
- package/src/types/storage.ts +3 -0
- package/src/utils/validation.ts +85 -0
package/README.md
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# @chem-po/firebase-native
|
|
2
|
+
|
|
3
|
+
React Native Firebase integration for ChemPo ecosystem.
|
|
4
|
+
|
|
5
|
+
## 🚀 Quick Start
|
|
6
|
+
|
|
7
|
+
### Prerequisites
|
|
8
|
+
|
|
9
|
+
Before using this package, ensure your React Native app has:
|
|
10
|
+
|
|
11
|
+
1. **Firebase Project Setup**
|
|
12
|
+
|
|
13
|
+
- Create a Firebase project at https://console.firebase.google.com
|
|
14
|
+
- Enable Authentication with desired providers (Email/Password, Google)
|
|
15
|
+
- Enable Firestore Database
|
|
16
|
+
- Enable Cloud Storage
|
|
17
|
+
|
|
18
|
+
2. **Platform Configuration**
|
|
19
|
+
|
|
20
|
+
#### iOS Setup
|
|
21
|
+
|
|
22
|
+
1. Download `GoogleService-Info.plist` from Firebase Console
|
|
23
|
+
2. Add it to your iOS project root
|
|
24
|
+
3. Configure URL schemes in `ios/[ProjectName]/Info.plist`:
|
|
25
|
+
|
|
26
|
+
```xml
|
|
27
|
+
<key>CFBundleURLTypes</key>
|
|
28
|
+
<array>
|
|
29
|
+
<dict>
|
|
30
|
+
<key>CFBundleURLName</key>
|
|
31
|
+
<string>REVERSED_CLIENT_ID</string>
|
|
32
|
+
<key>CFBundleURLSchemes</key>
|
|
33
|
+
<array>
|
|
34
|
+
<string>YOUR_REVERSED_CLIENT_ID</string>
|
|
35
|
+
</array>
|
|
36
|
+
</dict>
|
|
37
|
+
</array>
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
#### Android Setup
|
|
41
|
+
|
|
42
|
+
1. Download `google-services.json` from Firebase Console
|
|
43
|
+
2. Place it in `android/app/google-services.json`
|
|
44
|
+
3. Ensure package name matches Firebase configuration
|
|
45
|
+
|
|
46
|
+
### Installation
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
npm install @chem-po/firebase-native
|
|
50
|
+
# or
|
|
51
|
+
yarn add @chem-po/firebase-native
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Required Peer Dependencies
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm install @react-native-firebase/app @react-native-firebase/auth @react-native-firebase/firestore @react-native-firebase/storage @react-native-firebase/functions @react-native-google-signin/google-signin
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## 📱 Configuration
|
|
61
|
+
|
|
62
|
+
### 1. Firebase Initialization
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import { getAuth } from '@react-native-firebase/auth'
|
|
66
|
+
import { getFirestore } from '@react-native-firebase/firestore'
|
|
67
|
+
import { getStorage } from '@react-native-firebase/storage'
|
|
68
|
+
import { getFunctions } from '@react-native-firebase/functions'
|
|
69
|
+
import { getFirebaseAdapter } from '@chem-po/firebase-native'
|
|
70
|
+
|
|
71
|
+
// Initialize Firebase services
|
|
72
|
+
const auth = getAuth()
|
|
73
|
+
const firestore = getFirestore()
|
|
74
|
+
const storage = getStorage()
|
|
75
|
+
const functions = getFunctions()
|
|
76
|
+
|
|
77
|
+
// Create backend adapter
|
|
78
|
+
const backendAdapter = getFirebaseAdapter(
|
|
79
|
+
auth,
|
|
80
|
+
firestore,
|
|
81
|
+
storage,
|
|
82
|
+
functions,
|
|
83
|
+
true // Enable two-factor authentication
|
|
84
|
+
)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 2. Google Authentication Setup
|
|
88
|
+
|
|
89
|
+
**⚠️ REQUIRED**: You must provide your Google Web Client ID:
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
import { GoogleAuthProvider } from '@chem-po/core'
|
|
93
|
+
|
|
94
|
+
// Get this from Firebase Console > Authentication > Sign-in method > Google > Web SDK configuration
|
|
95
|
+
const googleAuthProvider: GoogleAuthProvider = {
|
|
96
|
+
name: 'google',
|
|
97
|
+
webClientId: 'YOUR_GOOGLE_WEB_CLIENT_ID.apps.googleusercontent.com',
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 3. Provider Setup
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
import { ChempoNativeProvider } from '@chem-po/react-native'
|
|
105
|
+
import { FirebaseSignIn } from '@chem-po/firebase-native'
|
|
106
|
+
|
|
107
|
+
export default function App() {
|
|
108
|
+
return (
|
|
109
|
+
<ChempoNativeProvider backendAdapter={backendAdapter}>
|
|
110
|
+
<FirebaseSignIn googleProvider={googleAuthProvider} />
|
|
111
|
+
</ChempoNativeProvider>
|
|
112
|
+
)
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 🔐 Environment Variables
|
|
117
|
+
|
|
118
|
+
For debug logging (optional):
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
EXPO_PUBLIC_DEBUG=true # Enable debug logging
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## 🔧 Configuration Validation
|
|
125
|
+
|
|
126
|
+
Use the built-in validation helper to identify setup issues early:
|
|
127
|
+
|
|
128
|
+
```typescript
|
|
129
|
+
import { validateAndLogAuthConfig } from '@chem-po/firebase-native'
|
|
130
|
+
|
|
131
|
+
// Validate your auth providers configuration
|
|
132
|
+
const providers = [googleAuthProvider] // Your auth providers
|
|
133
|
+
validateAndLogAuthConfig(providers)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
This will output helpful warnings and errors if configuration is missing or incorrect:
|
|
137
|
+
|
|
138
|
+
- ❌ Missing Google webClientId
|
|
139
|
+
- ⚠️ Incorrect webClientId format
|
|
140
|
+
- ⚠️ Missing Firebase configuration files
|
|
141
|
+
|
|
142
|
+
**Tip**: Call this during development to catch configuration issues before they cause runtime errors.
|
|
143
|
+
|
|
144
|
+
## 🚨 Common Issues
|
|
145
|
+
|
|
146
|
+
### "Google web client ID is required"
|
|
147
|
+
|
|
148
|
+
- Ensure you've added the `webClientId` to your Google auth provider
|
|
149
|
+
- Verify the client ID matches your Firebase project configuration
|
|
150
|
+
- Use the validation helper to check your configuration
|
|
151
|
+
|
|
152
|
+
### "No user found"
|
|
153
|
+
|
|
154
|
+
- Check Firebase Authentication is enabled
|
|
155
|
+
- Verify Google Services files are properly configured
|
|
156
|
+
- Ensure bundle ID/package name matches Firebase project
|
|
157
|
+
|
|
158
|
+
### Multi-factor Authentication Issues
|
|
159
|
+
|
|
160
|
+
- Ensure users have enrolled MFA factors via Firebase Console
|
|
161
|
+
- Check that `twoFactorRequired` parameter matches your requirements
|
|
162
|
+
|
|
163
|
+
### Google Play Services Issues
|
|
164
|
+
|
|
165
|
+
- Ensure Google Play Services is installed and up to date
|
|
166
|
+
- Check that your app's package name matches Firebase configuration
|
|
167
|
+
|
|
168
|
+
## 📚 API Reference
|
|
169
|
+
|
|
170
|
+
### getFirebaseAdapter
|
|
171
|
+
|
|
172
|
+
Creates a Firebase backend adapter with authentication, database, and storage.
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
getFirebaseAdapter(
|
|
176
|
+
auth: Auth,
|
|
177
|
+
db: Firestore,
|
|
178
|
+
storage: Storage,
|
|
179
|
+
functions: Functions,
|
|
180
|
+
twoFactorRequired: boolean
|
|
181
|
+
): FirebaseAdapter
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### FirebaseSignIn Component
|
|
185
|
+
|
|
186
|
+
Pre-built authentication component with Google Sign-in support.
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
<FirebaseSignIn
|
|
190
|
+
googleProvider={googleAuthProvider}
|
|
191
|
+
/>
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### Configuration Validation
|
|
195
|
+
|
|
196
|
+
Utility functions to validate your Firebase configuration:
|
|
197
|
+
|
|
198
|
+
```typescript
|
|
199
|
+
// Validate configuration and get results
|
|
200
|
+
const result = validateAuthConfiguration(providers)
|
|
201
|
+
|
|
202
|
+
// Validate and log results automatically
|
|
203
|
+
validateAndLogAuthConfig(providers)
|
|
204
|
+
|
|
205
|
+
// Custom logging
|
|
206
|
+
logValidationResults(result, 'MyApp')
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## 🤝 Support
|
|
210
|
+
|
|
211
|
+
For issues related to:
|
|
212
|
+
|
|
213
|
+
- Firebase configuration: Check [Firebase Documentation](https://firebase.google.com/docs)
|
|
214
|
+
- React Native Firebase: Check [@react-native-firebase/app](https://rnfirebase.io/)
|
|
215
|
+
- Google Sign-in: Check [@react-native-google-signin](https://github.com/react-native-google-signin/google-signin)
|
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getFirebaseAuthAdapter = void 0;
|
|
7
|
+
var _auth = require("@react-native-firebase/auth");
|
|
8
|
+
var _googleSignin = require("@react-native-google-signin/google-signin");
|
|
9
|
+
var _process$env;
|
|
10
|
+
const isDebug = typeof process !== 'undefined' && ((_process$env = process.env) === null || _process$env === void 0 ? void 0 : _process$env.EXPO_PUBLIC_DEBUG) === 'true' || false;
|
|
11
|
+
const debugLog = (message, data) => {
|
|
12
|
+
if (isDebug) {
|
|
13
|
+
console.log(`[FirebaseAuth Debug] ${message}`, data || '');
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const providerInitialized = {};
|
|
17
|
+
const getUserWithRole = async user => {
|
|
18
|
+
debugLog('Getting user with role', {
|
|
19
|
+
uid: user.uid,
|
|
20
|
+
email: user.email
|
|
21
|
+
});
|
|
22
|
+
try {
|
|
23
|
+
var _user$multiFactor, _user$multiFactor2;
|
|
24
|
+
const {
|
|
25
|
+
claims
|
|
26
|
+
} = await (0, _auth.getIdTokenResult)(user);
|
|
27
|
+
debugLog('Retrieved ID token claims', {
|
|
28
|
+
role: claims.role,
|
|
29
|
+
customClaims: Object.keys(claims)
|
|
30
|
+
});
|
|
31
|
+
const userWithRole = {
|
|
32
|
+
...user,
|
|
33
|
+
role: claims.role ?? 'user',
|
|
34
|
+
multiFactorVerified: !!((_user$multiFactor = user.multiFactor) !== null && _user$multiFactor !== void 0 && _user$multiFactor.enrolledFactors.length)
|
|
35
|
+
};
|
|
36
|
+
debugLog('User with role created', {
|
|
37
|
+
uid: userWithRole.uid,
|
|
38
|
+
role: userWithRole.role,
|
|
39
|
+
multiFactorVerified: userWithRole.multiFactorVerified,
|
|
40
|
+
enrolledFactorsCount: ((_user$multiFactor2 = user.multiFactor) === null || _user$multiFactor2 === void 0 ? void 0 : _user$multiFactor2.enrolledFactors.length) || 0
|
|
41
|
+
});
|
|
42
|
+
return userWithRole;
|
|
43
|
+
} catch (error) {
|
|
44
|
+
debugLog('Error getting user with role', error);
|
|
45
|
+
throw error;
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
const toEnrollmentFactor = hint => {
|
|
49
|
+
if (hint.factorId === _auth.PhoneMultiFactorGenerator.FACTOR_ID) {
|
|
50
|
+
return {
|
|
51
|
+
type: 'phone',
|
|
52
|
+
phoneNumber: hint.phoneNumber,
|
|
53
|
+
enrollmentTime: hint.enrollmentTime,
|
|
54
|
+
displayName: hint.displayName,
|
|
55
|
+
uid: hint.uid
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (hint.factorId === 'totp') {
|
|
59
|
+
return {
|
|
60
|
+
type: 'totp',
|
|
61
|
+
enrollmentTime: hint.enrollmentTime,
|
|
62
|
+
displayName: hint.displayName,
|
|
63
|
+
uid: hint.uid
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
throw new Error('Unsupported factor type: ' + hint.factorId);
|
|
67
|
+
};
|
|
68
|
+
const toFirebaseFactor = factor => {
|
|
69
|
+
if (factor.type === 'phone') {
|
|
70
|
+
return {
|
|
71
|
+
factorId: _auth.PhoneMultiFactorGenerator.FACTOR_ID,
|
|
72
|
+
phoneNumber: factor.phoneNumber,
|
|
73
|
+
enrollmentTime: factor.enrollmentTime,
|
|
74
|
+
uid: factor.uid,
|
|
75
|
+
displayName: factor.displayName
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
if (factor.type === 'totp') {
|
|
79
|
+
return {
|
|
80
|
+
factorId: 'totp',
|
|
81
|
+
enrollmentTime: factor.enrollmentTime,
|
|
82
|
+
uid: factor.uid,
|
|
83
|
+
displayName: factor.displayName
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
throw new Error(`Unsupported factor type: ${factor.factorId ?? 'Missing factor type'}`);
|
|
87
|
+
};
|
|
88
|
+
const sendMultiFactorCode = async (auth, factor, resolver) => {
|
|
89
|
+
debugLog('Sending multi-factor code', {
|
|
90
|
+
factorType: factor.type,
|
|
91
|
+
factorUid: factor.uid
|
|
92
|
+
});
|
|
93
|
+
const sessionId = resolver.session;
|
|
94
|
+
// const verificationId = await new PhoneAuthProvider(auth).verifyPhoneNumber(phoneSignInFactor, sessionId)
|
|
95
|
+
if (factor.type === 'phone') {
|
|
96
|
+
try {
|
|
97
|
+
const verificationId = await auth.verifyPhoneNumberWithMultiFactorInfo(toFirebaseFactor(factor), sessionId);
|
|
98
|
+
debugLog('Multi-factor code sent successfully', {
|
|
99
|
+
verificationId: verificationId.substring(0, 10) + '...'
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
verificationId,
|
|
103
|
+
factor,
|
|
104
|
+
resolver
|
|
105
|
+
};
|
|
106
|
+
} catch (error) {
|
|
107
|
+
debugLog('Error sending multi-factor code', error);
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
throw new Error(`Unsupported factor type: ${factor.type ?? 'Missing factor type'}`);
|
|
112
|
+
};
|
|
113
|
+
const getEnrolledFactors = async (auth, error) => {
|
|
114
|
+
debugLog('Getting enrolled factors from error', {
|
|
115
|
+
errorCode: error === null || error === void 0 ? void 0 : error.code
|
|
116
|
+
});
|
|
117
|
+
try {
|
|
118
|
+
const resolver = (0, _auth.getMultiFactorResolver)(auth, error);
|
|
119
|
+
debugLog('Multi-factor resolver created', {
|
|
120
|
+
hintsCount: resolver.hints.length
|
|
121
|
+
});
|
|
122
|
+
if (resolver.hints.length === 0) {
|
|
123
|
+
debugLog('No enrolled factors found');
|
|
124
|
+
throw new Error('No multi-factor verification methods found, please enroll one on the website');
|
|
125
|
+
}
|
|
126
|
+
const enrollmentFactors = resolver.hints.map(toEnrollmentFactor);
|
|
127
|
+
debugLog('Enrollment factors mapped', {
|
|
128
|
+
factors: enrollmentFactors.map(f => ({
|
|
129
|
+
type: f.type,
|
|
130
|
+
uid: f.uid
|
|
131
|
+
}))
|
|
132
|
+
});
|
|
133
|
+
return {
|
|
134
|
+
enrollmentFactors,
|
|
135
|
+
multiFactorResolver: resolver
|
|
136
|
+
};
|
|
137
|
+
} catch (error) {
|
|
138
|
+
debugLog('Error getting enrolled factors', error);
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
const verifyMultiFactor = async (verification, code) => {
|
|
143
|
+
debugLog('Verifying multi-factor code', {
|
|
144
|
+
factorType: verification.factor.type,
|
|
145
|
+
codeLength: code.length
|
|
146
|
+
});
|
|
147
|
+
try {
|
|
148
|
+
var _userCredential$user;
|
|
149
|
+
const credential = await _auth.PhoneAuthProvider.credential(verification.verificationId, code);
|
|
150
|
+
debugLog('Phone credential created');
|
|
151
|
+
const assertion = _auth.PhoneMultiFactorGenerator.assertion(credential);
|
|
152
|
+
debugLog('Multi-factor assertion created');
|
|
153
|
+
const resolver = verification.resolver;
|
|
154
|
+
if (!resolver) {
|
|
155
|
+
debugLog('Multi-factor resolver not found');
|
|
156
|
+
throw new Error('Internal error signing in with two factor: resolver not found');
|
|
157
|
+
}
|
|
158
|
+
const userCredential = await resolver.resolveSignIn(assertion);
|
|
159
|
+
debugLog('Multi-factor sign-in resolved', {
|
|
160
|
+
uid: (_userCredential$user = userCredential.user) === null || _userCredential$user === void 0 ? void 0 : _userCredential$user.uid
|
|
161
|
+
});
|
|
162
|
+
const user = userCredential.user;
|
|
163
|
+
if (!user) {
|
|
164
|
+
debugLog('No user found after multi-factor resolution');
|
|
165
|
+
throw new Error('No user found');
|
|
166
|
+
}
|
|
167
|
+
const userWithRole = await getUserWithRole(user);
|
|
168
|
+
debugLog('Multi-factor verification completed successfully');
|
|
169
|
+
return {
|
|
170
|
+
user: userWithRole
|
|
171
|
+
};
|
|
172
|
+
} catch (error) {
|
|
173
|
+
debugLog('Error verifying multi-factor', error);
|
|
174
|
+
throw error;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
const handleSignInError = async error => {
|
|
178
|
+
debugLog('Handling sign-in error', {
|
|
179
|
+
code: error === null || error === void 0 ? void 0 : error.code,
|
|
180
|
+
message: error === null || error === void 0 ? void 0 : error.message
|
|
181
|
+
});
|
|
182
|
+
if (error.code === 'auth/multi-factor-auth-required') {
|
|
183
|
+
debugLog('Multi-factor authentication required');
|
|
184
|
+
return {
|
|
185
|
+
requestArgs: error
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
debugLog('Re-throwing sign-in error');
|
|
189
|
+
throw error;
|
|
190
|
+
};
|
|
191
|
+
const initializeProvider = async provider => {
|
|
192
|
+
debugLog('Initializing provider', {
|
|
193
|
+
name: provider.name,
|
|
194
|
+
alreadyInitialized: providerInitialized[provider.name]
|
|
195
|
+
});
|
|
196
|
+
if (providerInitialized[provider.name]) {
|
|
197
|
+
debugLog('Provider already initialized, skipping');
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
switch (provider.name) {
|
|
201
|
+
case 'google':
|
|
202
|
+
debugLog('Initializing Google provider', {
|
|
203
|
+
webClientId: !!provider.webClientId
|
|
204
|
+
});
|
|
205
|
+
if (!provider.webClientId) {
|
|
206
|
+
debugLog('Google web client ID missing');
|
|
207
|
+
throw new Error('Google web client ID is required when using Google Auth. ' + 'Get your webClientId from Firebase Console > Authentication > Sign-in method > Google > Web SDK configuration. ' + 'Then provide it in your GoogleAuthProvider: { name: "google", webClientId: "YOUR_CLIENT_ID" }');
|
|
208
|
+
}
|
|
209
|
+
try {
|
|
210
|
+
await _googleSignin.GoogleSignin.hasPlayServices({
|
|
211
|
+
showPlayServicesUpdateDialog: true
|
|
212
|
+
});
|
|
213
|
+
debugLog('Google Play Services available');
|
|
214
|
+
_googleSignin.GoogleSignin.configure({
|
|
215
|
+
webClientId: provider.webClientId
|
|
216
|
+
});
|
|
217
|
+
debugLog('Google Sign-In configured successfully');
|
|
218
|
+
} catch (error) {
|
|
219
|
+
debugLog('Error initializing Google provider', error);
|
|
220
|
+
if (error instanceof Error && error.message.includes('UNAVAILABLE')) {
|
|
221
|
+
throw new Error('Google Play Services is not available or needs to be updated. ' + 'Please ensure Google Play Services is installed and up to date on this device.');
|
|
222
|
+
}
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
break;
|
|
226
|
+
case 'email':
|
|
227
|
+
debugLog('Email provider initialization (no special setup required)');
|
|
228
|
+
// Native SDK doesn't need special initialization
|
|
229
|
+
break;
|
|
230
|
+
default:
|
|
231
|
+
debugLog('Unsupported provider', {
|
|
232
|
+
name: provider.name
|
|
233
|
+
});
|
|
234
|
+
throw new Error(`Unsupported provider: ${provider.name}`);
|
|
235
|
+
}
|
|
236
|
+
providerInitialized[provider.name] = true;
|
|
237
|
+
debugLog('Provider initialization completed', {
|
|
238
|
+
name: provider.name
|
|
239
|
+
});
|
|
240
|
+
};
|
|
241
|
+
const handleInitialLogin = async (userCredential, twoFactorRequired) => {
|
|
242
|
+
var _userCredential$user2, _userCredential$user3;
|
|
243
|
+
debugLog('Handling initial login', {
|
|
244
|
+
uid: (_userCredential$user2 = userCredential.user) === null || _userCredential$user2 === void 0 ? void 0 : _userCredential$user2.uid,
|
|
245
|
+
twoFactorRequired,
|
|
246
|
+
enrolledFactorsCount: ((_userCredential$user3 = userCredential.user) === null || _userCredential$user3 === void 0 || (_userCredential$user3 = _userCredential$user3.multiFactor) === null || _userCredential$user3 === void 0 ? void 0 : _userCredential$user3.enrolledFactors.length) || 0
|
|
247
|
+
});
|
|
248
|
+
const user = userCredential.user;
|
|
249
|
+
if (!user) {
|
|
250
|
+
debugLog('No user found in credential');
|
|
251
|
+
throw new Error('No user found');
|
|
252
|
+
}
|
|
253
|
+
if (twoFactorRequired) {
|
|
254
|
+
debugLog('Two-factor authentication is required but user has no enrolled factors');
|
|
255
|
+
throw new Error('This app requires two factor authentication, please enroll a factor on the website and try again');
|
|
256
|
+
}
|
|
257
|
+
const userWithRole = await getUserWithRole(user);
|
|
258
|
+
debugLog('Initial login completed successfully');
|
|
259
|
+
return {
|
|
260
|
+
user: userWithRole
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
const loginWithGoogle = async (auth, twoFactorRequired) => {
|
|
264
|
+
debugLog('Starting Google sign-in', {
|
|
265
|
+
twoFactorRequired
|
|
266
|
+
});
|
|
267
|
+
try {
|
|
268
|
+
var _signInResult$data, _signInResult$data2;
|
|
269
|
+
debugLog('Calling GoogleSignin.signIn()');
|
|
270
|
+
const signInResult = await _googleSignin.GoogleSignin.signIn();
|
|
271
|
+
debugLog('Google sign-in result received', {
|
|
272
|
+
hasIdToken: !!((_signInResult$data = signInResult.data) !== null && _signInResult$data !== void 0 && _signInResult$data.idToken)
|
|
273
|
+
});
|
|
274
|
+
const idToken = (_signInResult$data2 = signInResult.data) === null || _signInResult$data2 === void 0 ? void 0 : _signInResult$data2.idToken;
|
|
275
|
+
if (!idToken) {
|
|
276
|
+
debugLog('No ID token found in Google sign-in result');
|
|
277
|
+
throw new Error('No ID token found');
|
|
278
|
+
}
|
|
279
|
+
debugLog('Creating Google credential');
|
|
280
|
+
const googleCredential = _auth.GoogleAuthProvider.credential(idToken);
|
|
281
|
+
debugLog('Signing in with Google credential');
|
|
282
|
+
const userCredential = await (0, _auth.signInWithCredential)(auth, googleCredential);
|
|
283
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
284
|
+
} catch (error) {
|
|
285
|
+
debugLog('Error in Google sign-in', error);
|
|
286
|
+
return await handleSignInError(error);
|
|
287
|
+
}
|
|
288
|
+
};
|
|
289
|
+
const getLoginWithPassword = (auth, twoFactorRequired) => async (provider, {
|
|
290
|
+
email,
|
|
291
|
+
password
|
|
292
|
+
}) => {
|
|
293
|
+
debugLog('Starting email/password sign-in', {
|
|
294
|
+
provider: provider.name,
|
|
295
|
+
email,
|
|
296
|
+
twoFactorRequired
|
|
297
|
+
});
|
|
298
|
+
await initializeProvider(provider);
|
|
299
|
+
try {
|
|
300
|
+
var _userCredential$user4;
|
|
301
|
+
debugLog('Calling signInWithEmailAndPassword');
|
|
302
|
+
const userCredential = await (0, _auth.signInWithEmailAndPassword)(auth, email, password);
|
|
303
|
+
debugLog('Email/password sign-in successful', {
|
|
304
|
+
uid: (_userCredential$user4 = userCredential.user) === null || _userCredential$user4 === void 0 ? void 0 : _userCredential$user4.uid
|
|
305
|
+
});
|
|
306
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
307
|
+
} catch (error) {
|
|
308
|
+
debugLog('Error in email/password sign-in', error);
|
|
309
|
+
return await handleSignInError(error);
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
const getLoginWithPopup = (auth, twoFactorRequired) => async provider => {
|
|
313
|
+
debugLog('Starting popup sign-in', {
|
|
314
|
+
provider: provider.name,
|
|
315
|
+
twoFactorRequired
|
|
316
|
+
});
|
|
317
|
+
await initializeProvider(provider);
|
|
318
|
+
switch (provider.name) {
|
|
319
|
+
case 'google':
|
|
320
|
+
return loginWithGoogle(auth, twoFactorRequired);
|
|
321
|
+
default:
|
|
322
|
+
debugLog('Unsupported popup provider', {
|
|
323
|
+
name: provider.name
|
|
324
|
+
});
|
|
325
|
+
throw new Error(`Unsupported provider: ${provider.name}`);
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
const getLoginWithToken = (auth, twoFactorRequired) => async (provider, token) => {
|
|
329
|
+
debugLog('Starting token sign-in', {
|
|
330
|
+
provider: provider.name,
|
|
331
|
+
tokenLength: token.length,
|
|
332
|
+
twoFactorRequired
|
|
333
|
+
});
|
|
334
|
+
await initializeProvider(provider);
|
|
335
|
+
try {
|
|
336
|
+
var _userCredential$user5;
|
|
337
|
+
debugLog('Calling signInWithCustomToken');
|
|
338
|
+
const userCredential = await (0, _auth.signInWithCustomToken)(auth, token);
|
|
339
|
+
debugLog('Token sign-in successful', {
|
|
340
|
+
uid: (_userCredential$user5 = userCredential.user) === null || _userCredential$user5 === void 0 ? void 0 : _userCredential$user5.uid
|
|
341
|
+
});
|
|
342
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
343
|
+
} catch (error) {
|
|
344
|
+
debugLog('Error in token sign-in', error);
|
|
345
|
+
return await handleSignInError(error);
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
const resetPassword = async (auth, provider, usernameOrEmail) => {
|
|
349
|
+
debugLog('Starting password reset', {
|
|
350
|
+
provider: provider.name,
|
|
351
|
+
email: usernameOrEmail
|
|
352
|
+
});
|
|
353
|
+
await initializeProvider(provider);
|
|
354
|
+
try {
|
|
355
|
+
await (0, _auth.sendPasswordResetEmail)(auth, usernameOrEmail);
|
|
356
|
+
debugLog('Password reset email sent successfully');
|
|
357
|
+
} catch (error) {
|
|
358
|
+
debugLog('Error sending password reset email', error);
|
|
359
|
+
throw error;
|
|
360
|
+
}
|
|
361
|
+
};
|
|
362
|
+
const getFirebaseAuthAdapter = (auth, twoFactorRequired) => {
|
|
363
|
+
debugLog('Creating Firebase Auth Adapter', {
|
|
364
|
+
twoFactorRequired
|
|
365
|
+
});
|
|
366
|
+
return {
|
|
367
|
+
twoFactorRequired,
|
|
368
|
+
getCurrentUser: async () => {
|
|
369
|
+
debugLog('Getting current user');
|
|
370
|
+
const user = auth.currentUser;
|
|
371
|
+
if (!user) {
|
|
372
|
+
debugLog('No current user found');
|
|
373
|
+
return null;
|
|
374
|
+
}
|
|
375
|
+
debugLog('Current user found', {
|
|
376
|
+
uid: user.uid,
|
|
377
|
+
email: user.email
|
|
378
|
+
});
|
|
379
|
+
return getUserWithRole(user);
|
|
380
|
+
},
|
|
381
|
+
loginWithPassword: getLoginWithPassword(auth, twoFactorRequired),
|
|
382
|
+
loginWithPopup: getLoginWithPopup(auth, twoFactorRequired),
|
|
383
|
+
loginWithToken: getLoginWithToken(auth, twoFactorRequired),
|
|
384
|
+
resetPassword: (...args) => {
|
|
385
|
+
return resetPassword(auth, ...args);
|
|
386
|
+
},
|
|
387
|
+
verifyMultiFactor,
|
|
388
|
+
sendMultiFactorCode: (...args) => {
|
|
389
|
+
return sendMultiFactorCode(auth, ...args);
|
|
390
|
+
},
|
|
391
|
+
getEnrolledFactors: (...args) => {
|
|
392
|
+
return getEnrolledFactors(auth, ...args);
|
|
393
|
+
},
|
|
394
|
+
logout: async () => {
|
|
395
|
+
debugLog('Starting logout');
|
|
396
|
+
try {
|
|
397
|
+
await (0, _auth.signOut)(auth);
|
|
398
|
+
debugLog('Logout completed successfully');
|
|
399
|
+
} catch (error) {
|
|
400
|
+
debugLog('Error during logout', error);
|
|
401
|
+
throw error;
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
subscribeToUser: callback => {
|
|
405
|
+
debugLog('Setting up user subscription');
|
|
406
|
+
return (0, _auth.onAuthStateChanged)(auth, user => {
|
|
407
|
+
if (!user) {
|
|
408
|
+
debugLog('User state changed: signed out');
|
|
409
|
+
callback(null);
|
|
410
|
+
return;
|
|
411
|
+
}
|
|
412
|
+
debugLog('User state changed: user signed in', {
|
|
413
|
+
uid: user.uid,
|
|
414
|
+
email: user.email
|
|
415
|
+
});
|
|
416
|
+
getUserWithRole(user).then(result => {
|
|
417
|
+
debugLog('User subscription callback completed', {
|
|
418
|
+
uid: result.uid,
|
|
419
|
+
role: result.role
|
|
420
|
+
});
|
|
421
|
+
callback(result);
|
|
422
|
+
}).catch(error => {
|
|
423
|
+
debugLog('Error in user subscription callback', error);
|
|
424
|
+
callback(null);
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
};
|
|
429
|
+
};
|
|
430
|
+
exports.getFirebaseAuthAdapter = getFirebaseAuthAdapter;
|
|
431
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_auth","require","_googleSignin","_process$env","isDebug","process","env","EXPO_PUBLIC_DEBUG","debugLog","message","data","console","log","providerInitialized","getUserWithRole","user","uid","email","_user$multiFactor","_user$multiFactor2","claims","getIdTokenResult","role","customClaims","Object","keys","userWithRole","multiFactorVerified","multiFactor","enrolledFactors","length","enrolledFactorsCount","error","toEnrollmentFactor","hint","factorId","PhoneMultiFactorGenerator","FACTOR_ID","type","phoneNumber","enrollmentTime","displayName","Error","toFirebaseFactor","factor","sendMultiFactorCode","auth","resolver","factorType","factorUid","sessionId","session","verificationId","verifyPhoneNumberWithMultiFactorInfo","substring","getEnrolledFactors","errorCode","code","getMultiFactorResolver","hintsCount","hints","enrollmentFactors","map","factors","f","multiFactorResolver","verifyMultiFactor","verification","codeLength","_userCredential$user","credential","PhoneAuthProvider","assertion","userCredential","resolveSignIn","handleSignInError","requestArgs","initializeProvider","provider","name","alreadyInitialized","webClientId","GoogleSignin","hasPlayServices","showPlayServicesUpdateDialog","configure","includes","handleInitialLogin","twoFactorRequired","_userCredential$user2","_userCredential$user3","loginWithGoogle","_signInResult$data","_signInResult$data2","signInResult","signIn","hasIdToken","idToken","googleCredential","GoogleAuthProvider","signInWithCredential","getLoginWithPassword","password","_userCredential$user4","signInWithEmailAndPassword","getLoginWithPopup","getLoginWithToken","token","tokenLength","_userCredential$user5","signInWithCustomToken","resetPassword","usernameOrEmail","sendPasswordResetEmail","getFirebaseAuthAdapter","getCurrentUser","currentUser","loginWithPassword","loginWithPopup","loginWithToken","args","logout","signOut","subscribeToUser","callback","onAuthStateChanged","then","result","catch","exports"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/auth.ts"],"mappings":"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","ignoreList":[]}
|