@chem-po/firebase-native 0.0.16 → 0.0.17
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/lib/commonjs/adapter/auth.js +221 -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 +94 -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/module/adapter/auth.js +214 -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 +9 -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/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 +9 -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/package.json +29 -12
- package/src/adapter/auth.ts +281 -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 +8 -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
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
import { getIdTokenResult, getMultiFactorResolver, GoogleAuthProvider, onAuthStateChanged, PhoneAuthProvider, PhoneMultiFactorGenerator, sendPasswordResetEmail, signInWithCredential, signInWithCustomToken, signInWithEmailAndPassword, signOut } from '@react-native-firebase/auth';
|
|
2
|
+
import { GoogleSignin } from '@react-native-google-signin/google-signin';
|
|
3
|
+
const providerInitialized = {};
|
|
4
|
+
const getUserWithRole = async user => {
|
|
5
|
+
var _user$multiFactor;
|
|
6
|
+
const {
|
|
7
|
+
claims
|
|
8
|
+
} = await getIdTokenResult(user);
|
|
9
|
+
return {
|
|
10
|
+
...user,
|
|
11
|
+
role: claims.role ?? 'user',
|
|
12
|
+
multiFactorVerified: !!((_user$multiFactor = user.multiFactor) !== null && _user$multiFactor !== void 0 && _user$multiFactor.enrolledFactors.length)
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
const toEnrollmentFactor = hint => {
|
|
16
|
+
if (hint.factorId === PhoneMultiFactorGenerator.FACTOR_ID) {
|
|
17
|
+
return {
|
|
18
|
+
type: 'phone',
|
|
19
|
+
phoneNumber: hint.phoneNumber,
|
|
20
|
+
enrollmentTime: hint.enrollmentTime,
|
|
21
|
+
displayName: hint.displayName,
|
|
22
|
+
uid: hint.uid
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (hint.factorId === 'totp') {
|
|
26
|
+
return {
|
|
27
|
+
type: 'totp',
|
|
28
|
+
enrollmentTime: hint.enrollmentTime,
|
|
29
|
+
displayName: hint.displayName,
|
|
30
|
+
uid: hint.uid
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
throw new Error('Unsupported factor type: ' + hint.factorId);
|
|
34
|
+
};
|
|
35
|
+
const toFirebaseFactor = factor => {
|
|
36
|
+
if (factor.type === 'phone') {
|
|
37
|
+
return {
|
|
38
|
+
factorId: PhoneMultiFactorGenerator.FACTOR_ID,
|
|
39
|
+
phoneNumber: factor.phoneNumber,
|
|
40
|
+
enrollmentTime: factor.enrollmentTime,
|
|
41
|
+
uid: factor.uid,
|
|
42
|
+
displayName: factor.displayName
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (factor.type === 'totp') {
|
|
46
|
+
return {
|
|
47
|
+
factorId: 'totp',
|
|
48
|
+
enrollmentTime: factor.enrollmentTime,
|
|
49
|
+
uid: factor.uid,
|
|
50
|
+
displayName: factor.displayName
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`Unsupported factor type: ${factor.factorId ?? 'Missing factor type'}`);
|
|
54
|
+
};
|
|
55
|
+
const sendMultiFactorCode = async (auth, factor, resolver) => {
|
|
56
|
+
const sessionId = resolver.session;
|
|
57
|
+
// const verificationId = await new PhoneAuthProvider(auth).verifyPhoneNumber(phoneSignInFactor, sessionId)
|
|
58
|
+
if (factor.type === 'phone') {
|
|
59
|
+
const verificationId = await auth.verifyPhoneNumberWithMultiFactorInfo(toFirebaseFactor(factor), sessionId);
|
|
60
|
+
return {
|
|
61
|
+
verificationId,
|
|
62
|
+
factor,
|
|
63
|
+
resolver
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Unsupported factor type: ${factor.type ?? 'Missing factor type'}`);
|
|
67
|
+
};
|
|
68
|
+
const getEnrolledFactors = async (auth, error) => {
|
|
69
|
+
const resolver = getMultiFactorResolver(auth, error);
|
|
70
|
+
if (resolver.hints.length === 0) {
|
|
71
|
+
throw new Error('No multi-factor verification methods found, please enroll one on the website');
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
enrollmentFactors: resolver.hints.map(toEnrollmentFactor),
|
|
75
|
+
multiFactorResolver: resolver
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
const verifyMultiFactor = async (verification, code) => {
|
|
79
|
+
const credential = await PhoneAuthProvider.credential(verification.verificationId, code);
|
|
80
|
+
const assertion = PhoneMultiFactorGenerator.assertion(credential);
|
|
81
|
+
const resolver = verification.resolver;
|
|
82
|
+
if (!resolver) throw new Error('Internal error signing in with two factor: resolver not found');
|
|
83
|
+
const userCredential = await resolver.resolveSignIn(assertion);
|
|
84
|
+
const user = userCredential.user;
|
|
85
|
+
if (!user) throw new Error('No user found');
|
|
86
|
+
return {
|
|
87
|
+
user: await getUserWithRole(user)
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
const handleSignInError = async error => {
|
|
91
|
+
if (error.code === 'auth/multi-factor-auth-required') {
|
|
92
|
+
return {
|
|
93
|
+
requestArgs: error
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
throw error;
|
|
97
|
+
};
|
|
98
|
+
const initializeProvider = async provider => {
|
|
99
|
+
if (providerInitialized[provider.name]) return;
|
|
100
|
+
switch (provider.name) {
|
|
101
|
+
case 'google':
|
|
102
|
+
if (!provider.webClientId) {
|
|
103
|
+
throw new Error('Google web client ID is required when using Google Auth. Refer to react native firebase docs for more information.');
|
|
104
|
+
}
|
|
105
|
+
await GoogleSignin.hasPlayServices({
|
|
106
|
+
showPlayServicesUpdateDialog: true
|
|
107
|
+
});
|
|
108
|
+
GoogleSignin.configure({
|
|
109
|
+
webClientId: provider.webClientId
|
|
110
|
+
});
|
|
111
|
+
break;
|
|
112
|
+
case 'email':
|
|
113
|
+
// Native SDK doesn't need special initialization
|
|
114
|
+
break;
|
|
115
|
+
default:
|
|
116
|
+
throw new Error(`Unsupported provider: ${provider.name}`);
|
|
117
|
+
}
|
|
118
|
+
providerInitialized[provider.name] = true;
|
|
119
|
+
};
|
|
120
|
+
const handleInitialLogin = async (userCredential, twoFactorRequired) => {
|
|
121
|
+
const user = userCredential.user;
|
|
122
|
+
if (!user) throw new Error('No user found');
|
|
123
|
+
if (twoFactorRequired) {
|
|
124
|
+
throw new Error('This app requires two factor authentication, please enroll a factor on the website and try again');
|
|
125
|
+
}
|
|
126
|
+
return {
|
|
127
|
+
user: await getUserWithRole(user)
|
|
128
|
+
};
|
|
129
|
+
};
|
|
130
|
+
const loginWithGoogle = async (auth, twoFactorRequired) => {
|
|
131
|
+
try {
|
|
132
|
+
var _signInResult$data;
|
|
133
|
+
const signInResult = await GoogleSignin.signIn();
|
|
134
|
+
const idToken = (_signInResult$data = signInResult.data) === null || _signInResult$data === void 0 ? void 0 : _signInResult$data.idToken;
|
|
135
|
+
if (!idToken) {
|
|
136
|
+
throw new Error('No ID token found');
|
|
137
|
+
}
|
|
138
|
+
const googleCredential = GoogleAuthProvider.credential(idToken);
|
|
139
|
+
const userCredential = await signInWithCredential(auth, googleCredential);
|
|
140
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
141
|
+
} catch (error) {
|
|
142
|
+
return await handleSignInError(error);
|
|
143
|
+
}
|
|
144
|
+
};
|
|
145
|
+
const getLoginWithPassword = (auth, twoFactorRequired) => async (provider, {
|
|
146
|
+
email,
|
|
147
|
+
password
|
|
148
|
+
}) => {
|
|
149
|
+
await initializeProvider(provider);
|
|
150
|
+
try {
|
|
151
|
+
const userCredential = await signInWithEmailAndPassword(auth, email, password);
|
|
152
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
153
|
+
} catch (error) {
|
|
154
|
+
return await handleSignInError(error);
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
const getLoginWithPopup = (auth, twoFactorRequired) => async provider => {
|
|
158
|
+
await initializeProvider(provider);
|
|
159
|
+
switch (provider.name) {
|
|
160
|
+
case 'google':
|
|
161
|
+
return loginWithGoogle(auth, twoFactorRequired);
|
|
162
|
+
default:
|
|
163
|
+
throw new Error(`Unsupported provider: ${provider.name}`);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
const getLoginWithToken = (auth, twoFactorRequired) => async (provider, token) => {
|
|
167
|
+
await initializeProvider(provider);
|
|
168
|
+
try {
|
|
169
|
+
const userCredential = await signInWithCustomToken(auth, token);
|
|
170
|
+
return await handleInitialLogin(userCredential, twoFactorRequired);
|
|
171
|
+
} catch (error) {
|
|
172
|
+
return await handleSignInError(error);
|
|
173
|
+
}
|
|
174
|
+
};
|
|
175
|
+
const resetPassword = async (auth, provider, usernameOrEmail) => {
|
|
176
|
+
await initializeProvider(provider);
|
|
177
|
+
await sendPasswordResetEmail(auth, usernameOrEmail);
|
|
178
|
+
};
|
|
179
|
+
export const getFirebaseAuthAdapter = (auth, twoFactorRequired) => ({
|
|
180
|
+
twoFactorRequired,
|
|
181
|
+
getCurrentUser: async () => {
|
|
182
|
+
const user = auth.currentUser;
|
|
183
|
+
if (!user) return null;
|
|
184
|
+
return getUserWithRole(user);
|
|
185
|
+
},
|
|
186
|
+
loginWithPassword: getLoginWithPassword(auth, twoFactorRequired),
|
|
187
|
+
loginWithPopup: getLoginWithPopup(auth, twoFactorRequired),
|
|
188
|
+
loginWithToken: getLoginWithToken(auth, twoFactorRequired),
|
|
189
|
+
resetPassword: (...args) => {
|
|
190
|
+
return resetPassword(auth, ...args);
|
|
191
|
+
},
|
|
192
|
+
verifyMultiFactor,
|
|
193
|
+
sendMultiFactorCode: (...args) => {
|
|
194
|
+
return sendMultiFactorCode(auth, ...args);
|
|
195
|
+
},
|
|
196
|
+
getEnrolledFactors: (...args) => {
|
|
197
|
+
return getEnrolledFactors(auth, ...args);
|
|
198
|
+
},
|
|
199
|
+
logout: async () => {
|
|
200
|
+
await signOut(auth);
|
|
201
|
+
},
|
|
202
|
+
subscribeToUser: callback => {
|
|
203
|
+
return onAuthStateChanged(auth, user => {
|
|
204
|
+
if (!user) {
|
|
205
|
+
callback(null);
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
getUserWithRole(user).then(result => {
|
|
209
|
+
callback(result);
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getIdTokenResult","getMultiFactorResolver","GoogleAuthProvider","onAuthStateChanged","PhoneAuthProvider","PhoneMultiFactorGenerator","sendPasswordResetEmail","signInWithCredential","signInWithCustomToken","signInWithEmailAndPassword","signOut","GoogleSignin","providerInitialized","getUserWithRole","user","_user$multiFactor","claims","role","multiFactorVerified","multiFactor","enrolledFactors","length","toEnrollmentFactor","hint","factorId","FACTOR_ID","type","phoneNumber","enrollmentTime","displayName","uid","Error","toFirebaseFactor","factor","sendMultiFactorCode","auth","resolver","sessionId","session","verificationId","verifyPhoneNumberWithMultiFactorInfo","getEnrolledFactors","error","hints","enrollmentFactors","map","multiFactorResolver","verifyMultiFactor","verification","code","credential","assertion","userCredential","resolveSignIn","handleSignInError","requestArgs","initializeProvider","provider","name","webClientId","hasPlayServices","showPlayServicesUpdateDialog","configure","handleInitialLogin","twoFactorRequired","loginWithGoogle","_signInResult$data","signInResult","signIn","idToken","data","googleCredential","getLoginWithPassword","email","password","getLoginWithPopup","getLoginWithToken","token","resetPassword","usernameOrEmail","getFirebaseAuthAdapter","getCurrentUser","currentUser","loginWithPassword","loginWithPopup","loginWithToken","args","logout","subscribeToUser","callback","then","result"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/auth.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { addMetadata } from '@chem-po/core';
|
|
2
|
+
import { useAuth } from '@chem-po/react';
|
|
3
|
+
import { deleteDoc, doc, getDoc, getDocs, onSnapshot, setDoc } from '@react-native-firebase/firestore';
|
|
4
|
+
import { httpsCallable } from '@react-native-firebase/functions';
|
|
5
|
+
import { toCursorQuery, toFirestoreQuery } from '../db/utils';
|
|
6
|
+
// import { BaseQuery, FirestoreCursor } from '../types/db'
|
|
7
|
+
|
|
8
|
+
const handleFirestoreError = error => ({
|
|
9
|
+
code: (error === null || error === void 0 ? void 0 : error.code) ?? 'unknown',
|
|
10
|
+
message: (error === null || error === void 0 ? void 0 : error.name) ?? 'Unknown Error',
|
|
11
|
+
description: (error === null || error === void 0 ? void 0 : error.message) ?? 'An unknown error occurred'
|
|
12
|
+
});
|
|
13
|
+
const toDBItem = doc => ({
|
|
14
|
+
...doc.data(),
|
|
15
|
+
id: doc.id
|
|
16
|
+
});
|
|
17
|
+
const getSubscribeToQuery = db => (baseQuery, onData, onError) => {
|
|
18
|
+
const q = toFirestoreQuery(db, baseQuery);
|
|
19
|
+
return onSnapshot(q, snapshot => {
|
|
20
|
+
const items = snapshot.docs.map(doc => toDBItem(doc));
|
|
21
|
+
onData(items, snapshot.docs[snapshot.docs.length - 1]);
|
|
22
|
+
}, error => onError(handleFirestoreError(error)));
|
|
23
|
+
};
|
|
24
|
+
const getFetchNextCursor = db => async baseQuery => {
|
|
25
|
+
const {
|
|
26
|
+
cursor
|
|
27
|
+
} = baseQuery;
|
|
28
|
+
const cursorDoc = cursor ? await getDoc(doc(db, baseQuery.collection, cursor.id)) : null;
|
|
29
|
+
const q = toCursorQuery(db, baseQuery, cursorDoc);
|
|
30
|
+
const snapshot = await getDocs(q);
|
|
31
|
+
return snapshot.docs[0] ?? null;
|
|
32
|
+
};
|
|
33
|
+
const getFetchCount = functions => async baseQuery => {
|
|
34
|
+
const fetchCountFunc = httpsCallable(functions, 'getQueryCount');
|
|
35
|
+
const {
|
|
36
|
+
data
|
|
37
|
+
} = await fetchCountFunc(baseQuery);
|
|
38
|
+
return data.count;
|
|
39
|
+
};
|
|
40
|
+
const getFetchItem = db => async path => {
|
|
41
|
+
const docRef = doc(db, path);
|
|
42
|
+
const docSnap = await getDoc(docRef);
|
|
43
|
+
const data = docSnap.data();
|
|
44
|
+
return data ? {
|
|
45
|
+
...data,
|
|
46
|
+
id: docSnap.id
|
|
47
|
+
} : null;
|
|
48
|
+
};
|
|
49
|
+
const getFetchItems = db => async baseQuery => {
|
|
50
|
+
const q = toFirestoreQuery(db, baseQuery);
|
|
51
|
+
const snapshot = await getDocs(q);
|
|
52
|
+
return snapshot.docs.map(doc => ({
|
|
53
|
+
...doc.data(),
|
|
54
|
+
id: doc.id
|
|
55
|
+
}));
|
|
56
|
+
};
|
|
57
|
+
const getCreateItem = db => async (path, item) => {
|
|
58
|
+
const docRef = doc(db, path);
|
|
59
|
+
const data = addMetadata(useAuth.getState().user, item, true);
|
|
60
|
+
await setDoc(docRef, data, {
|
|
61
|
+
merge: true
|
|
62
|
+
});
|
|
63
|
+
return docRef.id;
|
|
64
|
+
};
|
|
65
|
+
const getDeleteItem = db => async path => {
|
|
66
|
+
const docRef = doc(db, path);
|
|
67
|
+
await deleteDoc(docRef);
|
|
68
|
+
};
|
|
69
|
+
const getUpdateItem = db => async (path, item) => {
|
|
70
|
+
const docRef = doc(db, path);
|
|
71
|
+
await setDoc(docRef, item, {
|
|
72
|
+
merge: true
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const getSubscribeToItem = db => (path, onData, onError) => {
|
|
76
|
+
const docRef = doc(db, path);
|
|
77
|
+
return onSnapshot(docRef, snapshot => {
|
|
78
|
+
const data = snapshot.data();
|
|
79
|
+
onData(data ? {
|
|
80
|
+
...data,
|
|
81
|
+
id: snapshot.id
|
|
82
|
+
} : null);
|
|
83
|
+
}, error => onError(handleFirestoreError(error)));
|
|
84
|
+
};
|
|
85
|
+
export const getFirebaseDatabaseAdapter = (db, functions) => ({
|
|
86
|
+
fetchNextCursor: getFetchNextCursor(db),
|
|
87
|
+
fetchCount: getFetchCount(functions),
|
|
88
|
+
fetchItem: getFetchItem(db),
|
|
89
|
+
fetchItems: getFetchItems(db),
|
|
90
|
+
createItem: getCreateItem(db),
|
|
91
|
+
deleteItem: getDeleteItem(db),
|
|
92
|
+
updateItem: getUpdateItem(db),
|
|
93
|
+
subscribeToItem: getSubscribeToItem(db),
|
|
94
|
+
subscribeToQuery: getSubscribeToQuery(db)
|
|
95
|
+
});
|
|
96
|
+
//# sourceMappingURL=db.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["addMetadata","useAuth","deleteDoc","doc","getDoc","getDocs","onSnapshot","setDoc","httpsCallable","toCursorQuery","toFirestoreQuery","handleFirestoreError","error","code","message","name","description","toDBItem","data","id","getSubscribeToQuery","db","baseQuery","onData","onError","q","snapshot","items","docs","map","length","getFetchNextCursor","cursor","cursorDoc","collection","getFetchCount","functions","fetchCountFunc","count","getFetchItem","path","docRef","docSnap","getFetchItems","getCreateItem","item","getState","user","merge","getDeleteItem","getUpdateItem","getSubscribeToItem","getFirebaseDatabaseAdapter","fetchNextCursor","fetchCount","fetchItem","fetchItems","createItem","deleteItem","updateItem","subscribeToItem","subscribeToQuery"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/db.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { getFirebaseAuthAdapter } from './auth';
|
|
2
|
+
import { getFirebaseDatabaseAdapter } from './db';
|
|
3
|
+
import { getFirebaseStorageAdapter } from './storage';
|
|
4
|
+
export const getFirebaseAdapter = (auth, db, storage, functions, twoFactorRequired) => ({
|
|
5
|
+
auth: getFirebaseAuthAdapter(auth, twoFactorRequired),
|
|
6
|
+
db: getFirebaseDatabaseAdapter(db, functions),
|
|
7
|
+
storage: getFirebaseStorageAdapter(storage)
|
|
8
|
+
});
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getFirebaseAuthAdapter","getFirebaseDatabaseAdapter","getFirebaseStorageAdapter","getFirebaseAdapter","auth","db","storage","functions","twoFactorRequired"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/index.ts"],"mappings":"AAMA,SAASA,sBAAsB,QAAQ,QAAQ;AAC/C,SAASC,0BAA0B,QAAQ,MAAM;AACjD,SAASC,yBAAyB,QAAQ,WAAW;AAWrD,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,IAAU,EACVC,EAAa,EACbC,OAAgB,EAChBC,SAAoB,EACpBC,iBAA0B,MACS;EACnCJ,IAAI,EAAEJ,sBAAsB,CAACI,IAAI,EAAEI,iBAAiB,CAAC;EACrDH,EAAE,EAAEJ,0BAA0B,CAACI,EAAE,EAAEE,SAAS,CAAC;EAC7CD,OAAO,EAAEJ,yBAAyB,CAACI,OAAO;AAC5C,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { deleteObject, getDownloadURL, getMetadata, ref, uploadBytesResumable } from '@react-native-firebase/storage';
|
|
2
|
+
export const getFirebaseStorageAdapter = storage => ({
|
|
3
|
+
delete: async path => {
|
|
4
|
+
const storageRef = ref(storage, path);
|
|
5
|
+
await deleteObject(storageRef);
|
|
6
|
+
},
|
|
7
|
+
fetchObject: async path => {
|
|
8
|
+
const storageRef = ref(storage, path);
|
|
9
|
+
const url = await getDownloadURL(storageRef);
|
|
10
|
+
const response = await fetch(url);
|
|
11
|
+
return await response.blob();
|
|
12
|
+
},
|
|
13
|
+
fetchMetadata: async path => {
|
|
14
|
+
const storageRef = ref(storage, path);
|
|
15
|
+
return await getMetadata(storageRef);
|
|
16
|
+
},
|
|
17
|
+
getObjectUrl: async path => {
|
|
18
|
+
const storageRef = ref(storage, path);
|
|
19
|
+
return await getDownloadURL(storageRef);
|
|
20
|
+
},
|
|
21
|
+
upload: async (path, data, onUploadProgress) => {
|
|
22
|
+
const storageRef = ref(storage, path);
|
|
23
|
+
// Convert dataUrl to Blob
|
|
24
|
+
const blob = await fetch(data.dataUrl).then(res => res.blob());
|
|
25
|
+
const uploadTask = uploadBytesResumable(storageRef, blob);
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
uploadTask.on('state_changed', snapshot => {
|
|
28
|
+
const progress = snapshot.bytesTransferred / snapshot.totalBytes * 100;
|
|
29
|
+
onUploadProgress({
|
|
30
|
+
loaded: snapshot.bytesTransferred,
|
|
31
|
+
total: snapshot.totalBytes,
|
|
32
|
+
percent: progress
|
|
33
|
+
});
|
|
34
|
+
}, error => reject(error), () => {
|
|
35
|
+
const fileValue = {
|
|
36
|
+
filename: data.filename,
|
|
37
|
+
type: data.type,
|
|
38
|
+
storagePath: path
|
|
39
|
+
};
|
|
40
|
+
resolve(fileValue);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["deleteObject","getDownloadURL","getMetadata","ref","uploadBytesResumable","getFirebaseStorageAdapter","storage","delete","path","storageRef","fetchObject","url","response","fetch","blob","fetchMetadata","getObjectUrl","upload","data","onUploadProgress","dataUrl","then","res","uploadTask","Promise","resolve","reject","on","snapshot","progress","bytesTransferred","totalBytes","loaded","total","percent","error","fileValue","filename","type","storagePath"],"sourceRoot":"..\\..\\..\\src","sources":["adapter/storage.ts"],"mappings":"AACA,SACEA,YAAY,EACZC,cAAc,EACdC,WAAW,EACXC,GAAG,EACHC,oBAAoB,QACf,gCAAgC;AAGvC,OAAO,MAAMC,yBAAyB,GAAIC,OAAgB,KAAiC;EACzFC,MAAM,EAAE,MAAMC,IAAI,IAAI;IACpB,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,MAAMR,YAAY,CAACS,UAAU,CAAC;EAChC,CAAC;EACDC,WAAW,EAAE,MAAMF,IAAI,IAAI;IACzB,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,MAAMG,GAAG,GAAG,MAAMV,cAAc,CAACQ,UAAU,CAAC;IAC5C,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAACF,GAAG,CAAC;IACjC,OAAO,MAAMC,QAAQ,CAACE,IAAI,CAAC,CAAC;EAC9B,CAAC;EACDC,aAAa,EAAE,MAAMP,IAAI,IAAI;IAC3B,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,OAAO,MAAMN,WAAW,CAACO,UAAU,CAAC;EACtC,CAAC;EACDO,YAAY,EAAE,MAAMR,IAAI,IAAI;IAC1B,MAAMC,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC,OAAO,MAAMP,cAAc,CAACQ,UAAU,CAAC;EACzC,CAAC;EACDQ,MAAM,EAAE,MAAAA,CAAOT,IAAI,EAAEU,IAAI,EAAEC,gBAAgB,KAAK;IAC9C,MAAMV,UAAU,GAAGN,GAAG,CAACG,OAAO,EAAEE,IAAI,CAAC;IACrC;IACA,MAAMM,IAAI,GAAG,MAAMD,KAAK,CAACK,IAAI,CAACE,OAAO,CAAC,CAACC,IAAI,CAACC,GAAG,IAAIA,GAAG,CAACR,IAAI,CAAC,CAAC,CAAC;IAC9D,MAAMS,UAAU,GAAGnB,oBAAoB,CAACK,UAAU,EAAEK,IAAI,CAAC;IACzD,OAAO,IAAIU,OAAO,CAAoB,CAACC,OAAO,EAAEC,MAAM,KAAK;MACzDH,UAAU,CAACI,EAAE,CACX,eAAe,EACfC,QAAQ,IAAI;QACV,MAAMC,QAAQ,GAAID,QAAQ,CAACE,gBAAgB,GAAGF,QAAQ,CAACG,UAAU,GAAI,GAAG;QACxEZ,gBAAgB,CAAC;UACfa,MAAM,EAAEJ,QAAQ,CAACE,gBAAgB;UACjCG,KAAK,EAAEL,QAAQ,CAACG,UAAU;UAC1BG,OAAO,EAAEL;QACX,CAAC,CAAC;MACJ,CAAC,EACDM,KAAK,IAAIT,MAAM,CAACS,KAAK,CAAC,EACtB,MAAM;QACJ,MAAMC,SAA4B,GAAG;UACnCC,QAAQ,EAAEnB,IAAI,CAACmB,QAAQ;UACvBC,IAAI,EAAEpB,IAAI,CAACoB,IAAI;UACfC,WAAW,EAAE/B;QACf,CAAC;QACDiB,OAAO,CAACW,SAAS,CAAC;MACpB,CACF,CAAC;IACH,CAAC,CAAC;EACJ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getThirdPartyAuthUrl","functions","httpsCallable","getThirdPartyAuthToken"],"sourceRoot":"..\\..\\..\\src","sources":["auth/functions.ts"],"mappings":"AAEA,OAAO,MAAMA,oBAAoB,GAAIC,SAAwC,IAC3EA,SAAS,CAACC,aAAa,CAAC,sBAAsB,CAAC;AAEjD,OAAO,MAAMC,sBAAsB,GAAIF,SAAwC,IAC7EA,SAAS,CAACC,aAAa,CAAC,wBAAwB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"..\\..\\..\\src","sources":["auth/index.ts"],"mappings":"AAAA,cAAc,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { LoadingButton, Txt } from '@chem-po/react-native';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { StyleSheet, TextInput, View } from 'react-native';
|
|
4
|
+
import { useAuthenticatorVerify } from '../hooks/useAuthenticatorVerify';
|
|
5
|
+
export const AuthenticatorVerify = () => {
|
|
6
|
+
const {
|
|
7
|
+
code,
|
|
8
|
+
setCode,
|
|
9
|
+
verifying,
|
|
10
|
+
error,
|
|
11
|
+
handleVerify
|
|
12
|
+
} = useAuthenticatorVerify();
|
|
13
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
14
|
+
style: styles.wrapper
|
|
15
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
16
|
+
style: styles.container
|
|
17
|
+
}, /*#__PURE__*/React.createElement(Txt, {
|
|
18
|
+
style: styles.text
|
|
19
|
+
}, "Enter the code on your authenticator app:"), /*#__PURE__*/React.createElement(TextInput, {
|
|
20
|
+
style: styles.input,
|
|
21
|
+
value: code,
|
|
22
|
+
onChangeText: setCode,
|
|
23
|
+
placeholder: "Verification Code",
|
|
24
|
+
keyboardType: "number-pad",
|
|
25
|
+
maxLength: 6,
|
|
26
|
+
autoFocus: true
|
|
27
|
+
}), error ? /*#__PURE__*/React.createElement(Txt, {
|
|
28
|
+
style: styles.errorText
|
|
29
|
+
}, error) : null, /*#__PURE__*/React.createElement(LoadingButton, {
|
|
30
|
+
style: styles.button,
|
|
31
|
+
onPress: handleVerify,
|
|
32
|
+
disabled: verifying
|
|
33
|
+
}, /*#__PURE__*/React.createElement(Txt, {
|
|
34
|
+
style: styles.buttonText
|
|
35
|
+
}, verifying ? 'Verifying...' : 'Verify'))));
|
|
36
|
+
};
|
|
37
|
+
const styles = StyleSheet.create({
|
|
38
|
+
wrapper: {
|
|
39
|
+
flex: 1,
|
|
40
|
+
padding: 16
|
|
41
|
+
},
|
|
42
|
+
container: {
|
|
43
|
+
flex: 1,
|
|
44
|
+
alignItems: 'center',
|
|
45
|
+
justifyContent: 'center',
|
|
46
|
+
gap: 16
|
|
47
|
+
},
|
|
48
|
+
text: {
|
|
49
|
+
fontSize: 16,
|
|
50
|
+
textAlign: 'center',
|
|
51
|
+
marginBottom: 8
|
|
52
|
+
},
|
|
53
|
+
input: {
|
|
54
|
+
width: '100%',
|
|
55
|
+
height: 48,
|
|
56
|
+
borderWidth: 1,
|
|
57
|
+
borderColor: '#ccc',
|
|
58
|
+
borderRadius: 8,
|
|
59
|
+
paddingHorizontal: 16,
|
|
60
|
+
fontSize: 16,
|
|
61
|
+
marginBottom: 8
|
|
62
|
+
},
|
|
63
|
+
button: {
|
|
64
|
+
backgroundColor: '#007AFF',
|
|
65
|
+
paddingHorizontal: 24,
|
|
66
|
+
paddingVertical: 12,
|
|
67
|
+
borderRadius: 8,
|
|
68
|
+
minWidth: 200,
|
|
69
|
+
alignItems: 'center'
|
|
70
|
+
},
|
|
71
|
+
buttonText: {
|
|
72
|
+
color: 'white',
|
|
73
|
+
fontSize: 16,
|
|
74
|
+
fontWeight: '600'
|
|
75
|
+
},
|
|
76
|
+
errorText: {
|
|
77
|
+
color: 'red',
|
|
78
|
+
fontSize: 14,
|
|
79
|
+
marginBottom: 8
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=AuthenticatorVerify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["LoadingButton","Txt","React","StyleSheet","TextInput","View","useAuthenticatorVerify","AuthenticatorVerify","code","setCode","verifying","error","handleVerify","createElement","style","styles","wrapper","container","text","input","value","onChangeText","placeholder","keyboardType","maxLength","autoFocus","errorText","button","onPress","disabled","buttonText","create","flex","padding","alignItems","justifyContent","gap","fontSize","textAlign","marginBottom","width","height","borderWidth","borderColor","borderRadius","paddingHorizontal","backgroundColor","paddingVertical","minWidth","color","fontWeight"],"sourceRoot":"..\\..\\..\\src","sources":["components/AuthenticatorVerify.tsx"],"mappings":"AAAA,SAASA,aAAa,EAAEC,GAAG,QAAQ,uBAAuB;AAC1D,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,UAAU,EAAEC,SAAS,EAAEC,IAAI,QAAQ,cAAc;AAC1D,SAASC,sBAAsB,QAAQ,iCAAiC;AAExE,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAM;EACvC,MAAM;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC,KAAK;IAAEC;EAAa,CAAC,GAAGN,sBAAsB,CAAC,CAAC;EAElF,oBACEJ,KAAA,CAAAW,aAAA,CAACR,IAAI;IAACS,KAAK,EAAEC,MAAM,CAACC;EAAQ,gBAC1Bd,KAAA,CAAAW,aAAA,CAACR,IAAI;IAACS,KAAK,EAAEC,MAAM,CAACE;EAAU,gBAC5Bf,KAAA,CAAAW,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACG;EAAK,GAAC,2CAA8C,CAAC,eACxEhB,KAAA,CAAAW,aAAA,CAACT,SAAS;IACRU,KAAK,EAAEC,MAAM,CAACI,KAAM;IACpBC,KAAK,EAAEZ,IAAK;IACZa,YAAY,EAAEZ,OAAQ;IACtBa,WAAW,EAAC,mBAAmB;IAC/BC,YAAY,EAAC,YAAY;IACzBC,SAAS,EAAE,CAAE;IACbC,SAAS;EAAA,CACV,CAAC,EACDd,KAAK,gBAAGT,KAAA,CAAAW,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACW;EAAU,GAAEf,KAAW,CAAC,GAAG,IAAI,eAC3DT,KAAA,CAAAW,aAAA,CAACb,aAAa;IAACc,KAAK,EAAEC,MAAM,CAACY,MAAO;IAACC,OAAO,EAAEhB,YAAa;IAACiB,QAAQ,EAAEnB;EAAU,gBAC9ER,KAAA,CAAAW,aAAA,CAACZ,GAAG;IAACa,KAAK,EAAEC,MAAM,CAACe;EAAW,GAAEpB,SAAS,GAAG,cAAc,GAAG,QAAc,CAC9D,CACX,CACF,CAAC;AAEX,CAAC;AAED,MAAMK,MAAM,GAAGZ,UAAU,CAAC4B,MAAM,CAAC;EAC/Bf,OAAO,EAAE;IACPgB,IAAI,EAAE,CAAC;IACPC,OAAO,EAAE;EACX,CAAC;EACDhB,SAAS,EAAE;IACTe,IAAI,EAAE,CAAC;IACPE,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,GAAG,EAAE;EACP,CAAC;EACDlB,IAAI,EAAE;IACJmB,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE,QAAQ;IACnBC,YAAY,EAAE;EAChB,CAAC;EACDpB,KAAK,EAAE;IACLqB,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE,EAAE;IACVC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE,MAAM;IACnBC,YAAY,EAAE,CAAC;IACfC,iBAAiB,EAAE,EAAE;IACrBR,QAAQ,EAAE,EAAE;IACZE,YAAY,EAAE;EAChB,CAAC;EACDZ,MAAM,EAAE;IACNmB,eAAe,EAAE,SAAS;IAC1BD,iBAAiB,EAAE,EAAE;IACrBE,eAAe,EAAE,EAAE;IACnBH,YAAY,EAAE,CAAC;IACfI,QAAQ,EAAE,GAAG;IACbd,UAAU,EAAE;EACd,CAAC;EACDJ,UAAU,EAAE;IACVmB,KAAK,EAAE,OAAO;IACdZ,QAAQ,EAAE,EAAE;IACZa,UAAU,EAAE;EACd,CAAC;EACDxB,SAAS,EAAE;IACTuB,KAAK,EAAE,KAAK;IACZZ,QAAQ,EAAE,EAAE;IACZE,YAAY,EAAE;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
|