Socket
Socket
Sign inDemoInstall

firestore-export-import

Package Overview
Dependencies
214
Maintainers
1
Versions
51
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.3.6 to 1.4.0

9

dist/export.d.ts

@@ -0,1 +1,2 @@

import { Firestore } from 'firebase-admin/firestore';
import { IExportOptions } from './helper.js';

@@ -7,3 +8,3 @@ /**

*/
export declare const getAllCollectionsService: <T>(collectionNameArray: string[], options?: IExportOptions) => Promise<T>;
export declare const getAllCollectionsService: <T>(db: Firestore, collectionNameArray: string[], options?: IExportOptions) => Promise<T>;
/**

@@ -16,3 +17,3 @@ * Backup data from a specific firestore document specified by db.collection(collectionName).doc(documentName)

*/
export declare const backupFromDocService: <T>(collectionName: string, documentName: string, options?: IExportOptions) => Promise<T>;
export declare const backupFromDocService: <T>(db: Firestore, collectionName: string, documentName: string, options?: IExportOptions) => Promise<T>;
/**

@@ -24,3 +25,3 @@ * backs up document with subcollections for parallelization

*/
export declare const backUpDocRef: <T>(doc: FirebaseFirestore.QueryDocumentSnapshot, collectionPath: String, options?: IExportOptions) => Promise<T>;
export declare const backUpDocRef: <T>(db: Firestore, doc: FirebaseFirestore.QueryDocumentSnapshot, collectionPath: String, options?: IExportOptions) => Promise<T>;
/**

@@ -32,2 +33,2 @@ * Backup data from firestore

*/
export declare const backupService: <T>(collectionName: string, options?: IExportOptions) => Promise<T>;
export declare const backupService: <T>(db: Firestore, collectionName: string, options?: IExportOptions) => Promise<T>;

@@ -15,7 +15,7 @@ "use strict";var __assign=(this&&this.__assign)||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))

