@yrpri/api 9.0.138 → 9.0.140

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 (320) hide show
  1. package/agents/assistants/agentAssistant.js +4 -3
  2. package/agents/assistants/baseAssistant.js +72 -71
  3. package/agents/assistants/baseAssistantWithVoice.js +6 -5
  4. package/agents/assistants/modes/agentDirectConnection.js +8 -7
  5. package/agents/assistants/modes/agentSelectionMode.js +2 -1
  6. package/agents/assistants/modes/baseAssistantMode.js +3 -2
  7. package/agents/assistants/modes/tools/agentTools.js +11 -10
  8. package/agents/assistants/modes/tools/loginTools.js +7 -6
  9. package/agents/assistants/modes/tools/models/agents.js +6 -5
  10. package/agents/assistants/modes/tools/models/subscriptions.js +7 -6
  11. package/agents/assistants/modes/tools/navigationTools.js +7 -6
  12. package/agents/assistants/modes/tools/subscriptionTools.js +12 -11
  13. package/agents/assistants/modes/tools/workflowConverstationTools.js +7 -6
  14. package/agents/assistants/voiceAssistant.js +45 -44
  15. package/agents/controllers/agentProductController.js +8 -7
  16. package/agents/controllers/agentSubscriptionController.js +13 -12
  17. package/agents/controllers/assistantsController.js +45 -44
  18. package/agents/controllers/policySynthAgents.d.ts +2 -0
  19. package/agents/controllers/policySynthAgents.js +63 -31
  20. package/agents/managers/emailInvitesManager.js +4 -3
  21. package/agents/managers/newAiModelSetup.js +57 -132
  22. package/agents/managers/notificationAgentQueueManager.js +55 -54
  23. package/agents/managers/subscriptionManager.js +24 -23
  24. package/agents/models/agentProduct.js +2 -1
  25. package/agents/models/agentProductBoosterPurchase.js +2 -1
  26. package/agents/models/testData/createEvolyAgentProduct.js +7 -6
  27. package/agents/models/testData/old/updateAgentWorkflowConfiguration.js +5 -4
  28. package/agents/models/testData/updateAgentWorkflowConfiguration.js +5 -4
  29. package/agents/tools/setTemplateWorkflowCommunityId.js +6 -5
  30. package/app.d.ts +2 -1
  31. package/app.js +60 -34
  32. package/authorization.cjs +4 -4
  33. package/controllers/allOurIdeas.js +45 -44
  34. package/controllers/groups.cjs +4 -9
  35. package/controllers/images.cjs +8 -8
  36. package/controllers/index.cjs +1 -1
  37. package/controllers/points.cjs +1 -1
  38. package/controllers/posts.cjs +3 -3
  39. package/deleteUnwantedDeclerations.cjs +5 -5
  40. package/models/community.cjs +1 -1
  41. package/models/domain.cjs +7 -7
  42. package/models/image.cjs +2 -2
  43. package/models/index.cjs +8 -4
  44. package/models/post.cjs +10 -10
  45. package/models/user.cjs +1 -1
  46. package/models/video.cjs +4 -4
  47. package/package.json +5 -5
  48. package/scripts/addRatingUsersToGroup.js +1 -1
  49. package/scripts/addUserToOrganization.js +8 -8
  50. package/scripts/agents/changeModelForWorkflowGroupTemplate.js +13 -12
  51. package/scripts/agents/generateAgentWorkflowTemplateFromAgentClass.js +8 -7
  52. package/scripts/analyseRatingsForCommunity.js +2 -2
  53. package/scripts/analyzeAndFixBrokenPointUsers.js +3 -3
  54. package/scripts/analyzeEndorsementsByCountry.js +7 -7
  55. package/scripts/analyzePostsForCommunity.js +1 -1
  56. package/scripts/bulkStatusUpdates/listUpdates.js +2 -2
  57. package/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +5 -5
  58. package/scripts/bulkStatusUpdates/performUpdate.js +9 -9
  59. package/scripts/bulkStatusUpdates/performUpdateForGroup.cjs +11 -11
  60. package/scripts/bulkStatusUpdates/performUpdateForStatus.js +15 -15
  61. package/scripts/change/changeVideoAspectTo.js +3 -3
  62. package/scripts/change/setUseNewVersion.cjs +4 -4
  63. package/scripts/changeCommunityGroupcount.js +3 -3
  64. package/scripts/changeCommunityPostCount.js +3 -3
  65. package/scripts/changeGroupPostCount.js +3 -3
  66. package/scripts/changeLanguage.js +4 -4
  67. package/scripts/changeOfficalStatus.js +3 -3
  68. package/scripts/cleanups/deleteAnonNotifications.cjs +7 -7
  69. package/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +8 -8
  70. package/scripts/cleanups/deleteYearOldNotifications.cjs +5 -5
  71. package/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +5 -5
  72. package/scripts/clearAllEndorsementInGroup.js +5 -5
  73. package/scripts/cloning/clearUsersForCommunitiesFromUrl.js +3 -3
  74. package/scripts/cloning/cloneFromUrlScript.js +4 -4
  75. package/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +6 -6
  76. package/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +6 -6
  77. package/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +6 -6
  78. package/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +3 -3
  79. package/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +2 -2
  80. package/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +2 -2
  81. package/scripts/cloning/copyCommunityToDomainWithEverything.js +2 -2
  82. package/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +3 -3
  83. package/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +3 -3
  84. package/scripts/cloning/copyPostToGroupOld.js +12 -12
  85. package/scripts/cloning/copyPostVideosFromURL.js +3 -3
  86. package/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +2 -2
  87. package/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +7 -7
  88. package/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +6 -6
  89. package/scripts/cloning/setAdminsFromURL.js +5 -5
  90. package/scripts/cloning/setExternalIdsFromURL.js +3 -3
  91. package/scripts/countCommunity.js +11 -11
  92. package/scripts/countCommunityUsers.js +4 -4
  93. package/scripts/countDelayedNotifications.js +3 -3
  94. package/scripts/countGroup.js +11 -11
  95. package/scripts/countStuff.js +3 -3
  96. package/scripts/countUniqueVotersInAGroup.js +3 -3
  97. package/scripts/createInvitesAndShow.js +2 -2
  98. package/scripts/database/sync_database.js +2 -2
  99. package/scripts/database/sync_dev_database.js +3 -3
  100. package/scripts/debugNotifications.js +5 -5
  101. package/scripts/deleteAllNewsFeeds.js +2 -2
  102. package/scripts/deleteCategory.js +1 -1
  103. package/scripts/deleteOldAppActivities.js +5 -4
  104. package/scripts/deletePostContactDataForCommunity.js +5 -4
  105. package/scripts/destroy/destroy_all_but_one_domain.js +59 -59
  106. package/scripts/displayAuthorForPost.js +1 -1
  107. package/scripts/domains/createDomain.js +5 -4
  108. package/scripts/domains/importDomainsFromXls.js +7 -6
  109. package/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +2 -2
  110. package/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +9 -9
  111. package/scripts/exportAllStatusChanges.js +5 -5
  112. package/scripts/exportEndorsementsForCommunity.js +5 -5
  113. package/scripts/exportPointQualitiesForCommunity.js +5 -5
  114. package/scripts/exportPostsAndPointsForCommunity.js +9 -9
  115. package/scripts/exportPostsDataSetForDomain.js +12 -12
  116. package/scripts/exportPostsForGroup.js +7 -7
  117. package/scripts/exportRatingsForPost.js +2 -2
  118. package/scripts/exportUserEndorsementsWithUserAnalysis.js +6 -6
  119. package/scripts/exportUsersForCommunity.js +3 -3
  120. package/scripts/exportUsersForDomain.js +3 -3
  121. package/scripts/exportUsersForGroup.js +3 -3
  122. package/scripts/exports/ratingDistribution.js +6 -6
  123. package/scripts/exports/whoEndorsedWhatByCommunity.js +2 -2
  124. package/scripts/findUnusedClientImports.js +2 -2
  125. package/scripts/fixAllPostPointCounts.js +1 -1
  126. package/scripts/fixAnonNotificationsSettings.js +5 -5
  127. package/scripts/fixCountKopavogur.js +1 -1
  128. package/scripts/fixEndorsementsAfterCopyPostToGroup.js +10 -10
  129. package/scripts/fixExternalUserId.js +2 -2
  130. package/scripts/fixGroupAccess.js +3 -3
  131. package/scripts/fixGroupIdeasAndPointsCount.js +2 -2
  132. package/scripts/fixNotificationSettings.js +4 -4
  133. package/scripts/fixSurveyRadioBakedInSubCodes.js +6 -6
  134. package/scripts/fixWrongUserIdForStatusUpdates.js +6 -5
  135. package/scripts/gallery/exportGalleryData.js +2 -2
  136. package/scripts/gallery/importGalleryForCommunity.js +14 -14
  137. package/scripts/gallery/readJsonAndDownloadImagesVersion2.js +6 -6
  138. package/scripts/gallery/refreshAcApiPostIdsForCommunity.js +5 -5
  139. package/scripts/genderAnalysis.js +10 -10
  140. package/scripts/genderAnalysisByStatus.js +4 -4
  141. package/scripts/importAllLocalesFromLocalFolders.js +7 -7
  142. package/scripts/importDomain.js +131 -131
  143. package/scripts/keys/addOidcToDomain.cjs +9 -9
  144. package/scripts/landUseGame/export3Ddata.js +15 -15
  145. package/scripts/listLanguagesForGroup.js +6 -6
  146. package/scripts/loadTestCreateDummyContentForGroup.js +2 -2
  147. package/scripts/makeRecursiveMapData.js +4 -4
  148. package/scripts/mapping/community_map_csv.js +5 -5
  149. package/scripts/moveCommunityToDomain.js +3 -3
  150. package/scripts/moveGroupToCommunity.js +3 -3
  151. package/scripts/movePostToGroup.js +5 -5
  152. package/scripts/movePostsToGroupsRecountGroupFromUrl.js +6 -6
  153. package/scripts/oldMovePostToGroup.js +9 -9
  154. package/scripts/processCsvForPdfUrls.js +2 -2
  155. package/scripts/processCsvForTranslationAndToxicity.js +10 -10
  156. package/scripts/recount/recount_recursive_communities.js +6 -6
  157. package/scripts/recountALLCommunityGroupCounts.js +4 -4
  158. package/scripts/recountAll.js +3 -3
  159. package/scripts/recountCommunitesFromUrl.js +3 -3
  160. package/scripts/recountCommunity.js +2 -2
  161. package/scripts/recountGroup.js +5 -5
  162. package/scripts/recountGroupNoUserChange.js +5 -5
  163. package/scripts/resetAllEndorsementsForGroup.js +3 -3
  164. package/scripts/resetEnTranslationForGroup.js +5 -5
  165. package/scripts/setAdminOnAll.cjs +14 -14
  166. package/scripts/setDomainAdmin.cjs +6 -6
  167. package/scripts/setDomainLocales.js +2 -2
  168. package/scripts/setEarlQuestionIdOnGroup.cjs +4 -4
  169. package/scripts/setLanguageOnGroupCommunitesFromUrl.js +3 -3
  170. package/scripts/setMemberOfAll.js +14 -14
  171. package/scripts/setNewUserForContentOfCommunity.js +9 -9
  172. package/scripts/setOfficialStatusOnAllPostsForCommunity.js +1 -1
  173. package/scripts/setUserOnAll.js +14 -14
  174. package/scripts/showCategoryForGroup.js +1 -1
  175. package/scripts/showOldActivityTypes.js +3 -3
  176. package/scripts/showPostsMissingCategoryForGroup.js +2 -2
  177. package/scripts/showStatuses.js +4 -4
  178. package/scripts/showUniqueVotersInCommunity.js +4 -4
  179. package/scripts/showUserAgentsAndIpsForEmails.js +4 -4
  180. package/scripts/simpleExportForGroupsForCommunity.js +5 -5
  181. package/scripts/simpleExportForPointsForCommunity.js +5 -5
  182. package/scripts/simpleExportForPostsForCommunity.js +5 -5
  183. package/scripts/testForEndorsments.js +4 -4
  184. package/scripts/undeleteGroupAndAllContent.js +8 -8
  185. package/scripts/undeletePost.js +7 -7
  186. package/scripts/unlinkSsn.js +4 -4
  187. package/scripts/updateFromAlthingi.js +8 -8
  188. package/scripts/users/createUserAddDomain.js +6 -5
  189. package/scripts/users/importUsersForDomainsFromXls.js +4 -3
  190. package/scripts/users/listDomainUsersWithSsn.js +6 -5
  191. package/scripts/users/removeUserFromDomain.js +6 -5
  192. package/scripts/users/updatePasswordFromSsn.js +5 -4
  193. package/scripts/users/updateUserSsnFromEmail.js +5 -4
  194. package/services/controllers/activities.cjs +1 -1
  195. package/services/controllers/news_feeds.cjs +1 -1
  196. package/services/controllers/notifications.cjs +1 -1
  197. package/services/controllers/recommendations.cjs +1 -1
  198. package/services/engine/allOurIdeas/aiHelper.js +10 -9
  199. package/services/engine/analytics/export_anon_community_activities.js +3 -3
  200. package/services/engine/analytics/importer.js +10 -10
  201. package/services/engine/analytics/plausible/manager.cjs +4 -4
  202. package/services/engine/analytics/statsCalc.cjs +1 -1
  203. package/services/engine/analytics/utils.cjs +10 -10
  204. package/services/engine/moderation/fraud/CreateFraudAuditReport.cjs +2 -1
  205. package/services/engine/moderation/fraud/FraudBase.cjs +2 -2
  206. package/services/engine/moderation/fraud/FraudDeleteBase.cjs +4 -4
  207. package/services/engine/moderation/fraud/FraudGetBase.cjs +1 -1
  208. package/services/engine/moderation/fraud/FraudGetEndorsements.cjs +1 -1
  209. package/services/engine/moderation/fraud/FraudGetPointQualities.cjs +1 -1
  210. package/services/engine/moderation/fraud/FraudGetPoints.cjs +1 -1
  211. package/services/engine/moderation/fraud/FraudGetPosts.cjs +1 -1
  212. package/services/engine/moderation/fraud/FraudGetRatings.cjs +1 -1
  213. package/services/engine/moderation/fraud/FraudScannerNotifier.cjs +9 -9
  214. package/services/engine/moderation/get_moderation_items.cjs +1 -1
  215. package/services/engine/moderation/image_labeling/ImageLabelingBase.cjs +1 -1
  216. package/services/engine/moderation/process_moderation_items.cjs +1 -1
  217. package/services/engine/moderation/toxicity_analysis.cjs +1 -1
  218. package/services/engine/news_feeds/generate_dynamically.cjs +1 -1
  219. package/services/engine/news_feeds/generate_from_notifications.cjs +1 -1
  220. package/services/engine/notifications/emails_utils.cjs +2 -2
  221. package/services/engine/notifications/generate_point_notifications.cjs +1 -1
  222. package/services/engine/notifications/generate_post_notifications.cjs +1 -1
  223. package/services/engine/notifications/process_delayed_notifications.cjs +38 -38
  224. package/services/engine/old/exporters/categories_dataset.js +11 -11
  225. package/services/engine/old/exporters/sentiment_dataset.js +12 -12
  226. package/services/engine/recommendations/events_importer.cjs +5 -5
  227. package/services/engine/recommendations/events_manager.cjs +1 -1
  228. package/services/engine/reports/add_points_to_sheet.cjs +2 -2
  229. package/services/engine/reports/commonUtils.js +3 -2
  230. package/services/engine/reports/common_utils.cjs +8 -8
  231. package/services/engine/reports/docx_group_report.cjs +1 -1
  232. package/services/engine/reports/xlsAllOurIdeasExport.js +16 -15
  233. package/services/engine/reports/xls_community_users_report.cjs +2 -2
  234. package/services/engine/reports/xls_group_report.cjs +1 -1
  235. package/services/llms/baseChatBot.js +12 -11
  236. package/services/llms/imageGeneration/chatGptImageGenerator.js +3 -2
  237. package/services/llms/imageGeneration/collectionImageGenerator.js +7 -6
  238. package/services/llms/imageGeneration/dalleImageGenerator.js +6 -5
  239. package/services/llms/imageGeneration/fluxImageGenerator.js +5 -4
  240. package/services/llms/imageGeneration/imageProcessorService.js +2 -1
  241. package/services/llms/imageGeneration/imagenImageGenerator.js +8 -7
  242. package/services/llms/imageGeneration/s3Service.js +12 -11
  243. package/services/llms/llmTranslation.js +30 -29
  244. package/services/models/ac_activity.cjs +1 -1
  245. package/services/models/ac_notification.cjs +1 -1
  246. package/services/models/ac_translation_cache.cjs +11 -11
  247. package/services/scripts/analytics/setup_all_plausible_goals.cjs +2 -2
  248. package/services/scripts/fix_old_delayed_notifications.js +3 -3
  249. package/services/scripts/kue_status.js +11 -11
  250. package/services/scripts/kue_watch_stuck_jobs.js +6 -6
  251. package/services/scripts/translation_clear_language.js +21 -21
  252. package/services/scripts/translation_delete.js +4 -4
  253. package/services/scripts/translation_replace_text_from_url.js +4 -4
  254. package/services/scripts/translation_update.js +4 -4
  255. package/services/scripts/translations_list.js +5 -5
  256. package/services/utils/airbrake.cjs +2 -1
  257. package/services/utils/redisConnection.cjs +6 -5
  258. package/services/utils/translation_helpers.cjs +3 -2
  259. package/services/utils/updateAllLocalesFromEn.js +20 -19
  260. package/services/utils/updateLocaleFolders.js +7 -6
  261. package/services/workers/activity.cjs +1 -1
  262. package/services/workers/anonymizations.cjs +1 -1
  263. package/services/workers/bulk_status_update.cjs +2 -2
  264. package/services/workers/delayed_jobs.cjs +1 -1
  265. package/services/workers/deletions.cjs +1 -1
  266. package/services/workers/email.cjs +1 -1
  267. package/services/workers/fraud_management.cjs +3 -3
  268. package/services/workers/generativeAi.js +6 -5
  269. package/services/workers/main.cjs +1 -1
  270. package/services/workers/marketing.cjs +1 -1
  271. package/services/workers/moderation.cjs +1 -1
  272. package/services/workers/notification_delivery.cjs +1 -1
  273. package/services/workers/notification_news_feed.cjs +1 -1
  274. package/services/workers/queue.cjs +2 -2
  275. package/services/workers/recount.cjs +1 -1
  276. package/services/workers/reports.cjs +1 -1
  277. package/services/workers/similarities.cjs +4 -2
  278. package/services/workers/speech_to_text.cjs +1 -1
  279. package/utils/airbrake.cjs +1 -1
  280. package/utils/cjsCodeReview.js +7 -6
  281. package/utils/community_mapping_tools.cjs +2 -2
  282. package/utils/copy_utils.cjs +31 -31
  283. package/utils/export_utils.cjs +7 -7
  284. package/utils/generateDocumentation.js +10 -9
  285. package/utils/logger.cjs +2 -23
  286. package/utils/logger.d.cts +1 -1
  287. package/utils/loggerAirbrakeTransport.cjs +52 -0
  288. package/utils/loggerAirbrakeTransport.d.cts +15 -0
  289. package/utils/loggerAirbrakeTransportTs.d.ts +15 -0
  290. package/utils/loggerAirbrakeTransportTs.js +45 -0
  291. package/utils/loggerCore.cjs +29 -0
  292. package/utils/loggerCore.d.cts +2 -0
  293. package/utils/loggerCoreTs.d.ts +2 -0
  294. package/utils/loggerCoreTs.js +23 -0
  295. package/utils/loggerTs.d.ts +1 -2
  296. package/utils/loggerTs.js +2 -25
  297. package/utils/recount_utils.cjs +5 -5
  298. package/utils/seedModels.js +50 -49
  299. package/utils/sitemap_generator.cjs +4 -4
  300. package/utils/ypLanguages.js +2 -2
  301. package/webSockets.js +8 -7
  302. package/services/utils/logger.cjs +0 -25
  303. package/services/utils/logger.d.cts +0 -2
  304. package/src/agents/assistants/assistant.d.ts +0 -156
  305. package/src/controllers/audios.d.ts +0 -5
  306. package/src/controllers/categories.d.ts +0 -5
  307. package/src/controllers/communities.d.ts +0 -5
  308. package/src/controllers/domains.d.ts +0 -5
  309. package/src/controllers/groups.d.ts +0 -5
  310. package/src/controllers/images.d.ts +0 -5
  311. package/src/controllers/points.d.ts +0 -5
  312. package/src/controllers/posts.d.ts +0 -5
  313. package/src/controllers/ratings.d.ts +0 -5
  314. package/src/controllers/users.d.ts +0 -5
  315. package/src/controllers/videos.d.ts +0 -5
  316. package/src/models/index.d.ts +0 -84
  317. package/src/services/controllers/activities.d.ts +0 -5
  318. package/src/services/controllers/notifications.d.ts +0 -5
  319. package/src/utils/copy_utils.d.ts +0 -4
  320. package/src/utils/manifest_generator.d.ts +0 -18
