reviewable-enterprise-tools 1.5.2 → 1.5.4

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 (2) hide show
  1. package/extract_data.js +20 -17
  2. package/package.json +2 -2
package/extract_data.js CHANGED
@@ -88,6 +88,8 @@ const pace = args.logging ?
88
88
  let reviewKeys = [];
89
89
  const reversePullRequests = {};
90
90
  let ghostedUsers = [];
91
+ const unknownUsers = [];
92
+
91
93
  const missingReviewKeys = [];
92
94
  const missingOrgs = new Set();
93
95
  const brokenFiles = [];
@@ -118,6 +120,7 @@ async function extract() {
118
120
  logMissingReviews();
119
121
  logMissingOrgs();
120
122
  await logUnmappedUsers();
123
+ logUnknownUsers();
121
124
  logBrokenFiles();
122
125
  }
123
126
 
@@ -150,6 +153,12 @@ async function logUnmappedUsers() {
150
153
  );
151
154
  }
152
155
 
156
+ function logUnknownUsers() {
157
+ if (!unknownUsers.length) return;
158
+ console.log(`\n${unknownUsers.length} users from map have no record in Reviewable:`);
159
+ console.log(_(unknownUsers).map(userKey => userKey.replace('github:', '')).join(', '));
160
+ }
161
+
153
162
  function logMissingReviews() {
154
163
  if (!missingReviewKeys.length) return;
155
164
  console.log(`\n${missingReviewKeys.length} reviews could not be found:`);
@@ -361,6 +370,10 @@ async function extractUsers() {
361
370
  log('Extracting users');
362
371
  await forEachOfLimit(userMap, 25, async (newUserKey, oldUserKey) => {
363
372
  let user = await db.child('users/:oldUserKey', {oldUserKey}).get();
373
+ if (!user) {
374
+ unknownUsers.push(oldUserKey);
375
+ return;
376
+ }
364
377
  user = _.omit(
365
378
  user, 'lastUpdateTimestamp', 'lastSeatAllocationTimestamp', 'lastOwnershipsSyncTimestamp',
366
379
  'enterpriseLicenseAdmin', 'core', 'dashboardCache', 'stripe', 'enrollments', 'notifications',
@@ -388,24 +401,14 @@ async function extractUsers() {
388
401
  if (user.state) user.state = _.pick(user.state, reviewKeys);
389
402
  if (_.isEmpty(user.state)) delete user.state;
390
403
  if (args.merge) {
391
- delete user.onboarding; // too many props to merge efficiently
392
- await forEachOf(user, async (value, key) => {
393
- switch (key) {
394
- case 'index':
395
- await forEachOf(user.index.extraMentions, async (mention, mentionKey) => {
396
- await writeItem(`users/${newUserKey}/index/extraMentions/${mentionKey}`, mention);
397
- });
398
- break;
399
- case 'state':
400
- case 'settings':
401
- await forEachOf(user[key], async (subValue, subKey) => {
402
- await writeItem(`users/${newUserKey}/${key}/${subKey}`, subValue);
403
- })
404
- break;
405
- default:
406
- await writeItem(`users/${newUserKey}/${key}`, value);
407
- }
404
+ await writeItem(
405
+ `users/${newUserKey}`, _.omit(user, 'onboarding', 'settings', 'state', 'index'));
406
+ await forEachOf(['onboarding', 'settings', 'state'], async key => {
407
+ if (user[key]) await writeItem(`users/${newUserKey}/${key}`, user[key]);
408
408
  });
409
+ if (user.index?.extraMentions) {
410
+ await writeItem(`users/${newUserKey}/index/extraMentions`, user.index.extraMentions);
411
+ }
409
412
  } else {
410
413
  await writeItem(`users/${newUserKey}`, user);
411
414
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "reviewable-enterprise-tools",
3
- "version": "1.5.2",
3
+ "version": "1.5.4",
4
4
  "type": "module",
5
5
  "description": "Admin tools for Reviewable Enterprise",
6
6
  "bin": {
@@ -14,7 +14,7 @@
14
14
  "test": "echo \"Error: no test specified\" && exit 1"
15
15
  },
16
16
  "engines": {
17
- "node": ">=16"
17
+ "node": ">=18"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",