svelte-firekit 0.0.25 → 0.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 +445 -213
- package/dist/components/Collection.svelte +150 -0
- package/dist/components/Collection.svelte.d.ts +27 -0
- package/dist/components/Ddoc.svelte +131 -0
- package/dist/components/Ddoc.svelte.d.ts +28 -0
- package/dist/components/Node.svelte +97 -0
- package/dist/components/Node.svelte.d.ts +23 -0
- package/dist/components/auth-guard.svelte +89 -0
- package/dist/components/auth-guard.svelte.d.ts +26 -0
- package/dist/components/custom-guard.svelte +122 -0
- package/dist/components/custom-guard.svelte.d.ts +31 -0
- package/dist/components/download-url.svelte +92 -0
- package/dist/components/download-url.svelte.d.ts +19 -0
- package/dist/components/firebase-app.svelte +30 -0
- package/dist/components/firebase-app.svelte.d.ts +7 -0
- package/dist/components/node-list.svelte +102 -0
- package/dist/components/node-list.svelte.d.ts +27 -0
- package/dist/components/signed-in.svelte +42 -0
- package/dist/components/signed-in.svelte.d.ts +11 -0
- package/dist/components/signed-out.svelte +42 -0
- package/dist/components/signed-out.svelte.d.ts +11 -0
- package/dist/components/storage-list.svelte +97 -0
- package/dist/components/storage-list.svelte.d.ts +26 -0
- package/dist/components/upload-task.svelte +108 -0
- package/dist/components/upload-task.svelte.d.ts +24 -0
- package/dist/config.js +17 -39
- package/dist/firebase.d.ts +43 -21
- package/dist/firebase.js +121 -35
- package/dist/index.d.ts +21 -13
- package/dist/index.js +27 -15
- package/dist/services/auth.d.ts +397 -0
- package/dist/services/auth.js +882 -0
- package/dist/services/collection.svelte.d.ts +286 -0
- package/dist/services/collection.svelte.js +871 -0
- package/dist/services/document.svelte.d.ts +288 -0
- package/dist/services/document.svelte.js +555 -0
- package/dist/services/mutations.d.ts +336 -0
- package/dist/services/mutations.js +1079 -0
- package/dist/services/presence.svelte.d.ts +141 -0
- package/dist/services/presence.svelte.js +727 -0
- package/dist/{realtime → services}/realtime.svelte.d.ts +3 -1
- package/dist/{realtime → services}/realtime.svelte.js +13 -7
- package/dist/services/storage.svelte.d.ts +257 -0
- package/dist/services/storage.svelte.js +374 -0
- package/dist/services/user.svelte.d.ts +296 -0
- package/dist/services/user.svelte.js +609 -0
- package/dist/types/auth.d.ts +158 -0
- package/dist/types/auth.js +106 -0
- package/dist/types/collection.d.ts +360 -0
- package/dist/types/collection.js +167 -0
- package/dist/types/document.d.ts +342 -0
- package/dist/types/document.js +148 -0
- package/dist/types/firebase.d.ts +44 -0
- package/dist/types/firebase.js +33 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/index.js +4 -0
- package/dist/types/mutations.d.ts +387 -0
- package/dist/types/mutations.js +205 -0
- package/dist/types/presence.d.ts +282 -0
- package/dist/types/presence.js +80 -0
- package/dist/utils/errors.d.ts +21 -0
- package/dist/utils/errors.js +35 -0
- package/dist/utils/firestore.d.ts +9 -0
- package/dist/utils/firestore.js +33 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/providers.d.ts +16 -0
- package/dist/utils/providers.js +30 -0
- package/dist/utils/user.d.ts +8 -0
- package/dist/utils/user.js +29 -0
- package/package.json +64 -64
- package/dist/auth/auth.d.ts +0 -117
- package/dist/auth/auth.js +0 -194
- package/dist/auth/presence.svelte.d.ts +0 -139
- package/dist/auth/presence.svelte.js +0 -373
- package/dist/auth/user.svelte.d.ts +0 -112
- package/dist/auth/user.svelte.js +0 -155
- package/dist/firestore/awaitable-doc.svelte.d.ts +0 -141
- package/dist/firestore/awaitable-doc.svelte.js +0 -183
- package/dist/firestore/batch-mutations.svelte.d.ts +0 -140
- package/dist/firestore/batch-mutations.svelte.js +0 -218
- package/dist/firestore/collection-group.svelte.d.ts +0 -78
- package/dist/firestore/collection-group.svelte.js +0 -120
- package/dist/firestore/collection.svelte.d.ts +0 -96
- package/dist/firestore/collection.svelte.js +0 -137
- package/dist/firestore/doc.svelte.d.ts +0 -90
- package/dist/firestore/doc.svelte.js +0 -131
- package/dist/firestore/document-mutations.svelte.d.ts +0 -164
- package/dist/firestore/document-mutations.svelte.js +0 -273
- package/dist/storage/download-url.svelte.d.ts +0 -83
- package/dist/storage/download-url.svelte.js +0 -114
- package/dist/storage/storage-list.svelte.d.ts +0 -89
- package/dist/storage/storage-list.svelte.js +0 -123
- package/dist/storage/upload-task.svelte.d.ts +0 -94
- package/dist/storage/upload-task.svelte.js +0 -138
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview FirekitUser Store - Reactive user state management using Svelte 5 runes
|
|
3
|
+
* @module FirekitUserStore
|
|
4
|
+
* @version 1.0.0
|
|
5
|
+
*/
|
|
6
|
+
import { type UserProfile, type UserProfileUpdateData } from '../types/auth.js';
|
|
7
|
+
/**
|
|
8
|
+
* User store interface for type safety
|
|
9
|
+
*/
|
|
10
|
+
export interface UserStoreState {
|
|
11
|
+
user: UserProfile | null;
|
|
12
|
+
loading: boolean;
|
|
13
|
+
initialized: boolean;
|
|
14
|
+
error: Error | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Extended user data stored in Firestore
|
|
18
|
+
*/
|
|
19
|
+
export interface ExtendedUserData extends UserProfile {
|
|
20
|
+
preferences?: Record<string, any>;
|
|
21
|
+
settings?: Record<string, any>;
|
|
22
|
+
lastActive?: Date;
|
|
23
|
+
createdAt?: Date;
|
|
24
|
+
updatedAt?: Date;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Reactive user store using Svelte 5 runes for state management.
|
|
28
|
+
* Provides real-time authentication state and user profile management.
|
|
29
|
+
*
|
|
30
|
+
* @class FirekitUserStore
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* import { firekitUser } from 'svelte-firekit';
|
|
34
|
+
*
|
|
35
|
+
* // Access reactive state
|
|
36
|
+
* $: if (firekitUser.isAuthenticated) {
|
|
37
|
+
* console.log("User:", firekitUser.user);
|
|
38
|
+
* }
|
|
39
|
+
*
|
|
40
|
+
* // Update profile
|
|
41
|
+
* await firekitUser.updateDisplayName("John Doe");
|
|
42
|
+
*
|
|
43
|
+
* // Get extended user data
|
|
44
|
+
* const userData = await firekitUser.getExtendedUserData();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
declare class FirekitUserStore {
|
|
48
|
+
private static instance;
|
|
49
|
+
private auth;
|
|
50
|
+
private firestore;
|
|
51
|
+
private _servicesInitialized;
|
|
52
|
+
/** Current user profile state */
|
|
53
|
+
private _user;
|
|
54
|
+
/** Loading state indicator */
|
|
55
|
+
private _loading;
|
|
56
|
+
/** Authentication initialization state */
|
|
57
|
+
private _initialized;
|
|
58
|
+
/** Current error state */
|
|
59
|
+
private _error;
|
|
60
|
+
/** Derived: Whether user is authenticated (not anonymous) */
|
|
61
|
+
private _isAuthenticated;
|
|
62
|
+
/** Derived: Whether user is anonymous */
|
|
63
|
+
private _isAnonymous;
|
|
64
|
+
/** Derived: Whether user's email is verified */
|
|
65
|
+
private _isEmailVerified;
|
|
66
|
+
/** Derived: User's primary email address */
|
|
67
|
+
private _userEmail;
|
|
68
|
+
/** Derived: User's display name */
|
|
69
|
+
private _userDisplayName;
|
|
70
|
+
/** Derived: User's photo URL */
|
|
71
|
+
private _userPhotoURL;
|
|
72
|
+
/** Derived: User's unique ID */
|
|
73
|
+
private _userId;
|
|
74
|
+
/** Derived: User's phone number */
|
|
75
|
+
private _userPhoneNumber;
|
|
76
|
+
private constructor();
|
|
77
|
+
/**
|
|
78
|
+
* Gets singleton instance of FirekitUserStore
|
|
79
|
+
* @returns {FirekitUserStore} The FirekitUserStore instance
|
|
80
|
+
*/
|
|
81
|
+
static getInstance(): FirekitUserStore;
|
|
82
|
+
/**
|
|
83
|
+
* Initializes Firebase services and auth state listener
|
|
84
|
+
* @private
|
|
85
|
+
*/
|
|
86
|
+
private initializeServices;
|
|
87
|
+
/**
|
|
88
|
+
* Initializes the authentication state listener
|
|
89
|
+
* @private
|
|
90
|
+
*/
|
|
91
|
+
private initializeAuthStateListener;
|
|
92
|
+
/**
|
|
93
|
+
* Maps Firebase User to UserProfile interface
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
private mapFirebaseUserToProfile;
|
|
97
|
+
/**
|
|
98
|
+
* Updates user data in Firestore
|
|
99
|
+
* @private
|
|
100
|
+
*/
|
|
101
|
+
private updateUserInFirestore;
|
|
102
|
+
/** Current user profile */
|
|
103
|
+
get user(): UserProfile | null;
|
|
104
|
+
/** Current loading state */
|
|
105
|
+
get loading(): boolean;
|
|
106
|
+
/** Whether auth has been initialized */
|
|
107
|
+
get initialized(): boolean;
|
|
108
|
+
/** Current error state */
|
|
109
|
+
get error(): Error | null;
|
|
110
|
+
/** Whether user is authenticated (not anonymous) */
|
|
111
|
+
get isAuthenticated(): boolean;
|
|
112
|
+
/** Whether user is anonymous */
|
|
113
|
+
get isAnonymous(): boolean;
|
|
114
|
+
/** Whether user's email is verified */
|
|
115
|
+
get isEmailVerified(): boolean;
|
|
116
|
+
/** User's email address */
|
|
117
|
+
get email(): string | null;
|
|
118
|
+
/** User's display name */
|
|
119
|
+
get displayName(): string | null;
|
|
120
|
+
/** User's photo URL */
|
|
121
|
+
get photoURL(): string | null;
|
|
122
|
+
/** User's unique ID */
|
|
123
|
+
get uid(): string | null;
|
|
124
|
+
/** User's phone number */
|
|
125
|
+
get phoneNumber(): string | null;
|
|
126
|
+
/**
|
|
127
|
+
* Updates user's display name
|
|
128
|
+
* @param {string} displayName New display name
|
|
129
|
+
* @returns {Promise<void>} Promise that resolves when update completes
|
|
130
|
+
* @throws {FirekitAuthError} If update fails
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* await firekitUser.updateDisplayName("John Doe");
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
updateDisplayName(displayName: string): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Updates user's photo URL
|
|
140
|
+
* @param {string} photoURL New photo URL
|
|
141
|
+
* @returns {Promise<void>} Promise that resolves when update completes
|
|
142
|
+
* @throws {FirekitAuthError} If update fails
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* await firekitUser.updatePhotoURL("https://example.com/photo.jpg");
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
updatePhotoURL(photoURL: string): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Updates user's profile data
|
|
152
|
+
* @param {UserProfileUpdateData} profileData Profile data to update
|
|
153
|
+
* @returns {Promise<void>} Promise that resolves when update completes
|
|
154
|
+
* @throws {FirekitAuthError} If update fails
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* ```typescript
|
|
158
|
+
* await firekitUser.updateProfile({
|
|
159
|
+
* displayName: "John Smith",
|
|
160
|
+
* photoURL: "https://example.com/new-photo.jpg"
|
|
161
|
+
* });
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
updateProfile(profileData: UserProfileUpdateData): Promise<void>;
|
|
165
|
+
/**
|
|
166
|
+
* Updates user's email address
|
|
167
|
+
* @param {string} newEmail New email address
|
|
168
|
+
* @returns {Promise<void>} Promise that resolves when update completes
|
|
169
|
+
* @throws {FirekitAuthError} If update fails
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* await firekitUser.updateEmail("newemail@example.com");
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
updateEmail(newEmail: string): Promise<void>;
|
|
177
|
+
/**
|
|
178
|
+
* Updates user's password
|
|
179
|
+
* @param {string} newPassword New password
|
|
180
|
+
* @returns {Promise<void>} Promise that resolves when update completes
|
|
181
|
+
* @throws {FirekitAuthError} If update fails
|
|
182
|
+
*
|
|
183
|
+
* @example
|
|
184
|
+
* ```typescript
|
|
185
|
+
* await firekitUser.updatePassword("newSecurePassword123");
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
updatePassword(newPassword: string): Promise<void>;
|
|
189
|
+
/**
|
|
190
|
+
* Sends email verification to current user
|
|
191
|
+
* @returns {Promise<void>} Promise that resolves when verification email is sent
|
|
192
|
+
* @throws {FirekitAuthError} If sending fails
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```typescript
|
|
196
|
+
* await firekitUser.sendEmailVerification();
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
sendEmailVerification(): Promise<void>;
|
|
200
|
+
/**
|
|
201
|
+
* Reloads user to get updated email verification status
|
|
202
|
+
* @returns {Promise<void>} Promise that resolves when user is reloaded
|
|
203
|
+
* @throws {FirekitAuthError} If reload fails
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* await firekitUser.reloadUser();
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
reloadUser(): Promise<void>;
|
|
211
|
+
/**
|
|
212
|
+
* Gets the current user's ID token
|
|
213
|
+
* @param {boolean} [forceRefresh=false] Whether to force token refresh
|
|
214
|
+
* @returns {Promise<string>} Promise resolving to ID token
|
|
215
|
+
* @throws {FirekitAuthError} If getting token fails
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* const token = await firekitUser.getIdToken();
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
getIdToken(forceRefresh?: boolean): Promise<string>;
|
|
223
|
+
/**
|
|
224
|
+
* Gets extended user data from Firestore
|
|
225
|
+
* @returns {Promise<ExtendedUserData | null>} Promise resolving to extended user data
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```typescript
|
|
229
|
+
* const userData = await firekitUser.getExtendedUserData();
|
|
230
|
+
* console.log(userData?.preferences);
|
|
231
|
+
* ```
|
|
232
|
+
*/
|
|
233
|
+
getExtendedUserData(): Promise<ExtendedUserData | null>;
|
|
234
|
+
/**
|
|
235
|
+
* Updates extended user data in Firestore
|
|
236
|
+
* @param {Partial<ExtendedUserData>} data Data to update
|
|
237
|
+
* @returns {Promise<void>} Promise that resolves when update completes
|
|
238
|
+
*
|
|
239
|
+
* @example
|
|
240
|
+
* ```typescript
|
|
241
|
+
* await firekitUser.updateExtendedUserData({
|
|
242
|
+
* preferences: { theme: 'dark', language: 'en' },
|
|
243
|
+
* settings: { notifications: true }
|
|
244
|
+
* });
|
|
245
|
+
* ```
|
|
246
|
+
*/
|
|
247
|
+
updateExtendedUserData(data: Partial<ExtendedUserData>): Promise<void>;
|
|
248
|
+
/**
|
|
249
|
+
* Waits for authentication to initialize
|
|
250
|
+
* @returns {Promise<UserProfile | null>} Promise that resolves when auth is initialized
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```typescript
|
|
254
|
+
* const user = await firekitUser.waitForAuth();
|
|
255
|
+
* if (user) {
|
|
256
|
+
* console.log("User is authenticated");
|
|
257
|
+
* }
|
|
258
|
+
* ```
|
|
259
|
+
*/
|
|
260
|
+
waitForAuth(): Promise<UserProfile | null>;
|
|
261
|
+
/**
|
|
262
|
+
* Clears any error state
|
|
263
|
+
*/
|
|
264
|
+
clearError(): void;
|
|
265
|
+
/**
|
|
266
|
+
* Manually sets loading state (use with caution)
|
|
267
|
+
* @param {boolean} loading Loading state
|
|
268
|
+
*/
|
|
269
|
+
setLoading(loading: boolean): void;
|
|
270
|
+
/**
|
|
271
|
+
* Resets the store to initial state
|
|
272
|
+
*/
|
|
273
|
+
reset(): void;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Pre-initialized singleton instance of FirekitUserStore.
|
|
277
|
+
* Provides reactive user state management for Svelte applications.
|
|
278
|
+
*
|
|
279
|
+
* @example
|
|
280
|
+
* ```typescript
|
|
281
|
+
* import { firekitUser } from 'svelte-firekit';
|
|
282
|
+
*
|
|
283
|
+
* // In a Svelte component
|
|
284
|
+
* $: if (firekitUser.isAuthenticated) {
|
|
285
|
+
* console.log("Welcome:", firekitUser.displayName);
|
|
286
|
+
* }
|
|
287
|
+
*
|
|
288
|
+
* // Update profile
|
|
289
|
+
* await firekitUser.updateDisplayName("John Doe");
|
|
290
|
+
*
|
|
291
|
+
* // Get extended data
|
|
292
|
+
* const userData = await firekitUser.getExtendedUserData();
|
|
293
|
+
* ```
|
|
294
|
+
*/
|
|
295
|
+
export declare const firekitUser: FirekitUserStore;
|
|
296
|
+
export {};
|