@@ -9,7 +9,7 @@ const authorizationURL = process.argv[6];
9
9
  const tokenURL = process.argv[7];
10
10
  const userInfoURL = process.argv[8];
11
11
  const endSessionURL = process.argv[9];
12
- console.log(`Updating OIDC keys for domain ${domainId}`);
12
+ log.info(`Updating OIDC keys for domain ${domainId}`);
13
13
  async.series([
14
14
  function (callback) {
15
15
  models.Domain.findOne({
@@ -18,7 +18,7 @@ async.series([
18
18
  }
19
19
  }).then(function (domain) {
20
20
  if (domain) {
21
- console.log(`Found domain: ${domain.name}`);
21
+ log.info(`Found domain: ${domain.name}`);
22
22
  // Initialize secret_api_keys if it doesn't exist
23
23
  if (!domain.secret_api_keys) {
24
24
  domain.secret_api_keys = {};
@@ -33,31 +33,31 @@ async.series([
33
33
  userInfoURL: userInfoURL,
34
34
  endSessionURL: endSessionURL
35
35
  };
36
- console.log("Updated secret_api_keys:", JSON.stringify(domain.secret_api_keys, null, 2));
36
+ log.info("Updated secret_api_keys:", JSON.stringify(domain.secret_api_keys, null, 2));
37
37
  domain.changed('secret_api_keys', true);
38
38
  domain.save({ fields: ['secret_api_keys'] }).then(() => {
39
- console.log("OIDC keys updated successfully");
39
+ log.info("OIDC keys updated successfully");
40
40
  callback();
41
41
  }).catch((error) => {
42
- console.error("Error saving domain:", error);
42
+ log.error("Error saving domain:", error);
43
43
  callback(error);
44
44
  });
45
45
  }
46
46
  else {
47
- console.log("Can't find domain");
47
+ log.info("Can't find domain");
48
48
  callback("Can't find domain");
49
49
  }
50
50
  }).catch((error) => {
51
- console.error("Error finding domain:", error);
51
+ log.error("Error finding domain:", error);
52
52
  callback(error);
53
53
  });
54
54
  }
55
55
  ], function (error) {
56
56
  if (error) {
57
- console.error("An error occurred:", error);
57
+ log.error("An error occurred:", error);
58
58
  }
59
59
  else {
60
- console.log("Finished successfully");
60
+ log.info("Finished successfully");
61
61
  }
62
62
  process.exit();
63
63
  });
@@ -23,26 +23,26 @@ async function axiosWrapper(url, options = {}) {
23
23
  }
24
24
  catch (error) {
25
25
  // For simplicity, the error is logged and then rethrown
26
- console.error("Error", error.message);
26
+ log.error("Error", error.message);
27
27
  throw error;
28
28
  }
29
29
  }
30
30
  async function getPoints(groupId, parentPointId) {
31
31
  const url = `https://betraisland.is/api/groups/${groupId}/${parentPointId}/get_parent_point`;
32
- console.log(`Fetching point ${parentPointId} ${url}`);
32
+ log.info(`Fetching point ${parentPointId} ${url}`);
33
33
  try {
34
34
  const outPoints = [];
35
35
  const point = await axiosWrapper(url);
36
- console.log(`Fetched point ${parentPointId}`);
36
+ log.info(`Fetched point ${parentPointId}`);
37
37
  if (point && point.PointRevisions && point.PointRevisions.length > 0) {
38
38
  point.latestContent =
39
39
  point.PointRevisions[point.PointRevisions.length - 1].content;
40
40
  point.content = point.latestContent;
41
41
  outPoints.push(point);
42
42
  const commentsUrl = `https://betraisland.is/api/points/${parentPointId}/comments`;
43
- console.log(`Fetching comments ${commentsUrl}`);
43
+ log.info(`Fetching comments ${commentsUrl}`);
44
44
  const comments = await axiosWrapper(commentsUrl);
45
- console.error(`Fetched comments ${JSON.stringify(comments, null, 2)}`);
45
+ log.error(`Fetched comments ${JSON.stringify(comments, null, 2)}`);
46
46
  for (const comment of comments) {
47
47
  comment.latestContent =
48
48
  comment.PointRevisions[comment.PointRevisions.length - 1].content;
@@ -57,7 +57,7 @@ async function getPoints(groupId, parentPointId) {
57
57
  }
58
58
  catch (error) {
59
59
  // Handle errors specific to getPoints if necessary
60
- console.error(`Failed to get points for post ${parentPointId}:`, error);
60
+ log.error(`Failed to get points for post ${parentPointId}:`, error);
61
61
  // Re-throw the error or handle it as per your application's error handling policy
62
62
  throw error;
63
63
  }
@@ -73,7 +73,7 @@ function convertToCsv(dataArray) {
73
73
  let newTilesData = [];
74
74
  let tilesData = [];
75
75
  (async () => {
76
- console.log("Start export");
76
+ log.info("Start export");
77
77
  let offset = 0;
78
78
  let count = 0;
79
79
  let continueFetching = true;
@@ -81,7 +81,7 @@ let tilesData = [];
81
81
  const communityId = process.argv[2];
82
82
  const postsProcessed = {};
83
83
  let outCsvText = "rectangle,groupId,userId,landUseType,comment";
84
- console.log(`Fetching posts ${offset} to ${offset + chunkSize - 1}...`);
84
+ log.info(`Fetching posts ${offset} to ${offset + chunkSize - 1}...`);
85
85
  const posts = await models.Post.findAll({
86
86
  attributes: ["id", "name", "user_id", "group_id", "data"],
87
87
  include: [
@@ -96,11 +96,11 @@ let tilesData = [];
96
96
  limit: chunkSize,
97
97
  offset: offset,
98
98
  });
99
- console.log(`Post length ${posts.length}`);
99
+ log.info(`Post length ${posts.length}`);
100
100
  // Process the posts
101
101
  for (let p = 0; p < posts.length; p++) {
102
102
  const post = posts[p];
103
- console.log(`${post.id} ${post.name}`);
103
+ log.info(`${post.id} ${post.name}`);
104
104
  if (post.data &&
105
105
  post.data.publicPrivateData &&
106
106
  post.data.publicPrivateData.length) {
@@ -116,14 +116,14 @@ let tilesData = [];
116
116
  });
117
117
  }
118
118
  else {
119
- console.warn(`Post ${post.id} has no publicPrivateData`);
119
+ log.warn(`Post ${post.id} has no publicPrivateData`);
120
120
  }
121
121
  }
122
122
  for (const tile of tilesData) {
123
123
  if (tile.pointId) {
124
124
  try {
125
125
  const pointsWithComments = await getPoints(tile.post.group_id, tile.pointId);
126
- console.log(`Fetched ${pointsWithComments.length} points for post ${tile.pointId} ${JSON.stringify(pointsWithComments, null, 2)}`);
126
+ log.info(`Fetched ${pointsWithComments.length} points for post ${tile.pointId} ${JSON.stringify(pointsWithComments, null, 2)}`);
127
127
  for (const point of pointsWithComments) {
128
128
  let newTileData = {
129
129
  rectangle: tile.rectangleIndex,
@@ -133,13 +133,13 @@ let tilesData = [];
133
133
  postId: tile.post.id,
134
134
  comment: point.content,
135
135
  };
136
- console.log(`New tile data ${JSON.stringify(newTileData, null, 2)}`);
136
+ log.info(`New tile data ${JSON.stringify(newTileData, null, 2)}`);
137
137
  newTilesData.push(newTileData);
138
138
  }
139
139
  count += pointsWithComments.length;
140
140
  }
141
141
  catch (error) {
142
- console.error(`Error fetching points for post ${tile.pointId}:`, error);
142
+ log.error(`Error fetching points for post ${tile.pointId}:`, error);
143
143
  process.exit(1);
144
144
  }
145
145
  }
@@ -156,7 +156,7 @@ let tilesData = [];
156
156
  }
157
157
  const csvData = convertToCsv(newTilesData);
158
158
  fs.writeFileSync(`/tmp/landUseGameGroup${process.argv[2]}.csv`, csvData);
159
- console.log(`Done. Processed ${count} posts.`);
159
+ log.info(`Done. Processed ${count} posts.`);
160
160
  process.exit(0);
161
161
  })();
162
162
  export {};
@@ -32,23 +32,23 @@ async.series([
32
32
  },
33
33
  ], (error) => {
34
34
  if (error) {
35
- console.error(error);
35
+ log.error(error);
36
36
  }
37
37
  else {
38
38
  if (posts) {
39
- console.log("Posts");
39
+ log.info("Posts");
40
40
  posts.forEach((post) => {
41
- console.log(post.id + " - " + post.language);
41
+ log.info(post.id + " - " + post.language);
42
42
  });
43
43
  }
44
44
  if (points) {
45
- console.log("Points");
45
+ log.info("Points");
46
46
  points.forEach((point) => {
47
- console.log(point.id + " - " + point.language);
47
+ log.info(point.id + " - " + point.language);
48
48
  });
49
49
  }
50
50
  }
51
- console.log("Done");
51
+ log.info("Done");
52
52
  process.exit();
53
53
  });
54
54
  export {};
@@ -17,11 +17,11 @@ async.doUntil((innerCallback) => {
17
17
  ip_address: ip.address()
18
18
  }).then((post) => {
19
19
  addedPosts += 1;
20
- console.log("Added post id: " + post.id);
20
+ log.info("Added post id: " + post.id);
21
21
  innerCallback();
22
22
  });
23
23
  }, () => addedPosts > 5000, (error) => {
24
- console.error(error);
24
+ log.error(error);
25
25
  process.exit();
26
26
  });
27
27
  export {};
@@ -9,7 +9,7 @@ async function getTranslationForMap(textType, model, targetLanguage) {
9
9
  }
10
10
  else {
11
11
  resolve();
12
- console.log("No translation");
12
+ log.info("No translation");
13
13
  }
14
14
  });
15
15
  });
