@social-mail/social-mail-web-server 1.7.772 → 1.8.2
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.
- package/dist/WebServer.d.ts.map +1 -1
- package/dist/WebServer.js +15 -2
- package/dist/WebServer.js.map +1 -1
- package/dist/common/AsyncTaskManager.d.ts +8 -1
- package/dist/common/AsyncTaskManager.d.ts.map +1 -1
- package/dist/common/AsyncTaskManager.js +28 -2
- package/dist/common/AsyncTaskManager.js.map +1 -1
- package/dist/common/globalEnv.d.ts +12 -0
- package/dist/common/globalEnv.d.ts.map +1 -1
- package/dist/common/globalEnv.js +28 -15
- package/dist/common/globalEnv.js.map +1 -1
- package/dist/reports/model/ReportDbContext.d.ts +19 -0
- package/dist/reports/model/ReportDbContext.d.ts.map +1 -0
- package/dist/reports/model/ReportDbContext.js +47 -0
- package/dist/reports/model/ReportDbContext.js.map +1 -0
- package/dist/reports/model/ReportDbContextEvents.d.ts +5 -0
- package/dist/reports/model/ReportDbContextEvents.d.ts.map +1 -0
- package/dist/reports/model/ReportDbContextEvents.js +19 -0
- package/dist/reports/model/ReportDbContextEvents.js.map +1 -0
- package/dist/reports/model/entities/ReportSite.d.ts +9 -0
- package/dist/reports/model/entities/ReportSite.d.ts.map +1 -0
- package/dist/reports/model/entities/ReportSite.js +32 -0
- package/dist/reports/model/entities/ReportSite.js.map +1 -0
- package/dist/reports/model/entities/Visit.d.ts +12 -0
- package/dist/reports/model/entities/Visit.d.ts.map +1 -0
- package/dist/reports/model/entities/Visit.js +42 -0
- package/dist/reports/model/entities/Visit.js.map +1 -0
- package/dist/reports/model/entities/VisitActivity.d.ts +16 -0
- package/dist/reports/model/entities/VisitActivity.d.ts.map +1 -0
- package/dist/reports/model/entities/VisitActivity.js +66 -0
- package/dist/reports/model/entities/VisitActivity.js.map +1 -0
- package/dist/reports/model/entities/VisitSegment.d.ts +18 -0
- package/dist/reports/model/entities/VisitSegment.d.ts.map +1 -0
- package/dist/reports/model/entities/VisitSegment.js +59 -0
- package/dist/reports/model/entities/VisitSegment.js.map +1 -0
- package/dist/reports/model/entities/Visitor.d.ts +29 -0
- package/dist/reports/model/entities/Visitor.d.ts.map +1 -0
- package/dist/reports/model/entities/Visitor.js +110 -0
- package/dist/reports/model/entities/Visitor.js.map +1 -0
- package/dist/reports/model/events/ReportSiteEvents.d.ts +5 -0
- package/dist/reports/model/events/ReportSiteEvents.d.ts.map +1 -0
- package/dist/reports/model/events/ReportSiteEvents.js +4 -0
- package/dist/reports/model/events/ReportSiteEvents.js.map +1 -0
- package/dist/reports/model/events/VisitActivityEvents.d.ts +5 -0
- package/dist/reports/model/events/VisitActivityEvents.d.ts.map +1 -0
- package/dist/reports/model/events/VisitActivityEvents.js +4 -0
- package/dist/reports/model/events/VisitActivityEvents.js.map +1 -0
- package/dist/reports/model/events/VisitEvents.d.ts +5 -0
- package/dist/reports/model/events/VisitEvents.d.ts.map +1 -0
- package/dist/reports/model/events/VisitEvents.js +4 -0
- package/dist/reports/model/events/VisitEvents.js.map +1 -0
- package/dist/reports/model/events/VisitorEvents.d.ts +5 -0
- package/dist/reports/model/events/VisitorEvents.d.ts.map +1 -0
- package/dist/reports/model/events/VisitorEvents.js +4 -0
- package/dist/reports/model/events/VisitorEvents.js.map +1 -0
- package/dist/reports/services/ReportingCache.d.ts +11 -0
- package/dist/reports/services/ReportingCache.d.ts.map +1 -0
- package/dist/reports/services/ReportingCache.js +61 -0
- package/dist/reports/services/ReportingCache.js.map +1 -0
- package/dist/reports/workflows/ReportWorkflowContext.d.ts +6 -0
- package/dist/reports/workflows/ReportWorkflowContext.d.ts.map +1 -0
- package/dist/reports/workflows/ReportWorkflowContext.js +16 -0
- package/dist/reports/workflows/ReportWorkflowContext.js.map +1 -0
- package/dist/reports/workflows/activities/AddActivityWorkflow.d.ts +22 -0
- package/dist/reports/workflows/activities/AddActivityWorkflow.d.ts.map +1 -0
- package/dist/reports/workflows/activities/AddActivityWorkflow.js +113 -0
- package/dist/reports/workflows/activities/AddActivityWorkflow.js.map +1 -0
- package/dist/reports/workflows/visit-added/TrackActivityWorkflow.d.ts +18 -0
- package/dist/reports/workflows/visit-added/TrackActivityWorkflow.d.ts.map +1 -0
- package/dist/reports/workflows/visit-added/TrackActivityWorkflow.js +123 -0
- package/dist/reports/workflows/visit-added/TrackActivityWorkflow.js.map +1 -0
- package/dist/reports/workflows/visitor-added/VisitorAddedWorkflow.d.ts +10 -0
- package/dist/reports/workflows/visitor-added/VisitorAddedWorkflow.d.ts.map +1 -0
- package/dist/reports/workflows/visitor-added/VisitorAddedWorkflow.js +62 -0
- package/dist/reports/workflows/visitor-added/VisitorAddedWorkflow.js.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/index.d.ts +6 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/index.d.ts.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/index.js +21 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/index.js.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.d.ts +6 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.d.ts.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.js +21 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.js.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/model.ts/index.d.ts +6 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/model.ts/index.d.ts.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/model.ts/index.js +21 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/model.ts/index.js.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/query/[entity]/index.d.ts +6 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/query/[entity]/index.d.ts.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/query/[entity]/index.js +21 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/query/[entity]/index.js.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/run/[entity]/[methodName]/index.d.ts +6 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/run/[entity]/[methodName]/index.d.ts.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/run/[entity]/[methodName]/index.js +21 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/entity/run/[entity]/[methodName]/index.js.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/track/[event]/get.d.ts +15 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/track/[event]/get.d.ts.map +1 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/track/[event]/get.js +108 -0
- package/dist/reports/wwwroot/routes/social-mail/reports/api/track/[event]/get.js.map +1 -0
- package/dist/server/model/events/AppFileEvents.d.ts +2 -2
- package/dist/server/model/events/AppFileEvents.d.ts.map +1 -1
- package/dist/server/model/events/AppFileEvents.js +2 -2
- package/dist/server/model/events/AppFileEvents.js.map +1 -1
- package/dist/server/model/events/DomainKeyEvents.js +2 -2
- package/dist/server/model/events/DomainKeyEvents.js.map +1 -1
- package/dist/server/model/events/HostedDomainEvents.d.ts.map +1 -1
- package/dist/server/model/events/HostedDomainEvents.js +2 -2
- package/dist/server/model/events/HostedDomainEvents.js.map +1 -1
- package/dist/server/model/events/HostedZoneEvents.d.ts.map +1 -1
- package/dist/server/model/events/HostedZoneEvents.js +5 -5
- package/dist/server/model/events/HostedZoneEvents.js.map +1 -1
- package/dist/server/model/events/LoginSessionEvents.js +1 -1
- package/dist/server/model/events/LoginSessionEvents.js.map +1 -1
- package/dist/server/model/events/MailboxContactEvents.d.ts.map +1 -1
- package/dist/server/model/events/MailboxContactEvents.js +2 -2
- package/dist/server/model/events/MailboxContactEvents.js.map +1 -1
- package/dist/server/model/events/MailboxEvents.d.ts +2 -2
- package/dist/server/model/events/MailboxEvents.d.ts.map +1 -1
- package/dist/server/model/events/MailboxEvents.js +2 -2
- package/dist/server/model/events/MailboxEvents.js.map +1 -1
- package/dist/server/model/events/MailboxSyncTargetEvents.d.ts.map +1 -1
- package/dist/server/model/events/MailboxSyncTargetEvents.js +2 -2
- package/dist/server/model/events/MailboxSyncTargetEvents.js.map +1 -1
- package/dist/server/model/events/UserEvents.d.ts.map +1 -1
- package/dist/server/model/events/UserEvents.js +3 -3
- package/dist/server/model/events/UserEvents.js.map +1 -1
- package/dist/server/model/events/WebSiteEvents.d.ts +2 -2
- package/dist/server/model/events/WebSiteEvents.d.ts.map +1 -1
- package/dist/server/model/events/WebSiteEvents.js +2 -2
- package/dist/server/model/events/WebSiteEvents.js.map +1 -1
- package/dist/server/model/events/WebSiteHostEvents.d.ts.map +1 -1
- package/dist/server/model/events/WebSiteHostEvents.js +2 -2
- package/dist/server/model/events/WebSiteHostEvents.js.map +1 -1
- package/dist/server/model/events/WebSiteVersionEvents.d.ts.map +1 -1
- package/dist/server/model/events/WebSiteVersionEvents.js +2 -2
- package/dist/server/model/events/WebSiteVersionEvents.js.map +1 -1
- package/dist/server/seed/seed.d.ts.map +1 -1
- package/dist/server/seed/seed.js +5 -0
- package/dist/server/seed/seed.js.map +1 -1
- package/dist/server/seed/ui/seed-ui.js +2 -2
- package/dist/server/services/EmailAddressService.js +3 -3
- package/dist/server/services/EmailAddressService.js.map +1 -1
- package/dist/server/services/StoreFileService.d.ts +2 -2
- package/dist/server/services/StoreFileService.d.ts.map +1 -1
- package/dist/server/services/StoreFileService.js +2 -2
- package/dist/server/services/StoreFileService.js.map +1 -1
- package/dist/server/services/app-temp-file/AppTempFileService.d.ts +2 -0
- package/dist/server/services/app-temp-file/AppTempFileService.d.ts.map +1 -1
- package/dist/server/services/app-temp-file/AppTempFileService.js +8 -1
- package/dist/server/services/app-temp-file/AppTempFileService.js.map +1 -1
- package/dist/server/services/emails/MailService.d.ts +2 -2
- package/dist/server/services/emails/MailService.d.ts.map +1 -1
- package/dist/server/services/emails/MailService.js +2 -2
- package/dist/server/services/emails/MailService.js.map +1 -1
- package/dist/server/services/emails/UnreadCountService.d.ts +2 -2
- package/dist/server/services/emails/UnreadCountService.d.ts.map +1 -1
- package/dist/server/services/emails/UnreadCountService.js +2 -2
- package/dist/server/services/emails/UnreadCountService.js.map +1 -1
- package/dist/server/services/files/WebSiteVersionService.js +1 -1
- package/dist/server/services/files/WebSiteVersionService.js.map +1 -1
- package/dist/server/services/store/StorePaymentGatewayService.d.ts +2 -2
- package/dist/server/services/store/StorePaymentGatewayService.d.ts.map +1 -1
- package/dist/server/services/store/StorePaymentGatewayService.js +2 -2
- package/dist/server/services/store/StorePaymentGatewayService.js.map +1 -1
- package/dist/server/services/user/otp-to-user/OtpToUserService.d.ts.map +1 -1
- package/dist/server/services/user/otp-to-user/OtpToUserService.js +0 -2
- package/dist/server/services/user/otp-to-user/OtpToUserService.js.map +1 -1
- package/dist/server/services/user/otp-to-user/test/index.d.ts +23 -0
- package/dist/server/services/user/otp-to-user/test/index.d.ts.map +1 -0
- package/dist/server/services/user/otp-to-user/test/index.js +16 -0
- package/dist/server/services/user/otp-to-user/test/index.js.map +1 -0
- package/dist/server/smtp/services/ChannelService.d.ts.map +1 -1
- package/dist/server/smtp/services/ChannelService.js +2 -2
- package/dist/server/smtp/services/ChannelService.js.map +1 -1
- package/dist/server/smtp/services/EmailPostReceiveService.d.ts +2 -2
- package/dist/server/smtp/services/EmailPostReceiveService.d.ts.map +1 -1
- package/dist/server/smtp/services/EmailPostReceiveService.js +2 -2
- package/dist/server/smtp/services/EmailPostReceiveService.js.map +1 -1
- package/dist/server/smtp/services/EmailReferenceService.d.ts.map +1 -1
- package/dist/server/smtp/services/EmailReferenceService.js +2 -2
- package/dist/server/smtp/services/EmailReferenceService.js.map +1 -1
- package/dist/server/smtp/services/EmailSerializerService.d.ts.map +1 -1
- package/dist/server/smtp/services/EmailSerializerService.js +2 -2
- package/dist/server/smtp/services/EmailSerializerService.js.map +1 -1
- package/dist/server/workflows/AppWorkflowContext.d.ts +4 -0
- package/dist/server/workflows/AppWorkflowContext.d.ts.map +1 -0
- package/dist/server/workflows/AppWorkflowContext.js +4 -0
- package/dist/server/workflows/AppWorkflowContext.js.map +1 -0
- package/dist/server/workflows/SocialWorkflowContext.d.ts +3 -2
- package/dist/server/workflows/SocialWorkflowContext.d.ts.map +1 -1
- package/dist/server/workflows/SocialWorkflowContext.js +2 -2
- package/dist/server/workflows/SocialWorkflowContext.js.map +1 -1
- package/dist/server/workflows/channel/BroadcastEmail.d.ts +2 -2
- package/dist/server/workflows/channel/BroadcastEmail.d.ts.map +1 -1
- package/dist/server/workflows/channel/BroadcastEmail.js.map +1 -1
- package/dist/server/workflows/channel/library/SendLibraryContentWorkflow.d.ts +2 -2
- package/dist/server/workflows/channel/library/SendLibraryContentWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/channel/library/SendLibraryContentWorkflow.js.map +1 -1
- package/dist/server/workflows/channel/moderation/UpdatePendingModerationCountWorkflow.js +2 -2
- package/dist/server/workflows/channel/moderation/UpdatePendingModerationCountWorkflow.js.map +1 -1
- package/dist/server/workflows/dns/SyncDnsZoneRecordsWorkflow.d.ts +2 -2
- package/dist/server/workflows/dns/SyncDnsZoneRecordsWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/dns/SyncDnsZoneRecordsWorkflow.js.map +1 -1
- package/dist/server/workflows/incoming/UpdateMailboxThreads.d.ts +1 -2
- package/dist/server/workflows/incoming/UpdateMailboxThreads.d.ts.map +1 -1
- package/dist/server/workflows/incoming/UpdateMailboxThreads.js +2 -5
- package/dist/server/workflows/incoming/UpdateMailboxThreads.js.map +1 -1
- package/dist/server/workflows/pending/PendingPostReceiveWorkflow.d.ts +2 -2
- package/dist/server/workflows/pending/PendingPostReceiveWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/pending/PendingPostReceiveWorkflow.js.map +1 -1
- package/dist/server/workflows/pending/PendingReferencesWorkflow.d.ts +2 -2
- package/dist/server/workflows/pending/PendingReferencesWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/pending/PendingReferencesWorkflow.js.map +1 -1
- package/dist/server/workflows/repair/conversations/RepairConversationWorkflow.d.ts +3 -3
- package/dist/server/workflows/repair/conversations/RepairConversationWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/repair/conversations/RepairConversationWorkflow.js.map +1 -1
- package/dist/server/workflows/search/IndexAppFilesWorkflow.d.ts +2 -2
- package/dist/server/workflows/search/IndexAppFilesWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/search/IndexAppFilesWorkflow.js.map +1 -1
- package/dist/server/workflows/storage/files/UpdateFolderSize.d.ts.map +1 -1
- package/dist/server/workflows/storage/files/UpdateFolderSize.js.map +1 -1
- package/dist/server/workflows/sync/SyncMailboxWorkflow.d.ts +3 -3
- package/dist/server/workflows/sync/SyncMailboxWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/sync/SyncMailboxWorkflow.js.map +1 -1
- package/dist/server/workflows/web-hooks/InvokeWebHookWorkflow.d.ts +2 -2
- package/dist/server/workflows/web-hooks/InvokeWebHookWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/web-hooks/InvokeWebHookWorkflow.js +1 -0
- package/dist/server/workflows/web-hooks/InvokeWebHookWorkflow.js.map +1 -1
- package/dist/server/workflows/web-hooks/QueueInvokeWebHookWorkflow.d.ts +2 -2
- package/dist/server/workflows/web-hooks/QueueInvokeWebHookWorkflow.d.ts.map +1 -1
- package/dist/server/workflows/web-hooks/QueueInvokeWebHookWorkflow.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/wwwroot/routes/api/repair/conversations/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/api/repair/conversations/index.js +2 -2
- package/dist/wwwroot/routes/api/repair/conversations/index.js.map +1 -1
- package/dist/wwwroot/routes/api/repair/paths/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/api/repair/paths/index.js +2 -2
- package/dist/wwwroot/routes/api/repair/paths/index.js.map +1 -1
- package/dist/wwwroot/routes/api/repair/workflows/index.d.ts +2 -2
- package/dist/wwwroot/routes/api/repair/workflows/index.d.ts.map +1 -1
- package/dist/wwwroot/routes/api/repair/workflows/index.js +2 -2
- package/dist/wwwroot/routes/api/repair/workflows/index.js.map +1 -1
- package/package.json +3 -2
- package/src/WebServer.ts +21 -2
- package/src/common/AsyncTaskManager.ts +31 -5
- package/src/common/globalEnv.ts +29 -15
- package/src/reports/model/ReportDbContext.ts +42 -0
- package/src/reports/model/ReportDbContextEvents.ts +21 -0
- package/src/reports/model/entities/ReportSite.ts +21 -0
- package/src/reports/model/entities/Visit.ts +31 -0
- package/src/reports/model/entities/VisitActivity.ts +46 -0
- package/src/reports/model/entities/VisitSegment.ts +47 -0
- package/src/reports/model/entities/Visitor.ts +82 -0
- package/src/reports/model/events/ReportSiteEvents.ts +6 -0
- package/src/reports/model/events/VisitActivityEvents.ts +7 -0
- package/src/reports/model/events/VisitEvents.ts +6 -0
- package/src/reports/model/events/VisitorEvents.ts +6 -0
- package/src/reports/services/ReportingCache.ts +56 -0
- package/src/reports/workflows/ReportWorkflowContext.ts +20 -0
- package/src/reports/workflows/activities/AddActivityWorkflow.ts +146 -0
- package/src/reports/workflows/visit-added/TrackActivityWorkflow.ts +203 -0
- package/src/reports/workflows/visitor-added/VisitorAddedWorkflow.ts +53 -0
- package/src/reports/wwwroot/routes/social-mail/reports/api/entity/index.tsx +11 -0
- package/src/reports/wwwroot/routes/social-mail/reports/api/entity/invoke/[entityName]/[methodName]/index.tsx +11 -0
- package/src/reports/wwwroot/routes/social-mail/reports/api/entity/model.ts/index.tsx +11 -0
- package/src/reports/wwwroot/routes/social-mail/reports/api/entity/query/[entity]/index.tsx +11 -0
- package/src/reports/wwwroot/routes/social-mail/reports/api/entity/run/[entity]/[methodName]/index.tsx +11 -0
- package/src/reports/wwwroot/routes/social-mail/reports/api/track/[event]/get.tsx +127 -0
- package/src/server/model/events/AppFileEvents.ts +2 -2
- package/src/server/model/events/DomainKeyEvents.ts +2 -2
- package/src/server/model/events/HostedDomainEvents.ts +2 -3
- package/src/server/model/events/HostedZoneEvents.ts +5 -7
- package/src/server/model/events/LoginSessionEvents.ts +1 -1
- package/src/server/model/events/MailboxContactEvents.ts +2 -3
- package/src/server/model/events/MailboxEvents.ts +2 -4
- package/src/server/model/events/MailboxSyncTargetEvents.ts +2 -2
- package/src/server/model/events/UserEvents.ts +3 -6
- package/src/server/model/events/WebSiteEvents.ts +2 -3
- package/src/server/model/events/WebSiteHostEvents.ts +2 -2
- package/src/server/model/events/WebSiteVersionEvents.ts +2 -3
- package/src/server/seed/seed.ts +6 -0
- package/src/server/seed/ui/seed-ui.ts +2 -2
- package/src/server/services/EmailAddressService.ts +3 -3
- package/src/server/services/StoreFileService.ts +2 -2
- package/src/server/services/app-temp-file/AppTempFileService.ts +8 -1
- package/src/server/services/emails/MailService.ts +2 -2
- package/src/server/services/emails/UnreadCountService.ts +3 -5
- package/src/server/services/files/WebSiteVersionService.ts +1 -1
- package/src/server/services/store/StorePaymentGatewayService.ts +2 -2
- package/src/server/services/user/otp-to-user/OtpToUserService.ts +0 -2
- package/src/server/services/user/otp-to-user/test/index.ts +23 -0
- package/src/server/smtp/services/ChannelService.ts +2 -2
- package/src/server/smtp/services/EmailPostReceiveService.ts +2 -4
- package/src/server/smtp/services/EmailReferenceService.ts +2 -2
- package/src/server/smtp/services/EmailSerializerService.ts +2 -2
- package/src/server/workflows/AppWorkflowContext.ts +5 -0
- package/src/server/workflows/SocialWorkflowContext.ts +3 -2
- package/src/server/workflows/channel/BroadcastEmail.ts +2 -2
- package/src/server/workflows/channel/library/SendLibraryContentWorkflow.ts +2 -2
- package/src/server/workflows/channel/moderation/UpdatePendingModerationCountWorkflow.ts +2 -2
- package/src/server/workflows/dns/SyncDnsZoneRecordsWorkflow.ts +2 -3
- package/src/server/workflows/incoming/UpdateMailboxThreads.ts +2 -4
- package/src/server/workflows/pending/PendingPostReceiveWorkflow.ts +2 -2
- package/src/server/workflows/pending/PendingReferencesWorkflow.ts +2 -2
- package/src/server/workflows/repair/conversations/RepairConversationWorkflow.ts +3 -3
- package/src/server/workflows/search/IndexAppFilesWorkflow.ts +2 -2
- package/src/server/workflows/storage/files/UpdateFolderSize.ts +0 -1
- package/src/server/workflows/sync/SyncMailboxWorkflow.ts +3 -3
- package/src/server/workflows/web-hooks/InvokeWebHookWorkflow.ts +3 -2
- package/src/server/workflows/web-hooks/QueueInvokeWebHookWorkflow.ts +2 -2
- package/src/wwwroot/routes/api/repair/conversations/index.ts +2 -2
- package/src/wwwroot/routes/api/repair/paths/index.ts +2 -3
- package/src/wwwroot/routes/api/repair/workflows/index.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/conversations/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/conversations/index.ts"],"names":[],"mappings":"AAEA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAK5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,eAAe,CAAqB;IAEtC,GAAG;CAeZ"}
|
|
@@ -8,10 +8,10 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
11
|
-
import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
|
|
12
11
|
import RepairConversationWorkflow from "../../../../../server/workflows/repair/conversations/RepairConversationWorkflow.js";
|
|
13
12
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
14
13
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
14
|
+
import { AppWorkflowContext } from "../../../../../server/workflows/AppWorkflowContext.js";
|
|
15
15
|
let default_1 = class extends Page {
|
|
16
16
|
async run() {
|
|
17
17
|
this.sessionUser.ensureIsAdmin();
|
|
@@ -26,7 +26,7 @@ let default_1 = class extends Page {
|
|
|
26
26
|
};
|
|
27
27
|
__decorate([
|
|
28
28
|
Inject,
|
|
29
|
-
__metadata("design:type",
|
|
29
|
+
__metadata("design:type", AppWorkflowContext)
|
|
30
30
|
], default_1.prototype, "workflowContext", void 0);
|
|
31
31
|
default_1 = __decorate([
|
|
32
32
|
Prepare.authorize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/conversations/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/conversations/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,0BAA0B,MAAM,oFAAoF,CAAC;AAC5H,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAG5E,gBAAA,KAAM,SAAQ,IAAI;IAK7B,KAAK,CAAC,GAAG;QAEL,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAEjC,IAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,wBAAwB;YACxB,MAAM,EAAE,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC5E,MAAM,0BAA0B,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAE7B,CAAC;CAEJ,CAAA;AAjBW;IADP,MAAM;8BACkB,kBAAkB;kDAAC;AAHjC;IADd,OAAO,CAAC,SAAS;aAqBjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/paths/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/paths/index.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAO5D,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,OAAO,CAAC,eAAe,CAAqB;IAG5C,OAAO,CAAC,EAAE,CAAoB;IAExB,GAAG;CAmBZ"}
|
|
@@ -8,11 +8,11 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
11
|
-
import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
|
|
12
11
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
13
12
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
14
13
|
import SocialMailContext from "../../../../../server/model/SocialMailContext.js";
|
|
15
14
|
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
15
|
+
import { AppWorkflowContext } from "../../../../../server/workflows/AppWorkflowContext.js";
|
|
16
16
|
let default_1 = class extends Page {
|
|
17
17
|
async run() {
|
|
18
18
|
this.sessionUser.ensureIsAdmin();
|
|
@@ -31,7 +31,7 @@ let default_1 = class extends Page {
|
|
|
31
31
|
};
|
|
32
32
|
__decorate([
|
|
33
33
|
Inject,
|
|
34
|
-
__metadata("design:type",
|
|
34
|
+
__metadata("design:type", AppWorkflowContext)
|
|
35
35
|
], default_1.prototype, "workflowContext", void 0);
|
|
36
36
|
__decorate([
|
|
37
37
|
Inject,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/paths/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/paths/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,iBAAiB,MAAM,kDAAkD,CAAC;AACjF,OAAO,GAAG,MAAM,8CAA8C,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAG5E,gBAAA,KAAM,SAAQ,IAAI;IAQ7B,KAAK,CAAC,GAAG;QAEL,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAEjC,IAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;iBACzD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,GAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG;aAC5C,CAAC,CAAC,CAAC;YAER,MAAM,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC;iBAClE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG;aAC3D,CAAC,CAAC,CAAC;QACZ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnC,CAAC;CAEJ,CAAA;AAxBW;IADP,MAAM;8BACkB,kBAAkB;kDAAC;AAGpC;IADP,MAAM;8BACK,iBAAiB;qCAAC;AANnB;IADd,OAAO,CAAC,SAAS;aA4BjB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
|
|
2
1
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
2
|
+
import { AppWorkflowContext } from "../../../../../server/workflows/AppWorkflowContext.js";
|
|
3
3
|
export default class extends Page {
|
|
4
|
-
workflowContext:
|
|
4
|
+
workflowContext: AppWorkflowContext;
|
|
5
5
|
run(): Promise<import("@entity-access/server-pages/dist/Content.js").default>;
|
|
6
6
|
}
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/workflows/index.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/workflows/index.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAE5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAG3F,MAAM,CAAC,OAAO,MAAO,SAAQ,IAAI;IAG7B,eAAe,EAAE,kBAAkB,CAAC;IAE9B,GAAG;CAiBZ"}
|
|
@@ -8,9 +8,9 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
8
8
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
9
|
};
|
|
10
10
|
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
11
|
-
import WorkflowContext from "@entity-access/entity-access/dist/workflows/WorkflowContext.js";
|
|
12
11
|
import Page from "@entity-access/server-pages/dist/Page.js";
|
|
13
12
|
import { Prepare } from "@entity-access/server-pages/dist/decorators/Prepare.js";
|
|
13
|
+
import { AppWorkflowContext } from "../../../../../server/workflows/AppWorkflowContext.js";
|
|
14
14
|
let default_1 = class extends Page {
|
|
15
15
|
async run() {
|
|
16
16
|
const [workflowName] = this.childPath;
|
|
@@ -26,7 +26,7 @@ let default_1 = class extends Page {
|
|
|
26
26
|
};
|
|
27
27
|
__decorate([
|
|
28
28
|
Inject,
|
|
29
|
-
__metadata("design:type",
|
|
29
|
+
__metadata("design:type", AppWorkflowContext)
|
|
30
30
|
], default_1.prototype, "workflowContext", void 0);
|
|
31
31
|
default_1 = __decorate([
|
|
32
32
|
Prepare.authorize
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/workflows/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/wwwroot/routes/api/repair/workflows/index.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,MAAM,MAAM,4CAA4C,CAAC;AAChE,OAAO,IAAI,MAAM,0CAA0C,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,wDAAwD,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAG5E,gBAAA,KAAM,SAAQ,IAAI;IAK7B,KAAK,CAAC,GAAG;QAEL,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAEtC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAEjC,MAAM,IAAI,GAAI,IAAI,CAAC,eAAuB,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC;QAE3E,IAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,wBAAwB;YACxB,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CAEJ,CAAA;AAnBG;IADC,MAAM;8BACU,kBAAkB;kDAAC;AAHzB;IADd,OAAO,CAAC,SAAS;aAuBjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@social-mail/social-mail-web-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.2",
|
|
4
4
|
"description": "## Phase 1",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@aws-sdk/client-s3": "^3.717.0",
|
|
23
23
|
"@azure/storage-blob": "^12.25.0",
|
|
24
|
-
"@entity-access/entity-access": "^1.0.
|
|
24
|
+
"@entity-access/entity-access": "^1.0.499",
|
|
25
25
|
"@entity-access/server-pages": "^1.1.502",
|
|
26
26
|
"@peculiar/asn1-schema": "^2.3.15",
|
|
27
27
|
"@social-mail/shared": "^1.0.29",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"mailauth": "^4.8.2",
|
|
44
44
|
"mailparser": "^3.7.1",
|
|
45
45
|
"mime-types": "^2.1.35",
|
|
46
|
+
"my-ua-parser": "^2.0.4",
|
|
46
47
|
"node-forge": "^1.3.1",
|
|
47
48
|
"nodemailer": "^6.10.0",
|
|
48
49
|
"pg": "^8.11.1",
|
package/src/WebServer.ts
CHANGED
|
@@ -14,6 +14,7 @@ import seed from "./server/seed/seed.js";
|
|
|
14
14
|
import PostgreSqlDriver from "@entity-access/entity-access/dist/drivers/postgres/PostgreSqlDriver.js";
|
|
15
15
|
import { globalServices } from "./globalServices.js";
|
|
16
16
|
import WorkflowContext from "./server/workflows/SocialWorkflowContext.js";
|
|
17
|
+
import { AppWorkflowContext } from "./server/workflows/AppWorkflowContext.js";
|
|
17
18
|
import SocketService from "./server/services/socket/AppSocketService.js";
|
|
18
19
|
import SocialWorkflowContext from "./server/workflows/SocialWorkflowContext.js";
|
|
19
20
|
import { CacheProperty } from "@entity-access/server-pages/dist/core/CacheProperty.js";
|
|
@@ -54,6 +55,10 @@ import RootCertificates from "./server/services/root-certs/RootCertificates.js";
|
|
|
54
55
|
import SocialSecureContextService from "./server/services/cert/SocialSecureContextService.js";
|
|
55
56
|
import SecureContextService from "@entity-access/server-pages/dist/ssl/SecureContextService.js";
|
|
56
57
|
import AppDbContext from "@entity-access/server-pages/dist/core/AppDbContext.js";
|
|
58
|
+
import ReportDbContext from "./reports/model/ReportDbContext.js";
|
|
59
|
+
import ReportDbContextEvents from "./reports/model/ReportDbContextEvents.js";
|
|
60
|
+
import ContextEvents from "@entity-access/entity-access/dist/model/events/ContextEvents.js";
|
|
61
|
+
import ReportWorkflowContext from "./reports/workflows/ReportWorkflowContext.js";
|
|
57
62
|
|
|
58
63
|
ServiceCollection.registerMultiple("Singleton", [SecureContextService, SocialSecureContextService], SocialSecureContextService);
|
|
59
64
|
|
|
@@ -107,6 +112,10 @@ export default class WebServer {
|
|
|
107
112
|
globalServices.resolve(SocialWorkflowContext).start({
|
|
108
113
|
taskGroups: [ "default", "sync", "sync-queue", "notify", "background", "daily", "batch"]
|
|
109
114
|
}).catch((error) => console.error(error));
|
|
115
|
+
|
|
116
|
+
globalServices.resolve(ReportWorkflowContext).start({
|
|
117
|
+
taskGroups: ["default", "background", "batch"]
|
|
118
|
+
}).catch(console.error);
|
|
110
119
|
}
|
|
111
120
|
|
|
112
121
|
|
|
@@ -138,6 +147,10 @@ export default class WebServer {
|
|
|
138
147
|
server.serverID = globalEnv.host;
|
|
139
148
|
server.registerEntityRoutes();
|
|
140
149
|
server.registerEntityRoutes("/social-mail/");
|
|
150
|
+
|
|
151
|
+
server.registerRoutes(
|
|
152
|
+
join(dirname(fileURLToPath(import.meta.url)), "./reports/wwwroot/routes"));
|
|
153
|
+
|
|
141
154
|
server.registerRoutes(
|
|
142
155
|
join(dirname(fileURLToPath(import.meta.url)), "./wwwroot/routes"));
|
|
143
156
|
|
|
@@ -222,7 +235,8 @@ export default class WebServer {
|
|
|
222
235
|
|
|
223
236
|
async seed() {
|
|
224
237
|
await seed();
|
|
225
|
-
await globalServices.resolve(
|
|
238
|
+
await globalServices.resolve(AppWorkflowContext).storage.seed(globalEnv.version);
|
|
239
|
+
await globalServices.resolve(ReportWorkflowContext).storage.seed(globalEnv.version);
|
|
226
240
|
}
|
|
227
241
|
|
|
228
242
|
registerRoutes(server: ServerPages) {
|
|
@@ -230,11 +244,16 @@ export default class WebServer {
|
|
|
230
244
|
}
|
|
231
245
|
|
|
232
246
|
register() {
|
|
247
|
+
|
|
248
|
+
ServiceCollection.register("Singleton", ReportDbContextEvents);
|
|
249
|
+
ServiceCollection.register("Scoped", ReportDbContext);
|
|
250
|
+
ServiceCollection.register("Singleton", ReportWorkflowContext);
|
|
251
|
+
|
|
233
252
|
ServiceCollection.registerMultiple("Scoped", [ AppDbContext, SocialMailContext], SocialMailContext);
|
|
234
253
|
ServiceCollection.register("Scoped", UserInfoProvider);
|
|
235
254
|
ServiceCollection.registerMultiple("Singleton", [AppSocketService, SocketService], AppSocketService);
|
|
236
255
|
ServiceCollection.registerMultiple("Singleton", [AppKeyProvider, KeyProvider], AppKeyProvider);
|
|
237
|
-
ServiceCollection.
|
|
256
|
+
ServiceCollection.registerMultiple("Singleton", [ ContextEvents ], SocialMailContextEvents);
|
|
238
257
|
|
|
239
258
|
// Set public key
|
|
240
259
|
SessionSecurity.prototype.publicKey = globalEnv.publicKey;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import Queue from "../protocols/core/Queue.js";
|
|
2
|
+
import sleep from "./sleep.js";
|
|
2
3
|
|
|
3
4
|
export default class AsyncTaskManager {
|
|
4
5
|
|
|
6
|
+
public rateLimit = 10;
|
|
7
|
+
|
|
5
8
|
private running: Set<any> = new Set();
|
|
6
9
|
|
|
7
10
|
private waiting: Queue<{ resolve, reject, fx }> = new Queue();
|
|
8
11
|
|
|
9
|
-
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public run<TR>(fx: (... a: any[]) => Promise<TR>): Promise<TR> {
|
|
12
|
+
run<TR>(fx: (... a: any[]) => Promise<TR>): Promise<TR> {
|
|
13
13
|
|
|
14
14
|
const pr = new Promise((resolve, reject) => {
|
|
15
15
|
this.waiting.enqueue({ resolve, reject, fx });
|
|
@@ -24,6 +24,33 @@ export default class AsyncTaskManager {
|
|
|
24
24
|
return pr as Promise<TR>;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
wait() {
|
|
28
|
+
return new Promise<void>((resolve) => this.runAfterEnd(resolve));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* You can queue this function that will be
|
|
33
|
+
* executed after all pending fetch tasks
|
|
34
|
+
* are finished
|
|
35
|
+
* @param fx any function
|
|
36
|
+
*/
|
|
37
|
+
public runAfterEnd(fx: () => any) {
|
|
38
|
+
(async () => {
|
|
39
|
+
for(;;) {
|
|
40
|
+
await sleep(100);
|
|
41
|
+
if (this.running.size > 0) {
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
await sleep(10);
|
|
45
|
+
if (this.running.size > 0) {
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
fx();
|
|
51
|
+
})().catch(console.error);
|
|
52
|
+
}
|
|
53
|
+
|
|
27
54
|
protected processQueue() {
|
|
28
55
|
for(;;) {
|
|
29
56
|
if (this.running.size >= this.rateLimit) {
|
|
@@ -54,5 +81,4 @@ export default class AsyncTaskManager {
|
|
|
54
81
|
|
|
55
82
|
}
|
|
56
83
|
}
|
|
57
|
-
|
|
58
84
|
}
|
package/src/common/globalEnv.ts
CHANGED
|
@@ -18,6 +18,16 @@ if (Number.isNaN(port)) {
|
|
|
18
18
|
|
|
19
19
|
const serverID = process.env.SOCIAL_MAIL_SERVER_ID || "0";
|
|
20
20
|
|
|
21
|
+
const db = {
|
|
22
|
+
server: process.env.SOCIAL_MAIL_DB_SERVER ?? "postgres",
|
|
23
|
+
database: process.env.SOCIAL_MAIL_DB_DATABASE ?? "SocialMails",
|
|
24
|
+
host: process.env.SOCIAL_MAIL_DB_HOST ?? "localhost",
|
|
25
|
+
port: Number(process.env.SOCIAL_MAIL_DB_PORT ?? 5432),
|
|
26
|
+
ssl: JSON.parse(process.env.SOCIAL_MAIL_DB_SSL ?? "true"),
|
|
27
|
+
user: process.env.SOCIAL_MAIL_DB_USER ?? "postgres",
|
|
28
|
+
password: process.env.SOCIAL_MAIL_DB_PASSWORD ?? "abcd123",
|
|
29
|
+
};
|
|
30
|
+
|
|
21
31
|
export const globalEnv = {
|
|
22
32
|
protocol: void 0,
|
|
23
33
|
strictSSL: process.env.NODE_TLS_REJECT_UNAUTHORIZED !== "0",
|
|
@@ -71,24 +81,25 @@ export const globalEnv = {
|
|
|
71
81
|
eabHmac: process.env.SOCIAL_MAIL_SSL_ACME_EAB_HMAC,
|
|
72
82
|
}
|
|
73
83
|
},
|
|
74
|
-
db
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
84
|
+
db,
|
|
85
|
+
reportDb: {
|
|
86
|
+
server: process.env.SOCIAL_MAIL_REPORT_DB_SERVER ?? db.server,
|
|
87
|
+
database: process.env.SOCIAL_MAIL_REPORT_DB_DATABASE ?? db.database,
|
|
88
|
+
host: process.env.SOCIAL_MAIL_REPORT_DB_HOST ?? db.host,
|
|
89
|
+
port: Number(process.env.SOCIAL_MAIL_REPORT_DB_PORT ?? db.port),
|
|
90
|
+
ssl: JSON.parse(process.env.SOCIAL_MAIL_REPORT_DB_SSL ?? db.ssl),
|
|
91
|
+
user: process.env.SOCIAL_MAIL_REPORT_DB_USER ?? db.user,
|
|
92
|
+
password: process.env.SOCIAL_MAIL_REPORT_DB_PASSWORD ?? db.password,
|
|
82
93
|
},
|
|
83
94
|
|
|
84
95
|
pgEvents: {
|
|
85
|
-
server: process.env.SOCIAL_MAIL_EVENTS_DB_SERVER ??
|
|
86
|
-
database: process.env.SOCIAL_MAIL_EVENTS_DB_DATABASE ??
|
|
87
|
-
host: process.env.SOCIAL_MAIL_EVENTS_DB_HOST ??
|
|
88
|
-
port: Number(process.env.SOCIAL_MAIL_EVENTS_DB_PORT ??
|
|
89
|
-
ssl: JSON.parse(process.env.SOCIAL_MAIL_EVENTS_DB_SSL ??
|
|
90
|
-
user: process.env.SOCIAL_MAIL_EVENTS_DB_USER ??
|
|
91
|
-
password: process.env.SOCIAL_MAIL_EVENTS_DB_PASSWORD ??
|
|
96
|
+
server: process.env.SOCIAL_MAIL_EVENTS_DB_SERVER ?? db.server,
|
|
97
|
+
database: process.env.SOCIAL_MAIL_EVENTS_DB_DATABASE ?? db.database,
|
|
98
|
+
host: process.env.SOCIAL_MAIL_EVENTS_DB_HOST ?? db.host,
|
|
99
|
+
port: Number(process.env.SOCIAL_MAIL_EVENTS_DB_PORT ?? db.port),
|
|
100
|
+
ssl: JSON.parse(process.env.SOCIAL_MAIL_EVENTS_DB_SSL ?? db.ssl),
|
|
101
|
+
user: process.env.SOCIAL_MAIL_EVENTS_DB_USER ?? db.user,
|
|
102
|
+
password: process.env.SOCIAL_MAIL_EVENTS_DB_PASSWORD ?? db.password,
|
|
92
103
|
},
|
|
93
104
|
|
|
94
105
|
numCPUs: isTestMode
|
|
@@ -148,6 +159,9 @@ export const globalEnv = {
|
|
|
148
159
|
folder: "socialmail.in",
|
|
149
160
|
apiKey: process.env.SOCIAL_MAIL_OTP_TO_USER_SOCIAL_MAIL_API_KEY
|
|
150
161
|
},
|
|
162
|
+
test: {
|
|
163
|
+
folder: "test",
|
|
164
|
+
},
|
|
151
165
|
modes: (process.env.SOCIAL_MAIL_OTP_TO_USER_MODES ?? "providerSocialMail").split(",")
|
|
152
166
|
}
|
|
153
167
|
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import EntityContext from "@entity-access/entity-access/dist/model/EntityContext.js";
|
|
2
|
+
import Visitor from "./entities/Visitor.js";
|
|
3
|
+
import Inject from "@entity-access/entity-access/dist/di/di.js";
|
|
4
|
+
import ReportDbContextEvents from "./ReportDbContextEvents.js";
|
|
5
|
+
import Visit from "./entities/Visit.js";
|
|
6
|
+
import ReportSite from "./entities/ReportSite.js";
|
|
7
|
+
import VisitActivity from "./entities/VisitActivity.js";
|
|
8
|
+
import PostgreSqlDriver from "@entity-access/entity-access/dist/drivers/postgres/PostgreSqlDriver.js";
|
|
9
|
+
import { globalEnv } from "../../common/globalEnv.js";
|
|
10
|
+
import VisitSegment from "./entities/VisitSegment.js";
|
|
11
|
+
|
|
12
|
+
const { host, port, ssl, database, user, password } = globalEnv.reportDb;
|
|
13
|
+
|
|
14
|
+
export const ReportingDriver = new PostgreSqlDriver({
|
|
15
|
+
host,
|
|
16
|
+
port,
|
|
17
|
+
ssl,
|
|
18
|
+
database,
|
|
19
|
+
user,
|
|
20
|
+
password,
|
|
21
|
+
/** Since we are going to use cluster, a single worker should not hold more than 10 connections */
|
|
22
|
+
poolSize: 10
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// @ts-expect-error readonly
|
|
26
|
+
export default class ReportDbContext extends EntityContext {
|
|
27
|
+
|
|
28
|
+
// driver = ReportingDriver;
|
|
29
|
+
|
|
30
|
+
public visitors = this.model.register(Visitor);
|
|
31
|
+
public visits = this.model.register(Visit);
|
|
32
|
+
public reportSites = this.model.register(ReportSite);
|
|
33
|
+
public visitActivities = this.model.register(VisitActivity);
|
|
34
|
+
public visitSegments = this.model.register(VisitSegment);
|
|
35
|
+
|
|
36
|
+
@Inject
|
|
37
|
+
events: ReportDbContextEvents;
|
|
38
|
+
|
|
39
|
+
constructor(_driver, events, logger) {
|
|
40
|
+
super(ReportingDriver, events, logger);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import ContextEvents from "@entity-access/entity-access/dist/model/events/ContextEvents.js";
|
|
2
|
+
import Visit from "./entities/Visit.js";
|
|
3
|
+
import VisitEvents from "./events/VisitEvents.js";
|
|
4
|
+
import VisitActivity from "./entities/VisitActivity.js";
|
|
5
|
+
import VisitActivityEvents from "./events/VisitActivityEvents.js";
|
|
6
|
+
import ReportSite from "./entities/ReportSite.js";
|
|
7
|
+
import ReportSiteEvents from "./events/ReportSiteEvents.js";
|
|
8
|
+
import Visitor from "./entities/Visitor.js";
|
|
9
|
+
import VisitorEvents from "./events/VisitorEvents.js";
|
|
10
|
+
|
|
11
|
+
export default class ReportDbContextEvents extends ContextEvents {
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super();
|
|
15
|
+
|
|
16
|
+
this.register(Visit, VisitEvents);
|
|
17
|
+
this.register(VisitActivity, VisitActivityEvents);
|
|
18
|
+
this.register(Visitor, VisitorEvents);
|
|
19
|
+
this.register(ReportSite, ReportSiteEvents);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
+
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
3
|
+
import type Visitor from "./Visitor.js";
|
|
4
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
5
|
+
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
6
|
+
|
|
7
|
+
@Table("ReportSites")
|
|
8
|
+
export default class ReportSite {
|
|
9
|
+
|
|
10
|
+
@Column({ dataType: "BigInt", key: true })
|
|
11
|
+
siteID: number;
|
|
12
|
+
|
|
13
|
+
@Column({ dataType: "DateTime", default: () => Sql.date.now()})
|
|
14
|
+
dateCreated: DateTime;
|
|
15
|
+
|
|
16
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
17
|
+
timeZoneSeconds: number;
|
|
18
|
+
|
|
19
|
+
visitors: Visitor[];
|
|
20
|
+
|
|
21
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
+
import { RelateTo } from "@entity-access/entity-access/dist/decorators/Relate.js";
|
|
3
|
+
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
4
|
+
import Visitor from "./Visitor.js";
|
|
5
|
+
import type VisitActivity from "./VisitActivity.js";
|
|
6
|
+
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
7
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
8
|
+
|
|
9
|
+
@Table("Visit")
|
|
10
|
+
export default class Visit {
|
|
11
|
+
|
|
12
|
+
@Column({ dataType: "BigInt", key: true, generated: "identity"})
|
|
13
|
+
visitID: number;
|
|
14
|
+
|
|
15
|
+
@Column({ dataType: "BigInt"})
|
|
16
|
+
@RelateTo(Visitor, {
|
|
17
|
+
property: (x) => x.visitor,
|
|
18
|
+
inverseProperty: (x) => x.visits
|
|
19
|
+
})
|
|
20
|
+
visitorID: number;
|
|
21
|
+
|
|
22
|
+
@Column({ dataType: "DateTime", default: () => Sql.date.now()})
|
|
23
|
+
dateCreated: DateTime;
|
|
24
|
+
|
|
25
|
+
@Column({ dataType: "DateTime", default: () => Sql.date.now()})
|
|
26
|
+
dateUpdated: DateTime;
|
|
27
|
+
|
|
28
|
+
visitor: Visitor;
|
|
29
|
+
activities: VisitActivity[];
|
|
30
|
+
|
|
31
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
+
import { RelateTo } from "@entity-access/entity-access/dist/decorators/Relate.js";
|
|
3
|
+
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
4
|
+
import Visit from "./Visit.js";
|
|
5
|
+
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
6
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
7
|
+
|
|
8
|
+
@Table("VisitActivities")
|
|
9
|
+
export default class VisitActivity {
|
|
10
|
+
|
|
11
|
+
@Column({ dataType: "BigInt", key: true, generated: "identity"})
|
|
12
|
+
activityID: number;
|
|
13
|
+
|
|
14
|
+
@Column({ dataType: "BigInt" })
|
|
15
|
+
@RelateTo(Visit, {
|
|
16
|
+
property: (x) => x.visit,
|
|
17
|
+
inverseProperty: (x) => x.activities
|
|
18
|
+
})
|
|
19
|
+
visitID: number;
|
|
20
|
+
|
|
21
|
+
@Column({ dataType: "DateTime", default: () => Sql.date.now()})
|
|
22
|
+
dateCreated: DateTime;
|
|
23
|
+
|
|
24
|
+
@Column({ dataType: "Char", length: 50})
|
|
25
|
+
event: string;
|
|
26
|
+
|
|
27
|
+
@Column({ dataType: "Char", length: 50, nullable: true})
|
|
28
|
+
referrer: string;
|
|
29
|
+
|
|
30
|
+
@Column({ dataType: "Char", length: 450, nullable: true})
|
|
31
|
+
page: string;
|
|
32
|
+
|
|
33
|
+
@Column({ dataType: "Char", nullable: true})
|
|
34
|
+
query: string;
|
|
35
|
+
|
|
36
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
37
|
+
x: number;
|
|
38
|
+
|
|
39
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
40
|
+
y: number;
|
|
41
|
+
|
|
42
|
+
@Column({ dataType: "Char", nullable: true})
|
|
43
|
+
url: string;
|
|
44
|
+
|
|
45
|
+
visit: Visit;
|
|
46
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import CheckConstraint from "@entity-access/entity-access/dist/decorators/CheckConstraint.js";
|
|
2
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
3
|
+
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
4
|
+
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
5
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
6
|
+
|
|
7
|
+
const durations = [ "hourly", "daily", "monthly", "yearly", "real-time"] as const;
|
|
8
|
+
export type durationType = typeof durations[number];
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@Table("VisitSegment")
|
|
12
|
+
@CheckConstraint({
|
|
13
|
+
name: "CC_VisitSegment_Date",
|
|
14
|
+
filter: (x) => Sql.date.minuteOf(x.date) === 0
|
|
15
|
+
&& Sql.date.secondOf(x.date) === 0
|
|
16
|
+
})
|
|
17
|
+
export default class VisitSegment {
|
|
18
|
+
|
|
19
|
+
@Column({ dataType: "BigInt", key: true })
|
|
20
|
+
siteID: number;
|
|
21
|
+
|
|
22
|
+
@Column({ dataType: "Char", length: 20, key: true, enum: durations })
|
|
23
|
+
duration: durationType;
|
|
24
|
+
|
|
25
|
+
@Column({ dataType: "Char", length: 400, key: true})
|
|
26
|
+
category: string;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Beginning of the our should be stored here.
|
|
30
|
+
*/
|
|
31
|
+
@Column({ dataType: "DateTime", key: true })
|
|
32
|
+
date: DateTime;
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
36
|
+
visits: number;
|
|
37
|
+
|
|
38
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
39
|
+
newVisits: number;
|
|
40
|
+
|
|
41
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
42
|
+
visitors: number;
|
|
43
|
+
|
|
44
|
+
@Column({ dataType: "Int", default: () => 0})
|
|
45
|
+
newVisitors: number;
|
|
46
|
+
|
|
47
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import Column from "@entity-access/entity-access/dist/decorators/Column.js";
|
|
2
|
+
import Table from "@entity-access/entity-access/dist/decorators/Table.js";
|
|
3
|
+
import type Visit from "./Visit.js";
|
|
4
|
+
import { RelateTo } from "@entity-access/entity-access/dist/decorators/Relate.js";
|
|
5
|
+
import ReportSite from "./ReportSite.js";
|
|
6
|
+
import DateTime from "@entity-access/entity-access/dist/types/DateTime.js";
|
|
7
|
+
import Sql from "@entity-access/entity-access/dist/sql/Sql.js";
|
|
8
|
+
|
|
9
|
+
@Table("Visitors")
|
|
10
|
+
export default class Visitor {
|
|
11
|
+
|
|
12
|
+
@Column({ dataType: "BigInt", key: true, generated: "identity"})
|
|
13
|
+
visitorID: number;
|
|
14
|
+
|
|
15
|
+
@Column({ dataType: "BigInt"})
|
|
16
|
+
@RelateTo(ReportSite, {
|
|
17
|
+
property: (x) => x.site,
|
|
18
|
+
inverseProperty: (x) => x.visitors
|
|
19
|
+
})
|
|
20
|
+
siteID: number;
|
|
21
|
+
|
|
22
|
+
@Column({ dataType: "Char", length: 50, nullable: true})
|
|
23
|
+
ipAddress: string;
|
|
24
|
+
|
|
25
|
+
@Column({ dataType: "Char", length: 50, nullable: true})
|
|
26
|
+
country: string;
|
|
27
|
+
|
|
28
|
+
@Column({ dataType: "Char", nullable: true})
|
|
29
|
+
userAgent: string;
|
|
30
|
+
|
|
31
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
32
|
+
device: string;
|
|
33
|
+
|
|
34
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
35
|
+
deviceModel: string;
|
|
36
|
+
|
|
37
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
38
|
+
deviceVendor: string;
|
|
39
|
+
|
|
40
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
41
|
+
cpu: string;
|
|
42
|
+
|
|
43
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
44
|
+
app: string;
|
|
45
|
+
|
|
46
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
47
|
+
appVersion: string;
|
|
48
|
+
|
|
49
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
50
|
+
engine: string;
|
|
51
|
+
|
|
52
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
53
|
+
engineVersion: string;
|
|
54
|
+
|
|
55
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
56
|
+
os: string;
|
|
57
|
+
|
|
58
|
+
@Column({ dataType: "Char", length: 400, nullable: true})
|
|
59
|
+
osVersion: string;
|
|
60
|
+
|
|
61
|
+
@Column({ dataType: "DateTime", default: () => Sql.date.now()})
|
|
62
|
+
dateCreated: DateTime;
|
|
63
|
+
|
|
64
|
+
@Column({ dataType: "DateTime", default: () => Sql.date.now()})
|
|
65
|
+
dateUpdated: DateTime;
|
|
66
|
+
|
|
67
|
+
@Column({ dataType: "Int", default: () => 1})
|
|
68
|
+
totalVisits: number;
|
|
69
|
+
|
|
70
|
+
@Column({ dataType: "Float", default: () => 1})
|
|
71
|
+
averageDuration: number;
|
|
72
|
+
|
|
73
|
+
@Column({ dataType: "BigInt", nullable: true})
|
|
74
|
+
firstVisitID: number;
|
|
75
|
+
|
|
76
|
+
@Column({ dataType: "BigInt", nullable: true})
|
|
77
|
+
lastVisitID: number;
|
|
78
|
+
|
|
79
|
+
site: ReportSite;
|
|
80
|
+
visits: Visit[];
|
|
81
|
+
|
|
82
|
+
}
|