@defra/forms-model 3.0.533 → 3.0.535
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
|
+
}).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
|
-
s3Meta: formDefinitionS3Meta
|
23
|
-
});
|
24
|
-
export const formTitleChanges = Joi.object().keys({
|
25
|
-
title: Joi.string().required()
|
22
|
+
s3Meta: formDefinitionS3Meta.optional()
|
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 .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.optional()\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,wCAM0B,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,145 @@ 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
|
+
.description('Schema for form data S3 object in message')
|
68
90
|
|
69
|
-
export const formUpdatedMessageData =
|
70
|
-
|
91
|
+
export const formUpdatedMessageData = formMessageDataBase
|
92
|
+
.append<FormUpdatedMessageData>({
|
71
93
|
requestType: Joi.string()
|
72
94
|
.valid(...Object.values(FormDefinitionRequestType))
|
73
95
|
.required(),
|
74
|
-
s3Meta: formDefinitionS3Meta
|
96
|
+
s3Meta: formDefinitionS3Meta.optional()
|
75
97
|
})
|
98
|
+
.required()
|
76
99
|
|
77
100
|
export const formTitleChanges = Joi.object<FormTitleChanges>()
|
78
101
|
.keys({
|
79
|
-
title:
|
102
|
+
title: titleSchema
|
80
103
|
})
|
81
104
|
.required()
|
105
|
+
.description('Changes schema for FORM_TITLE_UPDATED event')
|
82
106
|
|
83
107
|
export const formOrganisationChanges = Joi.object<FormOrganisationChanges>()
|
84
108
|
.keys({
|
85
|
-
organisation:
|
109
|
+
organisation: organisationSchema
|
86
110
|
})
|
87
111
|
.required()
|
112
|
+
.description('Changes schema for FORM_ORGANISATION_UPDATED event')
|
88
113
|
|
89
114
|
export const formTeamNameChanges = Joi.object<FormTeamNameChanges>()
|
90
115
|
.keys({
|
91
|
-
teamName:
|
116
|
+
teamName: teamNameSchema
|
92
117
|
})
|
93
118
|
.required()
|
119
|
+
.description('Changes schema for FORM_TEAM_NAME_UPDATED event')
|
94
120
|
|
95
121
|
export const formTeamEmailChanges = Joi.object<FormTeamEmailChanges>()
|
96
122
|
.keys({
|
97
|
-
teamEmail:
|
123
|
+
teamEmail: teamEmailSchema
|
98
124
|
})
|
99
125
|
.required()
|
126
|
+
.description('Changes schema for FORM_TEAM_EMAIL_UPDATED event')
|
100
127
|
|
101
128
|
export const formSupportContactChanges = Joi.object<FormSupportContactChanges>()
|
102
129
|
.keys({
|
103
130
|
contact: contactSchema
|
104
131
|
})
|
105
132
|
.required()
|
133
|
+
.description('Changes schema for FORM_SUPPORT_CONTACT_UPDATED event')
|
106
134
|
|
107
135
|
export const formSupportPhoneChanges = Joi.object<FormSupportPhoneChanges>()
|
108
136
|
.keys({
|
109
|
-
phone:
|
137
|
+
phone: phoneSchema
|
110
138
|
})
|
111
139
|
.required()
|
140
|
+
.description('Changes schema for FORM_SUPPORT_PHONE_UPDATED event')
|
112
141
|
|
113
142
|
export const formSupportOnlineChanges = Joi.object<FormSupportOnlineChanges>()
|
114
143
|
.keys({
|
115
|
-
url:
|
116
|
-
text:
|
144
|
+
url: onlineUrlSchema,
|
145
|
+
text: onlineTextSchema
|
117
146
|
})
|
118
147
|
.required()
|
148
|
+
.description('Changes schema for FORM_SUPPORT_ONLINE_UPDATED event')
|
119
149
|
|
120
|
-
export const formSupportEmailChanges =
|
121
|
-
|
122
|
-
address:
|
123
|
-
responseTime:
|
150
|
+
export const formSupportEmailChanges = Joi.object<FormSupportEmailChanges>()
|
151
|
+
.keys({
|
152
|
+
address: emailAddressSchema,
|
153
|
+
responseTime: emailResponseTimeSchema
|
124
154
|
})
|
155
|
+
.description('Changes schema for FORM_SUPPORT_EMAIL_UPDATED event')
|
125
156
|
|
126
157
|
export const formPrivacyNoticeChanges = Joi.object<FormPrivacyNoticeChanges>()
|
127
158
|
.keys({
|
128
|
-
privacyNoticeUrl:
|
159
|
+
privacyNoticeUrl: privacyNoticeUrlSchema.required()
|
129
160
|
})
|
130
161
|
.required()
|
162
|
+
.description('Changes schema for FORM_PRIVACY_NOTICE_UPDATED event')
|
131
163
|
|
132
164
|
export const formNotificationEmailChanges =
|
133
165
|
Joi.object<FormNotificationEmailChanges>()
|
134
166
|
.keys({
|
135
|
-
notificationEmail:
|
167
|
+
notificationEmail: notificationEmailAddressSchema.required()
|
136
168
|
})
|
137
169
|
.required()
|
170
|
+
.description('Changes schema for FORM_NOTIFICATION_EMAIL_UPDATED event')
|
138
171
|
|
139
172
|
export const formSubmissionGuidanceChanges =
|
140
173
|
Joi.object<FormSubmissionGuidanceChanges>()
|
141
174
|
.keys({
|
142
|
-
submissionGuidance:
|
175
|
+
submissionGuidance: submissionGuidanceSchema.required()
|
143
176
|
})
|
144
177
|
.required()
|
178
|
+
.description('Changes schema for FORM_SUBMISSION_GUIDANCE_UPDATED event')
|
145
179
|
|
146
180
|
export const formUploadedChanges = Joi.object<FormUploadedChanges>()
|
147
181
|
.keys({
|
148
182
|
value: Joi.string().required()
|
149
183
|
})
|
150
184
|
.required()
|
185
|
+
.description('Changes schema for FORM_JSON_UPLOADED event')
|
151
186
|
|
152
187
|
export const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(
|
153
188
|
{
|
@@ -158,186 +193,224 @@ export const entitlementMessageData = Joi.object<EntitlementMessageData>().keys(
|
|
158
193
|
}
|
159
194
|
)
|
160
195
|
|
161
|
-
export const auditUserSchema = Joi.object<AuditUser>()
|
162
|
-
|
163
|
-
|
164
|
-
|
196
|
+
export const auditUserSchema = Joi.object<AuditUser>()
|
197
|
+
.keys({
|
198
|
+
id: Joi.string().uuid().required(),
|
199
|
+
displayName: Joi.string().required()
|
200
|
+
})
|
201
|
+
.description('Schema for CREATED_BY audit event')
|
165
202
|
|
166
203
|
export function formChangesMessageData<T, U extends FormMessageChangesData>(
|
167
204
|
schema: ObjectSchema<T>
|
168
205
|
): ObjectSchema<U> {
|
169
206
|
return formMessageDataBase.append<U>({
|
170
|
-
changes: Joi.object<ChangesMessageData<T>>()
|
171
|
-
|
172
|
-
|
173
|
-
|
207
|
+
changes: Joi.object<ChangesMessageData<T>>()
|
208
|
+
.keys({
|
209
|
+
previous: schema,
|
210
|
+
new: schema
|
211
|
+
})
|
212
|
+
.description('Changes schema')
|
174
213
|
})
|
175
214
|
}
|
176
215
|
|
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
|
-
|
216
|
+
export const messageSchema = Joi.object<AuditMessage>()
|
217
|
+
.keys({
|
218
|
+
schemaVersion: Joi.string()
|
219
|
+
.valid(...Object.values(AuditEventMessageSchemaVersion))
|
220
|
+
.required()
|
221
|
+
.description(
|
222
|
+
'The version of the AuditMessage - bumped with breaking changes'
|
223
|
+
),
|
224
|
+
category: Joi.string()
|
225
|
+
.valid(...Object.values(AuditEventMessageCategory))
|
226
|
+
.required()
|
227
|
+
.description('The message category - what does the entityId represent?'),
|
228
|
+
source: Joi.string()
|
229
|
+
.valid(...Object.values(AuditEventMessageSource))
|
230
|
+
.required()
|
231
|
+
.description('Source of the message - which service?'),
|
232
|
+
type: Joi.string()
|
233
|
+
.valid(...Object.values(AuditEventMessageType))
|
234
|
+
.description('Event type'),
|
235
|
+
entityId: Joi.string()
|
236
|
+
.required()
|
237
|
+
.description('The id of the entity the category relates to'),
|
238
|
+
traceId: Joi.string()
|
239
|
+
.optional()
|
240
|
+
.description(
|
241
|
+
'Trace id of the event - to link events across multiple services'
|
242
|
+
),
|
243
|
+
createdAt: Joi.date()
|
244
|
+
.required()
|
245
|
+
.description(
|
246
|
+
'The ISO timestamp where the action took place - should be the same as updated_at field in DB'
|
247
|
+
),
|
248
|
+
createdBy: auditUserSchema
|
249
|
+
.required()
|
250
|
+
.description('The user who performed the action being audited'),
|
251
|
+
data: Joi.when('type', {
|
252
|
+
switch: [
|
253
|
+
{
|
254
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),
|
255
|
+
then: formCreatedMessageData
|
256
|
+
},
|
257
|
+
{
|
258
|
+
is: Joi.string()
|
259
|
+
.trim()
|
260
|
+
.valid(AuditEventMessageType.FORM_TITLE_UPDATED),
|
261
|
+
then: formChangesMessageData<
|
262
|
+
FormTitleChanges,
|
263
|
+
FormTitleUpdatedMessageData
|
264
|
+
>(formTitleChanges)
|
265
|
+
},
|
266
|
+
{
|
267
|
+
is: Joi.string()
|
268
|
+
.trim()
|
269
|
+
.valid(AuditEventMessageType.FORM_ORGANISATION_UPDATED),
|
270
|
+
then: formChangesMessageData<
|
271
|
+
FormOrganisationChanges,
|
272
|
+
FormOrganisationUpdatedMessageData
|
273
|
+
>(formOrganisationChanges)
|
274
|
+
},
|
275
|
+
{
|
276
|
+
is: Joi.string()
|
277
|
+
.trim()
|
278
|
+
.valid(AuditEventMessageType.FORM_TEAM_NAME_UPDATED),
|
279
|
+
then: formChangesMessageData<
|
280
|
+
FormTeamNameChanges,
|
281
|
+
FormTeamNameUpdatedMessageData
|
282
|
+
>(formTeamNameChanges)
|
283
|
+
},
|
284
|
+
{
|
285
|
+
is: Joi.string()
|
286
|
+
.trim()
|
287
|
+
.valid(AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED),
|
288
|
+
then: formChangesMessageData<
|
289
|
+
FormTeamEmailChanges,
|
290
|
+
FormTeamEmailUpdatedMessageData
|
291
|
+
>(formTeamEmailChanges)
|
292
|
+
},
|
293
|
+
{
|
294
|
+
is: Joi.string()
|
295
|
+
.trim()
|
296
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED),
|
297
|
+
then: formChangesMessageData<
|
298
|
+
FormSupportContactChanges,
|
299
|
+
FormSupportContactUpdatedMessageData
|
300
|
+
>(formSupportContactChanges)
|
301
|
+
},
|
302
|
+
{
|
303
|
+
is: Joi.string()
|
304
|
+
.trim()
|
305
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED),
|
306
|
+
then: formChangesMessageData<
|
307
|
+
FormSupportPhoneChanges,
|
308
|
+
FormSupportPhoneUpdatedMessageData
|
309
|
+
>(formSupportPhoneChanges)
|
310
|
+
},
|
311
|
+
{
|
312
|
+
is: Joi.string()
|
313
|
+
.trim()
|
314
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),
|
315
|
+
then: formChangesMessageData<
|
316
|
+
FormSupportEmailChanges,
|
317
|
+
FormSupportEmailUpdatedMessageData
|
318
|
+
>(formSupportEmailChanges)
|
319
|
+
},
|
320
|
+
{
|
321
|
+
is: Joi.string()
|
322
|
+
.trim()
|
323
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED),
|
324
|
+
then: formChangesMessageData<
|
325
|
+
FormSupportOnlineChanges,
|
326
|
+
FormSupportOnlineUpdatedMessageData
|
327
|
+
>(formSupportOnlineChanges)
|
328
|
+
},
|
329
|
+
{
|
330
|
+
is: Joi.string()
|
331
|
+
.trim()
|
332
|
+
.valid(AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED),
|
333
|
+
then: formChangesMessageData<
|
334
|
+
FormPrivacyNoticeChanges,
|
335
|
+
FormPrivacyNoticeUpdatedMessageData
|
336
|
+
>(formPrivacyNoticeChanges)
|
337
|
+
},
|
338
|
+
{
|
339
|
+
is: Joi.string()
|
340
|
+
.trim()
|
341
|
+
.valid(AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED),
|
342
|
+
then: formChangesMessageData<
|
343
|
+
FormNotificationEmailChanges,
|
344
|
+
FormNotificationEmailUpdatedMessageData
|
345
|
+
>(formNotificationEmailChanges)
|
346
|
+
},
|
347
|
+
{
|
348
|
+
is: Joi.string()
|
349
|
+
.trim()
|
350
|
+
.valid(AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED),
|
351
|
+
then: formChangesMessageData<
|
352
|
+
FormSubmissionGuidanceChanges,
|
353
|
+
FormSubmissionGuidanceUpdatedMessageData
|
354
|
+
>(formSubmissionGuidanceChanges)
|
355
|
+
},
|
356
|
+
{
|
357
|
+
is: Joi.string()
|
358
|
+
.trim()
|
359
|
+
.valid(AuditEventMessageType.FORM_JSON_UPLOADED),
|
360
|
+
then: formChangesMessageData<
|
361
|
+
FormUploadedChanges,
|
362
|
+
FormUploadedMessageData
|
363
|
+
>(formUploadedChanges)
|
364
|
+
},
|
365
|
+
{
|
366
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_UPDATED),
|
367
|
+
then: formUpdatedMessageData
|
368
|
+
},
|
369
|
+
{
|
370
|
+
is: Joi.string()
|
371
|
+
.trim()
|
372
|
+
.valid(AuditEventMessageType.ENTITLEMENT_CREATED),
|
373
|
+
then: entitlementMessageData
|
374
|
+
},
|
375
|
+
{
|
376
|
+
is: Joi.string()
|
377
|
+
.trim()
|
378
|
+
.valid(AuditEventMessageType.FORM_DRAFT_DELETED),
|
379
|
+
then: formMessageDataBase
|
380
|
+
},
|
381
|
+
{
|
382
|
+
is: Joi.string()
|
383
|
+
.trim()
|
384
|
+
.valid(AuditEventMessageType.ENTITLEMENT_UPDATED),
|
385
|
+
then: entitlementMessageData
|
386
|
+
},
|
387
|
+
{
|
388
|
+
is: Joi.string()
|
389
|
+
.trim()
|
390
|
+
.valid(AuditEventMessageType.ENTITLEMENT_DELETED),
|
391
|
+
then: entitlementMessageData
|
392
|
+
}
|
393
|
+
],
|
394
|
+
otherwise: Joi.forbidden()
|
395
|
+
}).description('The data/payload of the audit message'),
|
396
|
+
messageCreatedAt: Joi.date()
|
397
|
+
.required()
|
398
|
+
.description('ISO timestamp when the message was published')
|
399
|
+
})
|
400
|
+
.required()
|
401
|
+
.description('The audit message issued by the publishing service')
|
333
402
|
|
334
|
-
export const auditEvent = Joi.object<AuditEvent>()
|
335
|
-
|
336
|
-
|
403
|
+
export const auditEvent = Joi.object<AuditEvent>()
|
404
|
+
.keys({
|
405
|
+
message: messageSchema
|
406
|
+
})
|
407
|
+
.description('The Body of the audit event')
|
337
408
|
|
338
|
-
export const auditRecord = messageSchema
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
409
|
+
export const auditRecord = messageSchema
|
410
|
+
.append<AuditRecord>({
|
411
|
+
id: idSchema,
|
412
|
+
messageId: Joi.string().uuid().required(),
|
413
|
+
entityId: Joi.string().required(),
|
414
|
+
recordCreatedAt: Joi.date().required()
|
415
|
+
})
|
416
|
+
.description('The audit record persisted into the DB')
|