@defra/forms-model 3.0.708 → 3.0.709

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.
@@ -30,9 +30,18 @@ export const formOutputMessageData = Joi.object().keys({
30
30
  version: Joi.string().trim().required().description('Version identifier of the output format'),
31
31
  condition: Joi.string().trim().allow('').optional().description('Id of the condition determining whether the submission is sent to this address')
32
32
  }).description('A submission email target as recorded on an audit event');
33
+ export const formOutputChangesMessageData = Joi.object().keys({
34
+ added: Joi.array().items(formOutputMessageData).optional(),
35
+ updated: Joi.array().items(Joi.object().keys({
36
+ previous: formOutputMessageData.required(),
37
+ new: formOutputMessageData.required()
38
+ })).optional(),
39
+ removed: Joi.array().items(formOutputMessageData).optional()
40
+ }).or('added', 'updated', 'removed').description("Changes an update made to the form's submission email targets (outputs)");
33
41
  export const formUpdatedMessageData = formMessageDataBase.append({
34
42
  requestType: Joi.string().valid(...Object.values(FormDefinitionRequestType)).required(),
35
- s3Meta: formDefinitionS3Meta.optional()
43
+ s3Meta: formDefinitionS3Meta.optional(),
44
+ outputChanges: formOutputChangesMessageData.optional()
36
45
  }).required();
