Skip to content

Commit

Permalink
Merge pull request #2 from sauntimo/fix-firestoreusers2json
Browse files Browse the repository at this point in the history
Fix firestoreusers2json
  • Loading branch information
burggraf authored Feb 24, 2022
2 parents 0af8996 + 958c973 commit e6403fb
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 38 deletions.
22 changes: 12 additions & 10 deletions auth/firestoreusers2json.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,11 @@ var serviceAccount = require("./firebase-service.json");
try {
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://" + serviceAccount.project_id + ".firebaseio.com" // "https://PROJECTID.firebaseio.com"
databaseURL: "https://".concat(serviceAccount.project_id, ".firebaseio.com") // "https://PROJECTID.firebaseio.com"
});
}
catch (e) { }
var args = process.argv.slice(2);
//let db;
if (args.length < 0) {
console.log('Usage: node firestoreusers2json.js [<filename.json>] [<batch_size>]');
console.log(' <filename.json>: (optional) output filename (defaults to ./users.json');
Expand All @@ -58,30 +57,33 @@ if (args.length < 0) {
else {
main();
}
var filename = args[0] || './users.json';
var batch_size = args[1] || '100';
function main() {
return __awaiter(this, void 0, void 0, function () {
var filename, batchSizeInput, batchSize;
return __generator(this, function (_a) {
fs.writeFileSync(filename, '[', 'utf-8');
listUsers();
filename = args[0] || "./users.json";
batchSizeInput = args[1] || "100";
batchSize = parseInt(batchSizeInput);
fs.writeFileSync(filename, "[", "utf-8");
listUsers(filename, batchSize);
return [2 /*return*/];
});
});
}
var count = 0;
function listUsers(nextPageToken) {
function listUsers(filename, batchSize, nextPageToken) {
return __awaiter(this, void 0, void 0, function () {
var count;
return __generator(this, function (_a) {
admin.auth().listUsers(parseInt(batch_size), nextPageToken)
count = 0;
admin.auth().listUsers(batchSize, nextPageToken)
.then(function (usersFound) {
var users = usersFound.users;
users.forEach(function (user) {
fs.appendFileSync(filename, (count > 0 ? ',' : '') + JSON.stringify(user, null, 2), 'utf-8');
count++;
});
if (usersFound.pageToken) {
listUsers(usersFound.pageToken);
listUsers(filename, batchSize, usersFound.pageToken);
}
else {
fs.appendFileSync(filename, ']\n', 'utf-8');
Expand Down
58 changes: 30 additions & 28 deletions auth/firestoreusers2json.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,13 @@ import * as admin from "firebase-admin";
const serviceAccount = require("./firebase-service.json");

try {
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: `https://${serviceAccount.project_id}.firebaseio.com` // "https://PROJECTID.firebaseio.com"
});
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: `https://${serviceAccount.project_id}.firebaseio.com` // "https://PROJECTID.firebaseio.com"
});
} catch (e) {}

const args = process.argv.slice(2);
//let db;

if (args.length < 0) {
console.log('Usage: node firestoreusers2json.js [<filename.json>] [<batch_size>]');
Expand All @@ -22,31 +21,34 @@ if (args.length < 0) {
main();
}

const filename = args[0] || './users.json';
const batch_size = args[1] || '100';

async function main() {
fs.writeFileSync(filename, '[', 'utf-8');
listUsers();
const filename = args[0] || "./users.json";
const batchSizeInput = args[1] || "100";
const batchSize = parseInt(batchSizeInput);
fs.writeFileSync(filename, "[", "utf-8");
listUsers(filename, batchSize);
}

let count = 0;
async function listUsers(nextPageToken?: string) {
admin.auth().listUsers(parseInt(batch_size), nextPageToken)
.then((usersFound: admin.auth.ListUsersResult) => {
const users: admin.auth.UserRecord[] = usersFound.users;
users.forEach((user: admin.auth.UserRecord) => {
fs.appendFileSync(filename, (count > 0 ? ',' : '') + JSON.stringify(user, null, 2), 'utf-8');
count++;
});
if (usersFound.pageToken) {
listUsers(usersFound.pageToken);
} else {
fs.appendFileSync(filename, ']\n', 'utf-8');
}
}).catch((err) => {
console.log('ERROR in listUsers', JSON.stringify(err));

async function listUsers(
filename: string,
batchSize: number,
nextPageToken?: string
) {
let count = 0;
admin.auth().listUsers(batchSize, nextPageToken)
.then((usersFound: admin.auth.ListUsersResult) => {
const users: admin.auth.UserRecord[] = usersFound.users;
users.forEach((user: admin.auth.UserRecord) => {
fs.appendFileSync(filename, (count > 0 ? ',' : '') + JSON.stringify(user, null, 2), 'utf-8');
count++;
});
if (usersFound.pageToken) {
listUsers(filename, batchSize, usersFound.pageToken);
} else {
fs.appendFileSync(filename, ']\n', 'utf-8');
}
}).catch((err) => {
console.log('ERROR in listUsers', JSON.stringify(err));
});
}


0 comments on commit e6403fb

Please sign in to comment.