svelte-firekit 0.0.25 → 0.1.0

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 +389 -0
  32. package/dist/services/auth.js +824 -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 +290 -0
  46. package/dist/services/user.svelte.js +533 -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 +65 -65
  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,290 @@
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
+ /** Current user profile state */
52
+ private _user;
53
+ /** Loading state indicator */
54
+ private _loading;
55
+ /** Authentication initialization state */
56
+ private _initialized;
57
+ /** Current error state */
58
+ private _error;
59
+ /** Derived: Whether user is authenticated (not anonymous) */
60
+ private _isAuthenticated;
61
+ /** Derived: Whether user is anonymous */
62
+ private _isAnonymous;
63
+ /** Derived: Whether user's email is verified */
64
+ private _isEmailVerified;
65
+ /** Derived: User's primary email address */
66
+ private _userEmail;
67
+ /** Derived: User's display name */
68
+ private _userDisplayName;
69
+ /** Derived: User's photo URL */
70
+ private _userPhotoURL;
71
+ /** Derived: User's unique ID */
72
+ private _userId;
73
+ /** Derived: User's phone number */
74
+ private _userPhoneNumber;
75
+ private constructor();
76
+ /**
77
+ * Gets singleton instance of FirekitUserStore
78
+ * @returns {FirekitUserStore} The FirekitUserStore instance
79
+ */
80
+ static getInstance(): FirekitUserStore;
81
+ /**
82
+ * Initializes the authentication state listener
83
+ * @private
84
+ */
85
+ private initializeAuthStateListener;
86
+ /**
87
+ * Maps Firebase User to UserProfile interface
88
+ * @private
89
+ */
90
+ private mapFirebaseUserToProfile;
91
+ /**
92
+ * Updates user data in Firestore
93
+ * @private
94
+ */
95
+ private updateUserInFirestore;
96
+ /** Current user profile */
97
+ get user(): UserProfile | null;
98
+ /** Current loading state */
99
+ get loading(): boolean;
100
+ /** Whether auth has been initialized */
101
+ get initialized(): boolean;
102
+ /** Current error state */
103
+ get error(): Error | null;
104
+ /** Whether user is authenticated (not anonymous) */
105
+ get isAuthenticated(): boolean;
106
+ /** Whether user is anonymous */
107
+ get isAnonymous(): boolean;
108
+ /** Whether user's email is verified */
109
+ get isEmailVerified(): boolean;
110
+ /** User's email address */
111
+ get email(): string | null;
112
+ /** User's display name */
113
+ get displayName(): string | null;
114
+ /** User's photo URL */
115
+ get photoURL(): string | null;
116
+ /** User's unique ID */
117
+ get uid(): string | null;
118
+ /** User's phone number */
119
+ get phoneNumber(): string | null;
120
+ /**
121
+ * Updates user's display name
122
+ * @param {string} displayName New display name
123
+ * @returns {Promise<void>} Promise that resolves when update completes
124
+ * @throws {FirekitAuthError} If update fails
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * await firekitUser.updateDisplayName("John Doe");
129
+ * ```
130
+ */
131
+ updateDisplayName(displayName: string): Promise<void>;
132
+ /**
133
+ * Updates user's photo URL
134
+ * @param {string} photoURL New photo URL
135
+ * @returns {Promise<void>} Promise that resolves when update completes
136
+ * @throws {FirekitAuthError} If update fails
137
+ *
138
+ * @example
139
+ * ```typescript
140
+ * await firekitUser.updatePhotoURL("https://example.com/photo.jpg");
141
+ * ```
142
+ */
143
+ updatePhotoURL(photoURL: string): Promise<void>;
144
+ /**
145
+ * Updates user's profile data
146
+ * @param {UserProfileUpdateData} profileData Profile data to update
147
+ * @returns {Promise<void>} Promise that resolves when update completes
148
+ * @throws {FirekitAuthError} If update fails
149
+ *
150
+ * @example
151
+ * ```typescript
152
+ * await firekitUser.updateProfile({
153
+ * displayName: "John Smith",
154
+ * photoURL: "https://example.com/new-photo.jpg"
155
+ * });
156
+ * ```
157
+ */
158
+ updateProfile(profileData: UserProfileUpdateData): Promise<void>;
159
+ /**
160
+ * Updates user's email address
161
+ * @param {string} newEmail New email address
162
+ * @returns {Promise<void>} Promise that resolves when update completes
163
+ * @throws {FirekitAuthError} If update fails
164
+ *
165
+ * @example
166
+ * ```typescript
167
+ * await firekitUser.updateEmail("newemail@example.com");
168
+ * ```
169
+ */
170
+ updateEmail(newEmail: string): Promise<void>;
171
+ /**
172
+ * Updates user's password
173
+ * @param {string} newPassword New password
174
+ * @returns {Promise<void>} Promise that resolves when update completes
175
+ * @throws {FirekitAuthError} If update fails
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * await firekitUser.updatePassword("newSecurePassword123");
180
+ * ```
181
+ */
182
+ updatePassword(newPassword: string): Promise<void>;
183
+ /**
184
+ * Sends email verification to current user
185
+ * @returns {Promise<void>} Promise that resolves when verification email is sent
186
+ * @throws {FirekitAuthError} If sending fails
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * await firekitUser.sendEmailVerification();
191
+ * ```
192
+ */
193
+ sendEmailVerification(): Promise<void>;
194
+ /**
195
+ * Reloads user to get updated email verification status
196
+ * @returns {Promise<void>} Promise that resolves when user is reloaded
197
+ * @throws {FirekitAuthError} If reload fails
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * await firekitUser.reloadUser();
202
+ * ```
203
+ */
204
+ reloadUser(): Promise<void>;
205
+ /**
206
+ * Gets the current user's ID token
207
+ * @param {boolean} [forceRefresh=false] Whether to force token refresh
208
+ * @returns {Promise<string>} Promise resolving to ID token
209
+ * @throws {FirekitAuthError} If getting token fails
210
+ *
211
+ * @example
212
+ * ```typescript
213
+ * const token = await firekitUser.getIdToken();
214
+ * ```
215
+ */
216
+ getIdToken(forceRefresh?: boolean): Promise<string>;
217
+ /**
218
+ * Gets extended user data from Firestore
219
+ * @returns {Promise<ExtendedUserData | null>} Promise resolving to extended user data
220
+ *
221
+ * @example
222
+ * ```typescript
223
+ * const userData = await firekitUser.getExtendedUserData();
224
+ * console.log(userData?.preferences);
225
+ * ```
226
+ */
227
+ getExtendedUserData(): Promise<ExtendedUserData | null>;
228
+ /**
229
+ * Updates extended user data in Firestore
230
+ * @param {Partial<ExtendedUserData>} data Data to update
231
+ * @returns {Promise<void>} Promise that resolves when update completes
232
+ *
233
+ * @example
234
+ * ```typescript
235
+ * await firekitUser.updateExtendedUserData({
236
+ * preferences: { theme: 'dark', language: 'en' },
237
+ * settings: { notifications: true }
238
+ * });
239
+ * ```
240
+ */
241
+ updateExtendedUserData(data: Partial<ExtendedUserData>): Promise<void>;
242
+ /**
243
+ * Waits for authentication to initialize
244
+ * @returns {Promise<UserProfile | null>} Promise that resolves when auth is initialized
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * const user = await firekitUser.waitForAuth();
249
+ * if (user) {
250
+ * console.log("User is authenticated");
251
+ * }
252
+ * ```
253
+ */
254
+ waitForAuth(): Promise<UserProfile | null>;
255
+ /**
256
+ * Clears any error state
257
+ */
258
+ clearError(): void;
259
+ /**
260
+ * Manually sets loading state (use with caution)
261
+ * @param {boolean} loading Loading state
262
+ */
263
+ setLoading(loading: boolean): void;
264
+ /**
265
+ * Resets the store to initial state
266
+ */
267
+ reset(): void;
268
+ }
269
+ /**
270
+ * Pre-initialized singleton instance of FirekitUserStore.
271
+ * Provides reactive user state management for Svelte applications.
272
+ *
273
+ * @example
274
+ * ```typescript
275
+ * import { firekitUser } from 'svelte-firekit';
276
+ *
277
+ * // In a Svelte component
278
+ * $: if (firekitUser.isAuthenticated) {
279
+ * console.log("Welcome:", firekitUser.displayName);
280
+ * }
281
+ *
282
+ * // Update profile
283
+ * await firekitUser.updateDisplayName("John Doe");
284
+ *
285
+ * // Get extended data
286
+ * const userData = await firekitUser.getExtendedUserData();
287
+ * ```
288
+ */
289
+ export declare const firekitUser: FirekitUserStore;
290
+ export {};