mirror of
https://github.com/standardnotes/server
synced 2026-01-16 20:04:32 -05:00
387 lines
9.9 KiB
TypeScript
387 lines
9.9 KiB
TypeScript
/* istanbul ignore file */
|
|
|
|
import { ProtocolVersion } from '@standardnotes/common'
|
|
import {
|
|
AccountDeletionRequestedEvent,
|
|
UserEmailChangedEvent,
|
|
UserRegisteredEvent,
|
|
UserRolesChangedEvent,
|
|
EmailBackupRequestedEvent,
|
|
ListedAccountRequestedEvent,
|
|
UserDisabledSessionUserAgentLoggingEvent,
|
|
SharedSubscriptionInvitationCreatedEvent,
|
|
SharedSubscriptionInvitationCanceledEvent,
|
|
PredicateVerifiedEvent,
|
|
DomainEventService,
|
|
WebSocketMessageRequestedEvent,
|
|
ExitDiscountApplyRequestedEvent,
|
|
MuteEmailsSettingChangedEvent,
|
|
EmailRequestedEvent,
|
|
StatisticPersistenceRequestedEvent,
|
|
SessionCreatedEvent,
|
|
SessionRefreshedEvent,
|
|
AccountDeletionVerificationRequestedEvent,
|
|
} from '@standardnotes/domain-events'
|
|
import { Predicate, PredicateVerificationResult } from '@standardnotes/predicates'
|
|
import { TimerInterface } from '@standardnotes/time'
|
|
import { inject, injectable } from 'inversify'
|
|
import TYPES from '../../Bootstrap/Types'
|
|
import { InviteeIdentifierType } from '../SharedSubscription/InviteeIdentifierType'
|
|
import { DomainEventFactoryInterface } from './DomainEventFactoryInterface'
|
|
import { KeyParamsData } from '@standardnotes/responses'
|
|
|
|
@injectable()
|
|
export class DomainEventFactory implements DomainEventFactoryInterface {
|
|
constructor(@inject(TYPES.Auth_Timer) private timer: TimerInterface) {}
|
|
|
|
createAccountDeletionVerificationRequestedEvent(dto: {
|
|
userUuid: string
|
|
email: string
|
|
}): AccountDeletionVerificationRequestedEvent {
|
|
return {
|
|
type: 'ACCOUNT_DELETION_VERIFICATION_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createSessionCreatedEvent(dto: { userUuid: string }): SessionCreatedEvent {
|
|
return {
|
|
type: 'SESSION_CREATED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createSessionRefreshedEvent(dto: { userUuid: string }): SessionRefreshedEvent {
|
|
return {
|
|
type: 'SESSION_REFRESHED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createStatisticPersistenceRequestedEvent(dto: {
|
|
statisticMeasureName: string
|
|
value: number
|
|
date: number
|
|
}): StatisticPersistenceRequestedEvent {
|
|
return {
|
|
type: 'STATISTIC_PERSISTENCE_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: '-',
|
|
userIdentifierType: 'email',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createMuteEmailsSettingChangedEvent(dto: {
|
|
username: string
|
|
mute: boolean
|
|
emailSubscriptionRejectionLevel: string
|
|
}): MuteEmailsSettingChangedEvent {
|
|
return {
|
|
type: 'MUTE_EMAILS_SETTING_CHANGED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.username,
|
|
userIdentifierType: 'email',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createExitDiscountApplyRequestedEvent(dto: {
|
|
userEmail: string
|
|
discountCode: string
|
|
}): ExitDiscountApplyRequestedEvent {
|
|
return {
|
|
type: 'EXIT_DISCOUNT_APPLY_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userEmail,
|
|
userIdentifierType: 'email',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createWebSocketMessageRequestedEvent(dto: { userUuid: string; message: string }): WebSocketMessageRequestedEvent {
|
|
return {
|
|
type: 'WEB_SOCKET_MESSAGE_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createEmailRequestedEvent(dto: {
|
|
userEmail: string
|
|
messageIdentifier: string
|
|
level: string
|
|
body: string
|
|
subject: string
|
|
userUuid?: string
|
|
}): EmailRequestedEvent {
|
|
return {
|
|
type: 'EMAIL_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userEmail,
|
|
userIdentifierType: 'email',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createPredicateVerifiedEvent(dto: {
|
|
userUuid: string
|
|
predicate: Predicate
|
|
predicateVerificationResult: PredicateVerificationResult
|
|
}): PredicateVerifiedEvent {
|
|
const { userUuid, ...payload } = dto
|
|
return {
|
|
type: 'PREDICATE_VERIFIED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload,
|
|
}
|
|
}
|
|
|
|
createSharedSubscriptionInvitationCanceledEvent(dto: {
|
|
inviterEmail: string
|
|
inviterSubscriptionId: number
|
|
inviterSubscriptionUuid: string
|
|
inviteeIdentifier: string
|
|
inviteeIdentifierType: InviteeIdentifierType
|
|
sharedSubscriptionInvitationUuid: string
|
|
}): SharedSubscriptionInvitationCanceledEvent {
|
|
return {
|
|
type: 'SHARED_SUBSCRIPTION_INVITATION_CANCELED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.inviterEmail,
|
|
userIdentifierType: 'email',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createSharedSubscriptionInvitationCreatedEvent(dto: {
|
|
inviterEmail: string
|
|
inviterSubscriptionId: number
|
|
inviteeIdentifier: string
|
|
inviteeIdentifierType: InviteeIdentifierType
|
|
sharedSubscriptionInvitationUuid: string
|
|
}): SharedSubscriptionInvitationCreatedEvent {
|
|
return {
|
|
type: 'SHARED_SUBSCRIPTION_INVITATION_CREATED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.inviterEmail,
|
|
userIdentifierType: 'email',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createUserDisabledSessionUserAgentLoggingEvent(dto: {
|
|
userUuid: string
|
|
email: string
|
|
}): UserDisabledSessionUserAgentLoggingEvent {
|
|
return {
|
|
type: 'USER_DISABLED_SESSION_USER_AGENT_LOGGING',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createListedAccountRequestedEvent(userUuid: string, userEmail: string): ListedAccountRequestedEvent {
|
|
return {
|
|
type: 'LISTED_ACCOUNT_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: {
|
|
userUuid,
|
|
userEmail,
|
|
},
|
|
}
|
|
}
|
|
|
|
createEmailBackupRequestedEvent(
|
|
userUuid: string,
|
|
muteEmailsSettingUuid: string,
|
|
userHasEmailsMuted: boolean,
|
|
keyParams: KeyParamsData,
|
|
): EmailBackupRequestedEvent {
|
|
return {
|
|
type: 'EMAIL_BACKUP_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: {
|
|
userUuid,
|
|
userHasEmailsMuted,
|
|
muteEmailsSettingUuid,
|
|
keyParams,
|
|
},
|
|
}
|
|
}
|
|
|
|
createAccountDeletionRequestedEvent(dto: {
|
|
userUuid: string
|
|
email: string
|
|
userCreatedAtTimestamp: number
|
|
regularSubscription?: {
|
|
uuid: string
|
|
ownerUuid: string
|
|
}
|
|
sharedSubscription?: {
|
|
uuid: string
|
|
ownerUuid: string
|
|
}
|
|
}): AccountDeletionRequestedEvent {
|
|
return {
|
|
type: 'ACCOUNT_DELETION_REQUESTED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createUserRegisteredEvent(dto: {
|
|
userUuid: string
|
|
email: string
|
|
protocolVersion: ProtocolVersion
|
|
}): UserRegisteredEvent {
|
|
return {
|
|
type: 'USER_REGISTERED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: dto.userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: dto,
|
|
}
|
|
}
|
|
|
|
createUserEmailChangedEvent(userUuid: string, fromEmail: string, toEmail: string): UserEmailChangedEvent {
|
|
return {
|
|
type: 'USER_EMAIL_CHANGED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: {
|
|
userUuid,
|
|
fromEmail,
|
|
toEmail,
|
|
},
|
|
}
|
|
}
|
|
|
|
createUserRolesChangedEvent(userUuid: string, email: string, currentRoles: string[]): UserRolesChangedEvent {
|
|
return {
|
|
type: 'USER_ROLES_CHANGED',
|
|
createdAt: this.timer.getUTCDate(),
|
|
meta: {
|
|
correlation: {
|
|
userIdentifier: userUuid,
|
|
userIdentifierType: 'uuid',
|
|
},
|
|
origin: DomainEventService.Auth,
|
|
},
|
|
payload: {
|
|
userUuid,
|
|
email,
|
|
currentRoles,
|
|
timestamp: this.timer.getTimestampInMicroseconds(),
|
|
},
|
|
}
|
|
}
|
|
}
|