@defra/forms-model 3.0.533 → 3.0.534
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.
@@ -1,64 +1,64 @@
|
|
1
1
|
import Joi from 'joi';
|
2
2
|
import { AuditEventMessageCategory, AuditEventMessageSchemaVersion, AuditEventMessageSource, AuditEventMessageType, FormDefinitionRequestType } from "./enums.js";
|
3
|
-
import { contactSchema, idSchema } from "../form-metadata/index.js";
|
3
|
+
import { contactSchema, emailAddressSchema, emailResponseTimeSchema, idSchema, notificationEmailAddressSchema, onlineTextSchema, onlineUrlSchema, organisationSchema, phoneSchema, privacyNoticeUrlSchema, slugSchema, submissionGuidanceSchema, teamEmailSchema, teamNameSchema, titleSchema } from "../form-metadata/index.js";
|
4
4
|
export const formMessageDataBase = Joi.object({
|
5
|
-
formId:
|
6
|
-
slug:
|
5
|
+
formId: idSchema,
|
6
|
+
slug: slugSchema,
|
7
7
|
payload: Joi.object().optional()
|
8
|
-
});
|
8
|
+
}).required().description('The base data object for Form Messages');
|
9
9
|
export const formCreatedMessageData = formMessageDataBase.append({
|
10
|
-
title:
|
11
|
-
organisation:
|
12
|
-
teamName:
|
13
|
-
teamEmail:
|
14
|
-
});
|
10
|
+
title: titleSchema,
|
11
|
+
organisation: organisationSchema,
|
12
|
+
teamName: teamNameSchema,
|
13
|
+
teamEmail: teamEmailSchema
|
14
|
+
}).required().description('Message data schema for when a form is created');
|
15
15
|
export const formDefinitionS3Meta = Joi.object().keys({
|
16
16
|
fileId: Joi.string().required(),
|
17
17
|
filename: Joi.string().required(),
|
18
18
|
s3Key: Joi.string().required()
|
19
|
-
});
|
19
|
+
}).required().description('Schema for form data S3 object in message');
|
20
20
|
export const formUpdatedMessageData = formMessageDataBase.append({
|
21
21
|
requestType: Joi.string().valid(...Object.values(FormDefinitionRequestType)).required(),
|
22
22
|
s3Meta: formDefinitionS3Meta
|
23
|
-
});
|
24
|
-
export const formTitleChanges = Joi.object().keys({
|
25
|
-
title: Joi.string().required()
|
26
23
|
}).required();
|
24
|
+
export const formTitleChanges = Joi.object().keys({
|
25
|
+
title: titleSchema
|
26
|
+
}).required().description('Changes schema for FORM_TITLE_UPDATED event');
|
27
27
|
export const formOrganisationChanges = Joi.object().keys({
|
28
|
-
organisation:
|
29
|
-
}).required();
|
28
|
+
organisation: organisationSchema
|
29
|
+
}).required().description('Changes schema for FORM_ORGANISATION_UPDATED event');
|
30
30
|
export const formTeamNameChanges = Joi.object().keys({
|
31
|
-
teamName:
|
32
|
-
}).required();
|
31
|
+
teamName: teamNameSchema
|
32
|
+
}).required().description('Changes schema for FORM_TEAM_NAME_UPDATED event');
|
33
33
|
export const formTeamEmailChanges = Joi.object().keys({
|
34
|
-
teamEmail:
|
35
|
-
}).required();
|
34
|
+
teamEmail: teamEmailSchema
|
35
|
+
}).required().description('Changes schema for FORM_TEAM_EMAIL_UPDATED event');
|
36
36
|
export const formSupportContactChanges = Joi.object().keys({
|
37
37
|
contact: contactSchema
|
38
|
-
}).required();
|
38
|
+
}).required().description('Changes schema for FORM_SUPPORT_CONTACT_UPDATED event');
|
39
39
|
export const formSupportPhoneChanges = Joi.object().keys({
|
40
|
-
phone:
|
41
|
-
}).required();
|
40
|
+
phone: phoneSchema
|
41
|
+
}).required().description('Changes schema for FORM_SUPPORT_PHONE_UPDATED event');
|
42
42
|
export const formSupportOnlineChanges = Joi.object().keys({
|
43
|
-
url:
|
44
|
-
text:
|
45
|
-
}).required();
|
43
|
+
url: onlineUrlSchema,
|
44
|
+
text: onlineTextSchema
|
45
|
+
}).required().description('Changes schema for FORM_SUPPORT_ONLINE_UPDATED event');
|
46
46
|
export const formSupportEmailChanges = Joi.object().keys({
|
47
|
-
address:
|
48
|
-
responseTime:
|
49
|
-
});
|
47
|
+
address: emailAddressSchema,
|
48
|
+
responseTime: emailResponseTimeSchema
|
49
|
+
}).description('Changes schema for FORM_SUPPORT_EMAIL_UPDATED event');
|
50
50
|
export const formPrivacyNoticeChanges = Joi.object().keys({
|
51
|
-
privacyNoticeUrl:
|
52
|
-
}).required();
|
51
|
+
privacyNoticeUrl: privacyNoticeUrlSchema.required()
|
52
|
+
}).required().description('Changes schema for FORM_PRIVACY_NOTICE_UPDATED event');
|
53
53
|
export const formNotificationEmailChanges = Joi.object().keys({
|
54
|
-
notificationEmail:
|
55
|
-
}).required();
|
54
|
+
notificationEmail: notificationEmailAddressSchema.required()
|
55
|
+
}).required().description('Changes schema for FORM_NOTIFICATION_EMAIL_UPDATED event');
|
56
56
|
export const formSubmissionGuidanceChanges = Joi.object().keys({
|
57
|
-
submissionGuidance:
|
58
|
-
}).required();
|
57
|
+
submissionGuidance: submissionGuidanceSchema.required()
|
58
|
+
}).required().description('Changes schema for FORM_SUBMISSION_GUIDANCE_UPDATED event');
|
59
59
|
export const formUploadedChanges = Joi.object().keys({
|
60
60
|
value: Joi.string().required()
|
61
|
-
}).required();
|
61
|
+
}).required().description('Changes schema for FORM_JSON_UPLOADED event');
|
62
62
|
export const entitlementMessageData = Joi.object().keys({
|
63
63
|
userId: Joi.string().required(),
|
64
64
|
displayName: Joi.string().required(),
|
@@ -68,24 +68,24 @@ export const entitlementMessageData = Joi.object().keys({
|
|
68
68
|
export const auditUserSchema = Joi.object().keys({
|
69
69
|
id: Joi.string().uuid().required(),
|
70
70
|
displayName: Joi.string().required()
|
71
|
-
});
|
71
|
+
}).description('Schema for CREATED_BY audit event');
|
72
72
|
export function formChangesMessageData(schema) {
|
73
73
|
return formMessageDataBase.append({
|
74
74
|
changes: Joi.object().keys({
|
75
75
|
previous: schema,
|
76
76
|
new: schema
|
77
|
-
})
|
77
|
+
}).description('Changes schema')
|
78
78
|
});
|
79
79
|
}
|
80
80
|
export const messageSchema = Joi.object().keys({
|
81
|
-
schemaVersion: Joi.string().valid(...Object.values(AuditEventMessageSchemaVersion)).required(),
|
82
|
-
category: Joi.string().valid(...Object.values(AuditEventMessageCategory)).required(),
|
83
|
-
source: Joi.string().valid(...Object.values(AuditEventMessageSource)).required(),
|
84
|
-
type: Joi.string().valid(...Object.values(AuditEventMessageType)),
|
85
|
-
entityId: Joi.string().required(),
|
86
|
-
traceId: Joi.string().optional(),
|
87
|
-
createdAt: Joi.date().required(),
|
88
|
-
createdBy: auditUserSchema.required(),
|
81
|
+
schemaVersion: Joi.string().valid(...Object.values(AuditEventMessageSchemaVersion)).required().description('The version of the AuditMessage - bumped with breaking changes'),
|
82
|
+
category: Joi.string().valid(...Object.values(AuditEventMessageCategory)).required().description('The message category - what does the entityId represent?'),
|
83
|
+
source: Joi.string().valid(...Object.values(AuditEventMessageSource)).required().description('Source of the message - which service?'),
|
84
|
+
type: Joi.string().valid(...Object.values(AuditEventMessageType)).description('Event type'),
|
85
|
+
entityId: Joi.string().required().description('The id of the entity the category relates to'),
|
86
|
+
traceId: Joi.string().optional().description('Trace id of the event - to link events across multiple services'),
|
87
|
+
createdAt: Joi.date().required().description('The ISO timestamp where the action took place - should be the same as updated_at field in DB'),
|
88
|
+
createdBy: auditUserSchema.required().description('The user who performed the action being audited'),
|
89
89
|
data: Joi.when('type', {
|
90
90
|
switch: [{
|
91
91
|
is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),
|
@@ -143,16 +143,16 @@ export const messageSchema = Joi.object().keys({
|
|
143
143
|
then: entitlementMessageData
|
144
144
|
}],
|
145
145
|
otherwise: Joi.forbidden()
|
146
|
-
}),
|
147
|
-
messageCreatedAt: Joi.date().required()
|
148
|
-
});
|
146
|
+
}).description('The data/payload of the audit message'),
|
147
|
+
messageCreatedAt: Joi.date().required().description('ISO timestamp when the message was published')
|
148
|
+
}).required().description('The audit message issued by the publishing service');
|
149
149
|
export const auditEvent = Joi.object().keys({
|
150
150
|
message: messageSchema
|
151
|
-
});
|
151
|
+
}).description('The Body of the audit event');
|
152
152
|
export const auditRecord = messageSchema.append({
|
153
153
|
id: idSchema,
|
154
154
|
messageId: Joi.string().uuid().required(),
|
155
155
|
entityId: Joi.string().required(),
|
156
156
|
recordCreatedAt: Joi.date().required()
|
157
|
-
});
|
157
|
+
}).description('The audit record persisted into the DB');
|
158
158
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":["Joi","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageSource","AuditEventMessageType","FormDefinitionRequestType","contactSchema","idSchema","formMessageDataBase","object","formId","string","required","slug","payload","optional","formCreatedMessageData","append","title","organisation","teamName","teamEmail","formDefinitionS3Meta","keys","fileId","filename","s3Key","formUpdatedMessageData","requestType","valid","Object","values","s3Meta","formTitleChanges","formOrganisationChanges","formTeamNameChanges","formTeamEmailChanges","formSupportContactChanges","contact","formSupportPhoneChanges","phone","formSupportOnlineChanges","url","text","formSupportEmailChanges","address","email","responseTime","formPrivacyNoticeChanges","privacyNoticeUrl","formNotificationEmailChanges","notificationEmail","formSubmissionGuidanceChanges","submissionGuidance","formUploadedChanges","value","entitlementMessageData","userId","displayName","roles","array","items","auditUserSchema","id","uuid","formChangesMessageData","schema","changes","previous","new","messageSchema","schemaVersion","category","source","type","entityId","traceId","createdAt","date","createdBy","data","when","switch","is","trim","FORM_CREATED","then","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_NOTIFICATION_EMAIL_UPDATED","FORM_SUBMISSION_GUIDANCE_UPDATED","FORM_JSON_UPLOADED","FORM_UPDATED","ENTITLEMENT_CREATED","FORM_DRAFT_DELETED","ENTITLEMENT_UPDATED","ENTITLEMENT_DELETED","otherwise","forbidden","messageCreatedAt","auditEvent","message","auditRecord","messageId","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 ChangesMessageData,\n type EntitlementMessageData,\n type FormCreatedMessageData,\n type FormDefinitionS3Meta,\n type FormMessageChangesData,\n type FormMessageDataBase,\n type FormNotificationEmailChanges,\n type FormNotificationEmailUpdatedMessageData,\n type FormOrganisationChanges,\n type FormOrganisationUpdatedMessageData,\n type FormPrivacyNoticeChanges,\n type FormPrivacyNoticeUpdatedMessageData,\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 FormTitleChanges,\n type FormTitleUpdatedMessageData,\n type FormUpdatedMessageData,\n type FormUploadedChanges,\n type FormUploadedMessageData\n} from '~/src/form/form-audit/types.js'\nimport { contactSchema, idSchema } from '~/src/form/form-metadata/index.js'\n\nexport const formMessageDataBase = Joi.object<FormMessageDataBase>({\n formId: Joi.string().required(),\n slug: Joi.string().required(),\n payload: Joi.object().optional()\n})\n\nexport const formCreatedMessageData =\n formMessageDataBase.append<FormCreatedMessageData>({\n title: Joi.string().required(),\n organisation: Joi.string().required(),\n teamName: Joi.string().required(),\n teamEmail: Joi.string().required()\n })\n\nexport const formDefinitionS3Meta = Joi.object<FormDefinitionS3Meta>().keys({\n fileId: Joi.string().required(),\n filename: Joi.string().required(),\n s3Key: Joi.string().required()\n})\n\nexport const formUpdatedMessageData =\n formMessageDataBase.append<FormUpdatedMessageData>({\n requestType: Joi.string()\n .valid(...Object.values(FormDefinitionRequestType))\n .required(),\n s3Meta: formDefinitionS3Meta\n })\n\nexport const formTitleChanges = Joi.object<FormTitleChanges>()\n .keys({\n title: Joi.string().required()\n })\n .required()\n\nexport const formOrganisationChanges = Joi.object<FormOrganisationChanges>()\n .keys({\n organisation: Joi.string().required()\n })\n .required()\n\nexport const formTeamNameChanges = Joi.object<FormTeamNameChanges>()\n .keys({\n teamName: Joi.string().required()\n })\n .required()\n\nexport const formTeamEmailChanges = Joi.object<FormTeamEmailChanges>()\n .keys({\n teamEmail: Joi.string().required()\n })\n .required()\n\nexport const formSupportContactChanges = Joi.object<FormSupportContactChanges>()\n .keys({\n contact: contactSchema\n })\n .required()\n\nexport const formSupportPhoneChanges = Joi.object<FormSupportPhoneChanges>()\n .keys({\n phone: Joi.string().required()\n })\n .required()\n\nexport const formSupportOnlineChanges = Joi.object<FormSupportOnlineChanges>()\n .keys({\n url: Joi.string().required(),\n text: Joi.string().required()\n })\n .required()\n\nexport const formSupportEmailChanges =\n Joi.object<FormSupportEmailChanges>().keys({\n address: Joi.string().email().required(),\n responseTime: Joi.string().required()\n })\n\nexport const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()\n .keys({\n privacyNoticeUrl: Joi.string()\n })\n .required()\n\nexport const formNotificationEmailChanges =\n Joi.object<FormNotificationEmailChanges>()\n .keys({\n notificationEmail: Joi.string()\n })\n .required()\n\nexport const formSubmissionGuidanceChanges =\n Joi.object<FormSubmissionGuidanceChanges>()\n .keys({\n submissionGuidance: Joi.string()\n })\n .required()\n\nexport const formUploadedChanges = Joi.object<FormUploadedChanges>()\n .keys({\n value: Joi.string().required()\n })\n .required()\n\nexport const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(\n {\n userId: Joi.string().required(),\n displayName: Joi.string().required(),\n email: Joi.string().email().required(),\n roles: Joi.array().items(Joi.string())\n }\n)\n\nexport const auditUserSchema = Joi.object<AuditUser>().keys({\n id: Joi.string().uuid().required(),\n displayName: Joi.string().required()\n})\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>>().keys({\n previous: schema,\n new: schema\n })\n })\n}\n\nexport const messageSchema = Joi.object<AuditMessage>().keys({\n schemaVersion: Joi.string()\n .valid(...Object.values(AuditEventMessageSchemaVersion))\n .required(),\n category: Joi.string()\n .valid(...Object.values(AuditEventMessageCategory))\n .required(),\n source: Joi.string()\n .valid(...Object.values(AuditEventMessageSource))\n .required(),\n type: Joi.string().valid(...Object.values(AuditEventMessageType)),\n entityId: Joi.string().required(),\n traceId: Joi.string().optional(),\n createdAt: Joi.date().required(),\n createdBy: auditUserSchema.required(),\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().trim().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_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().trim().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(AuditEventMessageType.ENTITLEMENT_CREATED),\n then: entitlementMessageData\n },\n {\n is: Joi.string().trim().valid(AuditEventMessageType.FORM_DRAFT_DELETED),\n then: formMessageDataBase\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.ENTITLEMENT_UPDATED),\n then: entitlementMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.ENTITLEMENT_DELETED),\n then: entitlementMessageData\n }\n ],\n otherwise: Joi.forbidden()\n }),\n messageCreatedAt: Joi.date().required()\n})\n\nexport const auditEvent = Joi.object<AuditEvent>().keys({\n message: messageSchema\n})\n\nexport const auditRecord = messageSchema.append<AuditRecord>({\n id: idSchema,\n messageId: Joi.string().uuid().required(),\n entityId: Joi.string().required(),\n recordCreatedAt: Joi.date().required()\n})\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageSource","AuditEventMessageType","FormDefinitionRequestType","contactSchema","emailAddressSchema","emailResponseTimeSchema","idSchema","notificationEmailAddressSchema","onlineTextSchema","onlineUrlSchema","organisationSchema","phoneSchema","privacyNoticeUrlSchema","slugSchema","submissionGuidanceSchema","teamEmailSchema","teamNameSchema","titleSchema","formMessageDataBase","object","formId","slug","payload","optional","required","description","formCreatedMessageData","append","title","organisation","teamName","teamEmail","formDefinitionS3Meta","keys","fileId","string","filename","s3Key","formUpdatedMessageData","requestType","valid","Object","values","s3Meta","formTitleChanges","formOrganisationChanges","formTeamNameChanges","formTeamEmailChanges","formSupportContactChanges","contact","formSupportPhoneChanges","phone","formSupportOnlineChanges","url","text","formSupportEmailChanges","address","responseTime","formPrivacyNoticeChanges","privacyNoticeUrl","formNotificationEmailChanges","notificationEmail","formSubmissionGuidanceChanges","submissionGuidance","formUploadedChanges","value","entitlementMessageData","userId","displayName","email","roles","array","items","auditUserSchema","id","uuid","formChangesMessageData","schema","changes","previous","new","messageSchema","schemaVersion","category","source","type","entityId","traceId","createdAt","date","createdBy","data","when","switch","is","trim","FORM_CREATED","then","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_NOTIFICATION_EMAIL_UPDATED","FORM_SUBMISSION_GUIDANCE_UPDATED","FORM_JSON_UPLOADED","FORM_UPDATED","ENTITLEMENT_CREATED","FORM_DRAFT_DELETED","ENTITLEMENT_UPDATED","ENTITLEMENT_DELETED","otherwise","forbidden","messageCreatedAt","auditEvent","message","auditRecord","messageId","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 ChangesMessageData,\n type EntitlementMessageData,\n type FormCreatedMessageData,\n type FormDefinitionS3Meta,\n type FormMessageChangesData,\n type FormMessageDataBase,\n type FormNotificationEmailChanges,\n type FormNotificationEmailUpdatedMessageData,\n type FormOrganisationChanges,\n type FormOrganisationUpdatedMessageData,\n type FormPrivacyNoticeChanges,\n type FormPrivacyNoticeUpdatedMessageData,\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 FormTitleChanges,\n type FormTitleUpdatedMessageData,\n type FormUpdatedMessageData,\n type FormUploadedChanges,\n type FormUploadedMessageData\n} from '~/src/form/form-audit/types.js'\nimport {\n contactSchema,\n emailAddressSchema,\n emailResponseTimeSchema,\n idSchema,\n notificationEmailAddressSchema,\n onlineTextSchema,\n onlineUrlSchema,\n organisationSchema,\n phoneSchema,\n privacyNoticeUrlSchema,\n slugSchema,\n submissionGuidanceSchema,\n teamEmailSchema,\n teamNameSchema,\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 .required()\n .description('Schema for form data S3 object in message')\n\nexport const formUpdatedMessageData = formMessageDataBase\n .append<FormUpdatedMessageData>({\n requestType: Joi.string()\n .valid(...Object.values(FormDefinitionRequestType))\n .required(),\n s3Meta: formDefinitionS3Meta\n })\n .required()\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,\n text: onlineTextSchema\n })\n .required()\n .description('Changes schema for FORM_SUPPORT_ONLINE_UPDATED event')\n\nexport const formSupportEmailChanges = Joi.object<FormSupportEmailChanges>()\n .keys({\n address: emailAddressSchema,\n responseTime: emailResponseTimeSchema\n })\n .description('Changes schema for FORM_SUPPORT_EMAIL_UPDATED event')\n\nexport const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()\n .keys({\n privacyNoticeUrl: privacyNoticeUrlSchema.required()\n })\n .required()\n .description('Changes schema for FORM_PRIVACY_NOTICE_UPDATED event')\n\nexport const formNotificationEmailChanges =\n Joi.object<FormNotificationEmailChanges>()\n .keys({\n notificationEmail: notificationEmailAddressSchema.required()\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.required()\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 entitlementMessageData = Joi.object<EntitlementMessageData>().keys(\n {\n userId: Joi.string().required(),\n displayName: Joi.string().required(),\n email: Joi.string().email().required(),\n roles: Joi.array().items(Joi.string())\n }\n)\n\nexport const auditUserSchema = Joi.object<AuditUser>()\n .keys({\n id: Joi.string().uuid().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_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(AuditEventMessageType.ENTITLEMENT_CREATED),\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.ENTITLEMENT_UPDATED),\n then: entitlementMessageData\n },\n {\n is: Joi.string()\n .trim()\n .valid(AuditEventMessageType.ENTITLEMENT_DELETED),\n then: entitlementMessageData\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 +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,EAEd,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,6BAA6B,EAElC,KAAK,yBAAyB,EAE9B,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,uBAAuB,EAE5B,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EAErB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EAEzB,MAAM,gCAAgC,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,EAEd,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EAEjC,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,6BAA6B,EAElC,KAAK,yBAAyB,EAE9B,KAAK,uBAAuB,EAE5B,KAAK,wBAAwB,EAE7B,KAAK,uBAAuB,EAE5B,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EAErB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EAEzB,MAAM,gCAAgC,CAAA;AAmBvC,eAAO,MAAM,mBAAmB,uCAMwB,CAAA;AAExD,eAAO,MAAM,sBAAsB,0CAQ6B,CAAA;AAEhE,eAAO,MAAM,oBAAoB,wCAO0B,CAAA;AAE3D,eAAO,MAAM,sBAAsB,0CAOtB,CAAA;AAEb,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,4CAKiC,CAAA;AAEtE,eAAO,MAAM,4BAA4B,gDAMmC,CAAA;AAE5E,eAAO,MAAM,6BAA6B,iDAMmC,CAAA;AAE7E,eAAO,MAAM,mBAAmB,uCAK6B,CAAA;AAE7D,eAAO,MAAM,sBAAsB,0CAOlC,CAAA;AAED,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,gCAyL0C,CAAA;AAEpE,eAAO,MAAM,UAAU,8BAIsB,CAAA;AAE7C,eAAO,MAAM,WAAW,+BAOgC,CAAA"}
|
package/package.json
CHANGED
@@ -44,110 +44,146 @@ import {
|
|
44
44
|
type FormUploadedChanges,
|
45
45
|
type FormUploadedMessageData
|
46
46
|
} from '~/src/form/form-audit/types.js'
|
47
|
-
import {
|
47
|
+
import {
|
48
|
+
contactSchema,
|
49
|
+
emailAddressSchema,
|
50
|
+
emailResponseTimeSchema,
|
51
|
+
idSchema,
|
52
|
+
notificationEmailAddressSchema,
|
53
|
+
onlineTextSchema,
|
54
|
+
onlineUrlSchema,
|
55
|
+
organisationSchema,
|
56
|
+
phoneSchema,
|
57
|
+
privacyNoticeUrlSchema,
|
58
|
+
slugSchema,
|
59
|
+
submissionGuidanceSchema,
|
60
|
+
teamEmailSchema,
|
61
|
+
teamNameSchema,
|
62
|
+
titleSchema
|
63
|
+
} from '~/src/form/form-metadata/index.js'
|
48
64
|
|
49
65
|
export const formMessageDataBase = Joi.object<FormMessageDataBase>({
|
50
|
-
formId:
|
51
|
-
slug:
|
66
|
+
formId: idSchema,
|
67
|
+
slug: slugSchema,
|
52
68
|
payload: Joi.object().optional()
|
53
69
|
})
|
70
|
+
.required()
|
71
|
+
.description('The base data object for Form Messages')
|
54
72
|
|
55
|
-
export const formCreatedMessageData =
|
56
|
-
|
57
|
-
title:
|
58
|
-
organisation:
|
59
|
-
teamName:
|
60
|
-
teamEmail:
|
73
|
+
export const formCreatedMessageData = formMessageDataBase
|
74
|
+
.append<FormCreatedMessageData>({
|
75
|
+
title: titleSchema,
|
76
|
+
organisation: organisationSchema,
|
77
|
+
teamName: teamNameSchema,
|
78
|
+
teamEmail: teamEmailSchema
|
61
79
|
})
|
80
|
+
.required()
|
81
|
+
.description('Message data schema for when a form is created')
|
62
82
|
|
63
|
-
export const formDefinitionS3Meta = Joi.object<FormDefinitionS3Meta>()
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
83
|
+
export const formDefinitionS3Meta = Joi.object<FormDefinitionS3Meta>()
|
84
|
+
.keys({
|
85
|
+
fileId: Joi.string().required(),
|
86
|
+
filename: Joi.string().required(),
|
87
|
+
s3Key: Joi.string().required()
|
88
|
+
})
|
89
|
+
.required()
|
90
|
+
.description('Schema for form data S3 object in message')
|
68
91
|
|
69
|
-
export const formUpdatedMessageData =
|
70
|
-
|
92
|
+
export const formUpdatedMessageData = formMessageDataBase
|
93
|
+
.append<FormUpdatedMessageData>({
|
71
94
|
requestType: Joi.string()
|
72
95
|
.valid(...Object.values(FormDefinitionRequestType))
|
73
96
|
.required(),
|
74
97
|
s3Meta: formDefinitionS3Meta
|
75
98
|
})
|
99
|
+
.required()
|
76
100
|
|
77
101
|
export const formTitleChanges = Joi.object<FormTitleChanges>()
|
78
102
|
.keys({
|
79
|
-
title:
|
103
|
+
title: titleSchema
|
80
104
|
})
|
81
105
|
.required()
|
106
|
+
.description('Changes schema for FORM_TITLE_UPDATED event')
|
82
107
|
|
83
108
|
export const formOrganisationChanges = Joi.object<FormOrganisationChanges>()
|
84
109
|
.keys({
|
85
|
-
organisation:
|
110
|
+
organisation: organisationSchema
|
86
111
|
})
|
87
112
|
.required()
|
113
|
+
.description('Changes schema for FORM_ORGANISATION_UPDATED event')
|
88
114
|
|
89
115
|
export const formTeamNameChanges = Joi.object<FormTeamNameChanges>()
|
90
116
|
.keys({
|
91
|
-
teamName:
|
117
|
+
teamName: teamNameSchema
|
92
118
|
})
|
93
119
|
.required()
|
120
|
+
.description('Changes schema for FORM_TEAM_NAME_UPDATED event')
|
94
121
|
|
95
122
|
export const formTeamEmailChanges = Joi.object<FormTeamEmailChanges>()
|
96
123
|
.keys({
|
97
|
-
teamEmail:
|
124
|
+
teamEmail: teamEmailSchema
|
98
125
|
})
|
99
126
|
.required()
|
127
|
+
.description('Changes schema for FORM_TEAM_EMAIL_UPDATED event')
|
100
128
|
|
101
129
|
export const formSupportContactChanges = Joi.object<FormSupportContactChanges>()
|
102
130
|
.keys({
|
103
131
|
contact: contactSchema
|
104
132
|
})
|
105
133
|
.required()
|
134
|
+
.description('Changes schema for FORM_SUPPORT_CONTACT_UPDATED event')
|
106
135
|
|
107
136
|
export const formSupportPhoneChanges = Joi.object<FormSupportPhoneChanges>()
|
108
137
|
.keys({
|
109
|
-
phone:
|
138
|
+
phone: phoneSchema
|
110
139
|
})
|
111
140
|
.required()
|
141
|
+
.description('Changes schema for FORM_SUPPORT_PHONE_UPDATED event')
|
112
142
|
|
113
143
|
export const formSupportOnlineChanges = Joi.object<FormSupportOnlineChanges>()
|
114
144
|
.keys({
|
115
|
-
url:
|
116
|
-
text:
|
145
|
+
url: onlineUrlSchema,
|
146
|
+
text: onlineTextSchema
|
117
147
|
})
|
118
148
|
.required()
|
149
|
+
.description('Changes schema for FORM_SUPPORT_ONLINE_UPDATED event')
|
119
150
|
|
120
|
-
export const formSupportEmailChanges =
|
121
|
-
|
122
|
-
address:
|
123
|
-
responseTime:
|
151
|
+
export const formSupportEmailChanges = Joi.object<FormSupportEmailChanges>()
|
152
|
+
.keys({
|
153
|
+
address: emailAddressSchema,
|
154
|
+
responseTime: emailResponseTimeSchema
|
124
155
|
})
|
156
|
+
.description('Changes schema for FORM_SUPPORT_EMAIL_UPDATED event')
|
125
157
|
|
126
158
|
export const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()
|
127
159
|
.keys({
|
128
|
-
privacyNoticeUrl:
|
160
|
+
privacyNoticeUrl: privacyNoticeUrlSchema.required()
|
129
161
|
})
|
130
162
|
.required()
|
163
|
+
.description('Changes schema for FORM_PRIVACY_NOTICE_UPDATED event')
|
131
164
|
|
132
165
|
export const formNotificationEmailChanges =
|
133
166
|
Joi.object<FormNotificationEmailChanges>()
|
134
167
|
.keys({
|
135
|
-
notificationEmail:
|
168
|
+
notificationEmail: notificationEmailAddressSchema.required()
|
136
169
|
})
|
137
170
|
.required()
|
171
|
+
.description('Changes schema for FORM_NOTIFICATION_EMAIL_UPDATED event')
|
138
172
|
|
139
173
|
export const formSubmissionGuidanceChanges =
|
140
174
|
Joi.object<FormSubmissionGuidanceChanges>()
|
141
175
|
.keys({
|
142
|
-
submissionGuidance:
|
176
|
+
submissionGuidance: submissionGuidanceSchema.required()
|
143
177
|
})
|
144
178
|
.required()
|
179
|
+
.description('Changes schema for FORM_SUBMISSION_GUIDANCE_UPDATED event')
|
145
180
|
|
146
181
|
export const formUploadedChanges = Joi.object<FormUploadedChanges>()
|
147
182
|
.keys({
|
148
183
|
value: Joi.string().required()
|
149
184
|
})
|
150
185
|
.required()
|
186
|
+
.description('Changes schema for FORM_JSON_UPLOADED event')
|
151
187
|
|
152
188
|
export const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(
|
153
189
|
{
|
@@ -158,186 +194,224 @@ export const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(
|
|
158
194
|
}
|
159
195
|
)
|
160
196
|
|
161
|
-
export const auditUserSchema = Joi.object<AuditUser>()
|
162
|
-
|
163
|
-
|
164
|
-
|
197
|
+
export const auditUserSchema = Joi.object<AuditUser>()
|
198
|
+
.keys({
|
199
|
+
id: Joi.string().uuid().required(),
|
200
|
+
displayName: Joi.string().required()
|
201
|
+
})
|
202
|
+
.description('Schema for CREATED_BY audit event')
|
165
203
|
|
166
204
|
export function formChangesMessageData<T, U extends FormMessageChangesData>(
|
167
205
|
schema: ObjectSchema<T>
|
168
206
|
): ObjectSchema<U> {
|
169
207
|
return formMessageDataBase.append<U>({
|
170
|
-
changes: Joi.object<ChangesMessageData<T>>()
|
171
|
-
|
172
|
-
|
173
|
-
|
208
|
+
changes: Joi.object<ChangesMessageData<T>>()
|
209
|
+
.keys({
|
210
|
+
previous: schema,
|
211
|
+
new: schema
|
212
|
+
})
|
213
|
+
.description('Changes schema')
|
174
214
|
})
|
175
215
|
}
|
176
216
|
|
177
|
-
export const messageSchema = Joi.object<AuditMessage>()
|
178
|
-
|
179
|
-
.
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
.
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
.
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
.
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
217
|
+
export const messageSchema = Joi.object<AuditMessage>()
|
218
|
+
.keys({
|
219
|
+
schemaVersion: Joi.string()
|
220
|
+
.valid(...Object.values(AuditEventMessageSchemaVersion))
|
221
|
+
.required()
|
222
|
+
.description(
|
223
|
+
'The version of the AuditMessage - bumped with breaking changes'
|
224
|
+
),
|
225
|
+
category: Joi.string()
|
226
|
+
.valid(...Object.values(AuditEventMessageCategory))
|
227
|
+
.required()
|
228
|
+
.description('The message category - what does the entityId represent?'),
|
229
|
+
source: Joi.string()
|
230
|
+
.valid(...Object.values(AuditEventMessageSource))
|
231
|
+
.required()
|
232
|
+
.description('Source of the message - which service?'),
|
233
|
+
type: Joi.string()
|
234
|
+
.valid(...Object.values(AuditEventMessageType))
|
235
|
+
.description('Event type'),
|
236
|
+
entityId: Joi.string()
|
237
|
+
.required()
|
238
|
+
.description('The id of the entity the category relates to'),
|
239
|
+
traceId: Joi.string()
|
240
|
+
.optional()
|
241
|
+
.description(
|
242
|
+
'Trace id of the event - to link events across multiple services'
|
243
|
+
),
|
244
|
+
createdAt: Joi.date()
|
245
|
+
.required()
|
246
|
+
.description(
|
247
|
+
'The ISO timestamp where the action took place - should be the same as updated_at field in DB'
|
248
|
+
),
|
249
|
+
createdBy: auditUserSchema
|
250
|
+
.required()
|
251
|
+
.description('The user who performed the action being audited'),
|
252
|
+
data: Joi.when('type', {
|
253
|
+
switch: [
|
254
|
+
{
|
255
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),
|
256
|
+
then: formCreatedMessageData
|
257
|
+
},
|
258
|
+
{
|
259
|
+
is: Joi.string()
|
260
|
+
.trim()
|
261
|
+
.valid(AuditEventMessageType.FORM_TITLE_UPDATED),
|
262
|
+
then: formChangesMessageData<
|
263
|
+
FormTitleChanges,
|
264
|
+
FormTitleUpdatedMessageData
|
265
|
+
>(formTitleChanges)
|
266
|
+
},
|
267
|
+
{
|
268
|
+
is: Joi.string()
|
269
|
+
.trim()
|
270
|
+
.valid(AuditEventMessageType.FORM_ORGANISATION_UPDATED),
|
271
|
+
then: formChangesMessageData<
|
272
|
+
FormOrganisationChanges,
|
273
|
+
FormOrganisationUpdatedMessageData
|
274
|
+
>(formOrganisationChanges)
|
275
|
+
},
|
276
|
+
{
|
277
|
+
is: Joi.string()
|
278
|
+
.trim()
|
279
|
+
.valid(AuditEventMessageType.FORM_TEAM_NAME_UPDATED),
|
280
|
+
then: formChangesMessageData<
|
281
|
+
FormTeamNameChanges,
|
282
|
+
FormTeamNameUpdatedMessageData
|
283
|
+
>(formTeamNameChanges)
|
284
|
+
},
|
285
|
+
{
|
286
|
+
is: Joi.string()
|
287
|
+
.trim()
|
288
|
+
.valid(AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED),
|
289
|
+
then: formChangesMessageData<
|
290
|
+
FormTeamEmailChanges,
|
291
|
+
FormTeamEmailUpdatedMessageData
|
292
|
+
>(formTeamEmailChanges)
|
293
|
+
},
|
294
|
+
{
|
295
|
+
is: Joi.string()
|
296
|
+
.trim()
|
297
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED),
|
298
|
+
then: formChangesMessageData<
|
299
|
+
FormSupportContactChanges,
|
300
|
+
FormSupportContactUpdatedMessageData
|
301
|
+
>(formSupportContactChanges)
|
302
|
+
},
|
303
|
+
{
|
304
|
+
is: Joi.string()
|
305
|
+
.trim()
|
306
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED),
|
307
|
+
then: formChangesMessageData<
|
308
|
+
FormSupportPhoneChanges,
|
309
|
+
FormSupportPhoneUpdatedMessageData
|
310
|
+
>(formSupportPhoneChanges)
|
311
|
+
},
|
312
|
+
{
|
313
|
+
is: Joi.string()
|
314
|
+
.trim()
|
315
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),
|
316
|
+
then: formChangesMessageData<
|
317
|
+
FormSupportEmailChanges,
|
318
|
+
FormSupportEmailUpdatedMessageData
|
319
|
+
>(formSupportEmailChanges)
|
320
|
+
},
|
321
|
+
{
|
322
|
+
is: Joi.string()
|
323
|
+
.trim()
|
324
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED),
|
325
|
+
then: formChangesMessageData<
|
326
|
+
FormSupportOnlineChanges,
|
327
|
+
FormSupportOnlineUpdatedMessageData
|
328
|
+
>(formSupportOnlineChanges)
|
329
|
+
},
|
330
|
+
{
|
331
|
+
is: Joi.string()
|
332
|
+
.trim()
|
333
|
+
.valid(AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED),
|
334
|
+
then: formChangesMessageData<
|
335
|
+
FormPrivacyNoticeChanges,
|
336
|
+
FormPrivacyNoticeUpdatedMessageData
|
337
|
+
>(formPrivacyNoticeChanges)
|
338
|
+
},
|
339
|
+
{
|
340
|
+
is: Joi.string()
|
341
|
+
.trim()
|
342
|
+
.valid(AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED),
|
343
|
+
then: formChangesMessageData<
|
344
|
+
FormNotificationEmailChanges,
|
345
|
+
FormNotificationEmailUpdatedMessageData
|
346
|
+
>(formNotificationEmailChanges)
|
347
|
+
},
|
348
|
+
{
|
349
|
+
is: Joi.string()
|
350
|
+
.trim()
|
351
|
+
.valid(AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED),
|
352
|
+
then: formChangesMessageData<
|
353
|
+
FormSubmissionGuidanceChanges,
|
354
|
+
FormSubmissionGuidanceUpdatedMessageData
|
355
|
+
>(formSubmissionGuidanceChanges)
|
356
|
+
},
|
357
|
+
{
|
358
|
+
is: Joi.string()
|
359
|
+
.trim()
|
360
|
+
.valid(AuditEventMessageType.FORM_JSON_UPLOADED),
|
361
|
+
then: formChangesMessageData<
|
362
|
+
FormUploadedChanges,
|
363
|
+
FormUploadedMessageData
|
364
|
+
>(formUploadedChanges)
|
365
|
+
},
|
366
|
+
{
|
367
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_UPDATED),
|
368
|
+
then: formUpdatedMessageData
|
369
|
+
},
|
370
|
+
{
|
371
|
+
is: Joi.string()
|
372
|
+
.trim()
|
373
|
+
.valid(AuditEventMessageType.ENTITLEMENT_CREATED),
|
374
|
+
then: entitlementMessageData
|
375
|
+
},
|
376
|
+
{
|
377
|
+
is: Joi.string()
|
378
|
+
.trim()
|
379
|
+
.valid(AuditEventMessageType.FORM_DRAFT_DELETED),
|
380
|
+
then: formMessageDataBase
|
381
|
+
},
|
382
|
+
{
|
383
|
+
is: Joi.string()
|
384
|
+
.trim()
|
385
|
+
.valid(AuditEventMessageType.ENTITLEMENT_UPDATED),
|
386
|
+
then: entitlementMessageData
|
387
|
+
},
|
388
|
+
{
|
389
|
+
is: Joi.string()
|
390
|
+
.trim()
|
391
|
+
.valid(AuditEventMessageType.ENTITLEMENT_DELETED),
|
392
|
+
then: entitlementMessageData
|
393
|
+
}
|
394
|
+
],
|
395
|
+
otherwise: Joi.forbidden()
|
396
|
+
}).description('The data/payload of the audit message'),
|
397
|
+
messageCreatedAt: Joi.date()
|
398
|
+
.required()
|
399
|
+
.description('ISO timestamp when the message was published')
|
400
|
+
})
|
401
|
+
.required()
|
402
|
+
.description('The audit message issued by the publishing service')
|
333
403
|
|
334
|
-
export const auditEvent = Joi.object<AuditEvent>()
|
335
|
-
|
336
|
-
|
404
|
+
export const auditEvent = Joi.object<AuditEvent>()
|
405
|
+
.keys({
|
406
|
+
message: messageSchema
|
407
|
+
})
|
408
|
+
.description('The Body of the audit event')
|
337
409
|
|
338
|
-
export const auditRecord = messageSchema
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
410
|
+
export const auditRecord = messageSchema
|
411
|
+
.append<AuditRecord>({
|
412
|
+
id: idSchema,
|
413
|
+
messageId: Joi.string().uuid().required(),
|
414
|
+
entityId: Joi.string().required(),
|
415
|
+
recordCreatedAt: Joi.date().required()
|
416
|
+
})
|
417
|
+
.description('The audit record persisted into the DB')
|