@yrpri/api 9.0.139 → 9.0.141

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 (322) 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.js +33 -32
  19. package/agents/managers/emailInvitesManager.js +4 -3
  20. package/agents/managers/newAiModelSetup.js +46 -45
  21. package/agents/managers/notificationAgentQueueManager.js +55 -54
  22. package/agents/managers/subscriptionManager.js +24 -23
  23. package/agents/models/agentProduct.js +2 -1
  24. package/agents/models/agentProductBoosterPurchase.js +2 -1
  25. package/agents/models/testData/createEvolyAgentProduct.js +7 -6
  26. package/agents/models/testData/old/updateAgentWorkflowConfiguration.js +5 -4
  27. package/agents/models/testData/updateAgentWorkflowConfiguration.js +5 -4
  28. package/agents/tools/setTemplateWorkflowCommunityId.js +6 -5
  29. package/app.d.ts +2 -1
  30. package/app.js +60 -34
  31. package/authorization.cjs +4 -4
  32. package/controllers/allOurIdeas.js +45 -44
  33. package/controllers/groups.cjs +4 -9
  34. package/controllers/images.cjs +8 -8
  35. package/controllers/index.cjs +1 -1
  36. package/controllers/points.cjs +1 -1
  37. package/controllers/posts.cjs +3 -3
  38. package/deleteUnwantedDeclerations.cjs +6 -5
  39. package/models/community.cjs +1 -1
  40. package/models/domain.cjs +7 -7
  41. package/models/image.cjs +2 -2
  42. package/models/index.cjs +8 -4
  43. package/models/post.cjs +10 -10
  44. package/models/user.cjs +1 -1
  45. package/models/video.cjs +4 -4
  46. package/package.json +5 -5
  47. package/scripts/addRatingUsersToGroup.js +1 -1
  48. package/scripts/addUserToOrganization.js +8 -8
  49. package/scripts/agents/changeModelForWorkflowGroupTemplate.js +13 -12
  50. package/scripts/agents/generateAgentWorkflowTemplateFromAgentClass.js +5 -4
  51. package/scripts/analyseRatingsForCommunity.js +2 -2
  52. package/scripts/analyzeAndFixBrokenPointUsers.js +3 -3
  53. package/scripts/analyzeEndorsementsByCountry.js +7 -7
  54. package/scripts/analyzePostsForCommunity.js +1 -1
  55. package/scripts/bulkStatusUpdates/listUpdates.js +2 -2
  56. package/scripts/bulkStatusUpdates/mergeLatestPostsToUpdate.js +5 -5
  57. package/scripts/bulkStatusUpdates/performUpdate.js +9 -9
  58. package/scripts/bulkStatusUpdates/performUpdateForGroup.cjs +12 -11
  59. package/scripts/bulkStatusUpdates/performUpdateForStatus.js +15 -15
  60. package/scripts/change/changeVideoAspectTo.js +3 -3
  61. package/scripts/change/setUseNewVersion.cjs +5 -4
  62. package/scripts/changeCommunityGroupcount.js +3 -3
  63. package/scripts/changeCommunityPostCount.js +3 -3
  64. package/scripts/changeGroupPostCount.js +3 -3
  65. package/scripts/changeLanguage.js +4 -4
  66. package/scripts/changeOfficalStatus.js +3 -3
  67. package/scripts/cleanups/deleteAnonNotifications.cjs +8 -7
  68. package/scripts/cleanups/deleteLinkGroupsWithDeletedCommunities.js +8 -8
  69. package/scripts/cleanups/deleteYearOldNotifications.cjs +6 -5
  70. package/scripts/cleanups/removeAllUsersFromHiddenPublicGroup.js +5 -5
  71. package/scripts/clearAllEndorsementInGroup.js +5 -5
  72. package/scripts/cloning/clearUsersForCommunitiesFromUrl.js +3 -3
  73. package/scripts/cloning/cloneFromUrlScript.js +4 -4
  74. package/scripts/cloning/cloneWBFromUrlScriptAndCreateLinks.js +6 -6
  75. package/scripts/cloning/cloneWBFromUrlScriptNoUsersOrPoints.js +6 -6
  76. package/scripts/cloning/cloneWBSerbianFromUrlScriptAndCreateLinks.js +6 -6
  77. package/scripts/cloning/copyCommunityConfigAndTranslationsFromURL.js +3 -3
  78. package/scripts/cloning/copyCommunityOneGroupToDomainNoUsersNoEndorsements.js +2 -2
  79. package/scripts/cloning/copyCommunityToDomainNoUsersNoEndorsements.js +2 -2
  80. package/scripts/cloning/copyCommunityToDomainWithEverything.js +2 -2
  81. package/scripts/cloning/copyCommunityToDomainWithOnlyGroups.js +3 -3
  82. package/scripts/cloning/copyGroupConfigAndTranslationsFromURL.js +3 -3
  83. package/scripts/cloning/copyPostToGroupOld.js +12 -12
  84. package/scripts/cloning/copyPostVideosFromURL.js +3 -3
  85. package/scripts/cloning/copyPostWithOutAnyVotingOrActivities.js +2 -2
  86. package/scripts/cloning/deepCloneSerbianWBFromUrlScriptAndCreateLinks.js +7 -7
  87. package/scripts/cloning/deepCloneWBFromUrlScriptAndCreateLinks.js +6 -6
  88. package/scripts/cloning/setAdminsFromURL.js +5 -5
  89. package/scripts/cloning/setExternalIdsFromURL.js +3 -3
  90. package/scripts/countCommunity.js +11 -11
  91. package/scripts/countCommunityUsers.js +4 -4
  92. package/scripts/countDelayedNotifications.js +3 -3
  93. package/scripts/countGroup.js +11 -11
  94. package/scripts/countStuff.js +3 -3
  95. package/scripts/countUniqueVotersInAGroup.js +3 -3
  96. package/scripts/createInvitesAndShow.js +2 -2
  97. package/scripts/database/sync_database.js +2 -2
  98. package/scripts/database/sync_dev_database.js +3 -3
  99. package/scripts/debugNotifications.js +5 -5
  100. package/scripts/deleteAllNewsFeeds.js +2 -2
  101. package/scripts/deleteCategory.js +1 -1
  102. package/scripts/deleteOldAppActivities.js +5 -4
  103. package/scripts/deletePostContactDataForCommunity.js +5 -4
  104. package/scripts/destroy/destroy_all_but_one_domain.js +59 -59
  105. package/scripts/displayAuthorForPost.js +1 -1
  106. package/scripts/domains/createDomain.js +5 -4
  107. package/scripts/domains/importDomainsFromXls.js +7 -6
  108. package/scripts/endorsementFraudDetection/analyseEndorsementsForCommunity.js +2 -2
  109. package/scripts/endorsementFraudDetection/bulkDeleteDuplicateEndorsmentsFromUrl.js +9 -9
  110. package/scripts/exportAllStatusChanges.js +5 -5
  111. package/scripts/exportEndorsementsForCommunity.js +5 -5
  112. package/scripts/exportPointQualitiesForCommunity.js +5 -5
  113. package/scripts/exportPostsAndPointsForCommunity.js +9 -9
  114. package/scripts/exportPostsDataSetForDomain.js +12 -12
  115. package/scripts/exportPostsForGroup.js +7 -7
  116. package/scripts/exportRatingsForPost.js +2 -2
  117. package/scripts/exportUserEndorsementsWithUserAnalysis.js +6 -6
  118. package/scripts/exportUsersForCommunity.js +3 -3
  119. package/scripts/exportUsersForDomain.js +3 -3
  120. package/scripts/exportUsersForGroup.js +3 -3
  121. package/scripts/exports/ratingDistribution.js +6 -6
  122. package/scripts/exports/whoEndorsedWhatByCommunity.js +2 -2
  123. package/scripts/findUnusedClientImports.js +2 -2
  124. package/scripts/fixAllPostPointCounts.js +1 -1
  125. package/scripts/fixAnonNotificationsSettings.js +5 -5
  126. package/scripts/fixCountKopavogur.js +1 -1
  127. package/scripts/fixEndorsementsAfterCopyPostToGroup.js +10 -10
  128. package/scripts/fixExternalUserId.js +2 -2
  129. package/scripts/fixGroupAccess.js +3 -3
  130. package/scripts/fixGroupIdeasAndPointsCount.js +2 -2
  131. package/scripts/fixNotificationSettings.js +4 -4
  132. package/scripts/fixSurveyRadioBakedInSubCodes.js +6 -6
  133. package/scripts/fixWrongUserIdForStatusUpdates.js +6 -5
  134. package/scripts/gallery/exportGalleryData.js +2 -2
  135. package/scripts/gallery/importGalleryForCommunity.js +14 -14
  136. package/scripts/gallery/readJsonAndDownloadImagesVersion2.js +6 -6
  137. package/scripts/gallery/refreshAcApiPostIdsForCommunity.js +5 -5
  138. package/scripts/genderAnalysis.js +10 -10
  139. package/scripts/genderAnalysisByStatus.js +4 -4
  140. package/scripts/importAllLocalesFromLocalFolders.js +7 -7
  141. package/scripts/importDomain.js +131 -131
  142. package/scripts/keys/addOidcToDomain.cjs +10 -9
  143. package/scripts/landUseGame/export3Ddata.js +15 -15
  144. package/scripts/listLanguagesForGroup.js +6 -6
  145. package/scripts/loadTestCreateDummyContentForGroup.js +2 -2
  146. package/scripts/makeRecursiveMapData.js +4 -4
  147. package/scripts/mapping/community_map_csv.js +5 -5
  148. package/scripts/moveCommunityToDomain.js +3 -3
  149. package/scripts/moveGroupToCommunity.js +3 -3
  150. package/scripts/movePostToGroup.js +5 -5
  151. package/scripts/movePostsToGroupsRecountGroupFromUrl.js +6 -6
  152. package/scripts/oldMovePostToGroup.js +9 -9
  153. package/scripts/processCsvForPdfUrls.js +2 -2
  154. package/scripts/processCsvForTranslationAndToxicity.js +10 -10
  155. package/scripts/recount/recount_recursive_communities.js +6 -6
  156. package/scripts/recountALLCommunityGroupCounts.js +4 -4
  157. package/scripts/recountAll.js +3 -3
  158. package/scripts/recountCommunitesFromUrl.js +3 -3
  159. package/scripts/recountCommunity.js +2 -2
  160. package/scripts/recountGroup.js +5 -5
  161. package/scripts/recountGroupNoUserChange.js +5 -5
  162. package/scripts/resetAllEndorsementsForGroup.js +3 -3
  163. package/scripts/resetEnTranslationForGroup.js +5 -5
  164. package/scripts/setAdminOnAll.cjs +15 -14
  165. package/scripts/setDomainAdmin.cjs +7 -6
  166. package/scripts/setDomainLocales.js +2 -2
  167. package/scripts/setEarlQuestionIdOnGroup.cjs +5 -4
  168. package/scripts/setLanguageOnGroupCommunitesFromUrl.js +3 -3
  169. package/scripts/setMemberOfAll.js +14 -14
  170. package/scripts/setNewUserForContentOfCommunity.js +9 -9
  171. package/scripts/setOfficialStatusOnAllPostsForCommunity.js +1 -1
  172. package/scripts/setUserOnAll.js +14 -14
  173. package/scripts/showCategoryForGroup.js +1 -1
  174. package/scripts/showOldActivityTypes.js +3 -3
  175. package/scripts/showPostsMissingCategoryForGroup.js +2 -2
  176. package/scripts/showStatuses.js +4 -4
  177. package/scripts/showUniqueVotersInCommunity.js +4 -4
  178. package/scripts/showUserAgentsAndIpsForEmails.js +4 -4
  179. package/scripts/simpleExportForGroupsForCommunity.js +5 -5
  180. package/scripts/simpleExportForPointsForCommunity.js +5 -5
  181. package/scripts/simpleExportForPostsForCommunity.js +5 -5
  182. package/scripts/testForEndorsments.js +4 -4
  183. package/scripts/undeleteGroupAndAllContent.js +8 -8
  184. package/scripts/undeletePost.js +7 -7
  185. package/scripts/unlinkSsn.js +4 -4
  186. package/scripts/updateFromAlthingi.js +8 -8
  187. package/scripts/users/createUserAddDomain.js +6 -5
  188. package/scripts/users/importUsersForDomainsFromXls.js +4 -3
  189. package/scripts/users/listDomainUsersWithSsn.js +6 -5
  190. package/scripts/users/removeUserFromDomain.js +6 -5
  191. package/scripts/users/updatePasswordFromSsn.js +5 -4
  192. package/scripts/users/updateUserSsnFromEmail.js +5 -4
  193. package/services/controllers/activities.cjs +1 -1
  194. package/services/controllers/news_feeds.cjs +1 -1
  195. package/services/controllers/notifications.cjs +1 -1
  196. package/services/controllers/recommendations.cjs +1 -1
  197. package/services/engine/allOurIdeas/aiHelper.js +10 -9
  198. package/services/engine/analytics/export_anon_community_activities.js +3 -3
  199. package/services/engine/analytics/importer.js +10 -10
  200. package/services/engine/analytics/plausible/manager.cjs +4 -4
  201. package/services/engine/analytics/statsCalc.cjs +1 -1
  202. package/services/engine/analytics/utils.cjs +11 -10
  203. package/services/engine/marketing/campaign.cjs +1 -0
  204. package/services/engine/moderation/fraud/CreateFraudAuditReport.cjs +2 -1
  205. package/services/engine/moderation/fraud/FraudBase.cjs +3 -2
  206. package/services/engine/moderation/fraud/FraudDeleteBase.cjs +5 -4
  207. package/services/engine/moderation/fraud/FraudGetBase.cjs +2 -1
  208. package/services/engine/moderation/fraud/FraudGetEndorsements.cjs +2 -1
  209. package/services/engine/moderation/fraud/FraudGetPointQualities.cjs +2 -1
  210. package/services/engine/moderation/fraud/FraudGetPoints.cjs +2 -1
  211. package/services/engine/moderation/fraud/FraudGetPosts.cjs +2 -1
  212. package/services/engine/moderation/fraud/FraudGetRatings.cjs +2 -1
  213. package/services/engine/moderation/fraud/FraudScannerNotifier.cjs +10 -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/notifications/process_general_notifications.cjs +1 -0
  225. package/services/engine/old/exporters/categories_dataset.js +11 -11
  226. package/services/engine/old/exporters/sentiment_dataset.js +12 -12
  227. package/services/engine/recommendations/events_importer.cjs +5 -5
  228. package/services/engine/recommendations/events_manager.cjs +1 -1
  229. package/services/engine/reports/add_points_to_sheet.cjs +3 -2
  230. package/services/engine/reports/commonUtils.js +3 -2
  231. package/services/engine/reports/common_utils.cjs +8 -8
  232. package/services/engine/reports/docx_group_report.cjs +1 -1
  233. package/services/engine/reports/xlsAllOurIdeasExport.js +16 -15
  234. package/services/engine/reports/xls_community_users_report.cjs +2 -2
  235. package/services/engine/reports/xls_group_report.cjs +1 -1
  236. package/services/llms/baseChatBot.js +12 -11
  237. package/services/llms/imageGeneration/chatGptImageGenerator.js +3 -2
  238. package/services/llms/imageGeneration/collectionImageGenerator.js +7 -6
  239. package/services/llms/imageGeneration/dalleImageGenerator.js +6 -5
  240. package/services/llms/imageGeneration/fluxImageGenerator.js +5 -4
  241. package/services/llms/imageGeneration/imageProcessorService.js +2 -1
  242. package/services/llms/imageGeneration/imagenImageGenerator.js +8 -7
  243. package/services/llms/imageGeneration/s3Service.js +12 -11
  244. package/services/llms/llmTranslation.js +30 -29
  245. package/services/models/ac_activity.cjs +1 -1
  246. package/services/models/ac_notification.cjs +1 -1
  247. package/services/models/ac_translation_cache.cjs +11 -11
  248. package/services/scripts/analytics/setup_all_plausible_goals.cjs +3 -2
  249. package/services/scripts/fix_old_delayed_notifications.js +3 -3
  250. package/services/scripts/kue_status.js +11 -11
  251. package/services/scripts/kue_watch_stuck_jobs.js +6 -6
  252. package/services/scripts/translation_clear_language.js +21 -21
  253. package/services/scripts/translation_delete.js +4 -4
  254. package/services/scripts/translation_replace_text_from_url.js +4 -4
  255. package/services/scripts/translation_update.js +4 -4
  256. package/services/scripts/translations_list.js +5 -5
  257. package/services/utils/airbrake.cjs +2 -1
  258. package/services/utils/redisConnection.cjs +6 -5
  259. package/services/utils/translation_helpers.cjs +3 -2
  260. package/services/utils/updateAllLocalesFromEn.js +20 -19
  261. package/services/utils/updateLocaleFolders.js +7 -6
  262. package/services/workers/activity.cjs +1 -1
  263. package/services/workers/anonymizations.cjs +1 -1
  264. package/services/workers/bulk_status_update.cjs +2 -2
  265. package/services/workers/delayed_jobs.cjs +1 -1
  266. package/services/workers/deletions.cjs +1 -1
  267. package/services/workers/email.cjs +1 -1
  268. package/services/workers/fraud_management.cjs +3 -3
  269. package/services/workers/generativeAi.js +6 -5
  270. package/services/workers/main.cjs +1 -1
  271. package/services/workers/marketing.cjs +1 -1
  272. package/services/workers/moderation.cjs +1 -1
  273. package/services/workers/notification_delivery.cjs +1 -1
  274. package/services/workers/notification_news_feed.cjs +1 -1
  275. package/services/workers/queue.cjs +2 -2
  276. package/services/workers/recount.cjs +1 -1
  277. package/services/workers/reports.cjs +1 -1
  278. package/services/workers/similarities.cjs +4 -2
  279. package/services/workers/speech_to_text.cjs +1 -1
  280. package/utils/airbrake.cjs +2 -1
  281. package/utils/cjsCodeReview.js +7 -6
  282. package/utils/community_mapping_tools.cjs +3 -2
  283. package/utils/copy_utils.cjs +32 -31
  284. package/utils/export_utils.cjs +7 -7
  285. package/utils/generateDocumentation.js +10 -9
  286. package/utils/logger.cjs +2 -23
  287. package/utils/logger.d.cts +1 -1
  288. package/utils/loggerAirbrakeTransport.cjs +52 -0
  289. package/utils/loggerAirbrakeTransport.d.cts +15 -0
  290. package/utils/loggerAirbrakeTransportTs.d.ts +15 -0
  291. package/utils/loggerAirbrakeTransportTs.js +45 -0
  292. package/utils/loggerCore.cjs +29 -0
  293. package/utils/loggerCore.d.cts +2 -0
  294. package/utils/loggerCoreTs.d.ts +2 -0
  295. package/utils/loggerCoreTs.js +23 -0
  296. package/utils/loggerTs.d.ts +1 -2
  297. package/utils/loggerTs.js +2 -25
  298. package/utils/manifest_generator.cjs +1 -0
  299. package/utils/recount_utils.cjs +6 -5
  300. package/utils/seedModels.js +50 -49
  301. package/utils/sitemap_generator.cjs +4 -4
  302. package/utils/ypLanguages.js +2 -2
  303. package/webSockets.js +8 -7
  304. package/services/utils/logger.cjs +0 -25
  305. package/services/utils/logger.d.cts +0 -2
  306. package/src/agents/assistants/assistant.d.ts +0 -156
  307. package/src/controllers/audios.d.ts +0 -5
  308. package/src/controllers/categories.d.ts +0 -5
  309. package/src/controllers/communities.d.ts +0 -5
  310. package/src/controllers/domains.d.ts +0 -5
  311. package/src/controllers/groups.d.ts +0 -5
  312. package/src/controllers/images.d.ts +0 -5
  313. package/src/controllers/points.d.ts +0 -5
  314. package/src/controllers/posts.d.ts +0 -5
  315. package/src/controllers/ratings.d.ts +0 -5
  316. package/src/controllers/users.d.ts +0 -5
  317. package/src/controllers/videos.d.ts +0 -5
  318. package/src/models/index.d.ts +0 -84
  319. package/src/services/controllers/activities.d.ts +0 -5
  320. package/src/services/controllers/notifications.d.ts +0 -5
  321. package/src/utils/copy_utils.d.ts +0 -4
  322. package/src/utils/manifest_generator.d.ts +0 -18
