@affectively/dash 5.1.0 → 5.1.1
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 +21 -0
- package/dist/src/api/firebase/auth/index.d.ts +137 -0
- package/dist/src/api/firebase/auth/index.js +352 -0
- package/dist/src/api/firebase/auth/providers.d.ts +254 -0
- package/dist/src/api/firebase/auth/providers.js +518 -0
- package/dist/src/api/firebase/database/index.d.ts +104 -0
- package/dist/src/api/firebase/database/index.js +351 -0
- package/dist/src/api/firebase/errors.d.ts +15 -0
- package/dist/src/api/firebase/errors.js +215 -0
- package/dist/src/api/firebase/firestore/data-types.d.ts +116 -0
- package/dist/src/api/firebase/firestore/data-types.js +280 -0
- package/dist/src/api/firebase/firestore/index.d.ts +7 -0
- package/dist/src/api/firebase/firestore/index.js +13 -0
- package/dist/src/api/firebase/firestore/listeners.d.ts +20 -0
- package/dist/src/api/firebase/firestore/listeners.js +50 -0
- package/dist/src/api/firebase/firestore/operations.d.ts +123 -0
- package/dist/src/api/firebase/firestore/operations.js +490 -0
- package/dist/src/api/firebase/firestore/query.d.ts +118 -0
- package/dist/src/api/firebase/firestore/query.js +418 -0
- package/dist/src/api/firebase/index.d.ts +11 -0
- package/dist/src/api/firebase/index.js +16 -0
- package/dist/src/api/firebase/storage/index.d.ts +100 -0
- package/dist/src/api/firebase/storage/index.js +286 -0
- package/dist/src/api/firebase/types.d.ts +340 -0
- package/dist/src/api/firebase/types.js +4 -0
- package/dist/src/auth/manager.d.ts +5 -1
- package/dist/src/auth/manager.js +19 -6
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +10 -0
- package/dist/src/sync/aeon/offline-adapter.js +12 -8
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth Provider implementations for Firebase Authentication
|
|
3
|
+
* Supports 21+ OAuth providers including enterprise, social, and custom options
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Base OAuth Provider abstract class
|
|
7
|
+
* Provides common interface and functionality for all OAuth providers
|
|
8
|
+
*/
|
|
9
|
+
export class BaseOAuthProvider {
|
|
10
|
+
static PROVIDER_ID;
|
|
11
|
+
scopes = [];
|
|
12
|
+
customParameters = {};
|
|
13
|
+
constructor() {
|
|
14
|
+
this.initializeDefaultScopes();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize default scopes for this provider
|
|
18
|
+
* Override in subclasses to set provider-specific defaults
|
|
19
|
+
*/
|
|
20
|
+
initializeDefaultScopes() {
|
|
21
|
+
// Override in subclass
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Add a scope to the provider's scope list
|
|
25
|
+
* @param scope The scope to add
|
|
26
|
+
*/
|
|
27
|
+
addScope(scope) {
|
|
28
|
+
if (!this.scopes.includes(scope)) {
|
|
29
|
+
this.scopes.push(scope);
|
|
30
|
+
}
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Set custom parameters to be sent to the OAuth provider
|
|
35
|
+
* @param customParameters Object with custom parameters
|
|
36
|
+
*/
|
|
37
|
+
setCustomParameters(customParameters) {
|
|
38
|
+
this.customParameters = { ...this.customParameters, ...customParameters };
|
|
39
|
+
return this;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the scopes for this provider
|
|
43
|
+
*/
|
|
44
|
+
getScopes() {
|
|
45
|
+
return [...this.scopes];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get custom parameters for this provider
|
|
49
|
+
*/
|
|
50
|
+
getCustomParameters() {
|
|
51
|
+
return { ...this.customParameters };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// ============================================================================
|
|
55
|
+
// SOCIAL MEDIA PROVIDERS
|
|
56
|
+
// ============================================================================
|
|
57
|
+
/**
|
|
58
|
+
* Google OAuth Provider
|
|
59
|
+
*/
|
|
60
|
+
export class GoogleAuthProvider extends BaseOAuthProvider {
|
|
61
|
+
static PROVIDER_ID = 'google.com';
|
|
62
|
+
initializeDefaultScopes() {
|
|
63
|
+
this.scopes = ['profile', 'email'];
|
|
64
|
+
}
|
|
65
|
+
getProviderId() {
|
|
66
|
+
return GoogleAuthProvider.PROVIDER_ID;
|
|
67
|
+
}
|
|
68
|
+
static credential(accessToken, idToken) {
|
|
69
|
+
return {
|
|
70
|
+
providerId: GoogleAuthProvider.PROVIDER_ID,
|
|
71
|
+
accessToken,
|
|
72
|
+
idToken,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Facebook OAuth Provider
|
|
78
|
+
*/
|
|
79
|
+
export class FacebookAuthProvider extends BaseOAuthProvider {
|
|
80
|
+
static PROVIDER_ID = 'facebook.com';
|
|
81
|
+
initializeDefaultScopes() {
|
|
82
|
+
this.scopes = ['public_profile', 'email'];
|
|
83
|
+
}
|
|
84
|
+
getProviderId() {
|
|
85
|
+
return FacebookAuthProvider.PROVIDER_ID;
|
|
86
|
+
}
|
|
87
|
+
static credential(accessToken) {
|
|
88
|
+
return {
|
|
89
|
+
providerId: FacebookAuthProvider.PROVIDER_ID,
|
|
90
|
+
accessToken,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* GitHub OAuth Provider
|
|
96
|
+
*/
|
|
97
|
+
export class GithubAuthProvider extends BaseOAuthProvider {
|
|
98
|
+
static PROVIDER_ID = 'github.com';
|
|
99
|
+
initializeDefaultScopes() {
|
|
100
|
+
this.scopes = ['user:email', 'read:user'];
|
|
101
|
+
}
|
|
102
|
+
getProviderId() {
|
|
103
|
+
return GithubAuthProvider.PROVIDER_ID;
|
|
104
|
+
}
|
|
105
|
+
static credential(accessToken) {
|
|
106
|
+
return {
|
|
107
|
+
providerId: GithubAuthProvider.PROVIDER_ID,
|
|
108
|
+
accessToken,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Twitter OAuth Provider
|
|
114
|
+
*/
|
|
115
|
+
export class TwitterAuthProvider extends BaseOAuthProvider {
|
|
116
|
+
static PROVIDER_ID = 'twitter.com';
|
|
117
|
+
initializeDefaultScopes() {
|
|
118
|
+
this.scopes = ['tweet.read', 'users.read'];
|
|
119
|
+
}
|
|
120
|
+
getProviderId() {
|
|
121
|
+
return TwitterAuthProvider.PROVIDER_ID;
|
|
122
|
+
}
|
|
123
|
+
static credential(accessToken, secret) {
|
|
124
|
+
return {
|
|
125
|
+
providerId: TwitterAuthProvider.PROVIDER_ID,
|
|
126
|
+
accessToken,
|
|
127
|
+
secret,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Microsoft OAuth Provider
|
|
133
|
+
*/
|
|
134
|
+
export class MicrosoftAuthProvider extends BaseOAuthProvider {
|
|
135
|
+
static PROVIDER_ID = 'microsoft.com';
|
|
136
|
+
initializeDefaultScopes() {
|
|
137
|
+
this.scopes = ['user.read', 'mail.read'];
|
|
138
|
+
}
|
|
139
|
+
getProviderId() {
|
|
140
|
+
return MicrosoftAuthProvider.PROVIDER_ID;
|
|
141
|
+
}
|
|
142
|
+
static credential(accessToken) {
|
|
143
|
+
return {
|
|
144
|
+
providerId: MicrosoftAuthProvider.PROVIDER_ID,
|
|
145
|
+
accessToken,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Apple OAuth Provider
|
|
151
|
+
*/
|
|
152
|
+
export class AppleAuthProvider extends BaseOAuthProvider {
|
|
153
|
+
static PROVIDER_ID = 'apple.com';
|
|
154
|
+
initializeDefaultScopes() {
|
|
155
|
+
this.scopes = ['email', 'name'];
|
|
156
|
+
}
|
|
157
|
+
getProviderId() {
|
|
158
|
+
return AppleAuthProvider.PROVIDER_ID;
|
|
159
|
+
}
|
|
160
|
+
static credential(identityToken, rawNonce) {
|
|
161
|
+
return {
|
|
162
|
+
providerId: AppleAuthProvider.PROVIDER_ID,
|
|
163
|
+
identityToken,
|
|
164
|
+
rawNonce,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// ============================================================================
|
|
169
|
+
// ADDITIONAL SOCIAL PROVIDERS
|
|
170
|
+
// ============================================================================
|
|
171
|
+
/**
|
|
172
|
+
* LinkedIn OAuth Provider
|
|
173
|
+
*/
|
|
174
|
+
export class LinkedInAuthProvider extends BaseOAuthProvider {
|
|
175
|
+
static PROVIDER_ID = 'linkedin.com';
|
|
176
|
+
initializeDefaultScopes() {
|
|
177
|
+
this.scopes = ['r_basicprofile', 'r_emailaddress'];
|
|
178
|
+
}
|
|
179
|
+
getProviderId() {
|
|
180
|
+
return LinkedInAuthProvider.PROVIDER_ID;
|
|
181
|
+
}
|
|
182
|
+
static credential(accessToken) {
|
|
183
|
+
return {
|
|
184
|
+
providerId: LinkedInAuthProvider.PROVIDER_ID,
|
|
185
|
+
accessToken,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Yahoo OAuth Provider
|
|
191
|
+
*/
|
|
192
|
+
export class YahooAuthProvider extends BaseOAuthProvider {
|
|
193
|
+
static PROVIDER_ID = 'yahoo.com';
|
|
194
|
+
initializeDefaultScopes() {
|
|
195
|
+
this.scopes = ['profile'];
|
|
196
|
+
}
|
|
197
|
+
getProviderId() {
|
|
198
|
+
return YahooAuthProvider.PROVIDER_ID;
|
|
199
|
+
}
|
|
200
|
+
static credential(accessToken) {
|
|
201
|
+
return {
|
|
202
|
+
providerId: YahooAuthProvider.PROVIDER_ID,
|
|
203
|
+
accessToken,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Instagram OAuth Provider
|
|
209
|
+
*/
|
|
210
|
+
export class InstagramAuthProvider extends BaseOAuthProvider {
|
|
211
|
+
static PROVIDER_ID = 'instagram.com';
|
|
212
|
+
initializeDefaultScopes() {
|
|
213
|
+
this.scopes = ['user_profile', 'user_media'];
|
|
214
|
+
}
|
|
215
|
+
getProviderId() {
|
|
216
|
+
return InstagramAuthProvider.PROVIDER_ID;
|
|
217
|
+
}
|
|
218
|
+
static credential(accessToken) {
|
|
219
|
+
return {
|
|
220
|
+
providerId: InstagramAuthProvider.PROVIDER_ID,
|
|
221
|
+
accessToken,
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* TikTok OAuth Provider
|
|
227
|
+
*/
|
|
228
|
+
export class TikTokAuthProvider extends BaseOAuthProvider {
|
|
229
|
+
static PROVIDER_ID = 'tiktok.com';
|
|
230
|
+
initializeDefaultScopes() {
|
|
231
|
+
this.scopes = ['user.info.basic', 'user.info.profile'];
|
|
232
|
+
}
|
|
233
|
+
getProviderId() {
|
|
234
|
+
return TikTokAuthProvider.PROVIDER_ID;
|
|
235
|
+
}
|
|
236
|
+
static credential(accessToken) {
|
|
237
|
+
return {
|
|
238
|
+
providerId: TikTokAuthProvider.PROVIDER_ID,
|
|
239
|
+
accessToken,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Twitch OAuth Provider
|
|
245
|
+
*/
|
|
246
|
+
export class TwitchAuthProvider extends BaseOAuthProvider {
|
|
247
|
+
static PROVIDER_ID = 'twitch.tv';
|
|
248
|
+
initializeDefaultScopes() {
|
|
249
|
+
this.scopes = ['user:read:email'];
|
|
250
|
+
}
|
|
251
|
+
getProviderId() {
|
|
252
|
+
return TwitchAuthProvider.PROVIDER_ID;
|
|
253
|
+
}
|
|
254
|
+
static credential(accessToken) {
|
|
255
|
+
return {
|
|
256
|
+
providerId: TwitchAuthProvider.PROVIDER_ID,
|
|
257
|
+
accessToken,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
// ============================================================================
|
|
262
|
+
// DEVELOPER/TEAM COLLABORATION PROVIDERS
|
|
263
|
+
// ============================================================================
|
|
264
|
+
/**
|
|
265
|
+
* Discord OAuth Provider
|
|
266
|
+
*/
|
|
267
|
+
export class DiscordAuthProvider extends BaseOAuthProvider {
|
|
268
|
+
static PROVIDER_ID = 'discord.com';
|
|
269
|
+
initializeDefaultScopes() {
|
|
270
|
+
this.scopes = ['identify', 'email'];
|
|
271
|
+
}
|
|
272
|
+
getProviderId() {
|
|
273
|
+
return DiscordAuthProvider.PROVIDER_ID;
|
|
274
|
+
}
|
|
275
|
+
static credential(accessToken) {
|
|
276
|
+
return {
|
|
277
|
+
providerId: DiscordAuthProvider.PROVIDER_ID,
|
|
278
|
+
accessToken,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Slack OAuth Provider
|
|
284
|
+
*/
|
|
285
|
+
export class SlackAuthProvider extends BaseOAuthProvider {
|
|
286
|
+
static PROVIDER_ID = 'slack.com';
|
|
287
|
+
initializeDefaultScopes() {
|
|
288
|
+
this.scopes = ['identity.basic', 'identity.email', 'identity.avatar'];
|
|
289
|
+
}
|
|
290
|
+
getProviderId() {
|
|
291
|
+
return SlackAuthProvider.PROVIDER_ID;
|
|
292
|
+
}
|
|
293
|
+
static credential(accessToken) {
|
|
294
|
+
return {
|
|
295
|
+
providerId: SlackAuthProvider.PROVIDER_ID,
|
|
296
|
+
accessToken,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Spotify OAuth Provider
|
|
302
|
+
*/
|
|
303
|
+
export class SpotifyAuthProvider extends BaseOAuthProvider {
|
|
304
|
+
static PROVIDER_ID = 'spotify.com';
|
|
305
|
+
initializeDefaultScopes() {
|
|
306
|
+
this.scopes = ['user-read-private', 'user-read-email'];
|
|
307
|
+
}
|
|
308
|
+
getProviderId() {
|
|
309
|
+
return SpotifyAuthProvider.PROVIDER_ID;
|
|
310
|
+
}
|
|
311
|
+
static credential(accessToken, refreshToken) {
|
|
312
|
+
return {
|
|
313
|
+
providerId: SpotifyAuthProvider.PROVIDER_ID,
|
|
314
|
+
accessToken,
|
|
315
|
+
refreshToken,
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
// ============================================================================
|
|
320
|
+
// PAYMENT & COMMERCE PROVIDERS
|
|
321
|
+
// ============================================================================
|
|
322
|
+
/**
|
|
323
|
+
* Stripe OAuth Provider
|
|
324
|
+
*/
|
|
325
|
+
export class StripeAuthProvider extends BaseOAuthProvider {
|
|
326
|
+
static PROVIDER_ID = 'stripe.com';
|
|
327
|
+
initializeDefaultScopes() {
|
|
328
|
+
this.scopes = ['read_write'];
|
|
329
|
+
}
|
|
330
|
+
getProviderId() {
|
|
331
|
+
return StripeAuthProvider.PROVIDER_ID;
|
|
332
|
+
}
|
|
333
|
+
static credential(accessToken) {
|
|
334
|
+
return {
|
|
335
|
+
providerId: StripeAuthProvider.PROVIDER_ID,
|
|
336
|
+
accessToken,
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
// ============================================================================
|
|
341
|
+
// STORAGE & FILE PROVIDERS
|
|
342
|
+
// ============================================================================
|
|
343
|
+
/**
|
|
344
|
+
* Dropbox OAuth Provider
|
|
345
|
+
*/
|
|
346
|
+
export class DropboxAuthProvider extends BaseOAuthProvider {
|
|
347
|
+
static PROVIDER_ID = 'dropbox.com';
|
|
348
|
+
initializeDefaultScopes() {
|
|
349
|
+
this.scopes = ['account_info.read'];
|
|
350
|
+
}
|
|
351
|
+
getProviderId() {
|
|
352
|
+
return DropboxAuthProvider.PROVIDER_ID;
|
|
353
|
+
}
|
|
354
|
+
static credential(accessToken) {
|
|
355
|
+
return {
|
|
356
|
+
providerId: DropboxAuthProvider.PROVIDER_ID,
|
|
357
|
+
accessToken,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Box OAuth Provider
|
|
363
|
+
*/
|
|
364
|
+
export class BoxAuthProvider extends BaseOAuthProvider {
|
|
365
|
+
static PROVIDER_ID = 'box.com';
|
|
366
|
+
initializeDefaultScopes() {
|
|
367
|
+
this.scopes = ['root_readonly', 'manage_app_users'];
|
|
368
|
+
}
|
|
369
|
+
getProviderId() {
|
|
370
|
+
return BoxAuthProvider.PROVIDER_ID;
|
|
371
|
+
}
|
|
372
|
+
static credential(accessToken) {
|
|
373
|
+
return {
|
|
374
|
+
providerId: BoxAuthProvider.PROVIDER_ID,
|
|
375
|
+
accessToken,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// ============================================================================
|
|
380
|
+
// ENTERPRISE IDENTITY PROVIDERS
|
|
381
|
+
// ============================================================================
|
|
382
|
+
/**
|
|
383
|
+
* Okta OAuth Provider
|
|
384
|
+
*/
|
|
385
|
+
export class OktaAuthProvider extends BaseOAuthProvider {
|
|
386
|
+
static PROVIDER_ID = 'okta.com';
|
|
387
|
+
initializeDefaultScopes() {
|
|
388
|
+
this.scopes = ['openid', 'email', 'profile'];
|
|
389
|
+
}
|
|
390
|
+
getProviderId() {
|
|
391
|
+
return OktaAuthProvider.PROVIDER_ID;
|
|
392
|
+
}
|
|
393
|
+
static credential(accessToken, idToken) {
|
|
394
|
+
return {
|
|
395
|
+
providerId: OktaAuthProvider.PROVIDER_ID,
|
|
396
|
+
accessToken,
|
|
397
|
+
idToken,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Auth0 OAuth Provider
|
|
403
|
+
*/
|
|
404
|
+
export class Auth0Provider extends BaseOAuthProvider {
|
|
405
|
+
static PROVIDER_ID = 'auth0.com';
|
|
406
|
+
initializeDefaultScopes() {
|
|
407
|
+
this.scopes = ['openid', 'email', 'profile'];
|
|
408
|
+
}
|
|
409
|
+
getProviderId() {
|
|
410
|
+
return Auth0Provider.PROVIDER_ID;
|
|
411
|
+
}
|
|
412
|
+
static credential(accessToken, idToken) {
|
|
413
|
+
return {
|
|
414
|
+
providerId: Auth0Provider.PROVIDER_ID,
|
|
415
|
+
accessToken,
|
|
416
|
+
idToken,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
/**
|
|
421
|
+
* Amazon OAuth Provider
|
|
422
|
+
*/
|
|
423
|
+
export class AmazonAuthProvider extends BaseOAuthProvider {
|
|
424
|
+
static PROVIDER_ID = 'amazon.com';
|
|
425
|
+
initializeDefaultScopes() {
|
|
426
|
+
this.scopes = ['profile', 'postal_code'];
|
|
427
|
+
}
|
|
428
|
+
getProviderId() {
|
|
429
|
+
return AmazonAuthProvider.PROVIDER_ID;
|
|
430
|
+
}
|
|
431
|
+
static credential(accessToken) {
|
|
432
|
+
return {
|
|
433
|
+
providerId: AmazonAuthProvider.PROVIDER_ID,
|
|
434
|
+
accessToken,
|
|
435
|
+
};
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
// ============================================================================
|
|
439
|
+
// GENERIC/CUSTOM OAUTH PROVIDER
|
|
440
|
+
// ============================================================================
|
|
441
|
+
/**
|
|
442
|
+
* Generic OAuth Provider for custom OAuth implementations
|
|
443
|
+
* Allows configuration of any OAuth provider with custom settings
|
|
444
|
+
*/
|
|
445
|
+
export class GenericOAuthProvider extends BaseOAuthProvider {
|
|
446
|
+
static PROVIDER_ID = 'generic.oauth';
|
|
447
|
+
customProviderId;
|
|
448
|
+
authorizationUrl = '';
|
|
449
|
+
tokenUrl = '';
|
|
450
|
+
userInfoUrl = '';
|
|
451
|
+
constructor(providerId) {
|
|
452
|
+
super();
|
|
453
|
+
this.customProviderId = providerId;
|
|
454
|
+
GenericOAuthProvider.PROVIDER_ID = providerId;
|
|
455
|
+
}
|
|
456
|
+
getProviderId() {
|
|
457
|
+
return this.customProviderId;
|
|
458
|
+
}
|
|
459
|
+
setAuthorizationUrl(url) {
|
|
460
|
+
this.authorizationUrl = url;
|
|
461
|
+
return this;
|
|
462
|
+
}
|
|
463
|
+
setTokenUrl(url) {
|
|
464
|
+
this.tokenUrl = url;
|
|
465
|
+
return this;
|
|
466
|
+
}
|
|
467
|
+
setUserInfoUrl(url) {
|
|
468
|
+
this.userInfoUrl = url;
|
|
469
|
+
return this;
|
|
470
|
+
}
|
|
471
|
+
getAuthorizationUrl() {
|
|
472
|
+
return this.authorizationUrl;
|
|
473
|
+
}
|
|
474
|
+
getTokenUrl() {
|
|
475
|
+
return this.tokenUrl;
|
|
476
|
+
}
|
|
477
|
+
getUserInfoUrl() {
|
|
478
|
+
return this.userInfoUrl;
|
|
479
|
+
}
|
|
480
|
+
static credential(accessToken, refreshToken) {
|
|
481
|
+
return {
|
|
482
|
+
providerId: GenericOAuthProvider.PROVIDER_ID,
|
|
483
|
+
accessToken,
|
|
484
|
+
refreshToken,
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* Provider registry mapping provider IDs to their constructor functions
|
|
490
|
+
*/
|
|
491
|
+
export const OAUTH_PROVIDERS = {
|
|
492
|
+
[GoogleAuthProvider.PROVIDER_ID]: GoogleAuthProvider,
|
|
493
|
+
[FacebookAuthProvider.PROVIDER_ID]: FacebookAuthProvider,
|
|
494
|
+
[GithubAuthProvider.PROVIDER_ID]: GithubAuthProvider,
|
|
495
|
+
[TwitterAuthProvider.PROVIDER_ID]: TwitterAuthProvider,
|
|
496
|
+
[MicrosoftAuthProvider.PROVIDER_ID]: MicrosoftAuthProvider,
|
|
497
|
+
[AppleAuthProvider.PROVIDER_ID]: AppleAuthProvider,
|
|
498
|
+
[LinkedInAuthProvider.PROVIDER_ID]: LinkedInAuthProvider,
|
|
499
|
+
[YahooAuthProvider.PROVIDER_ID]: YahooAuthProvider,
|
|
500
|
+
[InstagramAuthProvider.PROVIDER_ID]: InstagramAuthProvider,
|
|
501
|
+
[TikTokAuthProvider.PROVIDER_ID]: TikTokAuthProvider,
|
|
502
|
+
[TwitchAuthProvider.PROVIDER_ID]: TwitchAuthProvider,
|
|
503
|
+
[DiscordAuthProvider.PROVIDER_ID]: DiscordAuthProvider,
|
|
504
|
+
[SlackAuthProvider.PROVIDER_ID]: SlackAuthProvider,
|
|
505
|
+
[SpotifyAuthProvider.PROVIDER_ID]: SpotifyAuthProvider,
|
|
506
|
+
[StripeAuthProvider.PROVIDER_ID]: StripeAuthProvider,
|
|
507
|
+
[DropboxAuthProvider.PROVIDER_ID]: DropboxAuthProvider,
|
|
508
|
+
[BoxAuthProvider.PROVIDER_ID]: BoxAuthProvider,
|
|
509
|
+
[OktaAuthProvider.PROVIDER_ID]: OktaAuthProvider,
|
|
510
|
+
[Auth0Provider.PROVIDER_ID]: Auth0Provider,
|
|
511
|
+
[AmazonAuthProvider.PROVIDER_ID]: AmazonAuthProvider,
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* Get a provider by ID (standard providers only, use GenericOAuthProvider constructor for custom providers)
|
|
515
|
+
*/
|
|
516
|
+
export function getOAuthProvider(providerId) {
|
|
517
|
+
return OAUTH_PROVIDERS[providerId];
|
|
518
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Firebase Realtime Database compatibility layer
|
|
3
|
+
*/
|
|
4
|
+
import type { RealtimeDatabase, DatabaseReference, DataSnapshot, OnDisconnect } from '../types.js';
|
|
5
|
+
export declare const mockListeners: Map<string, Set<Function>>;
|
|
6
|
+
export declare function triggerMockListeners(path: string, value: any): void;
|
|
7
|
+
/**
|
|
8
|
+
* Database reference implementation
|
|
9
|
+
*/
|
|
10
|
+
export declare class DatabaseReferenceImpl implements DatabaseReference {
|
|
11
|
+
database: RealtimeDatabase;
|
|
12
|
+
_key: string;
|
|
13
|
+
_path: string[];
|
|
14
|
+
key: string | null;
|
|
15
|
+
parent: DatabaseReferenceImpl | null;
|
|
16
|
+
root: DatabaseReferenceImpl;
|
|
17
|
+
path: string;
|
|
18
|
+
constructor(database: RealtimeDatabase, path?: string, parent?: DatabaseReferenceImpl | null);
|
|
19
|
+
toJSON(): string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Data snapshot implementation
|
|
23
|
+
*/
|
|
24
|
+
export declare class DataSnapshotImpl implements DataSnapshot {
|
|
25
|
+
ref: DatabaseReferenceImpl;
|
|
26
|
+
_database: RealtimeDatabase;
|
|
27
|
+
_node: any;
|
|
28
|
+
key: string | null;
|
|
29
|
+
size: number;
|
|
30
|
+
constructor(ref: DatabaseReferenceImpl, database: RealtimeDatabase, data: any);
|
|
31
|
+
child(path: string): DataSnapshot;
|
|
32
|
+
exists(): boolean;
|
|
33
|
+
exportVal(): any;
|
|
34
|
+
getPriority(): string | number | null;
|
|
35
|
+
toJSON(): any;
|
|
36
|
+
val(): any;
|
|
37
|
+
private _getNestedValue;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* OnDisconnect handler
|
|
41
|
+
*/
|
|
42
|
+
export declare class OnDisconnectImpl implements OnDisconnect {
|
|
43
|
+
ref: DatabaseReferenceImpl;
|
|
44
|
+
_operations: Array<{
|
|
45
|
+
type: string;
|
|
46
|
+
value: any;
|
|
47
|
+
priority: any;
|
|
48
|
+
}>;
|
|
49
|
+
constructor(ref: DatabaseReferenceImpl);
|
|
50
|
+
cancel(onComplete?: (error: Error | null) => void): Promise<void>;
|
|
51
|
+
remove(onComplete?: (error: Error | null) => void): Promise<void>;
|
|
52
|
+
set(value: any, onComplete?: (error: Error | null) => void): Promise<void>;
|
|
53
|
+
setWithPriority(value: any, priority: string | number | null, onComplete?: (error: Error | null) => void): Promise<void>;
|
|
54
|
+
update(updates: {
|
|
55
|
+
[key: string]: any;
|
|
56
|
+
}, onComplete?: (error: Error | null) => void): Promise<void>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get a database reference
|
|
60
|
+
*/
|
|
61
|
+
export declare function ref(database: RealtimeDatabase, path?: string): DatabaseReferenceImpl;
|
|
62
|
+
/**
|
|
63
|
+
* Get a reference from URL
|
|
64
|
+
*/
|
|
65
|
+
export declare function refFromURL(database: RealtimeDatabase, url: string): DatabaseReferenceImpl;
|
|
66
|
+
/**
|
|
67
|
+
* Get a child reference
|
|
68
|
+
*/
|
|
69
|
+
export declare function child(parent: DatabaseReferenceImpl, path: string): DatabaseReferenceImpl;
|
|
70
|
+
/**
|
|
71
|
+
* Set value at reference
|
|
72
|
+
*/
|
|
73
|
+
export declare function set(reference: DatabaseReferenceImpl, value: any, engine?: any): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Update value at reference
|
|
76
|
+
*/
|
|
77
|
+
export declare function update(reference: DatabaseReferenceImpl, updates: {
|
|
78
|
+
[key: string]: any;
|
|
79
|
+
}, engine?: any): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Remove value at reference
|
|
82
|
+
*/
|
|
83
|
+
export declare function remove(reference: DatabaseReferenceImpl, engine?: any): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Push value (auto-generated key)
|
|
86
|
+
*/
|
|
87
|
+
export declare function push(reference: DatabaseReferenceImpl, value?: any, engine?: any): Promise<DatabaseReferenceImpl>;
|
|
88
|
+
/**
|
|
89
|
+
* Get data from database
|
|
90
|
+
*/
|
|
91
|
+
export declare function get(reference: DatabaseReferenceImpl, engine?: any): Promise<DataSnapshot>;
|
|
92
|
+
/**
|
|
93
|
+
* Get onDisconnect handler
|
|
94
|
+
*/
|
|
95
|
+
export declare function onDisconnect(reference: DatabaseReferenceImpl): OnDisconnectImpl;
|
|
96
|
+
/**
|
|
97
|
+
* Listen for value changes
|
|
98
|
+
*/
|
|
99
|
+
export declare function onValue(ref: DatabaseReferenceImpl, callback: (snapshot: DataSnapshot) => void): () => void;
|
|
100
|
+
/**
|
|
101
|
+
* Remove listeners from a reference
|
|
102
|
+
*/
|
|
103
|
+
export declare function off(ref: DatabaseReferenceImpl, eventType?: string, callback?: Function): void;
|
|
104
|
+
export type { DataSnapshot, DatabaseReference, OnDisconnect } from '../types.js';
|