@rebasepro/firebase 0.12.0 → 0.12.1-canary.g009ed95
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.
|
@@ -53,5 +53,5 @@ export declare function useFirestoreDriver({ firebaseApp, textSearchControllerBu
|
|
|
53
53
|
* @param data
|
|
54
54
|
* @group Firestore
|
|
55
55
|
*/
|
|
56
|
-
export declare function
|
|
57
|
-
export declare function
|
|
56
|
+
export declare function firestoreToRebaseModel(data: unknown): unknown;
|
|
57
|
+
export declare function rebaseToFirestoreModel(data: unknown, firestore: Firestore, inArray?: boolean): unknown;
|
package/dist/index.es.js
CHANGED
|
@@ -14,7 +14,7 @@ import { removeUndefined } from "@rebasepro/utils";
|
|
|
14
14
|
import { AdminModeControllerProvider, ErrorView, ModeControllerProvider, Rebase, RebaseLogo, RebaseRoutes, SnackbarProvider, useBrowserTitleAndIcon, useBuildAdminModeController, useBuildLocalConfigurationPersistence, useBuildModeController, useModeController, useSnackbarController } from "@rebasepro/app";
|
|
15
15
|
import { AppBar, CollectionRegistryContext, Drawer, NavigationStateContext, RebaseRoute, Scaffold, SideDialogs, SidePanelProvider, UrlContext, useBuildCollectionRegistryController, useBuildNavigationStateController, useBuildUrlController } from "@rebasepro/admin";
|
|
16
16
|
import { ArrowLeftIcon, Button, CenteredView, CircularProgress, CircularProgressCenter, IconButton, LoadingButton, MailIcon, PhoneIcon, TextField, Typography, UserIcon, cls, iconSize } from "@rebasepro/ui";
|
|
17
|
-
import { Navigate, Outlet, Route } from "react-router
|
|
17
|
+
import { Navigate, Outlet, Route } from "react-router";
|
|
18
18
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
19
19
|
//#region src/hooks/useFirebaseAuthController.ts
|
|
20
20
|
/**
|
|
@@ -472,10 +472,11 @@ function useAppCheck({ firebaseApp, options }) {
|
|
|
472
472
|
setAppCheckLoading(true);
|
|
473
473
|
const { provider, isTokenAutoRefreshEnabled } = options;
|
|
474
474
|
removeCurrentAppCheckDiv();
|
|
475
|
-
|
|
475
|
+
const appCheck = initializeAppCheck(firebaseApp, {
|
|
476
476
|
provider,
|
|
477
477
|
isTokenAutoRefreshEnabled
|
|
478
|
-
})
|
|
478
|
+
});
|
|
479
|
+
verifyToken(appCheck).then(() => {
|
|
479
480
|
setAppCheckLoading(false);
|
|
480
481
|
});
|
|
481
482
|
initialCheck.current = true;
|
|
@@ -513,7 +514,8 @@ var docsToCollectionTree = (docs) => {
|
|
|
513
514
|
Object.keys(collectionsMap).sort((a, b) => b.split(COLLECTION_PATH_SEPARATOR).length - a.split(COLLECTION_PATH_SEPARATOR).length).forEach((id) => {
|
|
514
515
|
const collection = collectionsMap[id];
|
|
515
516
|
if (id.includes(COLLECTION_PATH_SEPARATOR)) {
|
|
516
|
-
const
|
|
517
|
+
const parentId = id.split(COLLECTION_PATH_SEPARATOR).slice(0, -1).join(COLLECTION_PATH_SEPARATOR);
|
|
518
|
+
const parentCollection = collectionsMap[parentId];
|
|
517
519
|
if (parentCollection) parentCollection.subcollections = () => [...parentCollection.subcollections?.() ?? [], collection];
|
|
518
520
|
delete collectionsMap[id];
|
|
519
521
|
}
|
|
@@ -698,7 +700,8 @@ var localSearchControllerBuilder = ({ firebaseApp }) => {
|
|
|
698
700
|
return new Promise((resolve, reject) => {
|
|
699
701
|
if (collectionProp) {
|
|
700
702
|
console.debug("Init local search controller", path);
|
|
701
|
-
|
|
703
|
+
const col = collection(databaseId ? getFirestore(firebaseApp, databaseId) : getFirestore(firebaseApp), path);
|
|
704
|
+
listeners[path] = onSnapshot(query(col), {
|
|
702
705
|
next: (entity) => {
|
|
703
706
|
if (entity.metadata.fromCache && entity.metadata.hasPendingWrites) return;
|
|
704
707
|
const docs = entity.docs.map((doc) => ({
|
|
@@ -977,7 +980,7 @@ function useFirestoreDriver({ firebaseApp, textSearchControllerBuilder, firestor
|
|
|
977
980
|
return;
|
|
978
981
|
}
|
|
979
982
|
if (op === "like" || op === "ilike" || op === "not-like" || op === "not-ilike") throw new Error(`Firestore does not support the "${op}" operator (SQL pattern matching). Use a full-text search index or the collection's searchString instead.`);
|
|
980
|
-
queryParams.push(where(key, op,
|
|
983
|
+
queryParams.push(where(key, op, rebaseToFirestoreModel(value, firestore)));
|
|
981
984
|
});
|
|
982
985
|
if (orderBy$1 && order) queryParams.push(orderBy(orderBy$1, order));
|
|
983
986
|
if (startAfter$1) queryParams.push(startAfter(startAfter$1));
|
|
@@ -1165,7 +1168,7 @@ function useFirestoreDriver({ firebaseApp, textSearchControllerBuilder, firestor
|
|
|
1165
1168
|
values: valuesProp,
|
|
1166
1169
|
collection: collection$1
|
|
1167
1170
|
});
|
|
1168
|
-
const values =
|
|
1171
|
+
const values = rebaseToFirestoreModel(valuesProp, getFirestore(firebaseApp));
|
|
1169
1172
|
console.debug("2", {
|
|
1170
1173
|
path,
|
|
1171
1174
|
id,
|
|
@@ -1185,7 +1188,7 @@ function useFirestoreDriver({ firebaseApp, textSearchControllerBuilder, firestor
|
|
|
1185
1188
|
else documentReference = doc(collectionReference);
|
|
1186
1189
|
return setDoc(documentReference, values, { merge: true }).then(() => {
|
|
1187
1190
|
return {
|
|
1188
|
-
...
|
|
1191
|
+
...firestoreToRebaseModel(values),
|
|
1189
1192
|
id: documentReference.id
|
|
1190
1193
|
};
|
|
1191
1194
|
}).catch((error) => {
|
|
@@ -1219,7 +1222,7 @@ function useFirestoreDriver({ firebaseApp, textSearchControllerBuilder, firestor
|
|
|
1219
1222
|
const databaseId = collection$2?.databaseId;
|
|
1220
1223
|
const firestore = databaseId ? getFirestore(firebaseApp, databaseId) : getFirestore(firebaseApp);
|
|
1221
1224
|
if (value === void 0 || value === null) return Promise.resolve(true);
|
|
1222
|
-
return (await getDocs(query(collection(firestore, path), where(name, "==",
|
|
1225
|
+
return (await getDocs(query(collection(firestore, path), where(name, "==", rebaseToFirestoreModel(value, firestore))))).docs.filter((doc) => doc.id !== id).length === 0;
|
|
1223
1226
|
}, [firebaseApp]);
|
|
1224
1227
|
const count = useCallback(async ({ path, filter, order, orderBy, collection }) => {
|
|
1225
1228
|
if (!firebaseApp) throw Error("useFirestoreDriver Firebase not initialised");
|
|
@@ -1273,7 +1276,7 @@ function useFirestoreDriver({ firebaseApp, textSearchControllerBuilder, firestor
|
|
|
1273
1276
|
}
|
|
1274
1277
|
var createRowFromDocument = (docSnap) => {
|
|
1275
1278
|
return {
|
|
1276
|
-
...
|
|
1279
|
+
...firestoreToRebaseModel(docSnap.data()),
|
|
1277
1280
|
id: docSnap.id
|
|
1278
1281
|
};
|
|
1279
1282
|
};
|
|
@@ -1287,7 +1290,7 @@ var createRowFromDocument = (docSnap) => {
|
|
|
1287
1290
|
* @param data
|
|
1288
1291
|
* @group Firestore
|
|
1289
1292
|
*/
|
|
1290
|
-
function
|
|
1293
|
+
function firestoreToRebaseModel(data) {
|
|
1291
1294
|
if (data === null || data === void 0) return null;
|
|
1292
1295
|
if (typeof data === "object" && data !== null && "isEqual" in data && typeof data.isEqual === "function" && deleteField().isEqual(data)) return;
|
|
1293
1296
|
if (typeof data === "object" && data !== null && "isEqual" in data && typeof data.isEqual === "function" && serverTimestamp().isEqual(data)) return null;
|
|
@@ -1307,11 +1310,11 @@ function firestoreToCMSModel(data) {
|
|
|
1307
1310
|
databaseId
|
|
1308
1311
|
});
|
|
1309
1312
|
}
|
|
1310
|
-
if (Array.isArray(data)) return data.map(
|
|
1313
|
+
if (Array.isArray(data)) return data.map(firestoreToRebaseModel).filter((v) => v !== void 0);
|
|
1311
1314
|
if (typeof data === "object") {
|
|
1312
1315
|
const result = {};
|
|
1313
1316
|
for (const key of Object.keys(data)) {
|
|
1314
|
-
const childValue =
|
|
1317
|
+
const childValue = firestoreToRebaseModel(data[key]);
|
|
1315
1318
|
if (childValue !== void 0) result[key] = childValue;
|
|
1316
1319
|
}
|
|
1317
1320
|
return result;
|
|
@@ -1327,10 +1330,10 @@ function getCMSPathFromFirestorePath(fsPath) {
|
|
|
1327
1330
|
to = to === -1 ? fsPath.length : to;
|
|
1328
1331
|
return fsPath.substring(0, to);
|
|
1329
1332
|
}
|
|
1330
|
-
function
|
|
1333
|
+
function rebaseToFirestoreModel(data, firestore, inArray = false) {
|
|
1331
1334
|
if (data === void 0) return deleteField();
|
|
1332
1335
|
else if (data === null) return null;
|
|
1333
|
-
else if (Array.isArray(data)) return data.filter((v) => v !== void 0).map((v) =>
|
|
1336
|
+
else if (Array.isArray(data)) return data.filter((v) => v !== void 0).map((v) => rebaseToFirestoreModel(v, firestore, true));
|
|
1334
1337
|
else if (typeof data === "object" && data !== null && "isEntityReference" in data && typeof data.isEntityReference === "function" && data.isEntityReference()) {
|
|
1335
1338
|
const entityRef = data;
|
|
1336
1339
|
return doc(entityRef.databaseId ? getFirestore(firestore.app, entityRef.databaseId) : firestore, entityRef.path, entityRef.id);
|
|
@@ -1341,7 +1344,7 @@ function cmsToFirestoreModel(data, firestore, inArray = false) {
|
|
|
1341
1344
|
else if (data instanceof Date) return Timestamp.fromDate(data);
|
|
1342
1345
|
else if (data && typeof data === "object" && "__type__" in data && data.__type__ === "__vector__") return vector(data.value || []);
|
|
1343
1346
|
else if (data && typeof data === "object") return Object.entries(data).map(([key, v]) => {
|
|
1344
|
-
const firestoreModel =
|
|
1347
|
+
const firestoreModel = rebaseToFirestoreModel(v, firestore);
|
|
1345
1348
|
if (firestoreModel !== void 0) return { [key]: firestoreModel };
|
|
1346
1349
|
else return {};
|
|
1347
1350
|
}).reduce((a, b) => ({
|
|
@@ -1575,7 +1578,8 @@ function useBuildUserManagement({ authController, dataSourceDelegate, roles: rol
|
|
|
1575
1578
|
console.debug("Updating users", rows);
|
|
1576
1579
|
setUsersError(void 0);
|
|
1577
1580
|
try {
|
|
1578
|
-
|
|
1581
|
+
const newUsers = rowsToUsers(rows);
|
|
1582
|
+
setUsersWithRoleIds(newUsers);
|
|
1579
1583
|
} catch (e) {
|
|
1580
1584
|
setUsersWithRoleIds([]);
|
|
1581
1585
|
console.error("Error loading users", e);
|
|
@@ -2645,6 +2649,6 @@ function RebaseFirebaseApp({ name, logo, logoDark, accessGate, collections, view
|
|
|
2645
2649
|
}) });
|
|
2646
2650
|
}
|
|
2647
2651
|
//#endregion
|
|
2648
|
-
export { FirebaseLoginView, LoginButton, RECAPTCHA_CONTAINER_ID, RebaseFirebaseApp, buildCollectionId, buildExternalSearchController, buildPineconeSearchController, buildRebaseSearchController,
|
|
2652
|
+
export { FirebaseLoginView, LoginButton, RECAPTCHA_CONTAINER_ID, RebaseFirebaseApp, buildCollectionId, buildExternalSearchController, buildPineconeSearchController, buildRebaseSearchController, docToCollection, docsToCollectionTree, firestoreToRebaseModel, getFirestoreDataInPath, localSearchControllerBuilder, performAlgoliaTextSearch, performPineconeTextSearch, rebaseToFirestoreModel, useAppCheck, useBuildUserManagement, useFirebaseAccessGate, useFirebaseAuthController, useFirebaseRTDBDelegate, useFirebaseStorageSource, useFirestoreDriver, useInitialiseFirebase, useRecaptcha };
|
|
2649
2653
|
|
|
2650
2654
|
//# sourceMappingURL=index.es.js.map
|