@@ -46,16 +46,16 @@ models.Endorsement.findAll({
46
46
  }
47
47
  ]
48
48
  }).then((endorsements) => {
49
- console.log(`Votes: ${endorsements.length}`);
49
+ log.info(`Votes: ${endorsements.length}`);
50
50
  endorsements.forEach(e => {
51
51
  if (!allUsers[e.User.ssn]) {
52
52
  allUsers[e.User.ssn] = 1;
53
53
  uniqueSsns.push(e.User.ssn);
54
- console.log(`${e.User.ssn} - ${e.User.name}`);
54
+ log.info(`${e.User.ssn} - ${e.User.name}`);
55
55
  }
56
56
  });
57
- console.log(`Voters: ${size(allUsers)}`);
58
- console.log(`Average votes per user: ${parseInt(endorsements.length / size(allUsers))}`);
57
+ log.info(`Voters: ${size(allUsers)}`);
58
+ log.info(`Average votes per user: ${parseInt(endorsements.length / size(allUsers))}`);
59
59
  process.exit();
60
60
  });
61
61
  export {};
@@ -8,7 +8,7 @@ async.eachSeries(emails, (email, eachOfCallback) => {
8
8
  }
9
9
  }).then((user) => {
10
10
  if (user) {
11
- console.log("\n\n\nemail: " + user.email) + "\n";
11
+ log.info("\n\n\nemail: " + user.email) + "\n";
12
12
  let userAgent = null;
13
13
  let ipAddress = null;
14
14
  async.series([
@@ -52,13 +52,13 @@ async.eachSeries(emails, (email, eachOfCallback) => {
52
52
  });
53
53
  },
54
54
  ], (error) => {
55
- console.log(ipAddress);
56
- console.log(userAgent);
55
+ log.info(ipAddress);
56
+ log.info(userAgent);
57
57
  eachOfCallback();
58
58
  });
59
59
  }
60
60
  else {
61
- console.error("NOT FOUND: " + email);
61
+ log.error("NOT FOUND: " + email);
62
62
  eachOfCallback();
63
63
  }
64
64
  });
