@seaverse/data-service-sdk 0.10.0 → 0.10.2
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 +313 -16
- package/dist/browser.js +80 -21
- package/dist/browser.js.map +1 -1
- package/dist/browser.umd.js +80 -21
- package/dist/browser.umd.js.map +1 -1
- package/dist/index.cjs +80 -21
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +20 -11
- package/dist/index.js +80 -21
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -32,9 +32,9 @@ const ENDPOINTS = {
|
|
|
32
32
|
* ---------------------------
|
|
33
33
|
* Your Firestore data is organized in three permission levels:
|
|
34
34
|
*
|
|
35
|
-
* 1. publicRead/ - System configs, announcements (Read: Everyone, Write: Admin only)
|
|
36
|
-
* 2. publicData/ - User posts, shared content (Read: Everyone, Write: Everyone)
|
|
37
|
-
* 3. userData/{userId}/ - Private user data (Read/Write: Owner only)
|
|
35
|
+
* 1. publicRead/_data/ - System configs, announcements (Read: Everyone, Write: Admin only)
|
|
36
|
+
* 2. publicData/_data/ - User posts, shared content (Read: Everyone, Write: Everyone)
|
|
37
|
+
* 3. userData/{userId}/_data/ - Private user data (Read/Write: Owner only)
|
|
38
38
|
*
|
|
39
39
|
* QUICK START FOR LLM:
|
|
40
40
|
* -------------------
|
|
@@ -86,7 +86,7 @@ const ENDPOINTS = {
|
|
|
86
86
|
* const snapshot = await getDocs(collection(db, `appData/${appId}/publicData/posts`));
|
|
87
87
|
*
|
|
88
88
|
* // Write to userData (only owner can write)
|
|
89
|
-
* await addDoc(collection(db, `appData/${appId}/userData/${userId}/notes`), {
|
|
89
|
+
* await addDoc(collection(db, `appData/${appId}/userData/${userId}/_data/notes`), {
|
|
90
90
|
* _appId: appId, // REQUIRED
|
|
91
91
|
* _createdAt: serverTimestamp(), // REQUIRED
|
|
92
92
|
* _createdBy: userId, // REQUIRED
|
|
@@ -339,7 +339,7 @@ function getPublicDataPath(appId, collectionName) {
|
|
|
339
339
|
* ```typescript
|
|
340
340
|
* // Write private user notes
|
|
341
341
|
* const path = getUserDataPath('my-app', 'user-123', 'notes');
|
|
342
|
-
* // Returns: 'appData/my-app/userData/user-123/notes'
|
|
342
|
+
* // Returns: 'appData/my-app/userData/user-123/_data/notes'
|
|
343
343
|
*
|
|
344
344
|
* await addDoc(collection(db, path), {
|
|
345
345
|
* _appId: appId,
|
|
@@ -353,7 +353,7 @@ function getUserDataPath(appId, userId, collectionName) {
|
|
|
353
353
|
validateSegment('appId', appId);
|
|
354
354
|
validateSegment('userId', userId);
|
|
355
355
|
validateSegment('collectionName', collectionName);
|
|
356
|
-
return `appData/${appId}/userData/${userId}/${collectionName}`;
|
|
356
|
+
return `appData/${appId}/userData/${userId}/_data/${collectionName}`;
|
|
357
357
|
}
|
|
358
358
|
/**
|
|
359
359
|
* Generate path for a specific document in publicRead
|
|
@@ -411,7 +411,7 @@ function getPublicDataDocPath(appId, collectionName, docId) {
|
|
|
411
411
|
* @example
|
|
412
412
|
* ```typescript
|
|
413
413
|
* const path = getUserDataDocPath('my-app', 'user-123', 'notes', 'note-456');
|
|
414
|
-
* // Returns: 'appData/my-app/userData/user-123/notes/note-456'
|
|
414
|
+
* // Returns: 'appData/my-app/userData/user-123/_data/notes/note-456'
|
|
415
415
|
*
|
|
416
416
|
* const docSnap = await getDoc(doc(db, path));
|
|
417
417
|
* ```
|
|
@@ -421,7 +421,7 @@ function getUserDataDocPath(appId, userId, collectionName, docId) {
|
|
|
421
421
|
validateSegment('userId', userId);
|
|
422
422
|
validateSegment('collectionName', collectionName);
|
|
423
423
|
validateSegment('docId', docId);
|
|
424
|
-
return `appData/${appId}/userData/${userId}/${collectionName}/${docId}`;
|
|
424
|
+
return `appData/${appId}/userData/${userId}/_data/${collectionName}/${docId}`;
|
|
425
425
|
}
|
|
426
426
|
/**
|
|
427
427
|
* Validate a path segment to ensure it doesn't contain invalid characters
|
|
@@ -486,7 +486,7 @@ class PathBuilder {
|
|
|
486
486
|
userData(userId, collectionName) {
|
|
487
487
|
validateSegment('userId', userId);
|
|
488
488
|
validateSegment('collectionName', collectionName);
|
|
489
|
-
this.segments.push('userData', userId, collectionName);
|
|
489
|
+
this.segments.push('userData', userId, '_data', collectionName);
|
|
490
490
|
return this;
|
|
491
491
|
}
|
|
492
492
|
/**
|
|
@@ -1105,7 +1105,9 @@ class FirestoreHelper {
|
|
|
1105
1105
|
}
|
|
1106
1106
|
else {
|
|
1107
1107
|
// Filter out soft-deleted documents
|
|
1108
|
-
|
|
1108
|
+
// Use '!=' to include documents without _deleted field (new documents)
|
|
1109
|
+
// This will return documents where _deleted is missing, null, undefined, or false
|
|
1110
|
+
const q = query(colRef, where('_deleted', '!=', true));
|
|
1109
1111
|
return getDocs(q);
|
|
1110
1112
|
}
|
|
1111
1113
|
}
|
|
@@ -1238,7 +1240,7 @@ function getFirebaseConfig(tokenResponse) {
|
|
|
1238
1240
|
*
|
|
1239
1241
|
* This is a convenience function that automatically:
|
|
1240
1242
|
* 1. Creates Firebase config from token response
|
|
1241
|
-
* 2. Initializes Firebase app
|
|
1243
|
+
* 2. Initializes Firebase app (or reuses existing one)
|
|
1242
1244
|
* 3. Signs in with the custom token
|
|
1243
1245
|
* 4. Creates FirestoreHelper for LLM-friendly operations
|
|
1244
1246
|
* 5. Returns authenticated Firebase instances
|
|
@@ -1246,11 +1248,20 @@ function getFirebaseConfig(tokenResponse) {
|
|
|
1246
1248
|
* IMPORTANT: This function requires Firebase SDK to be installed separately:
|
|
1247
1249
|
* npm install firebase
|
|
1248
1250
|
*
|
|
1251
|
+
* ⚠️ IMPORTANT: This function can be called multiple times safely. It will:
|
|
1252
|
+
* - Reuse existing Firebase app if already initialized
|
|
1253
|
+
* - Re-authenticate with new token if needed
|
|
1254
|
+
* - Handle token refresh scenarios
|
|
1255
|
+
*
|
|
1249
1256
|
* 🎯 LLM RECOMMENDED: Use the `helper` object for simplified operations
|
|
1250
1257
|
*
|
|
1251
1258
|
* @param tokenResponse - The Firestore token response from SDK
|
|
1252
1259
|
* @returns Object containing initialized Firebase instances and LLM-friendly helper
|
|
1253
1260
|
*
|
|
1261
|
+
* @throws {Error} If app_id is missing from token response
|
|
1262
|
+
* @throws {Error} If Firebase SDK is not installed
|
|
1263
|
+
* @throws {Error} If authentication fails
|
|
1264
|
+
*
|
|
1254
1265
|
* @example
|
|
1255
1266
|
* ```typescript
|
|
1256
1267
|
* import { initializeWithToken } from '@seaverse/data-service-sdk';
|
|
@@ -1269,17 +1280,25 @@ function getFirebaseConfig(tokenResponse) {
|
|
|
1269
1280
|
* ```
|
|
1270
1281
|
*/
|
|
1271
1282
|
async function initializeWithToken(tokenResponse) {
|
|
1283
|
+
// ✅ FIX #3: Validate appId FIRST before any initialization
|
|
1284
|
+
const appId = tokenResponse.app_id;
|
|
1285
|
+
if (!appId) {
|
|
1286
|
+
throw new Error('app_id is required in token response. ' +
|
|
1287
|
+
'Make sure your token response includes a valid app_id field.');
|
|
1288
|
+
}
|
|
1272
1289
|
// Check if Firebase SDK is available
|
|
1273
1290
|
let initializeApp;
|
|
1274
1291
|
let getAuth;
|
|
1275
1292
|
let signInWithCustomToken;
|
|
1276
1293
|
let getFirestore;
|
|
1294
|
+
let getApps;
|
|
1277
1295
|
try {
|
|
1278
1296
|
// Try to import Firebase modules
|
|
1279
1297
|
const firebaseApp = await import('firebase/app');
|
|
1280
1298
|
const firebaseAuth = await import('firebase/auth');
|
|
1281
1299
|
const firebaseFirestore = await import('firebase/firestore');
|
|
1282
1300
|
initializeApp = firebaseApp.initializeApp;
|
|
1301
|
+
getApps = firebaseApp.getApps;
|
|
1283
1302
|
getAuth = firebaseAuth.getAuth;
|
|
1284
1303
|
signInWithCustomToken = firebaseAuth.signInWithCustomToken;
|
|
1285
1304
|
getFirestore = firebaseFirestore.getFirestore;
|
|
@@ -1288,17 +1307,57 @@ async function initializeWithToken(tokenResponse) {
|
|
|
1288
1307
|
throw new Error('Firebase SDK not found. Please install it: npm install firebase\n' +
|
|
1289
1308
|
'Or import manually and use getFirebaseConfig() helper instead.');
|
|
1290
1309
|
}
|
|
1291
|
-
//
|
|
1292
|
-
const
|
|
1293
|
-
const
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1310
|
+
// ✅ FIX #1: Check if Firebase app already exists
|
|
1311
|
+
const existingApps = getApps();
|
|
1312
|
+
const existingApp = existingApps.find((app) => app.name === '[DEFAULT]');
|
|
1313
|
+
let app;
|
|
1314
|
+
let auth;
|
|
1315
|
+
let db;
|
|
1316
|
+
if (existingApp) {
|
|
1317
|
+
// ✅ FIX #2: Reuse existing app instead of creating new one
|
|
1318
|
+
console.log('[SeaVerse SDK] Reusing existing Firebase app');
|
|
1319
|
+
app = existingApp;
|
|
1320
|
+
auth = getAuth(app);
|
|
1321
|
+
db = getFirestore(app, tokenResponse.database_id);
|
|
1322
|
+
// ✅ FIX #4: Re-authenticate with new token (for token refresh scenarios)
|
|
1323
|
+
try {
|
|
1324
|
+
await signInWithCustomToken(auth, tokenResponse.custom_token);
|
|
1325
|
+
console.log('[SeaVerse SDK] Re-authenticated with new token');
|
|
1326
|
+
}
|
|
1327
|
+
catch (error) {
|
|
1328
|
+
// If already signed in with same token, ignore error
|
|
1329
|
+
// Only throw if it's a real authentication failure
|
|
1330
|
+
if (error?.code !== 'auth/invalid-credential' && error?.code !== 'auth/network-request-failed') {
|
|
1331
|
+
console.warn('[SeaVerse SDK] Re-authentication warning:', error?.message || error);
|
|
1332
|
+
}
|
|
1333
|
+
}
|
|
1334
|
+
}
|
|
1335
|
+
else {
|
|
1336
|
+
// ✅ FIX #4: First-time initialization with proper error handling
|
|
1337
|
+
console.log('[SeaVerse SDK] Initializing new Firebase app');
|
|
1338
|
+
try {
|
|
1339
|
+
const config = getFirebaseConfig(tokenResponse);
|
|
1340
|
+
app = initializeApp(config);
|
|
1341
|
+
auth = getAuth(app);
|
|
1342
|
+
await signInWithCustomToken(auth, tokenResponse.custom_token);
|
|
1343
|
+
// IMPORTANT: Must specify database_id, not just use default!
|
|
1344
|
+
db = getFirestore(app, tokenResponse.database_id);
|
|
1345
|
+
}
|
|
1346
|
+
catch (error) {
|
|
1347
|
+
// ✅ FIX #4: Cleanup on failure to prevent half-initialized state
|
|
1348
|
+
if (app) {
|
|
1349
|
+
try {
|
|
1350
|
+
await app.delete();
|
|
1351
|
+
console.log('[SeaVerse SDK] Cleaned up failed Firebase app initialization');
|
|
1352
|
+
}
|
|
1353
|
+
catch (cleanupError) {
|
|
1354
|
+
console.warn('[SeaVerse SDK] Failed to cleanup app:', cleanupError);
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
throw new Error(`Failed to initialize Firebase: ${error instanceof Error ? error.message : String(error)}`);
|
|
1358
|
+
}
|
|
1359
|
+
}
|
|
1300
1360
|
const userId = tokenResponse.user_id;
|
|
1301
|
-
const appId = tokenResponse.app_id || '';
|
|
1302
1361
|
// Create LLM-friendly helper
|
|
1303
1362
|
const helper = new FirestoreHelper(db, appId, userId);
|
|
1304
1363
|
return {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/config.ts","../src/client.ts","../src/path-helpers.ts","../src/validation.ts","../src/firestore-helper.ts","../src/helpers.ts"],"sourcesContent":[null,null,null,null,null,null],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/config.ts","../src/client.ts","../src/path-helpers.ts","../src/validation.ts","../src/firestore-helper.ts","../src/helpers.ts"],"sourcesContent":[null,null,null,null,null,null],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,14 +16,14 @@ export { CollectionReference, DocumentData, DocumentReference, DocumentSnapshot,
|
|
|
16
16
|
* 2. publicData/ - Read-write public data (e.g., user-generated content)
|
|
17
17
|
* Read: All authenticated users | Write: All authenticated users
|
|
18
18
|
*
|
|
19
|
-
* 3. userData/{userId}/ - Private user data (e.g., personal settings, private notes)
|
|
19
|
+
* 3. userData/{userId}/_data/ - Private user data (e.g., personal settings, private notes)
|
|
20
20
|
* Read: Owner only | Write: Owner only
|
|
21
21
|
*
|
|
22
22
|
* DATA PATH STRUCTURE:
|
|
23
23
|
* -------------------
|
|
24
|
-
* appData/{app_id}/publicRead/{collection}/{docId}
|
|
25
|
-
* appData/{app_id}/publicData/{collection}/{docId}
|
|
26
|
-
* appData/{app_id}/userData/{userId}/{collection}/{docId}
|
|
24
|
+
* appData/{app_id}/publicRead/_data/{collection}/{docId}
|
|
25
|
+
* appData/{app_id}/publicData/_data/{collection}/{docId}
|
|
26
|
+
* appData/{app_id}/userData/{userId}/_data/{collection}/{docId}
|
|
27
27
|
*
|
|
28
28
|
* 🚨 CRITICAL FIRESTORE PATH RULES (FOR LLM):
|
|
29
29
|
* ------------------------------------------
|
|
@@ -260,9 +260,9 @@ interface DataServiceClientOptions {
|
|
|
260
260
|
* ---------------------------
|
|
261
261
|
* Your Firestore data is organized in three permission levels:
|
|
262
262
|
*
|
|
263
|
-
* 1. publicRead/ - System configs, announcements (Read: Everyone, Write: Admin only)
|
|
264
|
-
* 2. publicData/ - User posts, shared content (Read: Everyone, Write: Everyone)
|
|
265
|
-
* 3. userData/{userId}/ - Private user data (Read/Write: Owner only)
|
|
263
|
+
* 1. publicRead/_data/ - System configs, announcements (Read: Everyone, Write: Admin only)
|
|
264
|
+
* 2. publicData/_data/ - User posts, shared content (Read: Everyone, Write: Everyone)
|
|
265
|
+
* 3. userData/{userId}/_data/ - Private user data (Read/Write: Owner only)
|
|
266
266
|
*
|
|
267
267
|
* QUICK START FOR LLM:
|
|
268
268
|
* -------------------
|
|
@@ -314,7 +314,7 @@ interface DataServiceClientOptions {
|
|
|
314
314
|
* const snapshot = await getDocs(collection(db, `appData/${appId}/publicData/posts`));
|
|
315
315
|
*
|
|
316
316
|
* // Write to userData (only owner can write)
|
|
317
|
-
* await addDoc(collection(db, `appData/${appId}/userData/${userId}/notes`), {
|
|
317
|
+
* await addDoc(collection(db, `appData/${appId}/userData/${userId}/_data/notes`), {
|
|
318
318
|
* _appId: appId, // REQUIRED
|
|
319
319
|
* _createdAt: serverTimestamp(), // REQUIRED
|
|
320
320
|
* _createdBy: userId, // REQUIRED
|
|
@@ -809,7 +809,7 @@ declare function getFirebaseConfig(tokenResponse: FirestoreTokenResponse): Fireb
|
|
|
809
809
|
*
|
|
810
810
|
* This is a convenience function that automatically:
|
|
811
811
|
* 1. Creates Firebase config from token response
|
|
812
|
-
* 2. Initializes Firebase app
|
|
812
|
+
* 2. Initializes Firebase app (or reuses existing one)
|
|
813
813
|
* 3. Signs in with the custom token
|
|
814
814
|
* 4. Creates FirestoreHelper for LLM-friendly operations
|
|
815
815
|
* 5. Returns authenticated Firebase instances
|
|
@@ -817,11 +817,20 @@ declare function getFirebaseConfig(tokenResponse: FirestoreTokenResponse): Fireb
|
|
|
817
817
|
* IMPORTANT: This function requires Firebase SDK to be installed separately:
|
|
818
818
|
* npm install firebase
|
|
819
819
|
*
|
|
820
|
+
* ⚠️ IMPORTANT: This function can be called multiple times safely. It will:
|
|
821
|
+
* - Reuse existing Firebase app if already initialized
|
|
822
|
+
* - Re-authenticate with new token if needed
|
|
823
|
+
* - Handle token refresh scenarios
|
|
824
|
+
*
|
|
820
825
|
* 🎯 LLM RECOMMENDED: Use the `helper` object for simplified operations
|
|
821
826
|
*
|
|
822
827
|
* @param tokenResponse - The Firestore token response from SDK
|
|
823
828
|
* @returns Object containing initialized Firebase instances and LLM-friendly helper
|
|
824
829
|
*
|
|
830
|
+
* @throws {Error} If app_id is missing from token response
|
|
831
|
+
* @throws {Error} If Firebase SDK is not installed
|
|
832
|
+
* @throws {Error} If authentication fails
|
|
833
|
+
*
|
|
825
834
|
* @example
|
|
826
835
|
* ```typescript
|
|
827
836
|
* import { initializeWithToken } from '@seaverse/data-service-sdk';
|
|
@@ -913,7 +922,7 @@ declare function getPublicDataPath(appId: string, collectionName: string): strin
|
|
|
913
922
|
* ```typescript
|
|
914
923
|
* // Write private user notes
|
|
915
924
|
* const path = getUserDataPath('my-app', 'user-123', 'notes');
|
|
916
|
-
* // Returns: 'appData/my-app/userData/user-123/notes'
|
|
925
|
+
* // Returns: 'appData/my-app/userData/user-123/_data/notes'
|
|
917
926
|
*
|
|
918
927
|
* await addDoc(collection(db, path), {
|
|
919
928
|
* _appId: appId,
|
|
@@ -970,7 +979,7 @@ declare function getPublicDataDocPath(appId: string, collectionName: string, doc
|
|
|
970
979
|
* @example
|
|
971
980
|
* ```typescript
|
|
972
981
|
* const path = getUserDataDocPath('my-app', 'user-123', 'notes', 'note-456');
|
|
973
|
-
* // Returns: 'appData/my-app/userData/user-123/notes/note-456'
|
|
982
|
+
* // Returns: 'appData/my-app/userData/user-123/_data/notes/note-456'
|
|
974
983
|
*
|
|
975
984
|
* const docSnap = await getDoc(doc(db, path));
|
|
976
985
|
* ```
|
package/dist/index.js
CHANGED
|
@@ -30,9 +30,9 @@ const ENDPOINTS = {
|
|
|
30
30
|
* ---------------------------
|
|
31
31
|
* Your Firestore data is organized in three permission levels:
|
|
32
32
|
*
|
|
33
|
-
* 1. publicRead/ - System configs, announcements (Read: Everyone, Write: Admin only)
|
|
34
|
-
* 2. publicData/ - User posts, shared content (Read: Everyone, Write: Everyone)
|
|
35
|
-
* 3. userData/{userId}/ - Private user data (Read/Write: Owner only)
|
|
33
|
+
* 1. publicRead/_data/ - System configs, announcements (Read: Everyone, Write: Admin only)
|
|
34
|
+
* 2. publicData/_data/ - User posts, shared content (Read: Everyone, Write: Everyone)
|
|
35
|
+
* 3. userData/{userId}/_data/ - Private user data (Read/Write: Owner only)
|
|
36
36
|
*
|
|
37
37
|
* QUICK START FOR LLM:
|
|
38
38
|
* -------------------
|
|
@@ -84,7 +84,7 @@ const ENDPOINTS = {
|
|
|
84
84
|
* const snapshot = await getDocs(collection(db, `appData/${appId}/publicData/posts`));
|
|
85
85
|
*
|
|
86
86
|
* // Write to userData (only owner can write)
|
|
87
|
-
* await addDoc(collection(db, `appData/${appId}/userData/${userId}/notes`), {
|
|
87
|
+
* await addDoc(collection(db, `appData/${appId}/userData/${userId}/_data/notes`), {
|
|
88
88
|
* _appId: appId, // REQUIRED
|
|
89
89
|
* _createdAt: serverTimestamp(), // REQUIRED
|
|
90
90
|
* _createdBy: userId, // REQUIRED
|
|
@@ -337,7 +337,7 @@ function getPublicDataPath(appId, collectionName) {
|
|
|
337
337
|
* ```typescript
|
|
338
338
|
* // Write private user notes
|
|
339
339
|
* const path = getUserDataPath('my-app', 'user-123', 'notes');
|
|
340
|
-
* // Returns: 'appData/my-app/userData/user-123/notes'
|
|
340
|
+
* // Returns: 'appData/my-app/userData/user-123/_data/notes'
|
|
341
341
|
*
|
|
342
342
|
* await addDoc(collection(db, path), {
|
|
343
343
|
* _appId: appId,
|
|
@@ -351,7 +351,7 @@ function getUserDataPath(appId, userId, collectionName) {
|
|
|
351
351
|
validateSegment('appId', appId);
|
|
352
352
|
validateSegment('userId', userId);
|
|
353
353
|
validateSegment('collectionName', collectionName);
|
|
354
|
-
return `appData/${appId}/userData/${userId}/${collectionName}`;
|
|
354
|
+
return `appData/${appId}/userData/${userId}/_data/${collectionName}`;
|
|
355
355
|
}
|
|
356
356
|
/**
|
|
357
357
|
* Generate path for a specific document in publicRead
|
|
@@ -409,7 +409,7 @@ function getPublicDataDocPath(appId, collectionName, docId) {
|
|
|
409
409
|
* @example
|
|
410
410
|
* ```typescript
|
|
411
411
|
* const path = getUserDataDocPath('my-app', 'user-123', 'notes', 'note-456');
|
|
412
|
-
* // Returns: 'appData/my-app/userData/user-123/notes/note-456'
|
|
412
|
+
* // Returns: 'appData/my-app/userData/user-123/_data/notes/note-456'
|
|
413
413
|
*
|
|
414
414
|
* const docSnap = await getDoc(doc(db, path));
|
|
415
415
|
* ```
|
|
@@ -419,7 +419,7 @@ function getUserDataDocPath(appId, userId, collectionName, docId) {
|
|
|
419
419
|
validateSegment('userId', userId);
|
|
420
420
|
validateSegment('collectionName', collectionName);
|
|
421
421
|
validateSegment('docId', docId);
|
|
422
|
-
return `appData/${appId}/userData/${userId}/${collectionName}/${docId}`;
|
|
422
|
+
return `appData/${appId}/userData/${userId}/_data/${collectionName}/${docId}`;
|
|
423
423
|
}
|
|
424
424
|
/**
|
|
425
425
|
* Validate a path segment to ensure it doesn't contain invalid characters
|
|
@@ -484,7 +484,7 @@ class PathBuilder {
|
|
|
484
484
|
userData(userId, collectionName) {
|
|
485
485
|
validateSegment('userId', userId);
|
|
486
486
|
validateSegment('collectionName', collectionName);
|
|
487
|
-
this.segments.push('userData', userId, collectionName);
|
|
487
|
+
this.segments.push('userData', userId, '_data', collectionName);
|
|
488
488
|
return this;
|
|
489
489
|
}
|
|
490
490
|
/**
|
|
@@ -1103,7 +1103,9 @@ class FirestoreHelper {
|
|
|
1103
1103
|
}
|
|
1104
1104
|
else {
|
|
1105
1105
|
// Filter out soft-deleted documents
|
|
1106
|
-
|
|
1106
|
+
// Use '!=' to include documents without _deleted field (new documents)
|
|
1107
|
+
// This will return documents where _deleted is missing, null, undefined, or false
|
|
1108
|
+
const q = query(colRef, where('_deleted', '!=', true));
|
|
1107
1109
|
return getDocs(q);
|
|
1108
1110
|
}
|
|
1109
1111
|
}
|
|
@@ -1236,7 +1238,7 @@ function getFirebaseConfig(tokenResponse) {
|
|
|
1236
1238
|
*
|
|
1237
1239
|
* This is a convenience function that automatically:
|
|
1238
1240
|
* 1. Creates Firebase config from token response
|
|
1239
|
-
* 2. Initializes Firebase app
|
|
1241
|
+
* 2. Initializes Firebase app (or reuses existing one)
|
|
1240
1242
|
* 3. Signs in with the custom token
|
|
1241
1243
|
* 4. Creates FirestoreHelper for LLM-friendly operations
|
|
1242
1244
|
* 5. Returns authenticated Firebase instances
|
|
@@ -1244,11 +1246,20 @@ function getFirebaseConfig(tokenResponse) {
|
|
|
1244
1246
|
* IMPORTANT: This function requires Firebase SDK to be installed separately:
|
|
1245
1247
|
* npm install firebase
|
|
1246
1248
|
*
|
|
1249
|
+
* ⚠️ IMPORTANT: This function can be called multiple times safely. It will:
|
|
1250
|
+
* - Reuse existing Firebase app if already initialized
|
|
1251
|
+
* - Re-authenticate with new token if needed
|
|
1252
|
+
* - Handle token refresh scenarios
|
|
1253
|
+
*
|
|
1247
1254
|
* 🎯 LLM RECOMMENDED: Use the `helper` object for simplified operations
|
|
1248
1255
|
*
|
|
1249
1256
|
* @param tokenResponse - The Firestore token response from SDK
|
|
1250
1257
|
* @returns Object containing initialized Firebase instances and LLM-friendly helper
|
|
1251
1258
|
*
|
|
1259
|
+
* @throws {Error} If app_id is missing from token response
|
|
1260
|
+
* @throws {Error} If Firebase SDK is not installed
|
|
1261
|
+
* @throws {Error} If authentication fails
|
|
1262
|
+
*
|
|
1252
1263
|
* @example
|
|
1253
1264
|
* ```typescript
|
|
1254
1265
|
* import { initializeWithToken } from '@seaverse/data-service-sdk';
|
|
@@ -1267,17 +1278,25 @@ function getFirebaseConfig(tokenResponse) {
|
|
|
1267
1278
|
* ```
|
|
1268
1279
|
*/
|
|
1269
1280
|
async function initializeWithToken(tokenResponse) {
|
|
1281
|
+
// ✅ FIX #3: Validate appId FIRST before any initialization
|
|
1282
|
+
const appId = tokenResponse.app_id;
|
|
1283
|
+
if (!appId) {
|
|
1284
|
+
throw new Error('app_id is required in token response. ' +
|
|
1285
|
+
'Make sure your token response includes a valid app_id field.');
|
|
1286
|
+
}
|
|
1270
1287
|
// Check if Firebase SDK is available
|
|
1271
1288
|
let initializeApp;
|
|
1272
1289
|
let getAuth;
|
|
1273
1290
|
let signInWithCustomToken;
|
|
1274
1291
|
let getFirestore;
|
|
1292
|
+
let getApps;
|
|
1275
1293
|
try {
|
|
1276
1294
|
// Try to import Firebase modules
|
|
1277
1295
|
const firebaseApp = await import('firebase/app');
|
|
1278
1296
|
const firebaseAuth = await import('firebase/auth');
|
|
1279
1297
|
const firebaseFirestore = await import('firebase/firestore');
|
|
1280
1298
|
initializeApp = firebaseApp.initializeApp;
|
|
1299
|
+
getApps = firebaseApp.getApps;
|
|
1281
1300
|
getAuth = firebaseAuth.getAuth;
|
|
1282
1301
|
signInWithCustomToken = firebaseAuth.signInWithCustomToken;
|
|
1283
1302
|
getFirestore = firebaseFirestore.getFirestore;
|
|
@@ -1286,17 +1305,57 @@ async function initializeWithToken(tokenResponse) {
|
|
|
1286
1305
|
throw new Error('Firebase SDK not found. Please install it: npm install firebase\n' +
|
|
1287
1306
|
'Or import manually and use getFirebaseConfig() helper instead.');
|
|
1288
1307
|
}
|
|
1289
|
-
//
|
|
1290
|
-
const
|
|
1291
|
-
const
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1308
|
+
// ✅ FIX #1: Check if Firebase app already exists
|
|
1309
|
+
const existingApps = getApps();
|
|
1310
|
+
const existingApp = existingApps.find((app) => app.name === '[DEFAULT]');
|
|
1311
|
+
let app;
|
|
1312
|
+
let auth;
|
|
1313
|
+
let db;
|
|
1314
|
+
if (existingApp) {
|
|
1315
|
+
// ✅ FIX #2: Reuse existing app instead of creating new one
|
|
1316
|
+
console.log('[SeaVerse SDK] Reusing existing Firebase app');
|
|
1317
|
+
app = existingApp;
|
|
1318
|
+
auth = getAuth(app);
|
|
1319
|
+
db = getFirestore(app, tokenResponse.database_id);
|
|
1320
|
+
// ✅ FIX #4: Re-authenticate with new token (for token refresh scenarios)
|
|
1321
|
+
try {
|
|
1322
|
+
await signInWithCustomToken(auth, tokenResponse.custom_token);
|
|
1323
|
+
console.log('[SeaVerse SDK] Re-authenticated with new token');
|
|
1324
|
+
}
|
|
1325
|
+
catch (error) {
|
|
1326
|
+
// If already signed in with same token, ignore error
|
|
1327
|
+
// Only throw if it's a real authentication failure
|
|
1328
|
+
if (error?.code !== 'auth/invalid-credential' && error?.code !== 'auth/network-request-failed') {
|
|
1329
|
+
console.warn('[SeaVerse SDK] Re-authentication warning:', error?.message || error);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
}
|
|
1333
|
+
else {
|
|
1334
|
+
// ✅ FIX #4: First-time initialization with proper error handling
|
|
1335
|
+
console.log('[SeaVerse SDK] Initializing new Firebase app');
|
|
1336
|
+
try {
|
|
1337
|
+
const config = getFirebaseConfig(tokenResponse);
|
|
1338
|
+
app = initializeApp(config);
|
|
1339
|
+
auth = getAuth(app);
|
|
1340
|
+
await signInWithCustomToken(auth, tokenResponse.custom_token);
|
|
1341
|
+
// IMPORTANT: Must specify database_id, not just use default!
|
|
1342
|
+
db = getFirestore(app, tokenResponse.database_id);
|
|
1343
|
+
}
|
|
1344
|
+
catch (error) {
|
|
1345
|
+
// ✅ FIX #4: Cleanup on failure to prevent half-initialized state
|
|
1346
|
+
if (app) {
|
|
1347
|
+
try {
|
|
1348
|
+
await app.delete();
|
|
1349
|
+
console.log('[SeaVerse SDK] Cleaned up failed Firebase app initialization');
|
|
1350
|
+
}
|
|
1351
|
+
catch (cleanupError) {
|
|
1352
|
+
console.warn('[SeaVerse SDK] Failed to cleanup app:', cleanupError);
|
|
1353
|
+
}
|
|
1354
|
+
}
|
|
1355
|
+
throw new Error(`Failed to initialize Firebase: ${error instanceof Error ? error.message : String(error)}`);
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1298
1358
|
const userId = tokenResponse.user_id;
|
|
1299
|
-
const appId = tokenResponse.app_id || '';
|
|
1300
1359
|
// Create LLM-friendly helper
|
|
1301
1360
|
const helper = new FirestoreHelper(db, appId, userId);
|
|
1302
1361
|
return {
|