37
46
  export const formsBackupRequestedMessageData = Joi.object().keys({
38
47
  totalForms: Joi.number().integer().min(0).required(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageSource","AuditEventMessageType","FormDefinitionRequestType","emailAddressNoUnicodeSchema","contactSchema","emailResponseTimeSchema","idSchema","notificationEmailAddressSchema","offlineSchema","onlineTextSchema","onlineUrlSchema","organisationSchema","phoneSchema","privacyNoticeTextSchema","privacyNoticeTypeSchema","privacyNoticeUrlSchema","slugSchema","submissionGuidanceSchema","teamEmailSchema","teamNameSchema","termsAndConditionsAgreedSchema","titleSchema","formMessageDataBase","object","formId","slug","payload","optional","required","description","formCreatedMessageData","append","title","organisation","teamName","teamEmail","formDefinitionS3Meta","keys","fileId","string","filename","s3Key","formOutputMessageData","emailAddress","audience","trim","valid","version","condition","allow","formUpdatedMessageData","requestType","Object","values","s3Meta","formsBackupRequestedMessageData","totalForms","number","integer","min","durationMs","formsSecretDeletedMessageData","secretName","formsSecretSavedMessageData","dlqActionMessageData","action","messageId","beforeJson","afterJson","formTitleChanges","formOrganisationChanges","formTeamNameChanges","formTeamEmailChanges","formSupportContactChanges","contact","formSupportPhoneChanges","phone","formSupportOnlineChanges","url","text","formSupportEmailChanges","address","responseTime","formPrivacyNoticeChanges","privacyNoticeType","privacyNoticeText","when","is","then","otherwise","privacyNoticeUrl","formTermsAndConditionsChanges","termsAndConditionsAgreed","formNotificationEmailChanges","notificationEmail","formSubmissionGuidanceChanges","submissionGuidance","formUploadedChanges","value","formOfflineChanges","offline","entitlementMessageData","userId","displayName","email","roles","array","items","formFileDownloadedMessageData","fileLink","excelGenerationMessageData","formName","authenticationMessageData","auditUserSchema","id","formChangesMessageData","schema","changes","previous","new","messageSchema","schemaVersion","category","source","type","entityId","traceId","createdAt","date","createdBy","data","switch","FORM_CREATED","FORM_TITLE_UPDATED","FORM_ORGANISATION_UPDATED","FORM_TEAM_NAME_UPDATED","FORM_TEAM_EMAIL_UPDATED","FORM_SUPPORT_CONTACT_UPDATED","FORM_SUPPORT_PHONE_UPDATED","FORM_SUPPORT_EMAIL_UPDATED","FORM_SUPPORT_ONLINE_UPDATED","FORM_PRIVACY_NOTICE_UPDATED","FORM_TERMS_AND_CONDITIONS_AGREED","FORM_NOTIFICATION_EMAIL_UPDATED","FORM_SUBMISSION_GUIDANCE_UPDATED","FORM_JSON_UPLOADED","FORM_UPDATED","ENTITLEMENT_CREATED","ENTITLEMENT_UPDATED","ENTITLEMENT_DELETED","FORM_DRAFT_DELETED","FORM_JSON_DOWNLOADED","AUTHENTICATION_LOGIN","AUTHENTICATION_LOGOUT_MANUAL","AUTHENTICATION_LOGOUT_AUTO","AUTHENTICATION_LOGOUT_DIFFERENT_DEVICE","FORM_FILE_DOWNLOAD_SUCCESS","FORM_FILE_DOWNLOAD_FAILURE","FORM_SUBMISSION_EXCEL_REQUESTED","FORM_CSAT_EXCEL_REQUESTED","PLATFORM_CSAT_EXCEL_REQUESTED","FORMS_BACKUP_REQUESTED","FORM_SECRET_DELETED","FORM_SECRET_SAVED","DLQ_ACTION","FORM_OFFLINE_UPDATED","forbidden","messageCreatedAt","auditEvent","message","auditRecord","uuid","recordCreatedAt"],"sources":["../../../../src/form/form-audit/index.ts"],"sourcesContent":["import Joi, { type ObjectSchema } from 'joi'\n\nimport {\n AuditEventMessageCategory,\n AuditEventMessageSchemaVersion,\n AuditEventMessageSource,\n AuditEventMessageType,\n FormDefinitionRequestType\n} from '~/src/form/form-audit/enums.js'\nimport {\n type AuditEvent,\n type AuditMessage,\n type AuditRecord,\n type AuditUser,\n type AuthenticationMessageData,\n type ChangesMessageData,\n type DlqActionMessageData,\n type EntitlementMessageData,\n type ExcelGenerationMessageData,\n type FormCreatedMessageData,\n type FormDefinitionS3Meta,\n type FormFileDownloadedMessageData,\n type FormMessageChangesData,\n type FormMessageDataBase,\n type FormNotificationEmailChanges,\n type FormNotificationEmailUpdatedMessageData,\n type FormOfflineChanges,\n type FormOfflineUpdatedMessageData,\n type FormOrganisationChanges,\n type FormOrganisationUpdatedMessageData,\n type FormPrivacyNoticeChanges,\n type FormPrivacyNoticeUpdatedMessageData,\n type FormSecretBaseMessageData,\n type FormSubmissionGuidanceChanges,\n type FormSubmissionGuidanceUpdatedMessageData,\n type FormSupportContactChanges,\n type FormSupportContactUpdatedMessageData,\n type FormSupportEmailChanges,\n type FormSupportEmailUpdatedMessageData,\n type FormSupportOnlineChanges,\n type FormSupportOnlineUpdatedMessageData,\n type FormSupportPhoneChanges,\n type FormSupportPhoneUpdatedMessageData,\n type FormTeamEmailChanges,\n type FormTeamEmailUpdatedMessageData,\n type FormTeamNameChanges,\n type FormTeamNameUpdatedMessageData,\n type FormTermsAndConditionsAgreedMessageData,\n type FormTermsAndConditionsChanges,\n type FormTitleChanges,\n type FormTitleUpdatedMessageData,\n type FormUpdatedMessageData,\n type FormUploadedChanges,\n type FormUploadedMessageData,\n type FormsBackupRequestedMessageData\n} from '~/src/form/form-audit/types.js'\nimport { type Output } from '~/src/form/form-definition/types.js'\nimport { emailAddressNoUnicodeSchema } from '~/src/form/form-editor/index.js'\nimport {\n contactSchema,\n emailResponseTimeSchema,\n idSchema,\n notificationEmailAddressSchema,\n offlineSchema,\n onlineTextSchema,\n onlineUrlSchema,\n organisationSchema,\n phoneSchema,\n privacyNoticeTextSchema,\n privacyNoticeTypeSchema,\n privacyNoticeUrlSchema,\n slugSchema,\n submissionGuidanceSchema,\n teamEmailSchema,\n teamNameSchema,\n termsAndConditionsAgreedSchema,\n titleSchema\n} from '~/src/form/form-metadata/index.js'\n\nexport const formMessageDataBase = Joi.object<FormMessageDataBase>({\n formId: idSchema,\n slug: slugSchema,\n payload: Joi.object().optional()\n})\n .required()\n .description('The base data object for Form Messages')\n\nexport const formCreatedMessageData = formMessageDataBase\n .append<FormCreatedMessageData>({\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema\n })\n .required()\n .description('Message data schema for when a form is created')\n\nexport const formDefinitionS3Meta = Joi.object<FormDefinitionS3Meta>()\n .keys({\n fileId: Joi.string().required(),\n filename: Joi.string().required(),\n s3Key: Joi.string().required()\n })\n .description('Schema for form data S3 object in message')\n\n/**\n * Stands apart from the definition's own output schema, which resolves a\n * condition against the sibling `conditions` array - a lookup that has no\n * meaning on an audit message carrying the output on its own.\n */\nexport const formOutputMessageData = Joi.object<Output>()\n .keys({\n emailAddress: emailAddressNoUnicodeSchema\n .required()\n .description('Email address the submission is sent to'),\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Whether the submission is sent human readable or machine processable'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier of the output format'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Id of the condition determining whether the submission is sent to this address'\n )\n })\n .description('A submission email target as recorded on an audit event')\n\nexport const formUpdatedMessageData = formMessageDataBase\n .append<FormUpdatedMessageData>({\n requestType: Joi.string()\n .valid(...Object.values(FormDefinitionRequestType))\n .required(),\n s3Meta: formDefinitionS3Meta.optional()\n })\n .required()\n\nexport const formsBackupRequestedMessageData =\n Joi.object<FormsBackupRequestedMessageData>().keys({\n totalForms: Joi.number().integer().min(0).required(),\n durationMs: Joi.number().min(0).required()\n })\n\nexport const formsSecretDeletedMessageData =\n formMessageDataBase.append<FormSecretBaseMessageData>({\n secretName: Joi.string().required()\n })\n\nexport const formsSecretSavedMessageData =\n formMessageDataBase.append<FormSecretBaseMessageData>({\n secretName: Joi.string().required()\n })\n\nexport const dlqActionMessageData = Joi.object<DlqActionMessageData>().keys({\n action: Joi.string()\n .valid('redrive', 'delete', 'modify-and-resubmit')\n .required(),\n messageId: Joi.string().optional(),\n beforeJson: Joi.string().optional(),\n afterJson: Joi.string().optional()\n})\n\nexport const formTitleChanges = Joi.object<FormTitleChanges>()\n .keys({\n title: titleSchema\n })\n .required()\n .description('Changes schema for FORM_TITLE_UPDATED event')\n\nexport const formOrganisationChanges = Joi.object<FormOrganisationChanges>()\n .keys({\n organisation: organisationSchema\n })\n .required()\n .description('Changes schema for FORM_ORGANISATION_UPDATED event')\n\nexport const formTeamNameChanges = Joi.object<FormTeamNameChanges>()\n .keys({\n teamName: teamNameSchema\n })\n .required()\n .description('Changes schema for FORM_TEAM_NAME_UPDATED event')\n\nexport const formTeamEmailChanges = Joi.object<FormTeamEmailChanges>()\n .keys({\n teamEmail: teamEmailSchema\n })\n .required()\n .description('Changes schema for FORM_TEAM_EMAIL_UPDATED event')\n\nexport const formSupportContactChanges = Joi.object<FormSupportContactChanges>()\n .keys({\n contact: contactSchema\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_CONTACT_UPDATED event')\n\nexport const formSupportPhoneChanges = Joi.object<FormSupportPhoneChanges>()\n .keys({\n phone: phoneSchema\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_PHONE_UPDATED event')\n\nexport const formSupportOnlineChanges = Joi.object<FormSupportOnlineChanges>()\n .keys({\n url: onlineUrlSchema.optional(),\n text: onlineTextSchema.optional()\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_ONLINE_UPDATED event')\n\nexport const formSupportEmailChanges = Joi.object<FormSupportEmailChanges>()\n .keys({\n address: emailAddressNoUnicodeSchema.optional(),\n responseTime: emailResponseTimeSchema.optional()\n })\n .description('Changes schema for FORM_SUPPORT_EMAIL_UPDATED event')\n\nexport const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()\n .keys({\n privacyNoticeType: privacyNoticeTypeSchema,\n privacyNoticeText: Joi.when('privacyNoticeType', {\n is: 'text',\n then: privacyNoticeTextSchema,\n otherwise: privacyNoticeTextSchema.allow('')\n }),\n privacyNoticeUrl: Joi.when('privacyNoticeType', {\n is: 'link',\n then: privacyNoticeUrlSchema,\n otherwise: privacyNoticeUrlSchema.allow('')\n })\n })\n .required()\n .description('Changes schema for FORM_PRIVACY_NOTICE_UPDATED event')\n\nexport const formTermsAndConditionsChanges =\n Joi.object<FormTermsAndConditionsChanges>()\n .keys({\n termsAndConditionsAgreed: termsAndConditionsAgreedSchema\n })\n .required()\n .description('Changes schema for FORM_TERMS_AND_CONDITIONS_AGREED event')\n\nexport const formNotificationEmailChanges =\n Joi.object<FormNotificationEmailChanges>()\n .keys({\n notificationEmail: notificationEmailAddressSchema\n })\n .required()\n .description('Changes schema for FORM_NOTIFICATION_EMAIL_UPDATED event')\n\nexport const formSubmissionGuidanceChanges =\n Joi.object<FormSubmissionGuidanceChanges>()\n .keys({\n submissionGuidance: submissionGuidanceSchema\n })\n .required()\n .description('Changes schema for FORM_SUBMISSION_GUIDANCE_UPDATED event')\n\nexport const formUploadedChanges = Joi.object<FormUploadedChanges>()\n .keys({\n value: Joi.string().required()\n })\n .required()\n .description('Changes schema for FORM_JSON_UPLOADED event')\n\nexport const formOfflineChanges = Joi.object<FormOfflineChanges>()\n .keys({\n offline: offlineSchema\n })\n .required()\n .description('Changes schema for FORM_OFFLINE_UPDATED event')\n\nexport const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(\n {\n userId: Joi.string().required(),\n displayName: Joi.string().required(),\n email: emailAddressNoUnicodeSchema.required(),\n roles: Joi.array().items(Joi.string())\n }\n)\n\nexport const formFileDownloadedMessageData =\n Joi.object<FormFileDownloadedMessageData>()\n .keys({\n fileId: Joi.string().required(),\n filename: Joi.string().required(),\n fileLink: Joi.string().required()\n })\n .required()\n .description(\n 'Schema for FORM_FILE_DOWNLOAD_SUCCESS and FORM_FILE_DOWNLOAD_FAILURE events'\n )\n\nexport const excelGenerationMessageData =\n Joi.object<ExcelGenerationMessageData>()\n .keys({\n formId: Joi.string().required(),\n formName: Joi.string().required(),\n notificationEmail: emailAddressNoUnicodeSchema.required()\n })\n .required()\n .description(\n 'Schema for Excel generation audit events (submissions and CSAT)'\n )\n\nexport const authenticationMessageData =\n Joi.object<AuthenticationMessageData>().keys({\n userId: Joi.string().required(),\n displayName: Joi.string().required()\n })\n\nexport const auditUserSchema = Joi.object<AuditUser>()\n .keys({\n id: Joi.string().required(),\n displayName: Joi.string().required()\n })\n .description('Schema for CREATED_BY audit event')\n\nexport function formChangesMessageData<T, U extends FormMessageChangesData>(\n schema: ObjectSchema<T>\n): ObjectSchema<U> {\n return formMessageDataBase.append<U>({\n changes: Joi.object<ChangesMessageData<T>>()\n .keys({\n previous: schema,\n new: schema\n })\n .description('Changes schema')\n })\n}\n\nexport const messageSchema = Joi.object<AuditMessage>()\n .keys({\n schemaVersion: Joi.string()\n .valid(...Object.values(AuditEventMessageSchemaVersion))\n .required()\n .description(\n 'The version of the AuditMessage - bumped with breaking changes'\n ),\n category: Joi.string()\n .valid(...Object.values(AuditEventMessageCategory))\n .required()\n .description('The message category - what does the entityId represent?'),\n source: Joi.string()\n .valid(...Object.values(AuditEventMessageSource))\n .required()\n .description('Source of the message - which service?'),\n type: Joi.string()\n .valid(...Object.values(AuditEventMessageType))\n .description('Event type'),\n entityId: Joi.string()\n .required()\n .description('The id of the entity the category relates to'),\n traceId: Joi.string()\n .optional()\n .description(\n 'Trace id of the event - to link events across multiple services'\n ),\n createdAt: Joi.date()\n .required()\n .description(\n 'The ISO timestamp where the action took place - should be the same as updated_at field in DB'\n ),\n createdBy: auditUserSchema\n .required()\n .description('The user who performed the action being audited'),\n data: Joi.when('type', {\n switch: [\n {\n is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),\n then: formCreatedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TITLE_UPDATED),\n then: formChangesMessageData<\n FormTitleChanges,\n FormTitleUpdatedMessageData\n >(formTitleChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_ORGANISATION_UPDATED),\n then: formChangesMessageData<\n FormOrganisationChanges,\n FormOrganisationUpdatedMessageData\n >(formOrganisationChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TEAM_NAME_UPDATED),\n then: formChangesMessageData<\n FormTeamNameChanges,\n FormTeamNameUpdatedMessageData\n >(formTeamNameChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED),\n then: formChangesMessageData<\n FormTeamEmailChanges,\n FormTeamEmailUpdatedMessageData\n >(formTeamEmailChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED),\n then: formChangesMessageData<\n FormSupportContactChanges,\n FormSupportContactUpdatedMessageData\n >(formSupportContactChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED),\n then: formChangesMessageData<\n FormSupportPhoneChanges,\n FormSupportPhoneUpdatedMessageData\n >(formSupportPhoneChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),\n then: formChangesMessageData<\n FormSupportEmailChanges,\n FormSupportEmailUpdatedMessageData\n >(formSupportEmailChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED),\n then: formChangesMessageData<\n FormSupportOnlineChanges,\n FormSupportOnlineUpdatedMessageData\n >(formSupportOnlineChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED),\n then: formChangesMessageData<\n FormPrivacyNoticeChanges,\n FormPrivacyNoticeUpdatedMessageData\n >(formPrivacyNoticeChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TERMS_AND_CONDITIONS_AGREED),\n then: formChangesMessageData<\n FormTermsAndConditionsChanges,\n FormTermsAndConditionsAgreedMessageData\n >(formTermsAndConditionsChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED),\n then: formChangesMessageData<\n FormNotificationEmailChanges,\n FormNotificationEmailUpdatedMessageData\n >(formNotificationEmailChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED),\n then: formChangesMessageData<\n FormSubmissionGuidanceChanges,\n FormSubmissionGuidanceUpdatedMessageData\n >(formSubmissionGuidanceChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_JSON_UPLOADED),\n then: formChangesMessageData<\n FormUploadedChanges,\n FormUploadedMessageData\n >(formUploadedChanges)\n },\n {\n is: Joi.string().trim().valid(AuditEventMessageType.FORM_UPDATED),\n then: formUpdatedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.ENTITLEMENT_CREATED,\n AuditEventMessageType.ENTITLEMENT_UPDATED,\n AuditEventMessageType.ENTITLEMENT_DELETED\n ),\n then: entitlementMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_DRAFT_DELETED),\n then: formMessageDataBase\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_JSON_DOWNLOADED),\n then: formMessageDataBase\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.AUTHENTICATION_LOGIN,\n AuditEventMessageType.AUTHENTICATION_LOGOUT_MANUAL,\n AuditEventMessageType.AUTHENTICATION_LOGOUT_AUTO,\n AuditEventMessageType.AUTHENTICATION_LOGOUT_DIFFERENT_DEVICE\n ),\n then: authenticationMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.FORM_FILE_DOWNLOAD_SUCCESS,\n AuditEventMessageType.FORM_FILE_DOWNLOAD_FAILURE\n ),\n then: formFileDownloadedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.FORM_SUBMISSION_EXCEL_REQUESTED,\n AuditEventMessageType.FORM_CSAT_EXCEL_REQUESTED,\n AuditEventMessageType.PLATFORM_CSAT_EXCEL_REQUESTED\n ),\n then: excelGenerationMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORMS_BACKUP_REQUESTED),\n then: formsBackupRequestedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SECRET_DELETED),\n then: formsSecretDeletedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SECRET_SAVED),\n then: formsSecretSavedMessageData\n },\n {\n is: Joi.string().trim().valid(AuditEventMessageType.DLQ_ACTION),\n then: dlqActionMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_OFFLINE_UPDATED),\n then: formChangesMessageData<\n FormOfflineChanges,\n FormOfflineUpdatedMessageData\n >(formOfflineChanges)\n }\n ],\n otherwise: Joi.forbidden()\n }).description('The data/payload of the audit message'),\n messageCreatedAt: Joi.date()\n .required()\n .description('ISO timestamp when the message was published')\n })\n .required()\n .description('The audit message issued by the publishing service')\n\nexport const auditEvent = Joi.object<AuditEvent>()\n .keys({\n message: messageSchema\n })\n .description('The Body of the audit event')\n\nexport const auditRecord = messageSchema\n .append<AuditRecord>({\n id: idSchema,\n messageId: Joi.string().uuid().required(),\n entityId: Joi.string().required(),\n recordCreatedAt: Joi.date().required()\n })\n .description('The audit record persisted into the DB')\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Joi","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageSource","AuditEventMessageType","FormDefinitionRequestType","emailAddressNoUnicodeSchema","contactSchema","emailResponseTimeSchema","idSchema","notificationEmailAddressSchema","offlineSchema","onlineTextSchema","onlineUrlSchema","organisationSchema","phoneSchema","privacyNoticeTextSchema","privacyNoticeTypeSchema","privacyNoticeUrlSchema","slugSchema","submissionGuidanceSchema","teamEmailSchema","teamNameSchema","termsAndConditionsAgreedSchema","titleSchema","formMessageDataBase","object","formId","slug","payload","optional","required","description","formCreatedMessageData","append","title","organisation","teamName","teamEmail","formDefinitionS3Meta","keys","fileId","string","filename","s3Key","formOutputMessageData","emailAddress","audience","trim","valid","version","condition","allow","formOutputChangesMessageData","added","array","items","updated","previous","new","removed","or","formUpdatedMessageData","requestType","Object","values","s3Meta","outputChanges","formsBackupRequestedMessageData","totalForms","number","integer","min","durationMs","formsSecretDeletedMessageData","secretName","formsSecretSavedMessageData","dlqActionMessageData","action","messageId","beforeJson","afterJson","formTitleChanges","formOrganisationChanges","formTeamNameChanges","formTeamEmailChanges","formSupportContactChanges","contact","formSupportPhoneChanges","phone","formSupportOnlineChanges","url","text","formSupportEmailChanges","address","responseTime","formPrivacyNoticeChanges","privacyNoticeType","privacyNoticeText","when","is","then","otherwise","privacyNoticeUrl","formTermsAndConditionsChanges","termsAndConditionsAgreed","formNotificationEmailChanges","notificationEmail","formSubmissionGuidanceChanges","submissionGuidance","formUploadedChanges","value","formOfflineChanges","offline","entitlementMessageData","userId","displayName","email","roles","formFileDownloadedMessageData","fileLink","excelGenerationMessageData","formName","authenticationMessageData","auditUserSchema","id","formChangesMessageData","schema","changes","messageSchema","schemaVersion","category","source","type","entityId","traceId","createdAt","date","createdBy","data","switch","FORM_CREATED","FORM_TITLE_UPDATED","FORM_ORGANISATION_UPDATED","FORM_TEAM_NAME_UPDATED","FORM_TEAM_EMAIL_UPDATED","FORM_SUPPORT_CONTACT_UPDATED","FORM_SUPPORT_PHONE_UPDATED","FORM_SUPPORT_EMAIL_UPDATED","FORM_SUPPORT_ONLINE_UPDATED","FORM_PRIVACY_NOTICE_UPDATED","FORM_TERMS_AND_CONDITIONS_AGREED","FORM_NOTIFICATION_EMAIL_UPDATED","FORM_SUBMISSION_GUIDANCE_UPDATED","FORM_JSON_UPLOADED","FORM_UPDATED","ENTITLEMENT_CREATED","ENTITLEMENT_UPDATED","ENTITLEMENT_DELETED","FORM_DRAFT_DELETED","FORM_JSON_DOWNLOADED","AUTHENTICATION_LOGIN","AUTHENTICATION_LOGOUT_MANUAL","AUTHENTICATION_LOGOUT_AUTO","AUTHENTICATION_LOGOUT_DIFFERENT_DEVICE","FORM_FILE_DOWNLOAD_SUCCESS","FORM_FILE_DOWNLOAD_FAILURE","FORM_SUBMISSION_EXCEL_REQUESTED","FORM_CSAT_EXCEL_REQUESTED","PLATFORM_CSAT_EXCEL_REQUESTED","FORMS_BACKUP_REQUESTED","FORM_SECRET_DELETED","FORM_SECRET_SAVED","DLQ_ACTION","FORM_OFFLINE_UPDATED","forbidden","messageCreatedAt","auditEvent","message","auditRecord","uuid","recordCreatedAt"],"sources":["../../../../src/form/form-audit/index.ts"],"sourcesContent":["import Joi, { type ObjectSchema } from 'joi'\n\nimport {\n AuditEventMessageCategory,\n AuditEventMessageSchemaVersion,\n AuditEventMessageSource,\n AuditEventMessageType,\n FormDefinitionRequestType\n} from '~/src/form/form-audit/enums.js'\nimport {\n type AuditEvent,\n type AuditMessage,\n type AuditRecord,\n type AuditUser,\n type AuthenticationMessageData,\n type ChangesMessageData,\n type DlqActionMessageData,\n type EntitlementMessageData,\n type ExcelGenerationMessageData,\n type FormCreatedMessageData,\n type FormDefinitionS3Meta,\n type FormFileDownloadedMessageData,\n type FormMessageChangesData,\n type FormMessageDataBase,\n type FormNotificationEmailChanges,\n type FormNotificationEmailUpdatedMessageData,\n type FormOfflineChanges,\n type FormOfflineUpdatedMessageData,\n type FormOrganisationChanges,\n type FormOrganisationUpdatedMessageData,\n type FormOutputChanges,\n type FormPrivacyNoticeChanges,\n type FormPrivacyNoticeUpdatedMessageData,\n type FormSecretBaseMessageData,\n type FormSubmissionGuidanceChanges,\n type FormSubmissionGuidanceUpdatedMessageData,\n type FormSupportContactChanges,\n type FormSupportContactUpdatedMessageData,\n type FormSupportEmailChanges,\n type FormSupportEmailUpdatedMessageData,\n type FormSupportOnlineChanges,\n type FormSupportOnlineUpdatedMessageData,\n type FormSupportPhoneChanges,\n type FormSupportPhoneUpdatedMessageData,\n type FormTeamEmailChanges,\n type FormTeamEmailUpdatedMessageData,\n type FormTeamNameChanges,\n type FormTeamNameUpdatedMessageData,\n type FormTermsAndConditionsAgreedMessageData,\n type FormTermsAndConditionsChanges,\n type FormTitleChanges,\n type FormTitleUpdatedMessageData,\n type FormUpdatedMessageData,\n type FormUploadedChanges,\n type FormUploadedMessageData,\n type FormsBackupRequestedMessageData\n} from '~/src/form/form-audit/types.js'\nimport { type Output } from '~/src/form/form-definition/types.js'\nimport { emailAddressNoUnicodeSchema } from '~/src/form/form-editor/index.js'\nimport {\n contactSchema,\n emailResponseTimeSchema,\n idSchema,\n notificationEmailAddressSchema,\n offlineSchema,\n onlineTextSchema,\n onlineUrlSchema,\n organisationSchema,\n phoneSchema,\n privacyNoticeTextSchema,\n privacyNoticeTypeSchema,\n privacyNoticeUrlSchema,\n slugSchema,\n submissionGuidanceSchema,\n teamEmailSchema,\n teamNameSchema,\n termsAndConditionsAgreedSchema,\n titleSchema\n} from '~/src/form/form-metadata/index.js'\n\nexport const formMessageDataBase = Joi.object<FormMessageDataBase>({\n formId: idSchema,\n slug: slugSchema,\n payload: Joi.object().optional()\n})\n .required()\n .description('The base data object for Form Messages')\n\nexport const formCreatedMessageData = formMessageDataBase\n .append<FormCreatedMessageData>({\n title: titleSchema,\n organisation: organisationSchema,\n teamName: teamNameSchema,\n teamEmail: teamEmailSchema\n })\n .required()\n .description('Message data schema for when a form is created')\n\nexport const formDefinitionS3Meta = Joi.object<FormDefinitionS3Meta>()\n .keys({\n fileId: Joi.string().required(),\n filename: Joi.string().required(),\n s3Key: Joi.string().required()\n })\n .description('Schema for form data S3 object in message')\n\n/**\n * Stands apart from the definition's own output schema, which resolves a\n * condition against the sibling `conditions` array - a lookup that has no\n * meaning on an audit message carrying the output on its own.\n */\nexport const formOutputMessageData = Joi.object<Output>()\n .keys({\n emailAddress: emailAddressNoUnicodeSchema\n .required()\n .description('Email address the submission is sent to'),\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Whether the submission is sent human readable or machine processable'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier of the output format'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Id of the condition determining whether the submission is sent to this address'\n )\n })\n .description('A submission email target as recorded on an audit event')\n\nexport const formOutputChangesMessageData = Joi.object<FormOutputChanges>()\n .keys({\n added: Joi.array().items(formOutputMessageData).optional(),\n updated: Joi.array()\n .items(\n Joi.object<ChangesMessageData<Output>>().keys({\n previous: formOutputMessageData.required(),\n new: formOutputMessageData.required()\n })\n )\n .optional(),\n removed: Joi.array().items(formOutputMessageData).optional()\n })\n .or('added', 'updated', 'removed')\n .description(\n \"Changes an update made to the form's submission email targets (outputs)\"\n )\n\nexport const formUpdatedMessageData = formMessageDataBase\n .append<FormUpdatedMessageData>({\n requestType: Joi.string()\n .valid(...Object.values(FormDefinitionRequestType))\n .required(),\n s3Meta: formDefinitionS3Meta.optional(),\n outputChanges: formOutputChangesMessageData.optional()\n })\n .required()\n\nexport const formsBackupRequestedMessageData =\n Joi.object<FormsBackupRequestedMessageData>().keys({\n totalForms: Joi.number().integer().min(0).required(),\n durationMs: Joi.number().min(0).required()\n })\n\nexport const formsSecretDeletedMessageData =\n formMessageDataBase.append<FormSecretBaseMessageData>({\n secretName: Joi.string().required()\n })\n\nexport const formsSecretSavedMessageData =\n formMessageDataBase.append<FormSecretBaseMessageData>({\n secretName: Joi.string().required()\n })\n\nexport const dlqActionMessageData = Joi.object<DlqActionMessageData>().keys({\n action: Joi.string()\n .valid('redrive', 'delete', 'modify-and-resubmit')\n .required(),\n messageId: Joi.string().optional(),\n beforeJson: Joi.string().optional(),\n afterJson: Joi.string().optional()\n})\n\nexport const formTitleChanges = Joi.object<FormTitleChanges>()\n .keys({\n title: titleSchema\n })\n .required()\n .description('Changes schema for FORM_TITLE_UPDATED event')\n\nexport const formOrganisationChanges = Joi.object<FormOrganisationChanges>()\n .keys({\n organisation: organisationSchema\n })\n .required()\n .description('Changes schema for FORM_ORGANISATION_UPDATED event')\n\nexport const formTeamNameChanges = Joi.object<FormTeamNameChanges>()\n .keys({\n teamName: teamNameSchema\n })\n .required()\n .description('Changes schema for FORM_TEAM_NAME_UPDATED event')\n\nexport const formTeamEmailChanges = Joi.object<FormTeamEmailChanges>()\n .keys({\n teamEmail: teamEmailSchema\n })\n .required()\n .description('Changes schema for FORM_TEAM_EMAIL_UPDATED event')\n\nexport const formSupportContactChanges = Joi.object<FormSupportContactChanges>()\n .keys({\n contact: contactSchema\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_CONTACT_UPDATED event')\n\nexport const formSupportPhoneChanges = Joi.object<FormSupportPhoneChanges>()\n .keys({\n phone: phoneSchema\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_PHONE_UPDATED event')\n\nexport const formSupportOnlineChanges = Joi.object<FormSupportOnlineChanges>()\n .keys({\n url: onlineUrlSchema.optional(),\n text: onlineTextSchema.optional()\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_ONLINE_UPDATED event')\n\nexport const formSupportEmailChanges = Joi.object<FormSupportEmailChanges>()\n .keys({\n address: emailAddressNoUnicodeSchema.optional(),\n responseTime: emailResponseTimeSchema.optional()\n })\n .description('Changes schema for FORM_SUPPORT_EMAIL_UPDATED event')\n\nexport const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()\n .keys({\n privacyNoticeType: privacyNoticeTypeSchema,\n privacyNoticeText: Joi.when('privacyNoticeType', {\n is: 'text',\n then: privacyNoticeTextSchema,\n otherwise: privacyNoticeTextSchema.allow('')\n }),\n privacyNoticeUrl: Joi.when('privacyNoticeType', {\n is: 'link',\n then: privacyNoticeUrlSchema,\n otherwise: privacyNoticeUrlSchema.allow('')\n })\n })\n .required()\n .description('Changes schema for FORM_PRIVACY_NOTICE_UPDATED event')\n\nexport const formTermsAndConditionsChanges =\n Joi.object<FormTermsAndConditionsChanges>()\n .keys({\n termsAndConditionsAgreed: termsAndConditionsAgreedSchema\n })\n .required()\n .description('Changes schema for FORM_TERMS_AND_CONDITIONS_AGREED event')\n\nexport const formNotificationEmailChanges =\n Joi.object<FormNotificationEmailChanges>()\n .keys({\n notificationEmail: notificationEmailAddressSchema\n })\n .required()\n .description('Changes schema for FORM_NOTIFICATION_EMAIL_UPDATED event')\n\nexport const formSubmissionGuidanceChanges =\n Joi.object<FormSubmissionGuidanceChanges>()\n .keys({\n submissionGuidance: submissionGuidanceSchema\n })\n .required()\n .description('Changes schema for FORM_SUBMISSION_GUIDANCE_UPDATED event')\n\nexport const formUploadedChanges = Joi.object<FormUploadedChanges>()\n .keys({\n value: Joi.string().required()\n })\n .required()\n .description('Changes schema for FORM_JSON_UPLOADED event')\n\nexport const formOfflineChanges = Joi.object<FormOfflineChanges>()\n .keys({\n offline: offlineSchema\n })\n .required()\n .description('Changes schema for FORM_OFFLINE_UPDATED event')\n\nexport const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(\n {\n userId: Joi.string().required(),\n displayName: Joi.string().required(),\n email: emailAddressNoUnicodeSchema.required(),\n roles: Joi.array().items(Joi.string())\n }\n)\n\nexport const formFileDownloadedMessageData =\n Joi.object<FormFileDownloadedMessageData>()\n .keys({\n fileId: Joi.string().required(),\n filename: Joi.string().required(),\n fileLink: Joi.string().required()\n })\n .required()\n .description(\n 'Schema for FORM_FILE_DOWNLOAD_SUCCESS and FORM_FILE_DOWNLOAD_FAILURE events'\n )\n\nexport const excelGenerationMessageData =\n Joi.object<ExcelGenerationMessageData>()\n .keys({\n formId: Joi.string().required(),\n formName: Joi.string().required(),\n notificationEmail: emailAddressNoUnicodeSchema.required()\n })\n .required()\n .description(\n 'Schema for Excel generation audit events (submissions and CSAT)'\n )\n\nexport const authenticationMessageData =\n Joi.object<AuthenticationMessageData>().keys({\n userId: Joi.string().required(),\n displayName: Joi.string().required()\n })\n\nexport const auditUserSchema = Joi.object<AuditUser>()\n .keys({\n id: Joi.string().required(),\n displayName: Joi.string().required()\n })\n .description('Schema for CREATED_BY audit event')\n\nexport function formChangesMessageData<T, U extends FormMessageChangesData>(\n schema: ObjectSchema<T>\n): ObjectSchema<U> {\n return formMessageDataBase.append<U>({\n changes: Joi.object<ChangesMessageData<T>>()\n .keys({\n previous: schema,\n new: schema\n })\n .description('Changes schema')\n })\n}\n\nexport const messageSchema = Joi.object<AuditMessage>()\n .keys({\n schemaVersion: Joi.string()\n .valid(...Object.values(AuditEventMessageSchemaVersion))\n .required()\n .description(\n 'The version of the AuditMessage - bumped with breaking changes'\n ),\n category: Joi.string()\n .valid(...Object.values(AuditEventMessageCategory))\n .required()\n .description('The message category - what does the entityId represent?'),\n source: Joi.string()\n .valid(...Object.values(AuditEventMessageSource))\n .required()\n .description('Source of the message - which service?'),\n type: Joi.string()\n .valid(...Object.values(AuditEventMessageType))\n .description('Event type'),\n entityId: Joi.string()\n .required()\n .description('The id of the entity the category relates to'),\n traceId: Joi.string()\n .optional()\n .description(\n 'Trace id of the event - to link events across multiple services'\n ),\n createdAt: Joi.date()\n .required()\n .description(\n 'The ISO timestamp where the action took place - should be the same as updated_at field in DB'\n ),\n createdBy: auditUserSchema\n .required()\n .description('The user who performed the action being audited'),\n data: Joi.when('type', {\n switch: [\n {\n is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),\n then: formCreatedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TITLE_UPDATED),\n then: formChangesMessageData<\n FormTitleChanges,\n FormTitleUpdatedMessageData\n >(formTitleChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_ORGANISATION_UPDATED),\n then: formChangesMessageData<\n FormOrganisationChanges,\n FormOrganisationUpdatedMessageData\n >(formOrganisationChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TEAM_NAME_UPDATED),\n then: formChangesMessageData<\n FormTeamNameChanges,\n FormTeamNameUpdatedMessageData\n >(formTeamNameChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED),\n then: formChangesMessageData<\n FormTeamEmailChanges,\n FormTeamEmailUpdatedMessageData\n >(formTeamEmailChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED),\n then: formChangesMessageData<\n FormSupportContactChanges,\n FormSupportContactUpdatedMessageData\n >(formSupportContactChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED),\n then: formChangesMessageData<\n FormSupportPhoneChanges,\n FormSupportPhoneUpdatedMessageData\n >(formSupportPhoneChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),\n then: formChangesMessageData<\n FormSupportEmailChanges,\n FormSupportEmailUpdatedMessageData\n >(formSupportEmailChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED),\n then: formChangesMessageData<\n FormSupportOnlineChanges,\n FormSupportOnlineUpdatedMessageData\n >(formSupportOnlineChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED),\n then: formChangesMessageData<\n FormPrivacyNoticeChanges,\n FormPrivacyNoticeUpdatedMessageData\n >(formPrivacyNoticeChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_TERMS_AND_CONDITIONS_AGREED),\n then: formChangesMessageData<\n FormTermsAndConditionsChanges,\n FormTermsAndConditionsAgreedMessageData\n >(formTermsAndConditionsChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED),\n then: formChangesMessageData<\n FormNotificationEmailChanges,\n FormNotificationEmailUpdatedMessageData\n >(formNotificationEmailChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED),\n then: formChangesMessageData<\n FormSubmissionGuidanceChanges,\n FormSubmissionGuidanceUpdatedMessageData\n >(formSubmissionGuidanceChanges)\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_JSON_UPLOADED),\n then: formChangesMessageData<\n FormUploadedChanges,\n FormUploadedMessageData\n >(formUploadedChanges)\n },\n {\n is: Joi.string().trim().valid(AuditEventMessageType.FORM_UPDATED),\n then: formUpdatedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.ENTITLEMENT_CREATED,\n AuditEventMessageType.ENTITLEMENT_UPDATED,\n AuditEventMessageType.ENTITLEMENT_DELETED\n ),\n then: entitlementMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_DRAFT_DELETED),\n then: formMessageDataBase\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_JSON_DOWNLOADED),\n then: formMessageDataBase\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.AUTHENTICATION_LOGIN,\n AuditEventMessageType.AUTHENTICATION_LOGOUT_MANUAL,\n AuditEventMessageType.AUTHENTICATION_LOGOUT_AUTO,\n AuditEventMessageType.AUTHENTICATION_LOGOUT_DIFFERENT_DEVICE\n ),\n then: authenticationMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.FORM_FILE_DOWNLOAD_SUCCESS,\n AuditEventMessageType.FORM_FILE_DOWNLOAD_FAILURE\n ),\n then: formFileDownloadedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(\n AuditEventMessageType.FORM_SUBMISSION_EXCEL_REQUESTED,\n AuditEventMessageType.FORM_CSAT_EXCEL_REQUESTED,\n AuditEventMessageType.PLATFORM_CSAT_EXCEL_REQUESTED\n ),\n then: excelGenerationMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORMS_BACKUP_REQUESTED),\n then: formsBackupRequestedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SECRET_DELETED),\n then: formsSecretDeletedMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_SECRET_SAVED),\n then: formsSecretSavedMessageData\n },\n {\n is: Joi.string().trim().valid(AuditEventMessageType.DLQ_ACTION),\n then: dlqActionMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.FORM_OFFLINE_UPDATED),\n then: formChangesMessageData<\n FormOfflineChanges,\n FormOfflineUpdatedMessageData\n >(formOfflineChanges)\n }\n ],\n otherwise: Joi.forbidden()\n }).description('The data/payload of the audit message'),\n messageCreatedAt: Joi.date()\n .required()\n .description('ISO timestamp when the message was published')\n })\n .required()\n .description('The audit message issued by the publishing service')\n\nexport const auditEvent = Joi.object<AuditEvent>()\n .keys({\n message: messageSchema\n })\n .description('The Body of the audit event')\n\nexport const auditRecord = messageSchema\n .append<AuditRecord>({\n id: idSchema,\n messageId: Joi.string().uuid().required(),\n entityId: Joi.string().required(),\n recordCreatedAt: Joi.date().required()\n })\n .description('The audit record persisted into the DB')\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Identifies a submission email target by its stored values. Unlike
3
+ * `getOutputKey`, which decides whether two outputs are duplicates of one
4
+ * another, this comparison is exact - changing only the case of an address is
5
+ * still a change worth recording against the form.
6
+ * @param output - submission email target
7
+ */
8
+ function getComparisonKey(output) {
9
+ return JSON.stringify([output.emailAddress, output.audience, output.version, output.condition ?? '']);
10
+ }
11
+ /**
12
+ * Works out what changed between two sets of submission email targets, in the
13
+ * shape the audit record expects.
14
+ *
15
+ * Outputs carry no id of their own, so an amendment cannot be spotted directly.
16
+ * An entry that disappears from a position while another appears at that same
17
+ * position is treated as an amendment rather than as an unrelated removal and
18
+ * addition - which is what the editor does when an author changes an existing
19
+ * email action. Anything left over is reported as a plain addition or removal,
20
+ * so a wholesale replacement (a JSON upload, say) still records honestly.
21
+ * @param previous - outputs before the update
22
+ * @param next - outputs after the update
23
+ * @returns the changes, or undefined when the outputs are untouched
24
+ */
25
+ export function getFormOutputChanges(previous, next) {
26
+ const previousOutputs = previous ?? [];
27
+ const nextOutputs = next ?? [];
28
+ const previousKeys = new Set(previousOutputs.map(getComparisonKey));
29
+ const nextKeys = new Set(nextOutputs.map(getComparisonKey));
30
+ const position = (output, index) => ({
31
+ output,
32
+ index
33
+ });
34
+ const removed = previousOutputs.map((o, i) => position(o, i)).filter(({
35
+ output
36
+ }) => !nextKeys.has(getComparisonKey(output)));
37
+ const added = nextOutputs.map((o, i) => position(o, i)).filter(({
38
+ output
39
+ }) => !previousKeys.has(getComparisonKey(output)));
40
+ const updated = removed.flatMap(before => {
41
+ const after = added.find(({
42
+ index
43
+ }) => index === before.index);
44
+ if (!after) {
45
+ return [];
46
+ }
47
+ return [{
48
+ previous: before.output,
49
+ new: after.output
50
+ }];
51
+ });
52
+ const pureAdditions = added.filter(({
53
+ index
54
+ }) => !removed.some(before => before.index === index)).map(({
55
+ output
56
+ }) => output);
57
+ const pureRemovals = removed.filter(({
58
+ index
59
+ }) => !added.some(after => after.index === index)).map(({
60
+ output
61
+ }) => output);
62
+ const changes = {};
63
+ if (pureAdditions.length) {
64
+ changes.added = pureAdditions;
65
+ }
66
+ if (updated.length) {
67
+ changes.updated = updated;
68
+ }
69
+ if (pureRemovals.length) {
70
+ changes.removed = pureRemovals;
71
+ }
72
+ return Object.keys(changes).length ? changes : undefined;
73
+ }
74
+ //# sourceMappingURL=output-changes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-changes.js","names":["getComparisonKey","output","JSON","stringify","emailAddress","audience","version","condition","getFormOutputChanges","previous","next","previousOutputs","nextOutputs","previousKeys","Set","map","nextKeys","position","index","removed","o","i","filter","has","added","updated","flatMap","before","after","find","new","pureAdditions","some","pureRemovals","changes","length","Object","keys","undefined"],"sources":["../../../../src/form/form-audit/output-changes.ts"],"sourcesContent":["import { type FormOutputChanges } from '~/src/form/form-audit/types.js'\nimport { type Output } from '~/src/form/form-definition/types.js'\n\n/**\n * Identifies a submission email target by its stored values. Unlike\n * `getOutputKey`, which decides whether two outputs are duplicates of one\n * another, this comparison is exact - changing only the case of an address is\n * still a change worth recording against the form.\n * @param output - submission email target\n */\nfunction getComparisonKey(output: Output): string {\n return JSON.stringify([\n output.emailAddress,\n output.audience,\n output.version,\n output.condition ?? ''\n ])\n}\n\ninterface PositionedOutput {\n output: Output\n index: number\n}\n\n/**\n * Works out what changed between two sets of submission email targets, in the\n * shape the audit record expects.\n *\n * Outputs carry no id of their own, so an amendment cannot be spotted directly.\n * An entry that disappears from a position while another appears at that same\n * position is treated as an amendment rather than as an unrelated removal and\n * addition - which is what the editor does when an author changes an existing\n * email action. Anything left over is reported as a plain addition or removal,\n * so a wholesale replacement (a JSON upload, say) still records honestly.\n * @param previous - outputs before the update\n * @param next - outputs after the update\n * @returns the changes, or undefined when the outputs are untouched\n */\nexport function getFormOutputChanges(\n previous: Output[] | undefined,\n next: Output[] | undefined\n): FormOutputChanges | undefined {\n const previousOutputs = previous ?? []\n const nextOutputs = next ?? []\n\n const previousKeys = new Set(previousOutputs.map(getComparisonKey))\n const nextKeys = new Set(nextOutputs.map(getComparisonKey))\n\n const position = (output: Output, index: number): PositionedOutput => ({\n output,\n index\n })\n\n const removed: PositionedOutput[] = previousOutputs\n .map((o, i) => position(o, i))\n .filter(({ output }) => !nextKeys.has(getComparisonKey(output)))\n\n const added: PositionedOutput[] = nextOutputs\n .map((o, i) => position(o, i))\n .filter(({ output }) => !previousKeys.has(getComparisonKey(output)))\n\n const updated = removed.flatMap((before) => {\n const after = added.find(({ index }) => index === before.index)\n\n if (!after) {\n return []\n }\n\n return [{ previous: before.output, new: after.output }]\n })\n\n const pureAdditions = added\n .filter(({ index }) => !removed.some((before) => before.index === index))\n .map(({ output }) => output)\n\n const pureRemovals = removed\n .filter(({ index }) => !added.some((after) => after.index === index))\n .map(({ output }) => output)\n\n const changes: FormOutputChanges = {}\n\n if (pureAdditions.length) {\n changes.added = pureAdditions\n }\n\n if (updated.length) {\n changes.updated = updated\n }\n\n if (pureRemovals.length) {\n changes.removed = pureRemovals\n }\n\n return Object.keys(changes).length ? changes : undefined\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-audit/types.ts"],"sourcesContent":["import {\n type AuditEventMessageCategory,\n type AuditEventMessageSchemaVersion,\n type AuditEventMessageSource,\n type AuditEventMessageType,\n type FormDefinitionRequestType\n} from '~/src/form/form-audit/enums.js'\nimport { type FormMetadataContact } from '~/src/form/form-metadata/types.js'\n\nexport interface FormMessageDataBase {\n formId: string\n slug: string\n payload?: unknown\n}\n\nexport interface ChangesMessageData<T> {\n previous: T\n new: T\n}\n\nexport interface FormCreatedMessageData extends FormMessageDataBase {\n title: string\n organisation: string\n teamName: string\n teamEmail: string\n}\n\nexport interface FormTitleChanges {\n title: string\n}\n\nexport interface FormOrganisationChanges {\n organisation: string\n}\n\nexport interface FormTeamNameChanges {\n teamName: string\n}\n\nexport interface FormTeamEmailChanges {\n teamEmail: string\n}\n\nexport interface FormSupportContactChanges {\n contact?: FormMetadataContact\n}\n\nexport interface FormSupportPhoneChanges {\n phone?: string\n}\n\nexport interface FormSupportEmailChanges {\n address?: string\n responseTime?: string\n}\n\nexport interface FormSupportOnlineChanges {\n url?: string\n text?: string\n}\n\nexport interface FormPrivacyNoticeChanges {\n privacyNoticeType?: string\n privacyNoticeText?: string\n privacyNoticeUrl?: string\n}\n\nexport interface FormTermsAndConditionsChanges {\n termsAndConditionsAgreed?: boolean\n}\n\nexport interface FormNotificationEmailChanges {\n notificationEmail?: string\n}\n\nexport interface FormSubmissionGuidanceChanges {\n submissionGuidance?: string\n}\n\nexport interface FormUploadedChanges {\n value: string\n}\n\nexport interface FormOfflineChanges {\n offline: boolean\n}\n\nexport interface FormTitleUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTitleChanges>\n}\n\nexport interface FormOrganisationUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormOrganisationChanges>\n}\n\nexport interface FormTeamNameUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamNameChanges>\n}\n\nexport interface FormTeamEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamEmailChanges>\n}\n\nexport interface FormSupportContactUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportContactChanges>\n}\n\nexport interface FormSupportPhoneUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportPhoneChanges>\n}\n\nexport interface FormSupportEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportEmailChanges>\n}\n\nexport interface FormSupportOnlineUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportOnlineChanges>\n}\n\nexport interface FormPrivacyNoticeUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormPrivacyNoticeChanges>\n}\n\nexport interface FormTermsAndConditionsAgreedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTermsAndConditionsChanges>\n}\n\nexport interface FormNotificationEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormNotificationEmailChanges>\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSubmissionGuidanceChanges>\n}\n\nexport interface FormUploadedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormUploadedChanges>\n}\n\nexport interface FormOfflineUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormOfflineChanges>\n}\n\nexport interface FormFileDownloadedMessageData {\n fileId: string\n filename: string\n fileLink: string\n}\n\nexport interface ExcelGenerationMessageData {\n formId: string\n formName: string\n notificationEmail: string\n}\n\nexport interface FormSecretBaseMessageData extends FormMessageDataBase {\n formId: string\n slug: string\n secretName: string\n}\n\nexport interface FormDefinitionS3Meta {\n fileId: string\n filename: string\n s3Key: string\n}\n\nexport interface FormUpdatedMessageData extends FormMessageDataBase {\n requestType: FormDefinitionRequestType\n s3Meta?: FormDefinitionS3Meta\n}\n\nexport type FormMessageChangesData =\n | FormTitleUpdatedMessageData\n | FormOrganisationUpdatedMessageData\n | FormTeamNameUpdatedMessageData\n | FormTeamEmailUpdatedMessageData\n | FormSupportContactUpdatedMessageData\n | FormSupportPhoneUpdatedMessageData\n | FormSupportEmailUpdatedMessageData\n | FormSupportOnlineUpdatedMessageData\n | FormPrivacyNoticeUpdatedMessageData\n | FormTermsAndConditionsAgreedMessageData\n | FormNotificationEmailUpdatedMessageData\n | FormSubmissionGuidanceUpdatedMessageData\n | FormUploadedMessageData\n | FormOfflineUpdatedMessageData\n\nexport type FormMessageActivitiesData =\n | FormCreatedMessageData\n | FormMessageDataBase\n | FormFileDownloadedMessageData\n\nexport interface EntitlementMessageData {\n userId: string\n displayName: string\n email: string\n roles: string[]\n}\n\nexport interface AuthenticationMessageData {\n userId: string\n displayName: string\n}\n\nexport interface AuditUser {\n id: string\n displayName: string\n}\n\nexport interface FormsBackupRequestedMessageData {\n totalForms: number\n durationMs: number\n}\n\nexport interface DlqActionMessageData {\n action: string\n messageId?: string\n beforeJson?: string\n afterJson?: string\n}\n\nexport type MessageData =\n | FormMessageChangesData\n | FormMessageActivitiesData\n | FormUpdatedMessageData\n | EntitlementMessageData\n | AuthenticationMessageData\n | ExcelGenerationMessageData\n | FormFileDownloadedMessageData\n | FormsBackupRequestedMessageData\n | FormSecretBaseMessageData\n | DlqActionMessageData\n\nexport interface MessageBase {\n schemaVersion: AuditEventMessageSchemaVersion\n category: AuditEventMessageCategory\n source: AuditEventMessageSource\n type: AuditEventMessageType\n entityId: string\n traceId?: string\n createdAt: Date\n createdBy: AuditUser\n data?: MessageData\n messageCreatedAt: Date\n}\n\nexport interface ManagerMessageBase extends MessageBase {\n source: AuditEventMessageSource.FORMS_MANAGER\n}\nexport interface DesignerMessageBase extends MessageBase {\n source: AuditEventMessageSource.FORMS_DESIGNER\n}\n\nexport interface EntitlementMessageBase extends MessageBase {\n source: AuditEventMessageSource.ENTITLEMENT\n}\n\nexport interface AuthenticationMessageBase extends MessageBase {\n source: AuditEventMessageSource.AUTHENTICATION\n}\n\nexport interface FormCreatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_CREATED\n data: FormCreatedMessageData\n}\n\nexport interface FormTitleUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TITLE_UPDATED\n data: FormTitleUpdatedMessageData\n}\n\nexport interface FormOrganisationUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_ORGANISATION_UPDATED\n data: FormOrganisationUpdatedMessageData\n}\n\nexport interface FormTeamNameUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_NAME_UPDATED\n data: FormTeamNameUpdatedMessageData\n}\n\nexport interface FormTeamEmailUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED\n data: FormTeamEmailUpdatedMessageData\n}\n\nexport interface FormSupportContactUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED\n data: FormSupportContactUpdatedMessageData\n}\n\nexport interface FormSupportPhoneUpdatedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED\n data: FormSupportPhoneUpdatedMessageData\n}\n\nexport interface FormSupportEmailUpdatedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED\n data: FormSupportEmailUpdatedMessageData\n}\n\nexport interface FormSupportOnlineUpdatedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED\n data: FormSupportOnlineUpdatedMessageData\n}\n\nexport interface FormPrivacyNoticeUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormPrivacyNoticeUpdatedMessageData\n}\n\nexport interface FormTermsAndConditionsAgreedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TERMS_AND_CONDITIONS_AGREED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormTermsAndConditionsAgreedMessageData\n}\n\nexport interface FormNotificationEmailUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormNotificationEmailUpdatedMessageData\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormSubmissionGuidanceUpdatedMessageData\n}\n\nexport interface FormUploadedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_UPLOADED\n data: FormUploadedMessageData\n}\n\nexport interface FormDownloadedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_DOWNLOADED\n data: FormMessageDataBase\n}\n\nexport interface FormFileDownloadSuccessMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_FILE_DOWNLOAD_SUCCESS\n data: FormFileDownloadedMessageData\n}\n\nexport interface FormFileDownloadFailureMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_FILE_DOWNLOAD_FAILURE\n data: FormFileDownloadedMessageData\n}\n\nexport interface FormDraftCreatedFromLiveMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE\n}\n\nexport interface FormLiveCreatedFromDraftMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT\n}\n\nexport interface FormDraftDeletedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_DELETED\n}\n\nexport interface FormMigratedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_MIGRATED\n}\n\nexport interface FormUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_UPDATED\n data: FormUpdatedMessageData\n}\n\nexport interface FormOfflineUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_OFFLINE_UPDATED\n data: FormOfflineUpdatedMessageData\n}\n\nexport interface EntitlementCreatedMessage extends EntitlementMessageBase {\n category: AuditEventMessageCategory.ENTITLEMENT\n type: AuditEventMessageType.ENTITLEMENT_CREATED\n data: EntitlementMessageData\n}\n\nexport interface EntitlementUpdatedMessage extends EntitlementMessageBase {\n category: AuditEventMessageCategory.ENTITLEMENT\n type: AuditEventMessageType.ENTITLEMENT_UPDATED\n data: EntitlementMessageData\n}\n\nexport interface EntitlementDeletedMessage extends EntitlementMessageBase {\n category: AuditEventMessageCategory.ENTITLEMENT\n type: AuditEventMessageType.ENTITLEMENT_DELETED\n data: EntitlementMessageData\n}\n\nexport interface AuthenticationLoginMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGIN\n data: AuthenticationMessageData\n}\n\nexport interface AuthenticationLogoutManualMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGOUT_MANUAL\n data: AuthenticationMessageData\n}\n\nexport interface AuthenticationLogoutAutoMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGOUT_AUTO\n data: AuthenticationMessageData\n}\n\nexport interface AuthenticationLogoutDifferentDeviceMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGOUT_DIFFERENT_DEVICE\n data: AuthenticationMessageData\n}\n\nexport interface FormSubmissionExcelRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUBMISSION_EXCEL_REQUESTED\n data: ExcelGenerationMessageData\n}\n\nexport interface FormCsatExcelRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_CSAT_EXCEL_REQUESTED\n data: ExcelGenerationMessageData\n}\n\nexport interface PlatformCsatExcelRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.PLATFORM_CSAT_EXCEL_REQUESTED\n data: ExcelGenerationMessageData\n}\n\nexport interface PlatformMetricsDownloadRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.PLATFORM_METRICS_DOWNLOAD_REQUESTED\n}\n\nexport interface FormsBackupRequestedMessage extends DesignerMessageBase {\n type: AuditEventMessageType.FORMS_BACKUP_REQUESTED\n data: FormsBackupRequestedMessageData\n}\n\nexport interface DlqActionMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.OPERATIONS\n type: AuditEventMessageType.DLQ_ACTION\n data: DlqActionMessageData\n}\n\nexport interface FormSecretDeletedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SECRET_DELETED\n data: FormSecretBaseMessageData\n}\n\nexport interface FormSecretSavedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SECRET_SAVED\n data: FormSecretBaseMessageData\n}\n\nexport type AuditMessage =\n | FormCreatedMessage\n | FormTitleUpdatedMessage\n | FormOrganisationUpdatedMessage\n | FormTeamNameUpdatedMessage\n | FormTeamEmailUpdatedMessage\n | FormSupportContactUpdatedMessage\n | FormSupportPhoneUpdatedMessage\n | FormSupportEmailUpdatedMessage\n | FormSupportOnlineUpdatedMessage\n | FormPrivacyNoticeUpdatedMessage\n | FormTermsAndConditionsAgreedMessage\n | FormNotificationEmailUpdatedMessage\n | FormSubmissionGuidanceUpdatedMessage\n | FormUploadedMessage\n | FormDownloadedMessage\n | FormFileDownloadSuccessMessage\n | FormFileDownloadFailureMessage\n | FormDraftCreatedFromLiveMessage\n | FormLiveCreatedFromDraftMessage\n | FormDraftDeletedMessage\n | FormMigratedMessage\n | FormUpdatedMessage\n | FormOfflineUpdatedMessage\n | EntitlementCreatedMessage\n | EntitlementUpdatedMessage\n | EntitlementDeletedMessage\n | AuthenticationLoginMessage\n | AuthenticationLogoutManualMessage\n | AuthenticationLogoutAutoMessage\n | AuthenticationLogoutDifferentDeviceMessage\n | FormSubmissionExcelRequestedMessage\n | FormCsatExcelRequestedMessage\n | PlatformCsatExcelRequestedMessage\n | PlatformMetricsDownloadRequestedMessage\n | FormsBackupRequestedMessage\n | FormSecretDeletedMessage\n | FormSecretSavedMessage\n | DlqActionMessage\n\nexport interface AuditEvent {\n message: AuditMessage\n}\n\nexport interface AuditMetaBase {\n messageId: string\n recordCreatedAt: Date\n}\n\nexport interface AuditInputMeta extends AuditMetaBase {\n id: string\n}\n\nexport type AuditRecordInput = AuditMessage & AuditMetaBase\n\nexport type AuditRecord = AuditMessage & AuditInputMeta\n\nexport interface MessageBody {\n Message: string\n}\n\n/**\n * Consolidated audit record that represents multiple grouped events.\n * Combines AuditRecord with consolidation metadata.\n */\nexport type ConsolidatedAuditRecord = AuditRecord & {\n /** Number of events consolidated into this record */\n consolidatedCount: number\n /** Timestamp of the earliest event in the group */\n consolidatedFrom: Date\n /** Timestamp of the latest event in the group */\n consolidatedTo: Date\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-audit/types.ts"],"sourcesContent":["import {\n type AuditEventMessageCategory,\n type AuditEventMessageSchemaVersion,\n type AuditEventMessageSource,\n type AuditEventMessageType,\n type FormDefinitionRequestType\n} from '~/src/form/form-audit/enums.js'\nimport { type Output } from '~/src/form/form-definition/types.js'\nimport { type FormMetadataContact } from '~/src/form/form-metadata/types.js'\n\nexport interface FormMessageDataBase {\n formId: string\n slug: string\n payload?: unknown\n}\n\nexport interface ChangesMessageData<T> {\n previous: T\n new: T\n}\n\nexport interface FormCreatedMessageData extends FormMessageDataBase {\n title: string\n organisation: string\n teamName: string\n teamEmail: string\n}\n\nexport interface FormTitleChanges {\n title: string\n}\n\nexport interface FormOrganisationChanges {\n organisation: string\n}\n\nexport interface FormTeamNameChanges {\n teamName: string\n}\n\nexport interface FormTeamEmailChanges {\n teamEmail: string\n}\n\nexport interface FormSupportContactChanges {\n contact?: FormMetadataContact\n}\n\nexport interface FormSupportPhoneChanges {\n phone?: string\n}\n\nexport interface FormSupportEmailChanges {\n address?: string\n responseTime?: string\n}\n\nexport interface FormSupportOnlineChanges {\n url?: string\n text?: string\n}\n\nexport interface FormPrivacyNoticeChanges {\n privacyNoticeType?: string\n privacyNoticeText?: string\n privacyNoticeUrl?: string\n}\n\nexport interface FormTermsAndConditionsChanges {\n termsAndConditionsAgreed?: boolean\n}\n\nexport interface FormNotificationEmailChanges {\n notificationEmail?: string\n}\n\nexport interface FormSubmissionGuidanceChanges {\n submissionGuidance?: string\n}\n\nexport interface FormUploadedChanges {\n value: string\n}\n\nexport interface FormOfflineChanges {\n offline: boolean\n}\n\nexport interface FormTitleUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTitleChanges>\n}\n\nexport interface FormOrganisationUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormOrganisationChanges>\n}\n\nexport interface FormTeamNameUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamNameChanges>\n}\n\nexport interface FormTeamEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamEmailChanges>\n}\n\nexport interface FormSupportContactUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportContactChanges>\n}\n\nexport interface FormSupportPhoneUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportPhoneChanges>\n}\n\nexport interface FormSupportEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportEmailChanges>\n}\n\nexport interface FormSupportOnlineUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportOnlineChanges>\n}\n\nexport interface FormPrivacyNoticeUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormPrivacyNoticeChanges>\n}\n\nexport interface FormTermsAndConditionsAgreedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTermsAndConditionsChanges>\n}\n\nexport interface FormNotificationEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormNotificationEmailChanges>\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormSubmissionGuidanceChanges>\n}\n\nexport interface FormUploadedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormUploadedChanges>\n}\n\nexport interface FormOfflineUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormOfflineChanges>\n}\n\nexport interface FormFileDownloadedMessageData {\n fileId: string\n filename: string\n fileLink: string\n}\n\nexport interface ExcelGenerationMessageData {\n formId: string\n formName: string\n notificationEmail: string\n}\n\nexport interface FormSecretBaseMessageData extends FormMessageDataBase {\n formId: string\n slug: string\n secretName: string\n}\n\nexport interface FormDefinitionS3Meta {\n fileId: string\n filename: string\n s3Key: string\n}\n\n/**\n * What a single form update did to the form's submission email targets (the\n * `outputs` on the definition, surfaced to authors as \"email actions\").\n *\n * A `REPLACE_DRAFT` update carries the whole definition, so the audit message\n * would otherwise say nothing about which email address was added, amended or\n * removed. Collections that are empty are omitted, and the object as a whole is\n * absent from an update that left the outputs untouched.\n *\n * Validated by `formOutputChangesMessageData`.\n */\nexport interface FormOutputChanges {\n /**\n * Email targets the update introduced\n */\n added?: Output[]\n\n /**\n * Email targets the update amended, with the values either side of the change\n */\n updated?: ChangesMessageData<Output>[]\n\n /**\n * Email targets the update took away - either deleted directly by the author,\n * or removed as a consequence of deleting the condition they depended on\n */\n removed?: Output[]\n}\n\nexport interface FormUpdatedMessageData extends FormMessageDataBase {\n requestType: FormDefinitionRequestType\n s3Meta?: FormDefinitionS3Meta\n\n /**\n * What this update did to the form's submission email targets. Absent when\n * the update did not touch them.\n *\n * A `DELETE_CONDITION` update reports the outputs that went with the\n * condition, so the removal is recorded against the action that caused it\n * rather than being left to be inferred from a neighbouring event.\n */\n outputChanges?: FormOutputChanges\n}\n\nexport type FormMessageChangesData =\n | FormTitleUpdatedMessageData\n | FormOrganisationUpdatedMessageData\n | FormTeamNameUpdatedMessageData\n | FormTeamEmailUpdatedMessageData\n | FormSupportContactUpdatedMessageData\n | FormSupportPhoneUpdatedMessageData\n | FormSupportEmailUpdatedMessageData\n | FormSupportOnlineUpdatedMessageData\n | FormPrivacyNoticeUpdatedMessageData\n | FormTermsAndConditionsAgreedMessageData\n | FormNotificationEmailUpdatedMessageData\n | FormSubmissionGuidanceUpdatedMessageData\n | FormUploadedMessageData\n | FormOfflineUpdatedMessageData\n\nexport type FormMessageActivitiesData =\n | FormCreatedMessageData\n | FormMessageDataBase\n | FormFileDownloadedMessageData\n\nexport interface EntitlementMessageData {\n userId: string\n displayName: string\n email: string\n roles: string[]\n}\n\nexport interface AuthenticationMessageData {\n userId: string\n displayName: string\n}\n\nexport interface AuditUser {\n id: string\n displayName: string\n}\n\nexport interface FormsBackupRequestedMessageData {\n totalForms: number\n durationMs: number\n}\n\nexport interface DlqActionMessageData {\n action: string\n messageId?: string\n beforeJson?: string\n afterJson?: string\n}\n\nexport type MessageData =\n | FormMessageChangesData\n | FormMessageActivitiesData\n | FormUpdatedMessageData\n | EntitlementMessageData\n | AuthenticationMessageData\n | ExcelGenerationMessageData\n | FormFileDownloadedMessageData\n | FormsBackupRequestedMessageData\n | FormSecretBaseMessageData\n | DlqActionMessageData\n\nexport interface MessageBase {\n schemaVersion: AuditEventMessageSchemaVersion\n category: AuditEventMessageCategory\n source: AuditEventMessageSource\n type: AuditEventMessageType\n entityId: string\n traceId?: string\n createdAt: Date\n createdBy: AuditUser\n data?: MessageData\n messageCreatedAt: Date\n}\n\nexport interface ManagerMessageBase extends MessageBase {\n source: AuditEventMessageSource.FORMS_MANAGER\n}\nexport interface DesignerMessageBase extends MessageBase {\n source: AuditEventMessageSource.FORMS_DESIGNER\n}\n\nexport interface EntitlementMessageBase extends MessageBase {\n source: AuditEventMessageSource.ENTITLEMENT\n}\n\nexport interface AuthenticationMessageBase extends MessageBase {\n source: AuditEventMessageSource.AUTHENTICATION\n}\n\nexport interface FormCreatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_CREATED\n data: FormCreatedMessageData\n}\n\nexport interface FormTitleUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TITLE_UPDATED\n data: FormTitleUpdatedMessageData\n}\n\nexport interface FormOrganisationUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_ORGANISATION_UPDATED\n data: FormOrganisationUpdatedMessageData\n}\n\nexport interface FormTeamNameUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_NAME_UPDATED\n data: FormTeamNameUpdatedMessageData\n}\n\nexport interface FormTeamEmailUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED\n data: FormTeamEmailUpdatedMessageData\n}\n\nexport interface FormSupportContactUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED\n data: FormSupportContactUpdatedMessageData\n}\n\nexport interface FormSupportPhoneUpdatedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED\n data: FormSupportPhoneUpdatedMessageData\n}\n\nexport interface FormSupportEmailUpdatedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED\n data: FormSupportEmailUpdatedMessageData\n}\n\nexport interface FormSupportOnlineUpdatedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED\n data: FormSupportOnlineUpdatedMessageData\n}\n\nexport interface FormPrivacyNoticeUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormPrivacyNoticeUpdatedMessageData\n}\n\nexport interface FormTermsAndConditionsAgreedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TERMS_AND_CONDITIONS_AGREED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormTermsAndConditionsAgreedMessageData\n}\n\nexport interface FormNotificationEmailUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormNotificationEmailUpdatedMessageData\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED\n source: AuditEventMessageSource.FORMS_MANAGER\n data: FormSubmissionGuidanceUpdatedMessageData\n}\n\nexport interface FormUploadedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_UPLOADED\n data: FormUploadedMessageData\n}\n\nexport interface FormDownloadedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_DOWNLOADED\n data: FormMessageDataBase\n}\n\nexport interface FormFileDownloadSuccessMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_FILE_DOWNLOAD_SUCCESS\n data: FormFileDownloadedMessageData\n}\n\nexport interface FormFileDownloadFailureMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_FILE_DOWNLOAD_FAILURE\n data: FormFileDownloadedMessageData\n}\n\nexport interface FormDraftCreatedFromLiveMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE\n}\n\nexport interface FormLiveCreatedFromDraftMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT\n}\n\nexport interface FormDraftDeletedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_DELETED\n}\n\nexport interface FormMigratedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_MIGRATED\n}\n\nexport interface FormUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_UPDATED\n data: FormUpdatedMessageData\n}\n\nexport interface FormOfflineUpdatedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_OFFLINE_UPDATED\n data: FormOfflineUpdatedMessageData\n}\n\nexport interface EntitlementCreatedMessage extends EntitlementMessageBase {\n category: AuditEventMessageCategory.ENTITLEMENT\n type: AuditEventMessageType.ENTITLEMENT_CREATED\n data: EntitlementMessageData\n}\n\nexport interface EntitlementUpdatedMessage extends EntitlementMessageBase {\n category: AuditEventMessageCategory.ENTITLEMENT\n type: AuditEventMessageType.ENTITLEMENT_UPDATED\n data: EntitlementMessageData\n}\n\nexport interface EntitlementDeletedMessage extends EntitlementMessageBase {\n category: AuditEventMessageCategory.ENTITLEMENT\n type: AuditEventMessageType.ENTITLEMENT_DELETED\n data: EntitlementMessageData\n}\n\nexport interface AuthenticationLoginMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGIN\n data: AuthenticationMessageData\n}\n\nexport interface AuthenticationLogoutManualMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGOUT_MANUAL\n data: AuthenticationMessageData\n}\n\nexport interface AuthenticationLogoutAutoMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGOUT_AUTO\n data: AuthenticationMessageData\n}\n\nexport interface AuthenticationLogoutDifferentDeviceMessage extends AuthenticationMessageBase {\n category: AuditEventMessageCategory.AUTHENTICATION\n type: AuditEventMessageType.AUTHENTICATION_LOGOUT_DIFFERENT_DEVICE\n data: AuthenticationMessageData\n}\n\nexport interface FormSubmissionExcelRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUBMISSION_EXCEL_REQUESTED\n data: ExcelGenerationMessageData\n}\n\nexport interface FormCsatExcelRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_CSAT_EXCEL_REQUESTED\n data: ExcelGenerationMessageData\n}\n\nexport interface PlatformCsatExcelRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.PLATFORM_CSAT_EXCEL_REQUESTED\n data: ExcelGenerationMessageData\n}\n\nexport interface PlatformMetricsDownloadRequestedMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.PLATFORM_METRICS_DOWNLOAD_REQUESTED\n}\n\nexport interface FormsBackupRequestedMessage extends DesignerMessageBase {\n type: AuditEventMessageType.FORMS_BACKUP_REQUESTED\n data: FormsBackupRequestedMessageData\n}\n\nexport interface DlqActionMessage extends DesignerMessageBase {\n category: AuditEventMessageCategory.OPERATIONS\n type: AuditEventMessageType.DLQ_ACTION\n data: DlqActionMessageData\n}\n\nexport interface FormSecretDeletedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SECRET_DELETED\n data: FormSecretBaseMessageData\n}\n\nexport interface FormSecretSavedMessage extends ManagerMessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SECRET_SAVED\n data: FormSecretBaseMessageData\n}\n\nexport type AuditMessage =\n | FormCreatedMessage\n | FormTitleUpdatedMessage\n | FormOrganisationUpdatedMessage\n | FormTeamNameUpdatedMessage\n | FormTeamEmailUpdatedMessage\n | FormSupportContactUpdatedMessage\n | FormSupportPhoneUpdatedMessage\n | FormSupportEmailUpdatedMessage\n | FormSupportOnlineUpdatedMessage\n | FormPrivacyNoticeUpdatedMessage\n | FormTermsAndConditionsAgreedMessage\n | FormNotificationEmailUpdatedMessage\n | FormSubmissionGuidanceUpdatedMessage\n | FormUploadedMessage\n | FormDownloadedMessage\n | FormFileDownloadSuccessMessage\n | FormFileDownloadFailureMessage\n | FormDraftCreatedFromLiveMessage\n | FormLiveCreatedFromDraftMessage\n | FormDraftDeletedMessage\n | FormMigratedMessage\n | FormUpdatedMessage\n | FormOfflineUpdatedMessage\n | EntitlementCreatedMessage\n | EntitlementUpdatedMessage\n | EntitlementDeletedMessage\n | AuthenticationLoginMessage\n | AuthenticationLogoutManualMessage\n | AuthenticationLogoutAutoMessage\n | AuthenticationLogoutDifferentDeviceMessage\n | FormSubmissionExcelRequestedMessage\n | FormCsatExcelRequestedMessage\n | PlatformCsatExcelRequestedMessage\n | PlatformMetricsDownloadRequestedMessage\n | FormsBackupRequestedMessage\n | FormSecretDeletedMessage\n | FormSecretSavedMessage\n | DlqActionMessage\n\nexport interface AuditEvent {\n message: AuditMessage\n}\n\nexport interface AuditMetaBase {\n messageId: string\n recordCreatedAt: Date\n}\n\nexport interface AuditInputMeta extends AuditMetaBase {\n id: string\n}\n\nexport type AuditRecordInput = AuditMessage & AuditMetaBase\n\nexport type AuditRecord = AuditMessage & AuditInputMeta\n\nexport interface MessageBody {\n Message: string\n}\n\n/**\n * Consolidated audit record that represents multiple grouped events.\n * Combines AuditRecord with consolidation metadata.\n */\nexport type ConsolidatedAuditRecord = AuditRecord & {\n /** Number of events consolidated into this record */\n consolidatedCount: number\n /** Timestamp of the earliest event in the group */\n consolidatedFrom: Date\n /** Timestamp of the latest event in the group */\n consolidatedTo: Date\n}\n"],"mappings":"","ignoreList":[]}
@@ -33,6 +33,7 @@ export * from "./utils/set-property.js";
33
33
  export * from "./form/form-audit/index.js";
34
34
  export * from "./form/form-audit/enums.js";
35
35
  export * from "./form/form-audit/consolidation.js";
36
+ export * from "./form/form-audit/output-changes.js";
36
37
 
37
38
  // test
38
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from '~/src/common/enums.js'\nexport * from '~/src/common/random-id.js'\nexport * from '~/src/common/schema.js'\nexport * from '~/src/common/pagination/index.js'\nexport * from '~/src/common/search/index.js'\nexport * from '~/src/common/sorting/index.js'\nexport * from '~/src/components/index.js'\nexport * from '~/src/conditions/index.js'\nexport * from '~/src/form/form-definition/index.js'\nexport * from '~/src/form/form-definition/types.js'\nexport * from '~/src/form/form-definition/helpers.js'\nexport * from '~/src/form/form-metadata/index.js'\nexport * from '~/src/form/form-metrics/enums.js'\nexport * from '~/src/form/form-metrics/types.js'\nexport * from '~/src/form/form-metrics/index.js'\nexport * from '~/src/form/form-submission/index.js'\nexport * from '~/src/form/form-submission/enums.js'\nexport * from '~/src/form/utils/index.js'\nexport * from '~/src/form/form-editor/enums.js'\nexport * from '~/src/form/form-editor/index.js'\nexport * from '~/src/form/form-editor/preview/index.js'\nexport * from '~/src/form/form-editor/translations/translations-config.js'\nexport * from '~/src/form/form-editor/translations/translations.js'\nexport * from '~/src/form/form-manager/types.js'\nexport * from '~/src/form/form-manager/errors.js'\nexport * from '~/src/manage/dead-letter-queues.js'\nexport * from '~/src/manage/roles.js'\nexport * from '~/src/manage/users.js'\nexport * from '~/src/pages/index.js'\nexport * from '~/src/utils/helpers.js'\nexport * from '~/src/utils/markdown.js'\nexport * from '~/src/utils/set-property.js'\nexport * from '~/src/form/form-audit/index.js'\nexport * from '~/src/form/form-audit/enums.js'\nexport * from '~/src/form/form-audit/consolidation.js'\n\nexport type * from '~/src/common/types.js'\nexport type * from '~/src/common/pagination/types.js'\nexport type * from '~/src/common/search/types.js'\nexport type * from '~/src/common/sorting/types.js'\nexport type * from '~/src/components/types.js'\nexport type * from '~/src/conditions/types.js'\nexport type * from '~/src/form/form-definition/types.js'\nexport type * from '~/src/form/form-metadata/types.js'\nexport type * from '~/src/form/form-submission/types.js'\nexport type * from '~/src/form/form-editor/preview/types.js'\nexport type * from '~/src/form/form-editor/types.js'\nexport type * from '~/src/form/form-editor/macros/types.js'\nexport type * from '~/src/form/form-audit/types.js'\nexport type * from '~/src/manage/types.js'\n\n// test\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["export * from '~/src/common/enums.js'\nexport * from '~/src/common/random-id.js'\nexport * from '~/src/common/schema.js'\nexport * from '~/src/common/pagination/index.js'\nexport * from '~/src/common/search/index.js'\nexport * from '~/src/common/sorting/index.js'\nexport * from '~/src/components/index.js'\nexport * from '~/src/conditions/index.js'\nexport * from '~/src/form/form-definition/index.js'\nexport * from '~/src/form/form-definition/types.js'\nexport * from '~/src/form/form-definition/helpers.js'\nexport * from '~/src/form/form-metadata/index.js'\nexport * from '~/src/form/form-metrics/enums.js'\nexport * from '~/src/form/form-metrics/types.js'\nexport * from '~/src/form/form-metrics/index.js'\nexport * from '~/src/form/form-submission/index.js'\nexport * from '~/src/form/form-submission/enums.js'\nexport * from '~/src/form/utils/index.js'\nexport * from '~/src/form/form-editor/enums.js'\nexport * from '~/src/form/form-editor/index.js'\nexport * from '~/src/form/form-editor/preview/index.js'\nexport * from '~/src/form/form-editor/translations/translations-config.js'\nexport * from '~/src/form/form-editor/translations/translations.js'\nexport * from '~/src/form/form-manager/types.js'\nexport * from '~/src/form/form-manager/errors.js'\nexport * from '~/src/manage/dead-letter-queues.js'\nexport * from '~/src/manage/roles.js'\nexport * from '~/src/manage/users.js'\nexport * from '~/src/pages/index.js'\nexport * from '~/src/utils/helpers.js'\nexport * from '~/src/utils/markdown.js'\nexport * from '~/src/utils/set-property.js'\nexport * from '~/src/form/form-audit/index.js'\nexport * from '~/src/form/form-audit/enums.js'\nexport * from '~/src/form/form-audit/consolidation.js'\nexport * from '~/src/form/form-audit/output-changes.js'\n\nexport type * from '~/src/common/types.js'\nexport type * from '~/src/common/pagination/types.js'\nexport type * from '~/src/common/search/types.js'\nexport type * from '~/src/common/sorting/types.js'\nexport type * from '~/src/components/types.js'\nexport type * from '~/src/conditions/types.js'\nexport type * from '~/src/form/form-definition/types.js'\nexport type * from '~/src/form/form-metadata/types.js'\nexport type * from '~/src/form/form-submission/types.js'\nexport type * from '~/src/form/form-editor/preview/types.js'\nexport type * from '~/src/form/form-editor/types.js'\nexport type * from '~/src/form/form-editor/macros/types.js'\nexport type * from '~/src/form/form-audit/types.js'\nexport type * from '~/src/manage/types.js'\n\n// test\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAiBA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import Joi, { type ObjectSchema } from 'joi';
2
- import { type AuditEvent, type AuditMessage, type AuditRecord, type AuditUser, type AuthenticationMessageData, type DlqActionMessageData, type EntitlementMessageData, type ExcelGenerationMessageData, type FormCreatedMessageData, type FormDefinitionS3Meta, type FormFileDownloadedMessageData, type FormMessageChangesData, type FormMessageDataBase, type FormNotificationEmailChanges, type FormOfflineChanges, type FormOrganisationChanges, type FormPrivacyNoticeChanges, type FormSecretBaseMessageData, type FormSubmissionGuidanceChanges, type FormSupportContactChanges, type FormSupportEmailChanges, type FormSupportOnlineChanges, type FormSupportPhoneChanges, type FormTeamEmailChanges, type FormTeamNameChanges, type FormTermsAndConditionsChanges, type FormTitleChanges, type FormUpdatedMessageData, type FormUploadedChanges, type FormsBackupRequestedMessageData } from '../../form/form-audit/types.js';
2
+ import { type AuditEvent, type AuditMessage, type AuditRecord, type AuditUser, type AuthenticationMessageData, type DlqActionMessageData, type EntitlementMessageData, type ExcelGenerationMessageData, type FormCreatedMessageData, type FormDefinitionS3Meta, type FormFileDownloadedMessageData, type FormMessageChangesData, type FormMessageDataBase, type FormNotificationEmailChanges, type FormOfflineChanges, type FormOrganisationChanges, type FormOutputChanges, type FormPrivacyNoticeChanges, type FormSecretBaseMessageData, type FormSubmissionGuidanceChanges, type FormSupportContactChanges, type FormSupportEmailChanges, type FormSupportOnlineChanges, type FormSupportPhoneChanges, type FormTeamEmailChanges, type FormTeamNameChanges, type FormTermsAndConditionsChanges, type FormTitleChanges, type FormUpdatedMessageData, type FormUploadedChanges, type FormsBackupRequestedMessageData } from '../../form/form-audit/types.js';
3
3
  import { type Output } from '../../form/form-definition/types.js';
4
4
  export declare const formMessageDataBase: Joi.ObjectSchema<FormMessageDataBase>;
5
5
  export declare const formCreatedMessageData: Joi.ObjectSchema<FormCreatedMessageData>;
@@ -10,6 +10,7 @@ export declare const formDefinitionS3Meta: Joi.ObjectSchema<FormDefinitionS3Meta
10
10
  * meaning on an audit message carrying the output on its own.
11
11
  */
12
12
  export declare const formOutputMessageData: Joi.ObjectSchema<Output>;
13
+ export declare const formOutputChangesMessageData: Joi.ObjectSchema<FormOutputChanges>;
13
14
  export declare const formUpdatedMessageData: Joi.ObjectSchema<FormUpdatedMessageData>;
14
15
  export declare const formsBackupRequestedMessageData: Joi.ObjectSchema<FormsBackupRequestedMessageData>;
15
16
  export declare const formsSecretDeletedMessageData: Joi.ObjectSchema<FormSecretBaseMessageData>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,KAAK,CAAA;AAS5C,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAE9B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,kBAAkB,EAEvB,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAElC,KAAK,yBAAyB,EAE9B,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,uBAAuB,EAE5B,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAGxB,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EAErB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EAExB,KAAK,+BAA+B,EACrC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAuBjE,eAAO,MAAM,mBAAmB,uCAMwB,CAAA;AAExD,eAAO,MAAM,sBAAsB,0CAQ6B,CAAA;AAEhE,eAAO,MAAM,oBAAoB,wCAM0B,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,0BAwBuC,CAAA;AAEzE,eAAO,MAAM,sBAAsB,0CAOtB,CAAA;AAEb,eAAO,MAAM,+BAA+B,mDAIxC,CAAA;AAEJ,eAAO,MAAM,6BAA6B,6CAGtC,CAAA;AAEJ,eAAO,MAAM,2BAA2B,6CAGpC,CAAA;AAEJ,eAAO,MAAM,oBAAoB,wCAO/B,CAAA;AAEF,eAAO,MAAM,gBAAgB,oCAKgC,CAAA;AAE7D,eAAO,MAAM,uBAAuB,2CAKgC,CAAA;AAEpE,eAAO,MAAM,mBAAmB,uCAKiC,CAAA;AAEjE,eAAO,MAAM,oBAAoB,wCAKiC,CAAA;AAElE,eAAO,MAAM,yBAAyB,6CAKiC,CAAA;AAEvE,eAAO,MAAM,uBAAuB,2CAKiC,CAAA;AAErE,eAAO,MAAM,wBAAwB,4CAMiC,CAAA;AAEtE,eAAO,MAAM,uBAAuB,2CAKiC,CAAA;AAErE,eAAO,MAAM,wBAAwB,4CAeiC,CAAA;AAEtE,eAAO,MAAM,6BAA6B,iDAMmC,CAAA;AAE7E,eAAO,MAAM,4BAA4B,gDAMmC,CAAA;AAE5E,eAAO,MAAM,6BAA6B,iDAMmC,CAAA;AAE7E,eAAO,MAAM,mBAAmB,uCAK6B,CAAA;AAE7D,eAAO,MAAM,kBAAkB,sCAKgC,CAAA;AAE/D,eAAO,MAAM,sBAAsB,0CAOlC,CAAA;AAED,eAAO,MAAM,6BAA6B,iDAUrC,CAAA;AAEL,eAAO,MAAM,0BAA0B,8CAUlC,CAAA;AAEL,eAAO,MAAM,yBAAyB,6CAIlC,CAAA;AAEJ,eAAO,MAAM,eAAe,6BAKuB,CAAA;AAEnD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,sBAAsB,EACxE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,YAAY,CAAC,CAAC,CAAC,CASjB;AAED,eAAO,MAAM,aAAa,gCA6P0C,CAAA;AAEpE,eAAO,MAAM,UAAU,8BAIsB,CAAA;AAE7C,eAAO,MAAM,WAAW,+BAOgC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,EAAE,EAAE,KAAK,YAAY,EAAE,MAAM,KAAK,CAAA;AAS5C,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAE9B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,kBAAkB,EAEvB,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAElC,KAAK,yBAAyB,EAE9B,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,uBAAuB,EAE5B,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAGxB,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EAErB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EAExB,KAAK,+BAA+B,EACrC,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAuBjE,eAAO,MAAM,mBAAmB,uCAMwB,CAAA;AAExD,eAAO,MAAM,sBAAsB,0CAQ6B,CAAA;AAEhE,eAAO,MAAM,oBAAoB,wCAM0B,CAAA;AAE3D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,0BAwBuC,CAAA;AAEzE,eAAO,MAAM,4BAA4B,qCAgBtC,CAAA;AAEH,eAAO,MAAM,sBAAsB,0CAQtB,CAAA;AAEb,eAAO,MAAM,+BAA+B,mDAIxC,CAAA;AAEJ,eAAO,MAAM,6BAA6B,6CAGtC,CAAA;AAEJ,eAAO,MAAM,2BAA2B,6CAGpC,CAAA;AAEJ,eAAO,MAAM,oBAAoB,wCAO/B,CAAA;AAEF,eAAO,MAAM,gBAAgB,oCAKgC,CAAA;AAE7D,eAAO,MAAM,uBAAuB,2CAKgC,CAAA;AAEpE,eAAO,MAAM,mBAAmB,uCAKiC,CAAA;AAEjE,eAAO,MAAM,oBAAoB,wCAKiC,CAAA;AAElE,eAAO,MAAM,yBAAyB,6CAKiC,CAAA;AAEvE,eAAO,MAAM,uBAAuB,2CAKiC,CAAA;AAErE,eAAO,MAAM,wBAAwB,4CAMiC,CAAA;AAEtE,eAAO,MAAM,uBAAuB,2CAKiC,CAAA;AAErE,eAAO,MAAM,wBAAwB,4CAeiC,CAAA;AAEtE,eAAO,MAAM,6BAA6B,iDAMmC,CAAA;AAE7E,eAAO,MAAM,4BAA4B,gDAMmC,CAAA;AAE5E,eAAO,MAAM,6BAA6B,iDAMmC,CAAA;AAE7E,eAAO,MAAM,mBAAmB,uCAK6B,CAAA;AAE7D,eAAO,MAAM,kBAAkB,sCAKgC,CAAA;AAE/D,eAAO,MAAM,sBAAsB,0CAOlC,CAAA;AAED,eAAO,MAAM,6BAA6B,iDAUrC,CAAA;AAEL,eAAO,MAAM,0BAA0B,8CAUlC,CAAA;AAEL,eAAO,MAAM,yBAAyB,6CAIlC,CAAA;AAEJ,eAAO,MAAM,eAAe,6BAKuB,CAAA;AAEnD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,sBAAsB,EACxE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,YAAY,CAAC,CAAC,CAAC,CASjB;AAED,eAAO,MAAM,aAAa,gCA6P0C,CAAA;AAEpE,eAAO,MAAM,UAAU,8BAIsB,CAAA;AAE7C,eAAO,MAAM,WAAW,+BAOgC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { type FormOutputChanges } from '../../form/form-audit/types.js';
2
+ import { type Output } from '../../form/form-definition/types.js';
3
+ /**
4
+ * Works out what changed between two sets of submission email targets, in the
5
+ * shape the audit record expects.
6
+ *
7
+ * Outputs carry no id of their own, so an amendment cannot be spotted directly.
8
+ * An entry that disappears from a position while another appears at that same
9
+ * position is treated as an amendment rather than as an unrelated removal and
10
+ * addition - which is what the editor does when an author changes an existing
11
+ * email action. Anything left over is reported as a plain addition or removal,
12
+ * so a wholesale replacement (a JSON upload, say) still records honestly.
13
+ * @param previous - outputs before the update
14
+ * @param next - outputs after the update
15
+ * @returns the changes, or undefined when the outputs are untouched
16
+ */
17
+ export declare function getFormOutputChanges(previous: Output[] | undefined, next: Output[] | undefined): FormOutputChanges | undefined;
18
+ //# sourceMappingURL=output-changes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-changes.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/output-changes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AACvE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qCAAqC,CAAA;AAuBjE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,EAC9B,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GACzB,iBAAiB,GAAG,SAAS,CAqD/B"}
@@ -1,4 +1,5 @@
1
1
  import { type AuditEventMessageCategory, type AuditEventMessageSchemaVersion, type AuditEventMessageSource, type AuditEventMessageType, type FormDefinitionRequestType } from '../../form/form-audit/enums.js';
2
+ import { type Output } from '../../form/form-definition/types.js';
2
3
  import { type FormMetadataContact } from '../../form/form-metadata/types.js';
3
4
  export interface FormMessageDataBase {
4
5
  formId: string;
@@ -123,9 +124,44 @@ export interface FormDefinitionS3Meta {
123
124
  filename: string;
124
125
  s3Key: string;
125
126
  }
127
+ /**
128
+ * What a single form update did to the form's submission email targets (the
129
+ * `outputs` on the definition, surfaced to authors as "email actions").
130
+ *
131
+ * A `REPLACE_DRAFT` update carries the whole definition, so the audit message
132
+ * would otherwise say nothing about which email address was added, amended or
133
+ * removed. Collections that are empty are omitted, and the object as a whole is
134
+ * absent from an update that left the outputs untouched.
135
+ *
136
+ * Validated by `formOutputChangesMessageData`.
137
+ */
138
+ export interface FormOutputChanges {
139
+ /**
140
+ * Email targets the update introduced
141
+ */
142
+ added?: Output[];
143
+ /**
144
+ * Email targets the update amended, with the values either side of the change
145
+ */
146
+ updated?: ChangesMessageData<Output>[];
147
+ /**
148
+ * Email targets the update took away - either deleted directly by the author,
149
+ * or removed as a consequence of deleting the condition they depended on
150
+ */
151
+ removed?: Output[];
152
+ }
126
153
  export interface FormUpdatedMessageData extends FormMessageDataBase {
127
154
  requestType: FormDefinitionRequestType;
128
155
  s3Meta?: FormDefinitionS3Meta;
156
+ /**
157
+ * What this update did to the form's submission email targets. Absent when
158
+ * the update did not touch them.
159
+ *
160
+ * A `DELETE_CONDITION` update reports the outputs that went with the
161
+ * condition, so the removal is recorded against the action that caused it
162
+ * rather than being left to be inferred from a neighbouring event.
163
+ */
164
+ outputChanges?: FormOutputChanges;
129
165
  }
130
166
  export type FormMessageChangesData = FormTitleUpdatedMessageData | FormOrganisationUpdatedMessageData | FormTeamNameUpdatedMessageData | FormTeamEmailUpdatedMessageData | FormSupportContactUpdatedMessageData | FormSupportPhoneUpdatedMessageData | FormSupportEmailUpdatedMessageData | FormSupportOnlineUpdatedMessageData | FormPrivacyNoticeUpdatedMessageData | FormTermsAndConditionsAgreedMessageData | FormNotificationEmailUpdatedMessageData | FormSubmissionGuidanceUpdatedMessageData | FormUploadedMessageData | FormOfflineUpdatedMessageData;
131
167
  export type FormMessageActivitiesData = FormCreatedMessageData | FormMessageDataBase | FormFileDownloadedMessageData;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/types.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ export * from './utils/set-property.js';
33
33
  export * from './form/form-audit/index.js';
34
34
  export * from './form/form-audit/enums.js';
35
35
  export * from './form/form-audit/consolidation.js';
36
+ export * from './form/form-audit/output-changes.js';
36
37
  export type * from './common/types.js';
37
38
  export type * from './common/pagination/types.js';
38
39
  export type * from './common/search/types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,uCAAuC,CAAA;AACrD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,2BAA2B,CAAA;AACzC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,cAAc,4DAA4D,CAAA;AAC1E,cAAc,qDAAqD,CAAA;AACnE,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wCAAwC,CAAA;AAEtD,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,kCAAkC,CAAA;AACrD,mBAAmB,8BAA8B,CAAA;AACjD,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,2BAA2B,CAAA;AAC9C,mBAAmB,2BAA2B,CAAA;AAC9C,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,mCAAmC,CAAA;AACtD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,yCAAyC,CAAA;AAC5D,mBAAmB,iCAAiC,CAAA;AACpD,mBAAmB,wCAAwC,CAAA;AAC3D,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAA;AACrC,cAAc,2BAA2B,CAAA;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,kCAAkC,CAAA;AAChD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,2BAA2B,CAAA;AACzC,cAAc,2BAA2B,CAAA;AACzC,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,uCAAuC,CAAA;AACrD,cAAc,mCAAmC,CAAA;AACjD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,kCAAkC,CAAA;AAChD,cAAc,qCAAqC,CAAA;AACnD,cAAc,qCAAqC,CAAA;AACnD,cAAc,2BAA2B,CAAA;AACzC,cAAc,iCAAiC,CAAA;AAC/C,cAAc,iCAAiC,CAAA;AAC/C,cAAc,yCAAyC,CAAA;AACvD,cAAc,4DAA4D,CAAA;AAC1E,cAAc,qDAAqD,CAAA;AACnE,cAAc,kCAAkC,CAAA;AAChD,cAAc,mCAAmC,CAAA;AACjD,cAAc,oCAAoC,CAAA;AAClD,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,wBAAwB,CAAA;AACtC,cAAc,yBAAyB,CAAA;AACvC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,wCAAwC,CAAA;AACtD,cAAc,yCAAyC,CAAA;AAEvD,mBAAmB,uBAAuB,CAAA;AAC1C,mBAAmB,kCAAkC,CAAA;AACrD,mBAAmB,8BAA8B,CAAA;AACjD,mBAAmB,+BAA+B,CAAA;AAClD,mBAAmB,2BAA2B,CAAA;AAC9C,mBAAmB,2BAA2B,CAAA;AAC9C,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,mCAAmC,CAAA;AACtD,mBAAmB,qCAAqC,CAAA;AACxD,mBAAmB,yCAAyC,CAAA;AAC5D,mBAAmB,iCAAiC,CAAA;AACpD,mBAAmB,wCAAwC,CAAA;AAC3D,mBAAmB,gCAAgC,CAAA;AACnD,mBAAmB,uBAAuB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.708",
3
+ "version": "3.0.709",
4
4
  "description": "A hapi plugin providing the model for Defra forms",
5
5
  "homepage": "https://github.com/DEFRA/forms-designer/tree/main/model#readme",
6
6
  "types": "dist/types/index.d.ts",
@@ -28,6 +28,7 @@ import {
28
28
  type FormOfflineUpdatedMessageData,
29
29
  type FormOrganisationChanges,
30
30
  type FormOrganisationUpdatedMessageData,
31
+ type FormOutputChanges,
31
32
  type FormPrivacyNoticeChanges,
32
33
  type FormPrivacyNoticeUpdatedMessageData,
33
34
  type FormSecretBaseMessageData,
@@ -134,12 +135,31 @@ export const formOutputMessageData = Joi.object<Output>()
134
135
  })
135
136
  .description('A submission email target as recorded on an audit event')
136
137
 
138
+ export const formOutputChangesMessageData = Joi.object<FormOutputChanges>()
139
+ .keys({
140
+ added: Joi.array().items(formOutputMessageData).optional(),
141
+ updated: Joi.array()
142
+ .items(
143
+ Joi.object<ChangesMessageData<Output>>().keys({
144
+ previous: formOutputMessageData.required(),
145
+ new: formOutputMessageData.required()
146
+ })
147
+ )
148
+ .optional(),
149
+ removed: Joi.array().items(formOutputMessageData).optional()
150
+ })
151
+ .or('added', 'updated', 'removed')
152
+ .description(
153
+ "Changes an update made to the form's submission email targets (outputs)"
154
+ )
155
+
137
156
  export const formUpdatedMessageData = formMessageDataBase
138
157
  .append<FormUpdatedMessageData>({
139
158
  requestType: Joi.string()
140
159
  .valid(...Object.values(FormDefinitionRequestType))
141
160
  .required(),
142
- s3Meta: formDefinitionS3Meta.optional()
161
+ s3Meta: formDefinitionS3Meta.optional(),
162
+ outputChanges: formOutputChangesMessageData.optional()
143
163
  })
144
164
  .required()
145
165
 
@@ -0,0 +1,95 @@
1
+ import { type FormOutputChanges } from '~/src/form/form-audit/types.js'
2
+ import { type Output } from '~/src/form/form-definition/types.js'
3
+
4
+ /**
5
+ * Identifies a submission email target by its stored values. Unlike
6
+ * `getOutputKey`, which decides whether two outputs are duplicates of one
7
+ * another, this comparison is exact - changing only the case of an address is
8
+ * still a change worth recording against the form.
9
+ * @param output - submission email target
10
+ */
11
+ function getComparisonKey(output: Output): string {
12
+ return JSON.stringify([
13
+ output.emailAddress,
14
+ output.audience,
15
+ output.version,
16
+ output.condition ?? ''
17
+ ])
18
+ }
19
+
20
+ interface PositionedOutput {
21
+ output: Output
22
+ index: number
23
+ }
24
+
25
+ /**
26
+ * Works out what changed between two sets of submission email targets, in the
27
+ * shape the audit record expects.
28
+ *
29
+ * Outputs carry no id of their own, so an amendment cannot be spotted directly.
30
+ * An entry that disappears from a position while another appears at that same
31
+ * position is treated as an amendment rather than as an unrelated removal and
32
+ * addition - which is what the editor does when an author changes an existing
33
+ * email action. Anything left over is reported as a plain addition or removal,
34
+ * so a wholesale replacement (a JSON upload, say) still records honestly.
35
+ * @param previous - outputs before the update
36
+ * @param next - outputs after the update
37
+ * @returns the changes, or undefined when the outputs are untouched
38
+ */
39
+ export function getFormOutputChanges(
40
+ previous: Output[] | undefined,
41
+ next: Output[] | undefined
42
+ ): FormOutputChanges | undefined {
43
+ const previousOutputs = previous ?? []
44
+ const nextOutputs = next ?? []
45
+
46
+ const previousKeys = new Set(previousOutputs.map(getComparisonKey))
47
+ const nextKeys = new Set(nextOutputs.map(getComparisonKey))
48
+
49
+ const position = (output: Output, index: number): PositionedOutput => ({
50
+ output,
51
+ index
52
+ })
53
+
54
+ const removed: PositionedOutput[] = previousOutputs
55
+ .map((o, i) => position(o, i))
56
+ .filter(({ output }) => !nextKeys.has(getComparisonKey(output)))
57
+
58
+ const added: PositionedOutput[] = nextOutputs
59
+ .map((o, i) => position(o, i))
60
+ .filter(({ output }) => !previousKeys.has(getComparisonKey(output)))
61
+
62
+ const updated = removed.flatMap((before) => {
63
+ const after = added.find(({ index }) => index === before.index)
64
+
65
+ if (!after) {
66
+ return []
67
+ }
68
+
69
+ return [{ previous: before.output, new: after.output }]
70
+ })
71
+
72
+ const pureAdditions = added
73
+ .filter(({ index }) => !removed.some((before) => before.index === index))
74
+ .map(({ output }) => output)
75
+
76
+ const pureRemovals = removed
77
+ .filter(({ index }) => !added.some((after) => after.index === index))
78
+ .map(({ output }) => output)
79
+
80
+ const changes: FormOutputChanges = {}
81
+
82
+ if (pureAdditions.length) {
83
+ changes.added = pureAdditions
84
+ }
85
+
86
+ if (updated.length) {
87
+ changes.updated = updated
88
+ }
89
+
90
+ if (pureRemovals.length) {
91
+ changes.removed = pureRemovals
92
+ }
93
+
94
+ return Object.keys(changes).length ? changes : undefined
95
+ }
@@ -5,6 +5,7 @@ import {
5
5
  type AuditEventMessageType,
6
6
  type FormDefinitionRequestType
7
7
  } from '~/src/form/form-audit/enums.js'
8
+ import { type Output } from '~/src/form/form-definition/types.js'
8
9
  import { type FormMetadataContact } from '~/src/form/form-metadata/types.js'
9
10
 
10
11
  export interface FormMessageDataBase {
@@ -165,9 +166,48 @@ export interface FormDefinitionS3Meta {
165
166
  s3Key: string
166
167
  }
167
168
 
169
+ /**
170
+ * What a single form update did to the form's submission email targets (the
171
+ * `outputs` on the definition, surfaced to authors as "email actions").
172
+ *
173
+ * A `REPLACE_DRAFT` update carries the whole definition, so the audit message
174
+ * would otherwise say nothing about which email address was added, amended or
175
+ * removed. Collections that are empty are omitted, and the object as a whole is
176
+ * absent from an update that left the outputs untouched.
177
+ *
178
+ * Validated by `formOutputChangesMessageData`.
179
+ */
180
+ export interface FormOutputChanges {
181
+ /**
182
+ * Email targets the update introduced
183
+ */
184
+ added?: Output[]
185
+
186
+ /**
187
+ * Email targets the update amended, with the values either side of the change
188
+ */
189
+ updated?: ChangesMessageData<Output>[]
190
+
191
+ /**
192
+ * Email targets the update took away - either deleted directly by the author,
193
+ * or removed as a consequence of deleting the condition they depended on
194
+ */
195
+ removed?: Output[]
196
+ }
197
+
168
198
  export interface FormUpdatedMessageData extends FormMessageDataBase {
169
199
  requestType: FormDefinitionRequestType
170
200
  s3Meta?: FormDefinitionS3Meta
201
+
202
+ /**
203
+ * What this update did to the form's submission email targets. Absent when
204
+ * the update did not touch them.
205
+ *
206
+ * A `DELETE_CONDITION` update reports the outputs that went with the
207
+ * condition, so the removal is recorded against the action that caused it
208
+ * rather than being left to be inferred from a neighbouring event.
209
+ */
210
+ outputChanges?: FormOutputChanges
171
211
  }
172
212
 
173
213
  export type FormMessageChangesData =
package/src/index.ts CHANGED
@@ -33,6 +33,7 @@ export * from '~/src/utils/set-property.js'
33
33
  export * from '~/src/form/form-audit/index.js'
34
34
  export * from '~/src/form/form-audit/enums.js'
35
35
  export * from '~/src/form/form-audit/consolidation.js'
36
+ export * from '~/src/form/form-audit/output-changes.js'
36
37
 
37
38
  export type * from '~/src/common/types.js'
38
39
  export type * from '~/src/common/pagination/types.js'