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.
Files changed (95) hide show
  1. package/README.md +445 -213
  2. package/dist/components/Collection.svelte +150 -0
  3. package/dist/components/Collection.svelte.d.ts +27 -0
  4. package/dist/components/Ddoc.svelte +131 -0
  5. package/dist/components/Ddoc.svelte.d.ts +28 -0
  6. package/dist/components/Node.svelte +97 -0
  7. package/dist/components/Node.svelte.d.ts +23 -0
  8. package/dist/components/auth-guard.svelte +89 -0
  9. package/dist/components/auth-guard.svelte.d.ts +26 -0
  10. package/dist/components/custom-guard.svelte +122 -0
  11. package/dist/components/custom-guard.svelte.d.ts +31 -0
  12. package/dist/components/download-url.svelte +92 -0
  13. package/dist/components/download-url.svelte.d.ts +19 -0
  14. package/dist/components/firebase-app.svelte +30 -0
  15. package/dist/components/firebase-app.svelte.d.ts +7 -0
  16. package/dist/components/node-list.svelte +102 -0
  17. package/dist/components/node-list.svelte.d.ts +27 -0
  18. package/dist/components/signed-in.svelte +42 -0
  19. package/dist/components/signed-in.svelte.d.ts +11 -0
  20. package/dist/components/signed-out.svelte +42 -0
  21. package/dist/components/signed-out.svelte.d.ts +11 -0
  22. package/dist/components/storage-list.svelte +97 -0
  23. package/dist/components/storage-list.svelte.d.ts +26 -0
  24. package/dist/components/upload-task.svelte +108 -0
  25. package/dist/components/upload-task.svelte.d.ts +24 -0
  26. package/dist/config.js +17 -39
  27. package/dist/firebase.d.ts +43 -21
  28. package/dist/firebase.js +121 -35
  29. package/dist/index.d.ts +21 -13
  30. package/dist/index.js +27 -15
  31. package/dist/services/auth.d.ts +397 -0
  32. package/dist/services/auth.js +882 -0
  33. package/dist/services/collection.svelte.d.ts +286 -0
  34. package/dist/services/collection.svelte.js +871 -0
  35. package/dist/services/document.svelte.d.ts +288 -0
  36. package/dist/services/document.svelte.js +555 -0
  37. package/dist/services/mutations.d.ts +336 -0
  38. package/dist/services/mutations.js +1079 -0
  39. package/dist/services/presence.svelte.d.ts +141 -0
  40. package/dist/services/presence.svelte.js +727 -0
  41. package/dist/{realtime → services}/realtime.svelte.d.ts +3 -1
  42. package/dist/{realtime → services}/realtime.svelte.js +13 -7
  43. package/dist/services/storage.svelte.d.ts +257 -0
  44. package/dist/services/storage.svelte.js +374 -0
  45. package/dist/services/user.svelte.d.ts +296 -0
  46. package/dist/services/user.svelte.js +609 -0
  47. package/dist/types/auth.d.ts +158 -0
  48. package/dist/types/auth.js +106 -0
  49. package/dist/types/collection.d.ts +360 -0
  50. package/dist/types/collection.js +167 -0
  51. package/dist/types/document.d.ts +342 -0
  52. package/dist/types/document.js +148 -0
  53. package/dist/types/firebase.d.ts +44 -0
  54. package/dist/types/firebase.js +33 -0
  55. package/dist/types/index.d.ts +6 -0
  56. package/dist/types/index.js +4 -0
  57. package/dist/types/mutations.d.ts +387 -0
  58. package/dist/types/mutations.js +205 -0
  59. package/dist/types/presence.d.ts +282 -0
  60. package/dist/types/presence.js +80 -0
  61. package/dist/utils/errors.d.ts +21 -0
  62. package/dist/utils/errors.js +35 -0
  63. package/dist/utils/firestore.d.ts +9 -0
  64. package/dist/utils/firestore.js +33 -0
  65. package/dist/utils/index.d.ts +4 -0
  66. package/dist/utils/index.js +8 -0
  67. package/dist/utils/providers.d.ts +16 -0
  68. package/dist/utils/providers.js +30 -0
  69. package/dist/utils/user.d.ts +8 -0
  70. package/dist/utils/user.js +29 -0
  71. package/package.json +64 -64
  72. package/dist/auth/auth.d.ts +0 -117
  73. package/dist/auth/auth.js +0 -194
  74. package/dist/auth/presence.svelte.d.ts +0 -139
  75. package/dist/auth/presence.svelte.js +0 -373
  76. package/dist/auth/user.svelte.d.ts +0 -112
  77. package/dist/auth/user.svelte.js +0 -155
  78. package/dist/firestore/awaitable-doc.svelte.d.ts +0 -141
  79. package/dist/firestore/awaitable-doc.svelte.js +0 -183
  80. package/dist/firestore/batch-mutations.svelte.d.ts +0 -140
  81. package/dist/firestore/batch-mutations.svelte.js +0 -218
  82. package/dist/firestore/collection-group.svelte.d.ts +0 -78
  83. package/dist/firestore/collection-group.svelte.js +0 -120
  84. package/dist/firestore/collection.svelte.d.ts +0 -96
  85. package/dist/firestore/collection.svelte.js +0 -137
  86. package/dist/firestore/doc.svelte.d.ts +0 -90
  87. package/dist/firestore/doc.svelte.js +0 -131
  88. package/dist/firestore/document-mutations.svelte.d.ts +0 -164
  89. package/dist/firestore/document-mutations.svelte.js +0 -273
  90. package/dist/storage/download-url.svelte.d.ts +0 -83
  91. package/dist/storage/download-url.svelte.js +0 -114
  92. package/dist/storage/storage-list.svelte.d.ts +0 -89
  93. package/dist/storage/storage-list.svelte.js +0 -123
  94. package/dist/storage/upload-task.svelte.d.ts +0 -94
  95. 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 {};