@@ -5,9 +5,9 @@ var fs = require('fs');
5
5
  var communityId = process.argv[2];
6
6
  var outFile = process.argv[3];
7
7
  var clean = function (text) {
8
- //console.log("Before: "+ text);
8
+ //log.info("Before: "+ text);
9
9
  var newText = text.replace('"', "'").replace('\n', '').replace('\r', '').replace(/(\r\n|\n|\r)/gm, "").replace(/"/gm, "'").replace(',', ';').trim();
10
- //console.log("After:" + newText);
10
+ //log.info("After:" + newText);
11
11
  return newText.replace(/´/g, '');
12
12
  };
13
13
  models.Group.findAll({
@@ -24,7 +24,7 @@ models.Group.findAll({
24
24
  ]
25
25
  }).then(function (groups) {
26
26
  var outFileContent = "";
27
- console.log(groups.length);
27
+ log.info(groups.length);
28
28
  outFileContent += "group id, author id, title, text\n";
29
29
  groupCounter = 0;
30
30
  async.eachSeries(groups, function (group, seriesCallback) {
@@ -36,9 +36,9 @@ models.Group.findAll({
36
36
  }, function (error) {
37
37
  fs.writeFile(outFile, outFileContent, function (err) {
38
38
  if (err) {
39
- console.log(err);
39
+ log.info(err);
40
40
  }
41
- console.log("The file was saved!");
41
+ log.info("The file was saved!");
42
42
  process.exit();
43
43
  });
44
44
  });
@@ -5,10 +5,10 @@ var fs = require('fs');
5
5
  var communityId = process.argv[2];
6
6
  var outFile = process.argv[3];
7
7
  var clean = function (text) {
8
- //console.log("Before: "+ text);
8
+ //log.info("Before: "+ text);
9
9
  if (text) {
10
10
  var newText = text.replace('"', "'").replace('\n', '').replace('\r', '').replace(/(\r\n|\n|\r)/gm, "").replace(/"/gm, "'").replace(',', ';').trim();
11
- //console.log("After:" + newText);
11
+ //log.info("After:" + newText);
12
12
  return newText.replace(/´/g, '');
13
13
  }
14
14
  else {
@@ -51,7 +51,7 @@ models.Point.findAll({
51
51
  ]
52
52
  }).then(function (points) {
53
53
  var outFileContent = "";
54
- console.log(points.length);
54
+ log.info(points.length);
55
55
  outFileContent += "group id,post id,point id,point type,author id,text,helpful votes,unhelpful votes,external user id,state\n";
56
56
  pointCounter = 0;
57
57
  async.eachSeries(points, function (point, seriesCallback) {
@@ -72,9 +72,9 @@ models.Point.findAll({
72
72
  }, function (error) {
73
73
  fs.writeFile(outFile, outFileContent, function (err) {
74
74
  if (err) {
75
- console.log(err);
75
+ log.info(err);
76
76
  }
77
- console.log("The file was saved!");
77
+ log.info("The file was saved!");
78
78
  process.exit();
79
79
  });
80
80
  });
@@ -5,9 +5,9 @@ var fs = require('fs');
5
5
  var communityId = process.argv[2];
6
6
  var outFile = process.argv[3];
7
7
  var clean = function (text) {
8
- //console.log("Before: "+ text);
8
+ //log.info("Before: "+ text);
9
9
  var newText = text.replace('"', "'").replace('\n', '').replace('\r', '').replace(/(\r\n|\n|\r)/gm, "").replace(/"/gm, "'").replace(',', ';').trim();
10
- //console.log("After:" + newText);
10
+ //log.info("After:" + newText);
11
11
  return newText.replace(/´/g, '');
12
12
  };
13
13
  models.Post.findAll({
@@ -30,7 +30,7 @@ models.Post.findAll({
30
30
  ]
31
31
  }).then(function (posts) {
32
32
  var outFileContent = "";
33
- console.log(posts.length);
33
+ log.info(posts.length);
34
34
  outFileContent += "group id,post id,author id,title,text,up votes,down votes,external user id,state\n";
35
35
  postCounter = 0;
36
36
  async.eachSeries(posts, function (post, seriesCallback) {
@@ -51,9 +51,9 @@ models.Post.findAll({
51
51
  }, function (error) {
52
52
  fs.writeFile(outFile, outFileContent, function (err) {
53
53
  if (err) {
54
- console.log(err);
54
+ log.info(err);
55
55
  }
56
- console.log("The file was saved!");
56
+ log.info("The file was saved!");
57
57
  process.exit();
58
58
  });
59
59
  });
@@ -13,9 +13,9 @@ models.User.findOne({
13
13
  }
14
14
  ]
15
15
  }).then(function (user) {
16
- console.log(user.email);
17
- console.log(user.facebook_id);
18
- console.log(_.map(user.Endorsements, function (e) { return e.post_id + " " + e.created_at; }));
19
- console.log(user.Endorsements);
16
+ log.info(user.email);
17
+ log.info(user.facebook_id);
18
+ log.info(_.map(user.Endorsements, function (e) { return e.post_id + " " + e.created_at; }));
19
+ log.info(user.Endorsements);
20
20
  });
21
21
  export {};
@@ -13,7 +13,7 @@ const processPointDependancies = (point, done) => {
13
13
  async.forEachSeries(qualities, (quality, forEachCallback) => {
14
14
  quality.deleted = false;
15
15
  quality.save().then(() => {
16
- console.log(`Done undeleting quality ${point.id}`);
16
+ log.info(`Done undeleting quality ${point.id}`);
17
17
  forEachCallback();
18
18
  }).catch(error => {
19
19
  forEachCallback(error);
@@ -35,7 +35,7 @@ const processPointDependancies = (point, done) => {
35
35
  async.forEachSeries(revisions, (revision, forEachCallback) => {
36
36
  revision.deleted = false;
37
37
  revision.save().then(() => {
38
- console.log(`Done undeleting point revision ${point.id}`);
38
+ log.info(`Done undeleting point revision ${point.id}`);
39
39
  forEachCallback();
40
40
  }).catch(error => {
41
41
  forEachCallback(error);
@@ -63,7 +63,7 @@ const processPostDependancies = (post, done) => {
63
63
  async.forEachSeries(endorsements, (endorsement, forEachCallback) => {
64
64
  endorsement.deleted = false;
65
65
  endorsement.save().then(() => {
66
- console.log(`Done undeleting endorsement model ${post.id}`);
66
+ log.info(`Done undeleting endorsement model ${post.id}`);
67
67
  forEachCallback();
68
68
  }).catch(error => {
69
69
  forEachCallback(error);
@@ -85,7 +85,7 @@ const processPostDependancies = (post, done) => {
85
85
  async.forEachSeries(points, (point, forEachCallback) => {
86
86
  point.deleted = false;
87
87
  point.save().then(() => {
88
- console.log(`Done undeleting point model ${point.id}`);
88
+ log.info(`Done undeleting point model ${point.id}`);
89
89
  processPointDependancies(point, forEachCallback);
90
90
  }).catch(error => {
91
91
  forEachCallback(error);
@@ -111,7 +111,7 @@ async.series([
111
111
  }).then(group => {
112
112
  group.deleted = false;
113
113
  group.save().then(() => {
114
- console.log(`Done undeleting group model ${group.id}`);
114
+ log.info(`Done undeleting group model ${group.id}`);
115
115
  seriesCallback();
116
116
  });
117
117
  }).catch(error => {
@@ -128,7 +128,7 @@ async.series([
128
128
  async.forEachSeries(posts, (post, forEachCallback) => {
129
129
  post.deleted = false;
130
130
  post.save().then(() => {
131
- console.log(`Done undeleting post model ${post.id}`);
131
+ log.info(`Done undeleting post model ${post.id}`);
132
132
  processPostDependancies(post, forEachCallback);
133
133
  }).catch(error => {
134
134
  forEachCallback(error);
@@ -142,9 +142,9 @@ async.series([
142
142
  }
143
143
  ], error => {
144
144
  if (error)
145
- console.error(`Error undeleting group ${groupId} - ${error}`);
145
+ log.error(`Error undeleting group ${groupId} - ${error}`);
146
146
  else
147
- console.log(`Done undeleting group ${groupId}`);
147
+ log.info(`Done undeleting group ${groupId}`);
148
148
  process.exit();
149
149
  });
150
150
  export {};
@@ -13,7 +13,7 @@ const processPointDependancies = (point, done) => {
13
13
  async.forEachSeries(qualities, (quality, forEachCallback) => {
14
14
  quality.deleted = false;
15
15
  quality.save().then(() => {
16
- console.log(`Done undeleting quality ${point.id}`);
16
+ log.info(`Done undeleting quality ${point.id}`);
17
17
  forEachCallback();
18
18
  }).catch(error => {
19
19
  forEachCallback(error);
@@ -35,7 +35,7 @@ const processPointDependancies = (point, done) => {
35
35
  async.forEachSeries(revisions, (revision, forEachCallback) => {
36
36
  revision.deleted = false;
37
37
  revision.save().then(() => {
38
- console.log(`Done undeleting point revision ${point.id}`);
38
+ log.info(`Done undeleting point revision ${point.id}`);
39
39
  forEachCallback();
40
40
  }).catch(error => {
41
41
  forEachCallback(error);
@@ -63,7 +63,7 @@ const processPostDependancies = (post, done) => {
63
63
  async.forEachSeries(endorsements, (endorsement, forEachCallback) => {
64
64
  endorsement.deleted = false;
65
65
  endorsement.save().then(() => {
66
- console.log(`Done undeleting endorsement model ${post.id}`);
66
+ log.info(`Done undeleting endorsement model ${post.id}`);
67
67
  forEachCallback();
68
68
  }).catch(error => {
69
69
  forEachCallback(error);
@@ -85,7 +85,7 @@ const processPostDependancies = (post, done) => {
85
85
  async.forEachSeries(points, (point, forEachCallback) => {
86
86
  point.deleted = false;
87
87
  point.save().then(() => {
88
- console.log(`Done undeleting point model ${point.id}`);
88
+ log.info(`Done undeleting point model ${point.id}`);
89
89
  processPointDependancies(point, forEachCallback);
90
90
  }).catch(error => {
91
91
  forEachCallback(error);
@@ -112,7 +112,7 @@ async.series([
112
112
  async.forEachSeries(posts, (post, forEachCallback) => {
113
113
  post.deleted = false;
114
114
  post.save().then(() => {
115
- console.log(`Done undeleting post model ${post.id}`);
115
+ log.info(`Done undeleting post model ${post.id}`);
116
116
  processPostDependancies(post, forEachCallback);
117
117
  }).catch(error => {
118
118
  forEachCallback(error);
@@ -126,9 +126,9 @@ async.series([
126
126
  }
127
127
  ], error => {
128
128
  if (error)
129
- console.error(`Error undeleting post ${postId} - ${error}`);
129
+ log.error(`Error undeleting post ${postId} - ${error}`);
130
130
  else
131
- console.log(`Done undeleting post ${postId}`);
131
+ log.info(`Done undeleting post ${postId}`);
132
132
  process.exit();
133
133
  });
134
134
  export {};
@@ -1,22 +1,22 @@
1
1
  var models = require('../models/index.cjs');
2
2
  var async = require('async');
3
3
  var ssn = process.argv[2];
4
- console.log("Unlinking " + ssn + " from user");
4
+ log.info("Unlinking " + ssn + " from user");
5
5
  models.User.findOne({
6
6
  where: {
7
7
  ssn: ssn
8
8
  }
9
9
  }).then(function (user) {
10
10
  if (user) {
11
- console.log("Unlinking " + ssn + " from " + user.email);
11
+ log.info("Unlinking " + ssn + " from " + user.email);
12
12
  user.ssn = null;
13
13
  user.save().then(function () {
14
- console.log("Completed unlinking " + ssn + " from " + user.email);
14
+ log.info("Completed unlinking " + ssn + " from " + user.email);
15
15
  process.exit();
16
16
  });
17
17
  }
18
18
  else {
19
- console.log("Not found");
19
+ log.info("Not found");
20
20
  process.exit();
21
21
  }
22
22
  });
@@ -178,14 +178,14 @@ var saveIssueIfNeeded = function (dbIssue, userId, callback) {
178
178
  addPost(dbIssue, userId, defaultImageId, domain, callback);
179
179
  }
180
180
  else {
181
- console.error("Cant find group id: " + dbIssue.groupId);
181
+ log.error("Cant find group id: " + dbIssue.groupId);
182
182
  callback('Cant find group');
183
183
  }
184
184
  });
185
185
  });
186
186
  }
187
187
  else {
188
- console.log("Already saved issue id: " + dbIssue.issueId);
188
+ log.info("Already saved issue id: " + dbIssue.issueId);
189
189
  if (post.public_data.law_issue.issueStatus != dbIssue.issueStatus) {
190
190
  post.set('public_data.law_issue.issueStatus', dbIssue.issueStatus);
191
191
  setPostOfficialStatus(post, dbIssue);
@@ -233,7 +233,7 @@ groupsConfigString.split(":").forEach(function (pair) {
233
233
  });
234
234
  getIssueList(function (error, issueList) {
235
235
  if (error) {
236
- console.error(error);
236
+ log.error(error);
237
237
  process.exit();
238
238
  }
239
239
  else {
@@ -243,7 +243,7 @@ getIssueList(function (error, issueList) {
243
243
  var dbIssue = { dataType: 'lawIssue', sessionId: SESSION_ID, issueId: issue.$['málsnúmer'], name: capitalize(issue['málsheiti'][0]),
244
244
  externalHtmlLink: issue['html'][0], xmlLink: issue['xml'][0], issueType: issue['málstegund'][0]['heiti'][0] };
245
245
  if (error) {
246
- console.error(error);
246
+ log.error(error);
247
247
  callback(error);
248
248
  }
249
249
  else {
@@ -275,7 +275,7 @@ getIssueList(function (error, issueList) {
275
275
  ". Málið á Alþingi: " + dbIssue.externalHtmlLink;
276
276
  dbIssue = _.merge(dbIssue, { groupId: topCategoryIdToGroup[dbIssue.topCategoryId], description: description });
277
277
  if (capitalize(dbIssue.issueType).indexOf("Fyrirspurn") > -1 || capitalize(dbIssue.issueType).indexOf("Beiðni um skýrslu") > -1) {
278
- console.log("Not doing questions or reports for now for " + dbIssue.issueId);
278
+ log.info("Not doing questions or reports for now for " + dbIssue.issueId);
279
279
  callback();
280
280
  }
281
281
  else {
@@ -283,19 +283,19 @@ getIssueList(function (error, issueList) {
283
283
  }
284
284
  }
285
285
  else {
286
- console.error("No topCategory");
286
+ log.error("No topCategory");
287
287
  callback();
288
288
  }
289
289
  }
290
290
  else {
291
- console.error("No thingmal field");
291
+ log.error("No thingmal field");
292
292
  callback();
293
293
  }
294
294
  }
295
295
  });
296
296
  }, function (error) {
297
297
  if (error)
298
- console.error(error);
298
+ log.error(error);
299
299
  process.exit();
300
300
  });
301
301
  }
@@ -1,21 +1,22 @@
1
1
  import bcrypt from 'bcrypt';
2
2
  import models from '../../models/index.cjs';
3
+ import log from "../../utils/loggerTs.js";
3
4
  (async () => {
4
5
  try {
5
6
  const [domainIdArg, email, name, password, ssn] = process.argv.slice(2);
6
7
  if (!domainIdArg || !email || !name || !password) {
7
- console.log('Usage: node createUserAddDomain.js <domainId> <email> <name> <password> [ssn]');
8
+ log.info('Usage: node createUserAddDomain.js <domainId> <email> <name> <password> [ssn]');
8
9
  process.exit(1);
9
10
  }
10
11
  const domainId = Number(domainIdArg);
11
12
  const domain = await models.Domain.findOne({ where: { id: domainId } });
12
13
  if (!domain) {
13
- console.error(`Domain ${domainId} not found`);
14
+ log.error(`Domain ${domainId} not found`);
14
15
  process.exit(1);
15
16
  }
16
17
  const existing = await models.User.findOne({ where: { email } });
17
18
  if (existing) {
18
- console.error(`User with email ${email} already exists`);
19
+ log.error(`User with email ${email} already exists`);
19
20
  process.exit(1);
20
21
  }
21
22
  const hashed = await bcrypt.hash(password, 10);
@@ -27,11 +28,11 @@ import models from '../../models/index.cjs';
27
28
  encrypted_password: hashed,
28
29
  });
29
30
  await domain.addDomainUsers(user);
30
- console.log(`User ${email} created and added to domain ${domain.name}`);
31
+ log.info(`User ${email} created and added to domain ${domain.name}`);
31
32
  process.exit(0);
32
33
  }
33
34
  catch (err) {
34
- console.error(err);
35
+ log.error(err);
35
36
  process.exit(1);
36
37
  }
37
38
  })();
@@ -1,10 +1,11 @@
1
1
  import ExcelJS from 'exceljs';
2
2
  import models from '../../models/index.cjs';
3
+ import log from "../../utils/loggerTs.js";
3
4
  (async () => {
4
5
  try {
5
6
  const [filePath] = process.argv.slice(2);
6
7
  if (!filePath) {
7
- console.log('Usage: node importUsersForDomainsFromXls.js <xlsFilePath>');
8
+ log.info('Usage: node importUsersForDomainsFromXls.js <xlsFilePath>');
8
9
  process.exit(1);
9
10
  }
10
11
  const workbook = new ExcelJS.Workbook();
@@ -62,7 +63,7 @@ import models from '../../models/index.cjs';
62
63
  await domain.addDomainUsers(user, { transaction });
63
64
  }
64
65
  await transaction.commit();
65
- console.log('Import completed');
66
+ log.info('Import completed');
66
67
  process.exit(0);
67
68
  }
68
69
  catch (error) {
@@ -71,7 +72,7 @@ import models from '../../models/index.cjs';
71
72
  }
72
73
  }
73
74
  catch (err) {
74
- console.error(err);
75
+ log.error(err);
75
76
  process.exit(1);
76
77
  }
77
78
  })();
@@ -1,9 +1,10 @@
1
1
  import models from '../../models/index.cjs';
2
+ import log from "../../utils/loggerTs.js";
2
3
  (async () => {
3
4
  try {
4
5
  const [domainIdArg] = process.argv.slice(2);
5
6
  if (!domainIdArg) {
6
- console.log('Usage: node listDomainUsersWithSsn.js <domainId>');
7
+ log.info('Usage: node listDomainUsersWithSsn.js <domainId>');
7
8
  process.exit(1);
8
9
  }
9
10
  const domainId = Number(domainIdArg);
@@ -12,19 +13,19 @@ import models from '../../models/index.cjs';
12
13
  include: [{ model: models.User, as: 'DomainUsers' }],
13
14
  });
14
15
  if (!domain) {
15
- console.error(`Domain ${domainId} not found`);
16
+ log.error(`Domain ${domainId} not found`);
16
17
  process.exit(1);
17
18
  }
18
- console.log('email,name,ssn');
19
+ log.info('email,name,ssn');
19
20
  for (const user of domain.DomainUsers) {
20
21
  if (user.ssn) {
21
- console.log(`${user.email},${user.name},${user.ssn}`);
22
+ log.info(`${user.email},${user.name},${user.ssn}`);
22
23
  }
23
24
  }
24
25
  process.exit(0);
25
26
  }
26
27
  catch (err) {
27
- console.error(err);
28
+ log.error(err);
28
29
  process.exit(1);
29
30
  }
30
31
  })();
@@ -1,28 +1,29 @@
1
1
  import models from '../../models/index.cjs';
2
+ import log from "../../utils/loggerTs.js";
2
3
  (async () => {
3
4
  try {
4
5
  const [domainIdArg, email] = process.argv.slice(2);
5
6
  if (!domainIdArg || !email) {
6
- console.log('Usage: node removeUserFromDomain.js <domainId> <email>');
7
+ log.info('Usage: node removeUserFromDomain.js <domainId> <email>');
7
8
  process.exit(1);
8
9
  }
9
10
  const domainId = Number(domainIdArg);
10
11
  const domain = await models.Domain.findOne({ where: { id: domainId } });
11
12
  if (!domain) {
12
- console.error(`Domain ${domainId} not found`);
13
+ log.error(`Domain ${domainId} not found`);
13
14
  process.exit(1);
14
15
  }
15
16
  const user = await models.User.findOne({ where: { email } });
16
17
  if (!user) {
17
- console.error(`User ${email} not found`);
18
+ log.error(`User ${email} not found`);
18
19
  process.exit(1);
19
20
  }
20
21
  await domain.removeDomainUsers(user);
21
- console.log(`Removed ${email} from domain ${domain.name}`);
22
+ log.info(`Removed ${email} from domain ${domain.name}`);
22
23
  process.exit(0);
23
24
  }
24
25
  catch (err) {
25
- console.error(err);
26
+ log.error(err);
26
27
  process.exit(1);
27
28
  }
28
29
  })();
@@ -1,25 +1,26 @@
1
1
  import bcrypt from 'bcrypt';
2
2
  import models from '../../models/index.cjs';
3
+ import log from "../../utils/loggerTs.js";
3
4
  (async () => {
4
5
  try {
5
6
  const [ssnArg, password] = process.argv.slice(2);
6
7
  if (!ssnArg || !password) {
7
- console.log('Usage: node updatePasswordFromSsn.js <ssn> <newPassword>');
8
+ log.info('Usage: node updatePasswordFromSsn.js <ssn> <newPassword>');
8
9
  process.exit(1);
9
10
  }
10
11
  const ssn = ssnArg;
11
12
  const user = await models.User.findOne({ where: { ssn } });
12
13
  if (!user) {
13
- console.error(`User with ssn ${ssn} not found`);
14
+ log.error(`User with ssn ${ssn} not found`);
14
15
  process.exit(1);
15
16
  }
16
17
  user.encrypted_password = await bcrypt.hash(password, 10);
17
18
  await user.save();
18
- console.log(`Updated password for ${user.email}`);
19
+ log.info(`Updated password for ${user.email}`);
19
20
  process.exit(0);
20
21
  }
21
22
  catch (err) {
22
- console.error(err);
23
+ log.error(err);
23
24
  process.exit(1);
24
25
  }
25
26
  })();
@@ -1,24 +1,25 @@
1
1
  import models from '../../models/index.cjs';
2
+ import log from "../../utils/loggerTs.js";
2
3
  (async () => {
3
4
  try {
4
5
  const [email, ssnArg] = process.argv.slice(2);
5
6
  if (!email || !ssnArg) {
6
- console.log('Usage: node updateUserSsnFromEmail.js <email> <ssn>');
7
+ log.info('Usage: node updateUserSsnFromEmail.js <email> <ssn>');
7
8
  process.exit(1);
8
9
  }
9
10
  const user = await models.User.findOne({ where: { email } });
10
11
  if (!user) {
11
- console.error(`User ${email} not found`);
12
+ log.error(`User ${email} not found`);
12
13
  process.exit(1);
13
14
  }
14
15
  const ssn = ssnArg;
15
16
  user.ssn = ssn;
16
17
  await user.save();
17
- console.log(`Updated SSN for ${email}`);
18
+ log.info(`Updated SSN for ${email}`);
18
19
  process.exit(0);
19
20
  }
20
21
  catch (err) {
21
- console.error(err);
22
+ log.error(err);
22
23
  process.exit(1);
23
24
  }
24
25
  })();
@@ -3,7 +3,7 @@ var express = require('express');
3
3
  var router = express.Router();
4
4
  var models = require("../../models/index.cjs");
5
5
  var auth = require('../../authorization.cjs');
6
- var log = require('../utils/logger.cjs');
6
+ var log = require('../../utils/logger.cjs');
7
7
  var async = require('async');
8
8
  var _ = require('lodash');
9
9
  var getCommonWhereOptions = require('../engine/news_feeds/news_feeds_utils.cjs').getCommonWhereOptions;
@@ -2,7 +2,7 @@
2
2
  var express = require('express');
3
3
  var router = express.Router();
4
4
  var auth = require('../../authorization.cjs');
5
- var log = require('../utils/logger.cjs');
5
+ var log = require('../../utils/logger.cjs');
6
6
  var _ = require('lodash');
7
7
  var getCuratedNewsItems = require('../engine/news_feeds/generate_dynamically.cjs').getCuratedNewsItems;
8
8
  var setupOptions = function (req) {
@@ -3,7 +3,7 @@ var express = require('express');
3
3
  var router = express.Router();
4
4
  var models = require("../../models/index.cjs");
5
5
  var auth = require('../../authorization.cjs');
6
- var log = require('../utils/logger.cjs');
6
+ var log = require('../../utils/logger.cjs');
7
7
  var _ = require('lodash');
8
8
  var async = require('async');
9
9
  var getCommonWhereDateOptions = require('../engine/news_feeds/news_feeds_utils.cjs').getCommonWhereDateOptions;
@@ -3,7 +3,7 @@ var express = require('express');
3
3
  var router = express.Router();
4
4
  var models = require("../../models/index.cjs");
5
5
  var auth = require('../../authorization.cjs');
6
- var log = require('../utils/logger.cjs');
6
+ var log = require('../../utils/logger.cjs');
7
7
  var _ = require('lodash');
8
8
  var moment = require('moment');
9
9
  var getRecommendationFor = require('../engine/recommendations/events_manager.cjs').getRecommendationFor;