@@ -79,7 +79,7 @@ const getCommunityMap = async (communityId, map) => {
79
79
  resolve();
80
80
  }
81
81
  else {
82
- console.error("Cant find community " + communityId);
82
+ log.error("Cant find community " + communityId);
83
83
  map.children.push({ name: "Not found community id " + communityId, children: [] });
84
84
  resolve();
85
85
  }
@@ -94,9 +94,9 @@ const run = async () => {
94
94
  await getCommunityMap(communityId, map);
95
95
  }
96
96
  catch (error) {
97
- console.error(error);
97
+ log.error(error);
98
98
  }
99
- console.log(util.inspect(map, { showHidden: false, depth: null }));
99
+ log.info(util.inspect(map, { showHidden: false, depth: null }));
100
100
  process.exit();
101
101
  };
102
102
  run();
@@ -11,7 +11,7 @@ async function getTranslationForMap(textType, model, targetLanguage) {
11
11
  }
12
12
  else {
13
13
  resolve();
14
- console.log("No translation");
14
+ log.info("No translation");
15
15
  }
16
16
  });
17
17
  });
@@ -97,7 +97,7 @@ const getCommunityMap = async (communityId, map, options) => {
97
97
  resolve();
98
98
  }
99
99
  else {
100
- console.error("Cant find community " + communityId);
100
+ log.error("Cant find community " + communityId);
101
101
  map.children.push({ name: "Not found community id " + communityId, children: [] });
102
102
  resolve();
103
103
  }
@@ -130,15 +130,15 @@ const getMapForCommunity = async (communityId, options) => {
130
130
  };
131
131
  (async () => {
132
132
  await getMapForCommunity(communityId, {});
133
- console.log("Groups");
133
+ log.info("Groups");
134
134
  groupsInCommunity = _.orderBy(groupsInCommunity, group => {
135
135
  return group.id;
136
136
  });
137
137
  groupsInCommunity.forEach(group => {
138
- console.log(`${group.id},"${group.realGroupName}",${group.communityId}`);
138
+ log.info(`${group.id},"${group.realGroupName}",${group.communityId}`);
139
139
  });
140
140
  communities.forEach(community => {
141
- console.log(`${community.id},"${community.name}"`);
141
+ log.info(`${community.id},"${community.name}"`);
142
142
  });
143
143
  process.exit();
144
144
  })();
@@ -9,14 +9,14 @@ models.Community.findOne({
9
9
  }).then(community => {
10
10
  community.domain_id = domainId;
11
11
  community.save().then(() => {
12
- console.log(`Done changing community ${community.id} to domain ${community.domain_id}`);
12
+ log.info(`Done changing community ${community.id} to domain ${community.domain_id}`);
13
13
  process.exit();
14
14
  }).catch(error => {
15
- console.error(error);
15
+ log.error(error);
16
16
  process.exit();
17
17
  });
18
18
  }).catch(error => {
19
- console.error(error);
19
+ log.error(error);
20
20
  process.exit();
21
21
  });
22
22
  export {};
@@ -10,14 +10,14 @@ models.Group.findOne({
10
10
  }).then(group => {
11
11
  group.community_id = communityId;
12
12
  group.save().then(() => {
13
- console.log(`Done changing group ${group.id} to community ${group.community_id}`);
13
+ log.info(`Done changing group ${group.id} to community ${group.community_id}`);
14
14
  process.exit();
15
15
  }).catch(error => {
16
- console.error(error);
16
+ log.error(error);
17
17
  process.exit();
18
18
  });
19
19
  }).catch(error => {
20
- console.error(error);
20
+ log.error(error);
21
21
  process.exit();
22
22
  });
23
23
  export {};
@@ -41,7 +41,7 @@ async.series([
41
41
  post = postIn;
42
42
  post.set('group_id', group.id);
43
43
  post.save().then(function (results) {
44
- console.log("Have changed group id");
44
+ log.info("Have changed group id");
45
45
  callback();
46
46
  });
47
47
  }).catch(function (error) {
@@ -60,7 +60,7 @@ async.series([
60
60
  point.set('community_id', communityId);
61
61
  point.set('domain_id', domainId);
62
62
  point.save().then(function () {
63
- console.log("Have changed group and all for point: " + point.id);
63
+ log.info("Have changed group and all for point: " + point.id);
64
64
  innerSeriesCallback();
65
65
  });
66
66
  }, function (error) {
@@ -79,7 +79,7 @@ async.series([
79
79
  activity.set('community_id', communityId);
80
80
  activity.set('domain_id', domainId);
81
81
  activity.save().then(function (results) {
82
- console.log("Have changed group and all: " + activity.id);
82
+ log.info("Have changed group and all: " + activity.id);
83
83
  innerSeriesCallback();
84
84
  });
85
85
  }, function (error) {
@@ -91,10 +91,10 @@ async.series([
91
91
  }
92
92
  ], function (error) {
93
93
  if (error) {
94
- console.error(error);
94
+ log.error(error);
95
95
  }
96
96
  else {
97
- console.log("Moved post to group", { postId: post.id, groupId: group.id });
97
+ log.info("Moved post to group", { postId: post.id, groupId: group.id });
98
98
  }
99
99
  process.exit();
100
100
  });
@@ -165,7 +165,7 @@ const moveOnePost = (postId, groupId, done) => {
165
165
  oldGroupId = post.group_id;
166
166
  post.set('group_id', group.id);
167
167
  post.save().then(function (results) {
168
- console.log("Have changed group id");
168
+ log.info("Have changed group id");
169
169
  callback();
170
170
  });
171
171
  }).catch(function (error) {
@@ -184,7 +184,7 @@ const moveOnePost = (postId, groupId, done) => {
184
184
  point.set('community_id', communityId);
185
185
  point.set('domain_id', domainId);
186
186
  point.save().then(function () {
187
- console.log("Have changed group and all for point: " + point.id);
187
+ log.info("Have changed group and all for point: " + point.id);
188
188
  innerSeriesCallback();
189
189
  });
190
190
  }, function (error) {
@@ -203,7 +203,7 @@ const moveOnePost = (postId, groupId, done) => {
203
203
  activity.set('community_id', communityId);
204
204
  activity.set('domain_id', domainId);
205
205
  activity.save().then(function (results) {
206
- console.log("Have changed group and all: " + activity.id);
206
+ log.info("Have changed group and all: " + activity.id);
207
207
  innerSeriesCallback();
208
208
  });
209
209
  }, function (error) {
@@ -289,9 +289,9 @@ async.series([
289
289
  },
290
290
  ], error => {
291
291
  if (error)
292
- console.error(error);
293
- console.log("All done move");
294
- console.log(finalTargetOutput);
292
+ log.error(error);
293
+ log.info("All done move");
294
+ log.info(finalTargetOutput);
295
295
  process.exit();
296
296
  });
297
297
  export {};
@@ -59,7 +59,7 @@ var moveOnePost = function (groupId, postId, categoryId, done) {
59
59
  post.set('category_id', categoryId);
60
60
  }
61
61
  post.save().then(function () {
62
- console.log("Have changed group id for post");
62
+ log.info("Have changed group id for post");
63
63
  callback();
64
64
  });
65
65
  });
@@ -75,7 +75,7 @@ var moveOnePost = function (groupId, postId, categoryId, done) {
75
75
  point.set('community_id', communityId);
76
76
  point.set('domain_id', domainId);
77
77
  point.save().then(function () {
78
- console.log("Have changed group and all for point: " + point.id);
78
+ log.info("Have changed group and all for point: " + point.id);
79
79
  innerSeriesCallback();
80
80
  });
81
81
  }, function (error) {
@@ -94,7 +94,7 @@ var moveOnePost = function (groupId, postId, categoryId, done) {
94
94
  activity.set('community_id', communityId);
95
95
  activity.set('domain_id', domainId);
96
96
  activity.save().then(function (results) {
97
- console.log("Have changed group and all activity: " + activity.id);
97
+ log.info("Have changed group and all activity: " + activity.id);
98
98
  innerSeriesCallback();
99
99
  });
100
100
  }, function (error) {
@@ -103,9 +103,9 @@ var moveOnePost = function (groupId, postId, categoryId, done) {
103
103
  });
104
104
  }
105
105
  ], function (error) {
106
- console.log("Done");
106
+ log.info("Done");
107
107
  if (error)
108
- console.error(error);
108
+ log.error(error);
109
109
  done(error);
110
110
  });
111
111
  };
@@ -115,7 +115,7 @@ var getPostIdFromUrl = function (url) {
115
115
  };
116
116
  var moveManyFromCsv = function (csvFileName, done) {
117
117
  fs.readFile(csvFileName, 'utf8', function (error, contents) {
118
- console.log(contents);
118
+ log.info(contents);
119
119
  if (!error) {
120
120
  csvParser(contents, {}, function (err, allPosts) {
121
121
  async.forEach(allPosts, function (post, seriesCallback) {
@@ -135,19 +135,19 @@ var moveManyFromCsv = function (csvFileName, done) {
135
135
  if (onePostId != 'null') {
136
136
  moveOnePost(oneGroupId, onePostId, null, function (error) {
137
137
  if (error)
138
- console.error(error);
138
+ log.error(error);
139
139
  process.exit();
140
140
  });
141
141
  }
142
142
  else if (csvFileName) {
143
143
  moveManyFromCsv(csvFileName, function (error) {
144
144
  if (error)
145
- console.error(error);
145
+ log.error(error);
146
146
  process.exit();
147
147
  });
148
148
  }
149
149
  else {
150
- console.error("Invalid start state");
150
+ log.error("Invalid start state");
151
151
  process.exit();
152
152
  }
153
153
  export {};
@@ -26,11 +26,11 @@ for (let i = 0; i < records.length; i++) {
26
26
  }
27
27
  fs.writeFile(outFilePath, outFileContent, function (error) {
28
28
  if (error) {
29
- console.error(error);
29
+ log.error(error);
30
30
  process.exit();
31
31
  }
32
32
  else {
33
- console.log("The file was saved!");
33
+ log.info("The file was saved!");
34
34
  process.exit();
35
35
  }
36
36
  });
@@ -15,22 +15,22 @@ if (process.env.GOOGLE_PERSPECTIVE_API_KEY) {
15
15
  perspectiveApi = new Perspective({ apiKey: process.env.GOOGLE_PERSPECTIVE_API_KEY });
16
16
  }
17
17
  const getToxicityScoreForText = (text, doNotStore, callback) => {
18
- console.log("getToxicityScoreForText starting", { text, doNotStore });
18
+ log.info("getToxicityScoreForText starting", { text, doNotStore });
19
19
  if (text) {
20
20
  perspectiveApi.analyze(text, { doNotStore, attributes: [
21
21
  'TOXICITY', 'SEVERE_TOXICITY', 'IDENTITY_ATTACK',
22
22
  'THREAT', 'INSULT', 'PROFANITY', 'SEXUALLY_EXPLICIT',
23
23
  'FLIRTATION'
24
24
  ] }).then(result => {
25
- console.log("getToxicityScoreForText results");
25
+ log.info("getToxicityScoreForText results");
26
26
  callback(null, result);
27
27
  }).catch(error => {
28
28
  if (error && error.stack && error.stack.indexOf("ResponseError: Attribute") > -1) {
29
- console.warn("getToxicityScoreForText warning", { error });
29
+ log.warn("getToxicityScoreForText warning", { error });
30
30
  callback(error);
31
31
  }
32
32
  else {
33
- console.error("getToxicityScoreForText error", { error });
33
+ log.error("getToxicityScoreForText error", { error });
34
34
  callback(error);
35
35
  }
36
36
  });
@@ -40,9 +40,9 @@ const getToxicityScoreForText = (text, doNotStore, callback) => {
40
40
  }
41
41
  };
42
42
  const clean = (text) => {
43
- //console.log("Before: "+ text);
43
+ //log.info("Before: "+ text);
44
44
  var newText = text.replace('"', "'").replace('\n', '').replace('\r', '').replace(/(\r\n|\n|\r)/gm, "").replace(/"/gm, "'").replace(/,/, ';').trim();
45
- //console.log("After:" + newText);
45
+ //log.info("After:" + newText);
46
46
  return newText.replace(/´/g, '');
47
47
  };
48
48
  const getTranslatedString = (contentToTranslate, callback) => {
@@ -83,7 +83,7 @@ async.forEachSeries(records, (line, eachCallback) => {
83
83
  if (translatedString && translatedString.translatedText) {
84
84
  getToxicityScoreForText(translatedString.translatedText, true, (error, score) => {
85
85
  if (error) {
86
- console.error(error);
86
+ log.error(error);
87
87
  addRow(line, translatedString.translatedText, "error");
88
88
  }
89
89
  else {
@@ -106,17 +106,17 @@ async.forEachSeries(records, (line, eachCallback) => {
106
106
  });
107
107
  }, (error) => {
108
108
  if (error) {
109
- console.error(error);
109
+ log.error(error);
110
110
  process.exit();
111
111
  }
112
112
  else {
113
113
  fs.writeFile(outFile, outFileContent, function (error) {
114
114
  if (error) {
115
- console.error(error);
115
+ log.error(error);
116
116
  process.exit();
117
117
  }
118
118
  else {
119
- console.log("The file was saved!");
119
+ log.info("The file was saved!");
120
120
  process.exit();
121
121
  }
122
122
  });
@@ -44,12 +44,12 @@ const countCommunities = async (communityId, options) => {
44
44
  const group = community.Groups[i];
45
45
  if (group.configuration.actAsLinkToCommunityId) {
46
46
  if (false && processedCommunityIds.indexOf(group.configuration.actAsLinkToCommunityId) > -1) {
47
- console.warn(`DUPLICATE LINK Group Id ${group.id} in Community Id ${group.community_id} to Community Id ${group.configuration.actAsLinkToCommunityId}`);
47
+ log.warn(`DUPLICATE LINK Group Id ${group.id} in Community Id ${group.community_id} to Community Id ${group.configuration.actAsLinkToCommunityId}`);
48
48
  }
49
49
  else {
50
50
  processedCommunityIds.push(group.configuration.actAsLinkToCommunityId);
51
51
  if (processedGroupIds.indexOf(group.id) > -1) {
52
- console.warn(`DUPLICATE GROUP Group Id ${group.id} in Community Id ${group.community_id} to Community Id ${group.configuration.actAsLinkToCommunityId}`);
52
+ log.warn(`DUPLICATE GROUP Group Id ${group.id} in Community Id ${group.community_id} to Community Id ${group.configuration.actAsLinkToCommunityId}`);
53
53
  }
54
54
  else {
55
55
  processedGroupIds.push(group.id);
@@ -64,14 +64,14 @@ const countCommunities = async (communityId, options) => {
64
64
  groupCount += 1;
65
65
  const random = Math.random();
66
66
  if (random < 0.05) {
67
- //console.log(`Groups ${groupCount} Posts ${postCount} Points ${pointCount} Users ${users.length}`)
67
+ //log.info(`Groups ${groupCount} Posts ${postCount} Points ${pointCount} Users ${users.length}`)
68
68
  }
69
69
  }
70
70
  }
71
71
  resolve();
72
72
  }
73
73
  else {
74
- console.error("Cant find community " + communityId);
74
+ log.error("Cant find community " + communityId);
75
75
  resolve();
76
76
  }
77
77
  }).catch(error => {
@@ -94,7 +94,7 @@ const recountCommunityRecursive = async (communityId, options) => {
94
94
  community.counter_points = pointCount;
95
95
  community.counter_groups = groupCount;
96
96
  await community.save();
97
- console.log(`Save community ${users.length} ${postCount} ${pointCount}`);
97
+ log.info(`Save community ${users.length} ${postCount} ${pointCount}`);
98
98
  resolve();
99
99
  }
100
100
  catch (error) {
@@ -113,7 +113,7 @@ const recountCommunityRecursive = async (communityId, options) => {
113
113
  attributes: ['id', 'configuration']
114
114
  });
115
115
  for (let i = 0; i < communities.length; i++) {
116
- console.log("Processing community: " + communities[i].id);
116
+ log.info("Processing community: " + communities[i].id);
117
117
  users = [];
118
118
  postCount = 0;
119
119
  pointCount = 0;
@@ -15,7 +15,7 @@ models.Community.findAll({
15
15
  community.update({
16
16
  counter_groups: count
17
17
  }).then(() => {
18
- console.log(`Updated Community ${community.id} to ${count}`);
18
+ log.info(`Updated Community ${community.id} to ${count}`);
19
19
  forEachCallback();
20
20
  }).catch(error => {
21
21
  forEachCallback(error);
@@ -24,14 +24,14 @@ models.Community.findAll({
24
24
  forEachCallback(error);
25
25
  });
26
26
  }, (error) => {
27
- console.log(error);
27
+ log.info(error);
28
28
  process.exit();
29
29
  });
30
30
  }).catch(error => {
31
31
  if (error)
32
- console.error(error);
32
+ log.error(error);
33
33
  else
34
- console.log(done);
34
+ log.info(done);
35
35
  process.exit();
36
36
  });
37
37
  export {};
@@ -63,7 +63,7 @@ var recountOnePost = function (postId, done) {
63
63
  post.counter_endorsements_up = endorsementsCount;
64
64
  post.counter_endorsements_down = oppositionCount;
65
65
  post.save().then(function (results) {
66
- console.log("Results: " + results);
66
+ log.info("Results: " + results);
67
67
  done();
68
68
  });
69
69
  }).catch(function (error) {
@@ -87,10 +87,10 @@ async.series([
87
87
  }
88
88
  ], function (error) {
89
89
  if (error) {
90
- console.error(error);
90
+ log.error(error);
91
91
  }
92
92
  else {
93
- console.log("Done counting all");
93
+ log.info("Done counting all");
94
94
  }
95
95
  process.exit();
96
96
  });