if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true};}};var __spreadArray=(this&&this.__spreadArray)||function(to,from,pack){if(pack||arguments.length===2)for(var i=0,l=from.length,ar;i<l;i++){if(ar||!(i in from)){if(!ar)ar=Array.prototype.slice.call(from,0,i);ar[i]=from[i];}}
return to.concat(ar||Array.prototype.slice.call(from));};Object.defineProperty(exports,"__esModule",{value:true});exports.backupService=exports.backUpDocRef=exports.backupFromDocService=exports.getAllCollectionsService=void 0;var firestore_1=require("firebase-admin/firestore");var helper_js_1=require("./helper.js");var getAllCollectionsService=function(collectionNameArray,options){return __awaiter(void 0,void 0,void 0,function(){var db,paths,snap,promises,value;return __generator(this,function(_a){switch(_a.label){case 0:db=(0,firestore_1.getFirestore)();paths=collectionNameArray;if(!(paths.length===0))return[3,2];return[4,db.listCollections()];case 1:snap=_a.sent();snap.forEach(function(collection){return paths.push(collection.path);});_a.label=2;case 2:promises=paths.map(function(path){return(0,exports.backupService)(path,options);});return[4,Promise.all(promises)];case 3:value=_a.sent();return[2,Object.assign.apply(Object,__spreadArray([{}],value,false))];}});});};exports.getAllCollectionsService=getAllCollectionsService;var backupFromDocService=function(collectionName,documentName,options){return __awaiter(void 0,void 0,void 0,function(){var db,data,documentRef,document,docs,_i,docs_1,doc,subCollections,_a,_b,refKey,_c,_d,val,_e,subCollections_1,subCol,subColData,error_1;return __generator(this,function(_f){switch(_f.label){case 0:_f.trys.push([0,9,,10]);db=(0,firestore_1.getFirestore)();data={};data[collectionName]={};documentRef=db.collection(collectionName).doc(documentName);return[4,documentRef.get()];case 1:document=_f.sent();docs=[document];_i=0,docs_1=docs;_f.label=2;case 2:if(!(_i<docs_1.length))return[3,8];doc=docs_1[_i];return[4,doc.ref.listCollections()];case 3:subCollections=_f.sent();data[collectionName][doc.id]=doc.data()||{};if(options===null||options===void 0?void 0:options.refs){for(_a=0,_b=options===null||options===void 0?void 0:options.refs;_a<_b.length;_a++){refKey=_b[_a];if(refKey.indexOf('.')>-1){(0,helper_js_1.traverseObjects)(data,function(value){var _a;if(((_a=value.constructor)===null||_a===void 0?void 0:_a.name)!=='DocumentReference'){return null;}
return to.concat(ar||Array.prototype.slice.call(from));};Object.defineProperty(exports,"__esModule",{value:true});exports.backupService=exports.backUpDocRef=exports.backupFromDocService=exports.getAllCollectionsService=void 0;var helper_js_1=require("./helper.js");var getAllCollectionsService=function(db,collectionNameArray,options){return __awaiter(void 0,void 0,void 0,function(){var paths,snap,promises,value;return __generator(this,function(_a){switch(_a.label){case 0:paths=collectionNameArray;if(!(paths.length===0))return[3,2];return[4,db.listCollections()];case 1:snap=_a.sent();snap.forEach(function(collection){return paths.push(collection.path);});_a.label=2;case 2:promises=paths.map(function(path){return(0,exports.backupService)(db,path,options);});return[4,Promise.all(promises)];case 3:value=_a.sent();return[2,Object.assign.apply(Object,__spreadArray([{}],value,false))];}});});};exports.getAllCollectionsService=getAllCollectionsService;var backupFromDocService=function(db,collectionName,documentName,options){return __awaiter(void 0,void 0,void 0,function(){var data,documentRef,document,docs,_i,docs_1,doc,subCollections,_a,_b,refKey,_c,_d,val,_e,subCollections_1,subCol,subColData,error_1;return __generator(this,function(_f){switch(_f.label){case 0:_f.trys.push([0,9,,10]);data={};data[collectionName]={};documentRef=db.collection(collectionName).doc(documentName);return[4,documentRef.get()];case 1:document=_f.sent();docs=[document];_i=0,docs_1=docs;_f.label=2;case 2:if(!(_i<docs_1.length))return[3,8];doc=docs_1[_i];return[4,doc.ref.listCollections()];case 3:subCollections=_f.sent();data[collectionName][doc.id]=doc.data()||{};if(options===null||options===void 0?void 0:options.refs){for(_a=0,_b=options===null||options===void 0?void 0:options.refs;_a<_b.length;_a++){refKey=_b[_a];if(refKey.indexOf('.')>-1){(0,helper_js_1.traverseObjects)(data,function(value){var _a;if(((_a=value.constructor)===null||_a===void 0?void 0:_a.name)!=='DocumentReference'){return null;}
return(0,helper_js_1.getPath)(value);});}
else{if(data[collectionName][doc.id][refKey]){if(Array.isArray(data[collectionName][doc.id][refKey])){for(_c=0,_d=data[collectionName][doc.id][refKey];_c<_d.length;_c++){val=_d[_c];data[collectionName][doc.id][refKey]=(0,helper_js_1.getPath)(val);}}
else if(typeof data[collectionName][doc.id][refKey].path==='string'){data[collectionName][doc.id][refKey]=data[collectionName][doc.id][refKey].path;}}}}}
if(!(subCollections.length>0))return[3,7];data[collectionName][doc.id]['subCollection']={};_e=0,subCollections_1=subCollections;_f.label=4;case 4:if(!(_e<subCollections_1.length))return[3,7];subCol=subCollections_1[_e];return[4,(0,exports.backupService)("".concat(collectionName,"/").concat(documentName,"/").concat(subCol.id),options)];case 5:subColData=_f.sent();data[collectionName][doc.id]['subCollection']=__assign(__assign({},data[collectionName][doc.id]['subCollection']),subColData);_f.label=6;case 6:_e++;return[3,4];case 7:_i++;return[3,2];case 8:return[2,data];case 9:error_1=_f.sent();console.error(error_1);throw new Error(error_1);case 10:return[2];}});});};exports.backupFromDocService=backupFromDocService;var backUpDocRef=function(doc,collectionPath,options){return __awaiter(void 0,void 0,void 0,function(){var subCollections,data,_i,_a,refKey,_b,_c,val,subColOptions,_d,subCollections_2,subCol,subColData,tR;return __generator(this,function(_e){switch(_e.label){case 0:return[4,doc.ref.listCollections()];case 1:subCollections=_e.sent();data=Object.assign({},doc.data());if(options===null||options===void 0?void 0:options.refs){for(_i=0,_a=options===null||options===void 0?void 0:options.refs;_i<_a.length;_i++){refKey=_a[_i];if(refKey.indexOf('.')>-1){(0,helper_js_1.traverseObjects)(data,function(value){var _a;if(((_a=value.constructor)===null||_a===void 0?void 0:_a.name)!=='DocumentReference'){return null;}
if(!(subCollections.length>0))return[3,7];data[collectionName][doc.id]['subCollection']={};_e=0,subCollections_1=subCollections;_f.label=4;case 4:if(!(_e<subCollections_1.length))return[3,7];subCol=subCollections_1[_e];return[4,(0,exports.backupService)(db,"".concat(collectionName,"/").concat(documentName,"/").concat(subCol.id),options)];case 5:subColData=_f.sent();data[collectionName][doc.id]['subCollection']=__assign(__assign({},data[collectionName][doc.id]['subCollection']),subColData);_f.label=6;case 6:_e++;return[3,4];case 7:_i++;return[3,2];case 8:return[2,data];case 9:error_1=_f.sent();console.error(error_1);throw new Error(error_1);case 10:return[2];}});});};exports.backupFromDocService=backupFromDocService;var backUpDocRef=function(db,doc,collectionPath,options){return __awaiter(void 0,void 0,void 0,function(){var subCollections,data,_i,_a,refKey,_b,_c,val,subColOptions,_d,subCollections_2,subCol,subColData,tR;return __generator(this,function(_e){switch(_e.label){case 0:return[4,doc.ref.listCollections()];case 1:subCollections=_e.sent();data=Object.assign({},doc.data());if(options===null||options===void 0?void 0:options.refs){for(_i=0,_a=options===null||options===void 0?void 0:options.refs;_i<_a.length;_i++){refKey=_a[_i];if(refKey.indexOf('.')>-1){(0,helper_js_1.traverseObjects)(data,function(value){var _a;if(((_a=value.constructor)===null||_a===void 0?void 0:_a.name)!=='DocumentReference'){return null;}
return(0,helper_js_1.getPath)(value);});}

@@ -25,2 +25,2 @@ else{if(data[refKey]){if(Array.isArray(data[refKey])){for(_b=0,_c=data[refKey];_b<_c.length;_b++){val=_c[_b];data[refKey]=(0,helper_js_1.getPath)(val);}}

if(!(subCollections.length>0))return[3,5];data['subCollection']={};subColOptions=__assign({},options);if(subColOptions===null||subColOptions===void 0?void 0:subColOptions.queryCollection){delete subColOptions.queryCollection;}
_d=0,subCollections_2=subCollections;_e.label=2;case 2:if(!(_d<subCollections_2.length))return[3,5];subCol=subCollections_2[_d];return[4,(0,exports.backupService)("".concat(collectionPath,"/").concat(doc.id,"/").concat(subCol.id),subColOptions)];case 3:subColData=_e.sent();data['subCollection']=__assign(__assign({},data['subCollection']),subColData);_e.label=4;case 4:_d++;return[3,2];case 5:tR={};tR[doc.id]=data;return[2,tR];}});});};exports.backUpDocRef=backUpDocRef;var backupService=function(collectionName,options){return __awaiter(void 0,void 0,void 0,function(){var db,data_1,collectionRef_1,documents,_a,docs,promises,promiseValues,error_2;return __generator(this,function(_b){switch(_b.label){case 0:_b.trys.push([0,6,,7]);db=(0,firestore_1.getFirestore)();data_1={};data_1[collectionName]={};collectionRef_1=db.collection(collectionName);if(!((options===null||options===void 0?void 0:options.queryCollection)!=null))return[3,2];return[4,options.queryCollection(collectionRef_1)];case 1:_a=_b.sent();return[3,4];case 2:return[4,collectionRef_1.get()];case 3:_a=_b.sent();_b.label=4;case 4:documents=_a;docs=(options===null||options===void 0?void 0:options.docsFromEachCollection)>0?documents.docs.slice(0,options===null||options===void 0?void 0:options.docsFromEachCollection):documents.docs;promises=docs.map(function(doc){return(0,exports.backUpDocRef)(doc,collectionRef_1.path,options);});return[4,Promise.all(promises)];case 5:promiseValues=_b.sent();promiseValues.forEach(function(dataMap){data_1[collectionName]=Object.assign(data_1[collectionName],dataMap);});return[2,data_1];case 6:error_2=_b.sent();console.error(error_2);throw new Error(error_2);case 7:return[2];}});});};exports.backupService=backupService;
_d=0,subCollections_2=subCollections;_e.label=2;case 2:if(!(_d<subCollections_2.length))return[3,5];subCol=subCollections_2[_d];return[4,(0,exports.backupService)(db,"".concat(collectionPath,"/").concat(doc.id,"/").concat(subCol.id),subColOptions)];case 3:subColData=_e.sent();data['subCollection']=__assign(__assign({},data['subCollection']),subColData);_e.label=4;case 4:_d++;return[3,2];case 5:tR={};tR[doc.id]=data;return[2,tR];}});});};exports.backUpDocRef=backUpDocRef;var backupService=function(db,collectionName,options){return __awaiter(void 0,void 0,void 0,function(){var data_1,collectionRef_1,documents,_a,docs,promises,promiseValues,error_2;return __generator(this,function(_b){switch(_b.label){case 0:_b.trys.push([0,6,,7]);data_1={};data_1[collectionName]={};collectionRef_1=db.collection(collectionName);if(!((options===null||options===void 0?void 0:options.queryCollection)!=null))return[3,2];return[4,options.queryCollection(collectionRef_1)];case 1:_a=_b.sent();return[3,4];case 2:return[4,collectionRef_1.get()];case 3:_a=_b.sent();_b.label=4;case 4:documents=_a;docs=(options===null||options===void 0?void 0:options.docsFromEachCollection)>0?documents.docs.slice(0,options===null||options===void 0?void 0:options.docsFromEachCollection):documents.docs;promises=docs.map(function(doc){return(0,exports.backUpDocRef)(db,doc,collectionRef_1.path,options);});return[4,Promise.all(promises)];case 5:promiseValues=_b.sent();promiseValues.forEach(function(dataMap){data_1[collectionName]=Object.assign(data_1[collectionName],dataMap);});return[2,data_1];case 6:error_2=_b.sent();console.error(error_2);throw new Error(error_2);case 7:return[2];}});});};exports.backupService=backupService;

@@ -0,1 +1,2 @@

import { Firestore } from 'firebase-admin/firestore';
import { IImportOptions } from './helper.js';

@@ -8,5 +9,5 @@ /**

*/
export declare const restoreService: (fileName: string | Object, options: IImportOptions) => Promise<{
export declare const restoreService: (db: Firestore, fileName: string | Object, options: IImportOptions) => Promise<{
status: boolean;
message: string;
}>;

@@ -12,3 +12,3 @@ "use strict";var __awaiter=(this&&this.__awaiter)||function(thisArg,_arguments,P,generator){function adopt(value){return value instanceof P?value:new P(function(resolve){resolve(value);});}

op=body.call(thisArg,_);}catch(e){op=[6,e];y=0;}finally{f=t=0;}
if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true};}};var __importDefault=(this&&this.__importDefault)||function(mod){return(mod&&mod.__esModule)?mod:{"default":mod};};Object.defineProperty(exports,"__esModule",{value:true});exports.restoreService=void 0;var firestore_1=require("firebase-admin/firestore");var fs_1=__importDefault(require("fs"));var uuid_1=require("uuid");var helper_js_1=require("./helper.js");var restoreService=function(fileName,options){var db=(0,firestore_1.getFirestore)();return new Promise(function(resolve,reject){if(typeof fileName==='object'){var dataObj=fileName;updateCollection(db,dataObj,options).then(function(){resolve({status:true,message:'Collection successfully imported!',});}).catch(function(error){reject({status:false,message:error.message});});}
if(op[0]&5)throw op[1];return{value:op[0]?op[1]:void 0,done:true};}};var __importDefault=(this&&this.__importDefault)||function(mod){return(mod&&mod.__esModule)?mod:{"default":mod};};Object.defineProperty(exports,"__esModule",{value:true});exports.restoreService=void 0;var fs_1=__importDefault(require("fs"));var uuid_1=require("uuid");var helper_js_1=require("./helper.js");var restoreService=function(db,fileName,options){return new Promise(function(resolve,reject){if(typeof fileName==='object'){var dataObj=fileName;updateCollection(db,dataObj,options).then(function(){resolve({status:true,message:'Collection successfully imported!',});}).catch(function(error){reject({status:false,message:error.message});});}
else{fs_1.default.readFile(fileName,'utf8',function(err,data){if(err){console.log(err);reject({status:false,message:err.message});}

@@ -15,0 +15,0 @@ var dataObj=JSON.parse(data);updateCollection(db,dataObj,options).then(function(){resolve({status:true,message:'Collection successfully imported!',});}).catch(function(error){reject({status:false,message:error.message});});});}});};exports.restoreService=restoreService;var updateCollection=function(db,dataObj,options){if(options===void 0){options={};}

@@ -0,1 +1,3 @@

import { AppOptions } from 'firebase-admin/app';
import { Firestore } from 'firebase-admin/firestore';
import { IExportOptions, IImportOptions } from './helper.js';

@@ -11,4 +13,6 @@ interface IInitializeAppOptions {

* @param {IInitializeAppOptions} options
*
* @return Firestore
*/
export declare const initializeFirebaseApp: (serviceAccount: object, name?: string, options?: IInitializeAppOptions) => boolean;
export declare const initializeFirebaseApp: (serviceAccount?: AppOptions | null, name?: string, options?: IInitializeAppOptions) => Firestore;
/**

@@ -21,3 +25,3 @@ * Backup data from firestore

*/
export declare const backup: <T>(collectionName: string, options?: IExportOptions) => Promise<T>;
export declare const backup: <T>(db: Firestore, collectionName: string, options?: IExportOptions) => Promise<T>;
/**

@@ -31,3 +35,3 @@ * Backup data from a specific firestore document specified by db.collection(collectionName).doc(documentName)

*/
export declare const backupFromDoc: <T>(collectionName: string, documentName: string, options?: IExportOptions) => Promise<T>;
export declare const backupFromDoc: <T>(db: Firestore, collectionName: string, documentName: string, options?: IExportOptions) => Promise<T>;
/**

@@ -38,3 +42,3 @@ * Restore data to firestore

*/
export declare const restore: (fileName: string | Object, options?: IImportOptions) => Promise<{
export declare const restore: (db: Firestore, fileName: string | Object, options?: IImportOptions) => Promise<{
status: boolean;

@@ -48,3 +52,3 @@ message: string;

*/
export declare const backups: <T>(collectionNameArray?: Array<string>, options?: IExportOptions) => Promise<T>;
export declare const backups: <T>(db: Firestore, collectionNameArray?: Array<string>, options?: IExportOptions) => Promise<T>;
export {};

@@ -5,5 +5,8 @@ "use strict";var __assign=(this&&this.__assign)||function(){__assign=Object.assign||function(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))

if(options===void 0){options={};}
var apps=(0,app_1.getApps)();if(apps.length===0||(apps.length>0&&apps[0].name!==name)){(0,app_1.initializeApp)({credential:(0,app_1.cert)(serviceAccount),databaseURL:serviceAccount['databaseURL'],},name);(0,firestore_1.getFirestore)().settings(__assign({timestampsInSnapshots:true},options.firestore));}
return true;};exports.initializeFirebaseApp=initializeFirebaseApp;var backup=function(collectionName,options){return(0,export_js_1.backupService)(collectionName,options);};exports.backup=backup;var backupFromDoc=function(collectionName,documentName,options){return(0,export_js_1.backupFromDocService)(collectionName,documentName,options);};exports.backupFromDoc=backupFromDoc;var restore=function(fileName,options){if(options===void 0){options={};}
return(0,import_js_1.restoreService)(fileName,options);};exports.restore=restore;var backups=function(collectionNameArray,options){if(collectionNameArray===void 0){collectionNameArray=[];}
return(0,export_js_1.getAllCollectionsService)(collectionNameArray,options);};exports.backups=backups;
var apps=(0,app_1.getApps)();if(apps.length===0||(apps.length>0&&apps[0].name!==name)){var app=void 0;if(serviceAccount){app=(0,app_1.initializeApp)({credential:(0,app_1.cert)(serviceAccount),databaseURL:serviceAccount['databaseURL'],},name);}
else{app=(0,app_1.initializeApp)(undefined,name);}
var firestore=(0,firestore_1.getFirestore)(app);firestore.settings(__assign({timestampsInSnapshots:true},options.firestore));}
else{console.warn("Firebase App exist. Return default firestore instance");}
return(0,firestore_1.getFirestore)(apps[0]);};exports.initializeFirebaseApp=initializeFirebaseApp;var backup=function(db,collectionName,options){return(0,export_js_1.backupService)(db,collectionName,options);};exports.backup=backup;var backupFromDoc=function(db,collectionName,documentName,options){return(0,export_js_1.backupFromDocService)(db,collectionName,documentName,options);};exports.backupFromDoc=backupFromDoc;var restore=function(db,fileName,options){if(options===void 0){options={};}
return(0,import_js_1.restoreService)(db,fileName,options);};exports.restore=restore;var backups=function(db,collectionNameArray,options){if(collectionNameArray===void 0){collectionNameArray=[];}
return(0,export_js_1.getAllCollectionsService)(db,collectionNameArray,options);};exports.backups=backups;
{
"name": "firestore-export-import",
"version": "1.3.6",
"version": "1.4.0",
"description": "NPM package for backup and restore Firebase Firestore",

@@ -37,6 +37,6 @@ "main": "./dist/index.js",

"devDependencies": {
"@types/chai": "^4.3.4",
"@types/chai": "^4.3.5",
"@types/expect": "^24.3.0",
"@types/mocha": "^10.0.1",
"@types/node": "^18.15.11",
"@types/node": "^20.4.5",
"chai": "^4.3.7",

@@ -49,7 +49,7 @@ "jsmin": "^1.0.1",

"ts-node": "^10.9.1",
"typescript": "^5.0.4"
"typescript": "^5.1.6"
},
"dependencies": {
"firebase-admin": "^11.6.0",
"google-gax": "^3.6.0",
"firebase-admin": "^11.10.1",
"google-gax": "^4.0.3",
"uuid": "^9.0.0"

@@ -56,0 +56,0 @@ },

@@ -50,7 +50,7 @@ # firestore-export-import

const appName = '[DEFAULT]'
initializeFirebaseApp(serviceAccount, appName, options)
const firestore = initializeFirebaseApp(serviceAccount, appName, options)
// the appName & options are OPTIONAL
// you can initalize the app without them
// initializeFirebaseApp(serviceAccount)
// you can initialize the app without them
// const firestore = initializeFirebaseApp(serviceAccount)
```

@@ -78,3 +78,3 @@

// Start exporting your data
backup('collection-name', options).then((data) =>
backup(firestore, 'collection-name', options).then((data) =>
console.log(JSON.stringify(data))

@@ -90,3 +90,3 @@ )

// you can pass options as a third option - optional
backupFromDoc('collection-name', 'document-id').then((data) =>
backupFromDoc(firestore, 'collection-name', 'document-id').then((data) =>
console.log(JSON.stringify(data))

@@ -109,3 +109,3 @@ )

backups(['collectionName1', 'collectionName2']) // Array of collection's name is OPTIONAL
backups(firestore, ['collectionName1', 'collectionName2']) // Array of collection's name is OPTIONAL
.then((collections) => {

@@ -125,3 +125,3 @@ // You can do whatever you want with collections

const users = await backup('users', {
const users = await backup(firestore, 'users', {
queryCollection: queryByName,

@@ -195,7 +195,7 @@ })

const appName = '[DEFAULT]'
initializeFirebaseApp(serviceAccount, databaseURL, appName)
const firestore = initializeFirebaseApp(serviceAccount, databaseURL, appName)
// Start importing your data
// The array of date, location and reference fields are optional
restore('your-file-path.json', {
restore(firestore, 'your-file-path.json', {
dates: ['date1', 'date1.date2', 'date1.date2.date3'],

@@ -213,3 +213,3 @@ geos: ['location', 'locations'],

const backupData = await request('JSON-URL');
const status = await restore(JSON.parse(backupData), {
const status = await restore(firestore, JSON.parse(backupData), {
dates: ['date'],

@@ -220,3 +220,3 @@ geos: ['location']

The JSON is formated as below. The collection name is **test**. **first-key** and **second-key** are document ids.
The JSON is formatted as below. The collection name is **test**. **first-key** and **second-key** are document ids.

@@ -223,0 +223,0 @@ ```json

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc