@defra/forms-model 3.0.521 → 3.0.523

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,4 +1,5 @@
1
1
  import Joi from 'joi';
2
+ import { Operation } from 'json-diff-ts';
2
3
  import { AuditEventMessageCategory, AuditEventMessageSchemaVersion, AuditEventMessageType } from "./enums.js";
3
4
  import { contactSchema } from "../form-metadata/index.js";
4
5
  export const formMessageDataBase = Joi.object({
@@ -11,8 +12,17 @@ export const formCreatedMessageData = formMessageDataBase.append({
11
12
  teamName: Joi.string().required(),
12
13
  teamEmail: Joi.string().required()
13
14
  });
15
+ const allowedOperations = [Operation.ADD, Operation.REMOVE, Operation.UPDATE];
16
+ export const formChangeSet = Joi.array().items(Joi.object().keys({
17
+ type: Joi.string().valid(...allowedOperations).required(),
18
+ key: Joi.string().required(),
19
+ embeddedKey: Joi.string().optional(),
20
+ value: Joi.any().optional(),
21
+ oldValue: Joi.any().optional(),
22
+ changes: Joi.array().items(Joi.link('#formChangeSet')).optional()
23
+ }).id('formChangeSet'));
14
24
  export const formUpdatedMessageData = formMessageDataBase.append({
15
- description: Joi.string().trim().required()
25
+ changeSet: formChangeSet.required()
16
26
  });
17
27
  export const formTitleChanges = Joi.object().keys({
18
28
  title: Joi.string().required()
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Joi","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageType","contactSchema","formMessageDataBase","object","formId","string","required","slug","formCreatedMessageData","append","title","organisation","teamName","teamEmail","formUpdatedMessageData","description","trim","formTitleChanges","keys","formOrganisationChanges","formTeamNameChanges","formTeamEmailChanges","formSupportContactChanges","contact","formSupportPhoneChanges","phone","formSupportOnlineChanges","url","text","formPrivacyNoticeChanges","privacyNoticeUrl","formNotificationEmailChanges","notificationEmail","formSubmissionGuidanceChanges","submissionGuidance","formUploadedChanges","value","formSupportEmailChanges","address","email","responseTime","formChangesMessageData","schema","changes","previous","new","auditUserSchema","id","uuid","displayName","validCategories","FORM","ENTITLEMENT","validTypes","FORM_CREATED","FORM_PUBLISHED","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_UPDATED","FORM_JSON_UPLOADED","FORM_JSON_DOWNLOADED","FORM_DRAFT_CREATED_FROM_LIVE","FORM_LIVE_CREATED_FROM_DRAFT","FORM_DRAFT_DELETED","FORM_MIGRATED","validMessageSchemaVersions","V1","messageSchema","entityId","schemaVersion","valid","type","category","createdAt","date","createdBy","data","when","switch","is","then","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 AuditEventMessageType\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 FormCreatedMessageData,\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 } 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})\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 formUpdatedMessageData =\n formMessageDataBase.append<FormUpdatedMessageData>({\n description: Joi.string().trim().required()\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 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 formSupportEmailChanges =\n Joi.object<FormSupportEmailChanges>().keys({\n address: Joi.string().email().required(),\n responseTime: 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 auditUserSchema = Joi.object<AuditUser>().keys({\n id: Joi.string().uuid().required(),\n displayName: Joi.string().required()\n})\n\nexport const validCategories = [\n AuditEventMessageCategory.FORM,\n AuditEventMessageCategory.ENTITLEMENT\n]\n\nexport const validTypes = [\n AuditEventMessageType.FORM_CREATED,\n AuditEventMessageType.FORM_PUBLISHED,\n AuditEventMessageType.FORM_TITLE_UPDATED,\n AuditEventMessageType.FORM_ORGANISATION_UPDATED,\n AuditEventMessageType.FORM_TEAM_NAME_UPDATED,\n AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED,\n AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED,\n AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED,\n AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED,\n AuditEventMessageType.FORM_UPDATED,\n AuditEventMessageType.FORM_JSON_UPLOADED,\n AuditEventMessageType.FORM_JSON_DOWNLOADED,\n AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE,\n AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT,\n AuditEventMessageType.FORM_DRAFT_DELETED,\n AuditEventMessageType.FORM_MIGRATED\n]\n\nexport const validMessageSchemaVersions = [AuditEventMessageSchemaVersion.V1]\n\nexport const messageSchema = Joi.object<AuditMessage>().keys({\n entityId: Joi.string().required(),\n schemaVersion: Joi.string()\n .valid(...validMessageSchemaVersions)\n .required(),\n type: Joi.string().valid(...validTypes),\n category: Joi.string()\n .valid(...validCategories)\n .required(),\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 }),\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 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","Operation","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageType","contactSchema","formMessageDataBase","object","formId","string","required","slug","formCreatedMessageData","append","title","organisation","teamName","teamEmail","allowedOperations","ADD","REMOVE","UPDATE","formChangeSet","array","items","keys","type","valid","key","embeddedKey","optional","value","any","oldValue","changes","link","id","formUpdatedMessageData","changeSet","formTitleChanges","formOrganisationChanges","formTeamNameChanges","formTeamEmailChanges","formSupportContactChanges","contact","formSupportPhoneChanges","phone","formSupportOnlineChanges","url","text","formPrivacyNoticeChanges","privacyNoticeUrl","formNotificationEmailChanges","notificationEmail","formSubmissionGuidanceChanges","submissionGuidance","formUploadedChanges","formSupportEmailChanges","address","email","responseTime","formChangesMessageData","schema","previous","new","auditUserSchema","uuid","displayName","validCategories","FORM","ENTITLEMENT","validTypes","FORM_CREATED","FORM_PUBLISHED","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_UPDATED","FORM_JSON_UPLOADED","FORM_JSON_DOWNLOADED","FORM_DRAFT_CREATED_FROM_LIVE","FORM_LIVE_CREATED_FROM_DRAFT","FORM_DRAFT_DELETED","FORM_MIGRATED","validMessageSchemaVersions","V1","messageSchema","entityId","schemaVersion","category","createdAt","date","createdBy","data","when","switch","is","trim","then","messageCreatedAt","auditEvent","message","auditRecord","messageId","recordCreatedAt"],"sources":["../../../../src/form/form-audit/index.ts"],"sourcesContent":["import Joi, { type ObjectSchema } from 'joi'\nimport { Operation } from 'json-diff-ts'\n\nimport {\n AuditEventMessageCategory,\n AuditEventMessageSchemaVersion,\n AuditEventMessageType\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 FormChangeSet,\n type FormCreatedMessageData,\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 } 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})\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\nconst allowedOperations = [Operation.ADD, Operation.REMOVE, Operation.UPDATE]\n\nexport const formChangeSet = Joi.array().items(\n Joi.object<FormChangeSet>()\n .keys({\n type: Joi.string()\n .valid(...allowedOperations)\n .required(),\n key: Joi.string().required(),\n embeddedKey: Joi.string().optional(),\n value: Joi.any().optional(),\n oldValue: Joi.any().optional(),\n changes: Joi.array().items(Joi.link('#formChangeSet')).optional()\n })\n .id('formChangeSet')\n)\n\nexport const formUpdatedMessageData =\n formMessageDataBase.append<FormUpdatedMessageData>({\n changeSet: formChangeSet.required()\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 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 formSupportEmailChanges =\n Joi.object<FormSupportEmailChanges>().keys({\n address: Joi.string().email().required(),\n responseTime: 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 auditUserSchema = Joi.object<AuditUser>().keys({\n id: Joi.string().uuid().required(),\n displayName: Joi.string().required()\n})\n\nexport const validCategories = [\n AuditEventMessageCategory.FORM,\n AuditEventMessageCategory.ENTITLEMENT\n]\n\nexport const validTypes = [\n AuditEventMessageType.FORM_CREATED,\n AuditEventMessageType.FORM_PUBLISHED,\n AuditEventMessageType.FORM_TITLE_UPDATED,\n AuditEventMessageType.FORM_ORGANISATION_UPDATED,\n AuditEventMessageType.FORM_TEAM_NAME_UPDATED,\n AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED,\n AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED,\n AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED,\n AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED,\n AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED,\n AuditEventMessageType.FORM_UPDATED,\n AuditEventMessageType.FORM_JSON_UPLOADED,\n AuditEventMessageType.FORM_JSON_DOWNLOADED,\n AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE,\n AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT,\n AuditEventMessageType.FORM_DRAFT_DELETED,\n AuditEventMessageType.FORM_MIGRATED\n]\n\nexport const validMessageSchemaVersions = [AuditEventMessageSchemaVersion.V1]\n\nexport const messageSchema = Joi.object<AuditMessage>().keys({\n entityId: Joi.string().required(),\n schemaVersion: Joi.string()\n .valid(...validMessageSchemaVersions)\n .required(),\n type: Joi.string().valid(...validTypes),\n category: Joi.string()\n .valid(...validCategories)\n .required(),\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 }),\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 messageId: Joi.string().uuid().required(),\n entityId: Joi.string().required(),\n recordCreatedAt: Joi.date().required()\n})\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-audit/types.ts"],"sourcesContent":["import {\n type AuditEventMessageCategory,\n type AuditEventMessageSchemaVersion,\n type AuditEventMessageType\n} from '~/src/form/form-audit/enums.js'\nimport { type FormMetadataContact } from '~/src/form/form-metadata/types.js'\n\nexport interface FormMessageDataBase {\n formId: string\n slug: string\n}\n\nexport interface ChangesMessageData<T> {\n previous: T\n new: T\n}\n\nexport interface FormCreatedMessageData extends FormMessageDataBase {\n title: string\n organisation: string\n teamName: string\n teamEmail: string\n}\n\nexport interface FormTitleChanges {\n title: string\n}\n\nexport interface FormOrganisationChanges {\n organisation: string\n}\n\nexport interface FormTeamNameChanges {\n teamName: string\n}\n\nexport interface FormTeamEmailChanges {\n teamEmail: string\n}\n\nexport interface FormSupportContactChanges {\n contact?: FormMetadataContact\n}\n\nexport interface FormSupportPhoneChanges {\n phone?: string\n}\n\nexport interface FormSupportEmailChanges {\n address?: string\n responseTime?: string\n}\n\nexport interface FormSupportOnlineChanges {\n url?: string\n text?: string\n}\n\nexport interface FormPrivacyNoticeChanges {\n privacyNoticeUrl?: string\n}\n\nexport interface FormNotificationEmailChanges {\n notificationEmail?: string\n}\n\nexport interface FormSubmissionGuidanceChanges {\n submissionGuidance?: string\n}\n\nexport interface FormUploadedChanges {\n value: string\n}\n\nexport interface FormTitleUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTitleChanges>\n}\n\nexport interface FormOrganisationUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormOrganisationChanges>\n}\n\nexport interface FormTeamNameUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamNameChanges>\n}\n\nexport interface FormTeamEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamEmailChanges>\n}\n\nexport interface FormSupportContactUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportContactChanges>\n}\n\nexport interface FormSupportPhoneUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportPhoneChanges>\n}\n\nexport interface FormSupportEmailUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportEmailChanges>\n}\n\nexport interface FormSupportOnlineUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportOnlineChanges>\n}\n\nexport interface FormPrivacyNoticeUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormPrivacyNoticeChanges>\n}\n\nexport interface FormNotificationEmailUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormNotificationEmailChanges>\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSubmissionGuidanceChanges>\n}\n\nexport interface FormUploadedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormUploadedChanges>\n}\n\nexport type FormMessageChangesData =\n | FormTitleUpdatedMessageData\n | FormOrganisationUpdatedMessageData\n | FormTeamNameUpdatedMessageData\n | FormTeamEmailUpdatedMessageData\n | FormSupportContactUpdatedMessageData\n | FormSupportPhoneUpdatedMessageData\n | FormSupportEmailUpdatedMessageData\n | FormSupportOnlineUpdatedMessageData\n | FormPrivacyNoticeUpdatedMessageData\n | FormNotificationEmailUpdatedMessageData\n | FormSubmissionGuidanceUpdatedMessageData\n | FormUploadedMessageData\n\nexport type FormMessageActivitiesData =\n | FormCreatedMessageData\n | FormUpdatedMessageData\n | FormMessageDataBase\n\nexport interface FormUpdatedMessageData extends FormMessageDataBase {\n description: string\n}\n\nexport interface AuditUser {\n id: string\n displayName: string\n}\n\nexport type MessageData = FormMessageChangesData | FormMessageActivitiesData\n\nexport interface MessageBase {\n schemaVersion: AuditEventMessageSchemaVersion\n category: AuditEventMessageCategory\n type: AuditEventMessageType\n entityId: string\n createdAt: Date\n createdBy: AuditUser\n data?: MessageData\n messageCreatedAt: Date\n}\n\nexport interface FormCreatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_CREATED\n data: FormCreatedMessageData\n}\n\nexport interface FormTitleUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TITLE_UPDATED\n data: FormTitleUpdatedMessageData\n}\n\nexport interface FormOrganisationUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_ORGANISATION_UPDATED\n data: FormOrganisationUpdatedMessageData\n}\n\nexport interface FormTeamNameUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_NAME_UPDATED\n data: FormTeamNameUpdatedMessageData\n}\n\nexport interface FormTeamEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED\n data: FormTeamEmailUpdatedMessageData\n}\n\nexport interface FormSupportContactUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED\n data: FormSupportContactUpdatedMessageData\n}\n\nexport interface FormSupportPhoneUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED\n data: FormSupportPhoneUpdatedMessageData\n}\n\nexport interface FormSupportEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED\n data: FormSupportEmailUpdatedMessageData\n}\n\nexport interface FormSupportOnlineUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED\n data: FormSupportOnlineUpdatedMessageData\n}\n\nexport interface FormPrivacyNoticeUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED\n data: FormPrivacyNoticeUpdatedMessageData\n}\n\nexport interface FormNotificationEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED\n data: FormNotificationEmailUpdatedMessageData\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED\n data: FormSubmissionGuidanceUpdatedMessageData\n}\n\nexport interface FormUploadedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_UPLOADED\n data: FormUploadedMessageData\n}\n\nexport interface FormDownloadedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_DOWNLOADED\n}\n\nexport interface FormPublishedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_PUBLISHED\n}\n\nexport interface FormDraftCreatedFromLiveMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE\n}\n\nexport interface FormLiveCreatedFromDraftMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT\n}\n\nexport interface FormDraftDeletedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_DELETED\n}\n\nexport interface FormMigratedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_MIGRATED\n}\n\nexport interface FormUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_UPDATED\n}\n\nexport type AuditMessage =\n | FormCreatedMessage\n | FormTitleUpdatedMessage\n | FormOrganisationUpdatedMessage\n | FormTeamNameUpdatedMessage\n | FormTeamEmailUpdatedMessage\n | FormSupportContactUpdatedMessage\n | FormSupportPhoneUpdatedMessage\n | FormSupportEmailUpdatedMessage\n | FormSupportOnlineUpdatedMessage\n | FormPrivacyNoticeUpdatedMessage\n | FormNotificationEmailUpdatedMessage\n | FormSubmissionGuidanceUpdatedMessage\n | FormUploadedMessage\n | FormDownloadedMessage\n | FormPublishedMessage\n | FormDraftCreatedFromLiveMessage\n | FormLiveCreatedFromDraftMessage\n | FormDraftDeletedMessage\n | FormMigratedMessage\n | FormUpdatedMessage\n\nexport interface AuditEvent {\n message: AuditMessage\n}\n\nexport type AuditRecord = AuditMessage & {\n messageId: string\n recordCreatedAt: Date\n}\n\nexport interface MessageBody {\n Message: string\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/form/form-audit/types.ts"],"sourcesContent":["import { type IChange } from 'json-diff-ts'\n\nimport {\n type AuditEventMessageCategory,\n type AuditEventMessageSchemaVersion,\n type AuditEventMessageType\n} from '~/src/form/form-audit/enums.js'\nimport { type FormMetadataContact } from '~/src/form/form-metadata/types.js'\n\nexport interface FormMessageDataBase {\n formId: string\n slug: string\n}\n\nexport interface ChangesMessageData<T> {\n previous: T\n new: T\n}\n\nexport interface FormCreatedMessageData extends FormMessageDataBase {\n title: string\n organisation: string\n teamName: string\n teamEmail: string\n}\n\nexport interface FormTitleChanges {\n title: string\n}\n\nexport interface FormOrganisationChanges {\n organisation: string\n}\n\nexport interface FormTeamNameChanges {\n teamName: string\n}\n\nexport interface FormTeamEmailChanges {\n teamEmail: string\n}\n\nexport interface FormSupportContactChanges {\n contact?: FormMetadataContact\n}\n\nexport interface FormSupportPhoneChanges {\n phone?: string\n}\n\nexport interface FormSupportEmailChanges {\n address?: string\n responseTime?: string\n}\n\nexport interface FormSupportOnlineChanges {\n url?: string\n text?: string\n}\n\nexport interface FormPrivacyNoticeChanges {\n privacyNoticeUrl?: string\n}\n\nexport interface FormNotificationEmailChanges {\n notificationEmail?: string\n}\n\nexport interface FormSubmissionGuidanceChanges {\n submissionGuidance?: string\n}\n\nexport interface FormUploadedChanges {\n value: string\n}\n\nexport interface FormTitleUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTitleChanges>\n}\n\nexport interface FormOrganisationUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormOrganisationChanges>\n}\n\nexport interface FormTeamNameUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamNameChanges>\n}\n\nexport interface FormTeamEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormTeamEmailChanges>\n}\n\nexport interface FormSupportContactUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportContactChanges>\n}\n\nexport interface FormSupportPhoneUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportPhoneChanges>\n}\n\nexport interface FormSupportEmailUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportEmailChanges>\n}\n\nexport interface FormSupportOnlineUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSupportOnlineChanges>\n}\n\nexport interface FormPrivacyNoticeUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormPrivacyNoticeChanges>\n}\n\nexport interface FormNotificationEmailUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormNotificationEmailChanges>\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessageData\n extends FormMessageDataBase {\n changes: ChangesMessageData<FormSubmissionGuidanceChanges>\n}\n\nexport interface FormUploadedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<FormUploadedChanges>\n}\n\nexport type FormChangeSet = IChange\n\nexport interface FormUpdatedMessageData extends FormMessageDataBase {\n changeSet: FormChangeSet[]\n}\n\nexport type FormMessageChangesData =\n | FormTitleUpdatedMessageData\n | FormOrganisationUpdatedMessageData\n | FormTeamNameUpdatedMessageData\n | FormTeamEmailUpdatedMessageData\n | FormSupportContactUpdatedMessageData\n | FormSupportPhoneUpdatedMessageData\n | FormSupportEmailUpdatedMessageData\n | FormSupportOnlineUpdatedMessageData\n | FormPrivacyNoticeUpdatedMessageData\n | FormNotificationEmailUpdatedMessageData\n | FormSubmissionGuidanceUpdatedMessageData\n | FormUploadedMessageData\n\nexport type FormMessageActivitiesData =\n | FormCreatedMessageData\n | FormMessageDataBase\n\nexport type FormMessageChangeSetData = FormUpdatedMessageData\n\nexport interface AuditUser {\n id: string\n displayName: string\n}\n\nexport type MessageData =\n | FormMessageChangesData\n | FormMessageActivitiesData\n | FormMessageChangeSetData\n\nexport interface MessageBase {\n schemaVersion: AuditEventMessageSchemaVersion\n category: AuditEventMessageCategory\n type: AuditEventMessageType\n entityId: string\n createdAt: Date\n createdBy: AuditUser\n data?: MessageData\n messageCreatedAt: Date\n}\n\nexport interface FormCreatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_CREATED\n data: FormCreatedMessageData\n}\n\nexport interface FormTitleUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TITLE_UPDATED\n data: FormTitleUpdatedMessageData\n}\n\nexport interface FormOrganisationUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_ORGANISATION_UPDATED\n data: FormOrganisationUpdatedMessageData\n}\n\nexport interface FormTeamNameUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_NAME_UPDATED\n data: FormTeamNameUpdatedMessageData\n}\n\nexport interface FormTeamEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_TEAM_EMAIL_UPDATED\n data: FormTeamEmailUpdatedMessageData\n}\n\nexport interface FormSupportContactUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_CONTACT_UPDATED\n data: FormSupportContactUpdatedMessageData\n}\n\nexport interface FormSupportPhoneUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_PHONE_UPDATED\n data: FormSupportPhoneUpdatedMessageData\n}\n\nexport interface FormSupportEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED\n data: FormSupportEmailUpdatedMessageData\n}\n\nexport interface FormSupportOnlineUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_ONLINE_UPDATED\n data: FormSupportOnlineUpdatedMessageData\n}\n\nexport interface FormPrivacyNoticeUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_PRIVACY_NOTICE_UPDATED\n data: FormPrivacyNoticeUpdatedMessageData\n}\n\nexport interface FormNotificationEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_NOTIFICATION_EMAIL_UPDATED\n data: FormNotificationEmailUpdatedMessageData\n}\n\nexport interface FormSubmissionGuidanceUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUBMISSION_GUIDANCE_UPDATED\n data: FormSubmissionGuidanceUpdatedMessageData\n}\n\nexport interface FormUploadedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_UPLOADED\n data: FormUploadedMessageData\n}\n\nexport interface FormDownloadedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_JSON_DOWNLOADED\n}\n\nexport interface FormPublishedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_PUBLISHED\n}\n\nexport interface FormDraftCreatedFromLiveMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_CREATED_FROM_LIVE\n}\n\nexport interface FormLiveCreatedFromDraftMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_LIVE_CREATED_FROM_DRAFT\n}\n\nexport interface FormDraftDeletedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_DRAFT_DELETED\n}\n\nexport interface FormMigratedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_MIGRATED\n}\n\nexport interface FormUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_UPDATED\n data: FormUpdatedMessageData\n}\n\nexport type AuditMessage =\n | FormCreatedMessage\n | FormTitleUpdatedMessage\n | FormOrganisationUpdatedMessage\n | FormTeamNameUpdatedMessage\n | FormTeamEmailUpdatedMessage\n | FormSupportContactUpdatedMessage\n | FormSupportPhoneUpdatedMessage\n | FormSupportEmailUpdatedMessage\n | FormSupportOnlineUpdatedMessage\n | FormPrivacyNoticeUpdatedMessage\n | FormNotificationEmailUpdatedMessage\n | FormSubmissionGuidanceUpdatedMessage\n | FormUploadedMessage\n | FormDownloadedMessage\n | FormPublishedMessage\n | FormDraftCreatedFromLiveMessage\n | FormLiveCreatedFromDraftMessage\n | FormDraftDeletedMessage\n | FormMigratedMessage\n | FormUpdatedMessage\n\nexport interface AuditEvent {\n message: AuditMessage\n}\n\nexport type AuditRecord = AuditMessage & {\n messageId: string\n recordCreatedAt: Date\n}\n\nexport interface MessageBody {\n Message: string\n}\n"],"mappings":"","ignoreList":[]}
@@ -143,7 +143,7 @@ export const componentSchema = Joi.object().description('Form component definiti
143
143
  name: Joi.when('type', {
144
144
  is: Joi.string().valid(ComponentType.Details, ComponentType.Html, ComponentType.InsetText, ComponentType.Markdown),
145
145
  then: Joi.string().trim().pattern(/^[a-zA-Z]+$/).optional().description('Optional identifier for display-only components'),
146
- otherwise: Joi.string().trim().pattern(/^[a-zA-Z]+$/).description('Unique identifier for the component, used in form data')
146
+ otherwise: Joi.string().trim().pattern(/^[a-zA-Z]+$/).required().description('Unique identifier for the component, used in form data')
147
147
  }),
148
148
  title: Joi.when('type', {
149
149
  is: Joi.string().valid(ComponentType.Details, ComponentType.Html, ComponentType.InsetText, ComponentType.Markdown),
@@ -213,7 +213,9 @@ const eventsSchema = Joi.object().description('Collection of event handlers for
213
213
  onLoad: eventSchema.optional().description('Event handler triggered when the page is loaded'),
214
214
  onSave: eventSchema.optional().description('Event handler triggered when the page data is saved')
215
215
  });
216
- export const pageUploadComponentsSchema = Joi.array().items(fileUploadComponentSchema.required(), contentComponentSchema.optional()).unique('id').unique('name').min(1).max(2).description('Components allowed on Page Upload schema');
216
+ export const pageUploadComponentsSchema = Joi.array().items(fileUploadComponentSchema.required(), contentComponentSchema.optional()).unique('id').unique('name', {
217
+ ignoreUndefined: true
218
+ }).min(1).max(2).description('Components allowed on Page Upload schema');
217
219
 
218
220
  /**
219
221
  * `/status` is a special route for providing a user's application status.
@@ -248,7 +250,9 @@ export const pageSchemaV2 = pageSchema.append({
248
250
  is: Joi.string().trim().valid(ControllerType.FileUpload).required(),
249
251
  then: pageUploadComponentsSchema
250
252
  }],
251
- otherwise: Joi.array().items(componentSchemaV2).unique('id').unique('name').description('Components schema for V2 forms').error(checkErrors([FormDefinitionError.UniquePageComponentId, FormDefinitionError.UniquePageComponentName]))
253
+ otherwise: Joi.array().items(componentSchemaV2).unique('id').unique('name', {
254
+ ignoreUndefined: true
255
+ }).description('Components schema for V2 forms').error(checkErrors([FormDefinitionError.UniquePageComponentId, FormDefinitionError.UniquePageComponentName]))
252
256
  }),
253
257
  condition: Joi.string().trim().when('/conditions', {
254
258
  is: Joi.exist(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["JoiDate","JoiBase","v4","uuidV4","ComponentType","ConditionType","OperatorName","SchemaVersion","checkErrors","FormDefinitionError","ControllerType","hasComponents","Joi","extend","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRefSchema","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdRef","items","item","sectionsSchema","object","description","keys","name","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","type","display","conditionValueSchema","value","conditionListItemRefDataSchemaV2","listId","when","is","exist","then","valid","error","RefConditionListId","itemId","RefConditionItemId","relativeDateValueDataSchemaV2","period","number","integer","positive","unit","direction","relativeDateValueDataSchema","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionRefDataSchemaV2","conditionId","RefConditionConditionId","conditionSchema","field","operator","alternatives","try","conditionDataSchemaV2","componentId","RefConditionComponentId","Object","values","any","switch","BooleanValue","StringValue","NumberValue","DateValue","date","format","raw","ListItemRef","RelativeDate","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","min","conditional","otherwise","max","componentSchema","shortDescription","Details","Html","InsetText","Markdown","pattern","allow","hint","options","rows","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","length","componentSchemaV2","RefPageComponentList","componentPayloadSchemaV2","fileUploadComponentSchema","FileUploadField","contentComponentSchema","List","nextSchema","path","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageUploadComponentsSchema","unique","pageSchema","disallow","section","controller","repeat","strip","next","events","view","pageSchemaV2","append","FileUpload","UniquePageComponentId","UniquePageComponentName","RefPageCondition","pagePayloadSchemaV2","baseListItemSchema","text","stringListItemSchema","numberListItemSchema","listSchema","UniqueListItemId","UniqueListItemText","UniqueListItemValue","listSchemaV2","feedbackSchema","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","V1","feedback","startPage","sections","UniqueSectionName","UniqueSectionTitle","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","formDefinitionV2Schema","V2","UniquePageId","UniquePagePath","UniqueListId","UniqueListName","UniqueListTitle","UniqueConditionId","UniqueConditionDisplayName","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import JoiDate from '@joi/date'\nimport JoiBase, { type LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type ComponentDef,\n type ContentComponentsDef,\n type FileUploadFieldComponent\n} from '~/src/components/types.js'\nimport { ConditionType, OperatorName } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionGroupDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData,\n type RelativeDateValueDataV2\n} from '~/src/conditions/types.js'\nimport {\n SchemaVersion,\n type ConditionWrapper,\n type ConditionWrapperV2,\n type Event,\n type EventOptions,\n type Events,\n type FormDefinition,\n type Item,\n type Link,\n type List,\n type Page,\n type PhaseBanner,\n type Repeat,\n type RepeatOptions,\n type RepeatSchema,\n type Section\n} from '~/src/form/form-definition/types.js'\nimport { checkErrors } from '~/src/form/form-manager/errors.js'\nimport { FormDefinitionError } from '~/src/form/form-manager/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { hasComponents } from '~/src/pages/helpers.js'\n\nconst Joi = JoiBase.extend(JoiDate) as JoiBase.Root\n\nconst idSchemaOptional = Joi.string().uuid()\n\nconst idSchema = idSchemaOptional.default(() => uuidV4())\n\nconst conditionIdRef = Joi.ref('/conditions', {\n in: true,\n adjust: (conditions: ConditionWrapperV2[]) =>\n conditions.map((condition) => condition.id)\n})\n\nconst componentIdRefSchema = Joi.ref('/pages', {\n in: true,\n adjust: (pages: Page[]) =>\n pages.flatMap((page) =>\n hasComponents(page)\n ? page.components\n .filter((component) => component.id)\n .map((component) => component.id)\n : []\n )\n})\n\nconst listIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.filter((list) => list.id).map((list) => list.id)\n})\n\nconst listItemIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.flatMap((list) =>\n list.items.filter((item) => item.id).map((item) => item.id)\n )\n})\n\nconst sectionsSchema = Joi.object<Section>()\n .description('A form section grouping related pages together')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Unique identifier for the section, used in code and page references'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable section title displayed to users'),\n hideTitle: Joi.boolean()\n .optional()\n .default(false)\n .description(\n 'When true, the section title will not be displayed in the UI'\n )\n })\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>()\n .description('Field reference used in a condition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Component name referenced by this condition'),\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the field (e.g., string, number, date)'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the field for display purposes')\n })\n\nconst conditionValueSchema = Joi.object<ConditionValueData>()\n .description('Value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the value (e.g., string, number, date)'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable version of the value for display purposes')\n })\n\nconst conditionListItemRefDataSchemaV2 =\n Joi.object<ConditionListItemRefValueDataV2>()\n .description('List item ref specification for a condition')\n .keys({\n listId: Joi.string()\n .trim()\n .required()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .description('The id of the list')\n .error(checkErrors(FormDefinitionError.RefConditionListId)),\n itemId: Joi.string()\n .trim()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listItemIdRef)\n })\n .required()\n .description('The id of the list item')\n .error(checkErrors(FormDefinitionError.RefConditionItemId))\n })\n\nconst relativeDateValueDataSchemaV2 = Joi.object<RelativeDateValueDataV2>()\n .description('Relative date specification for date-based conditions')\n .keys({\n period: Joi.number()\n .integer()\n .positive()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst relativeDateValueDataSchema = Joi.object<RelativeDateValueData>()\n .description('Relative date specification for date-based conditions')\n .keys({\n type: Joi.string()\n .trim()\n .valid('RelativeDate')\n .required()\n .description('Type of the condition value, should be \"RelativeDate\"'),\n period: Joi.string()\n .trim()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst conditionRefSchema = Joi.object<ConditionRefData>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n conditionName: Joi.string()\n .trim()\n .required()\n .description('Name of the referenced condition'),\n conditionDisplayName: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the condition for display purposes'),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst conditionRefDataSchemaV2 = Joi.object<ConditionRefDataV2>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n id: idSchema.description('Unique identifier for the referenced condition'),\n conditionId: Joi.string()\n .trim()\n .required()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .description('Name of the referenced condition')\n .error(checkErrors(FormDefinitionError.RefConditionConditionId))\n })\n\nconst conditionSchema = Joi.object<ConditionData>()\n .description('Condition definition specifying a logical comparison')\n .keys({\n field: conditionFieldSchema.description(\n 'The form field being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(conditionValueSchema, relativeDateValueDataSchema)\n .description(\n 'Value to compare the field against, either fixed or relative date'\n ),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nexport const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()\n .description('Condition definition')\n .keys({\n id: idSchema.description(\n 'Unique identifier used to reference this condition'\n ),\n componentId: Joi.string()\n .trim()\n .required()\n .when('/pages', {\n is: Joi.exist(),\n then: Joi.valid(componentIdRefSchema)\n })\n .description(\n 'Reference to the component id being evaluated in this condition'\n )\n .error(checkErrors(FormDefinitionError.RefConditionComponentId)),\n operator: Joi.string()\n .trim()\n .valid(...Object.values(OperatorName))\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n type: Joi.string()\n .trim()\n .valid(...Object.values(ConditionType))\n .required()\n .description('Type of the condition value'),\n value: Joi.any()\n .required()\n .description('The actual value to compare against')\n .when('type', {\n switch: [\n { is: ConditionType.BooleanValue, then: Joi.boolean() },\n { is: ConditionType.StringValue, then: Joi.string() },\n { is: ConditionType.NumberValue, then: Joi.number() },\n {\n is: ConditionType.DateValue,\n then: Joi.date().format('YYYY-MM-DD').raw()\n },\n {\n is: ConditionType.ListItemRef,\n then: conditionListItemRefDataSchemaV2\n },\n {\n is: ConditionType.RelativeDate,\n then: relativeDateValueDataSchemaV2\n }\n ]\n })\n .description(\n 'Value to compare the field against, either fixed or relative date'\n )\n })\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .description('Group of conditions combined with logical operators')\n .keys({\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n .description('Array of conditions or condition references in this group')\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>()\n .description('Complete condition model with name and condition set')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the condition set'),\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n .description(\n 'Array of conditions, condition references, or condition groups'\n )\n })\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier used to reference this condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n value: conditionsModelSchema\n .required()\n .description('The complete condition definition')\n })\n\nexport const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()\n .description('Container for a named condition with its definition')\n .keys({\n id: idSchema.description('Unique identifier for the condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n coordinator: Joi.string()\n .optional()\n .when('items', { is: Joi.array().min(2), then: Joi.required() })\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n ),\n items: Joi.array<ConditionGroupDataV2>()\n .items(\n Joi.alternatives().conditional('.componentId', {\n is: Joi.exist(),\n then: conditionDataSchemaV2,\n otherwise: conditionRefDataSchemaV2\n })\n )\n .min(1)\n .max(15)\n .description('Array of conditions or condition references')\n })\n .description('Condition schema for V2 forms')\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .description('Form component definition specifying UI element behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the component'),\n type: Joi.string<ComponentType>()\n .trim()\n .required()\n .description('Component type (TextField, RadioButtons, DateField, etc.)'),\n shortDescription: Joi.string()\n .trim()\n .optional()\n .description('Brief description of the component purpose'),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .optional()\n .description('Optional identifier for display-only components'),\n otherwise: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .description('Unique identifier for the component, used in form data')\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .optional()\n .description('Optional title for display-only components'),\n otherwise: Joi.string()\n .trim()\n .allow('')\n .description('Label displayed above the component')\n }),\n hint: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Additional guidance text displayed below the component title'\n ),\n options: Joi.object({\n rows: Joi.number()\n .empty('')\n .description('Number of rows for textarea components'),\n maxWords: Joi.number()\n .empty('')\n .description('Maximum number of words allowed in text inputs'),\n maxDaysInPast: Joi.number()\n .empty('')\n .description('Maximum days in the past allowed for date inputs'),\n maxDaysInFuture: Joi.number()\n .empty('')\n .description('Maximum days in the future allowed for date inputs'),\n customValidationMessage: Joi.string()\n .trim()\n .allow('')\n .description('Custom error message for validation failures'),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n .description('Custom error messages keyed by validation rule name')\n })\n .default({})\n .unknown(true)\n .description('Component-specific configuration options'),\n schema: Joi.object({\n min: Joi.number()\n .empty('')\n .description('Minimum value or length for validation'),\n max: Joi.number()\n .empty('')\n .description('Maximum value or length for validation'),\n length: Joi.number()\n .empty('')\n .description('Exact length required for validation')\n })\n .unknown(true)\n .default({})\n .description('Validation rules for the component'),\n list: Joi.string()\n .trim()\n .optional()\n .description(\n 'Reference to a predefined list of options for select components'\n )\n })\n .unknown(true)\n\nexport const componentSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n .error(checkErrors(FormDefinitionError.RefPageComponentList))\n })\n .description('Component schema for V2 forms')\n\nexport const componentPayloadSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n })\n .description('Payload schema for component for V2 forms')\n\nexport const fileUploadComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType.FileUploadField>()\n .trim()\n .valid(ComponentType.FileUploadField)\n .required()\n .description('Component that can only be a FileUploadField')\n})\n\nexport const contentComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType>()\n .trim()\n .valid(ComponentType.Details)\n .valid(ComponentType.Html)\n .valid(ComponentType.Markdown)\n .valid(ComponentType.InsetText)\n .valid(ComponentType.List)\n .required()\n .description('Content only component type (Details, Html, Markdown, etc.)')\n})\n\nconst nextSchema = Joi.object<Link>()\n .description('Navigation link defining where to go after completing a page')\n .keys({\n path: Joi.string()\n .trim()\n .required()\n .description('The target page path to navigate to'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Optional condition that determines if this path should be taken'\n ),\n redirect: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional external URL to redirect to instead of an internal page'\n )\n })\n\nconst repeatOptions = Joi.object<RepeatOptions>()\n .description('Configuration options for a repeatable page section')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Identifier for the repeatable section, used in data structure'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Title displayed for each repeatable item')\n })\n\nconst repeatSchema = Joi.object<RepeatSchema>()\n .description('Validation rules for a repeatable section')\n .keys({\n min: Joi.number()\n .empty('')\n .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\n .required()\n .description('Maximum number of repetitions allowed')\n })\n\nexport const pageRepeatSchema = Joi.object<Repeat>()\n .description('Complete configuration for a repeatable page')\n .keys({\n options: repeatOptions\n .required()\n .description('Display and identification options for the repetition'),\n schema: repeatSchema\n .required()\n .description('Validation constraints for the number of repetitions')\n })\n\nconst eventSchema = Joi.object<Event>()\n .description('Event handler configuration for page lifecycle events')\n .keys({\n type: Joi.string()\n .trim()\n .allow('http')\n .required()\n .description(\n 'Type of the event handler (currently only \"http\" supported)'\n ),\n options: Joi.object<EventOptions>()\n .description('Options specific to the event handler type')\n .keys({\n method: Joi.string()\n .trim()\n .allow('POST')\n .required()\n .description('HTTP method to use for the request'),\n url: Joi.string()\n .trim()\n .uri({ scheme: ['http', 'https'] })\n .required()\n .description('URL endpoint to call when the event fires')\n })\n })\n\nconst eventsSchema = Joi.object<Events>()\n .description(\n 'Collection of event handlers for different page lifecycle events'\n )\n .keys({\n onLoad: eventSchema\n .optional()\n .description('Event handler triggered when the page is loaded'),\n onSave: eventSchema\n .optional()\n .description('Event handler triggered when the page data is saved')\n })\n\nexport const pageUploadComponentsSchema = Joi.array<\n FileUploadFieldComponent | ContentComponentsDef\n>()\n .items(\n fileUploadComponentSchema.required(),\n contentComponentSchema.optional()\n )\n .unique('id')\n .unique('name')\n .min(1)\n .max(2)\n .description('Components allowed on Page Upload schema')\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nexport const pageSchema = Joi.object<Page>()\n .description('Form page definition specifying content and behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the page'),\n path: Joi.string()\n .trim()\n .required()\n .disallow('/status')\n .description(\n 'URL path for this page, must not be the reserved \"/status\" path'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Page title displayed at the top of the page'),\n section: Joi.string().trim().description('Section this page belongs to'),\n controller: Joi.string()\n .trim()\n .optional()\n .description('Custom controller class name for special page behavior'),\n components: Joi.array<ComponentDef>()\n .items(componentSchema)\n .unique('name')\n .description('UI components displayed on this page'),\n repeat: Joi.when('controller', {\n is: Joi.string().trim().valid('RepeatPageController').required(),\n then: pageRepeatSchema\n .required()\n .description(\n 'Configuration for repeatable pages, required when using RepeatPageController'\n ),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional condition that determines if this page is shown'),\n next: Joi.array<Link>()\n .items(nextSchema)\n .default([])\n .description('Possible navigation paths after this page'),\n events: eventsSchema\n .optional()\n .description('Event handlers for page lifecycle events'),\n view: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional custom view template to use for rendering this page'\n )\n })\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema\n .append({\n id: idSchema.description('Unique identifier for the page'),\n title: Joi.string()\n .trim()\n .allow('')\n .required()\n .description(\n 'Page title displayed at the top of the page (with support for empty titles in V2)'\n ),\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentSchemaV2)\n .unique('id')\n .unique('name')\n .description('Components schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageComponentId,\n FormDefinitionError.UniquePageComponentName\n ])\n )\n }),\n condition: Joi.string()\n .trim()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .optional()\n .description('Optional condition that determines if this page is shown')\n .error(checkErrors(FormDefinitionError.RefPageCondition))\n })\n .description('Page schema for V2 forms')\n\nexport const pagePayloadSchemaV2 = pageSchemaV2\n .append({\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentPayloadSchemaV2)\n .unique('id')\n .unique('name')\n .description('Components schema for V2 forms')\n })\n })\n .description('Payload Page schema for V2 forms')\n\nconst baseListItemSchema = Joi.object<Item>()\n .description('Base schema for list items with common properties')\n .keys({\n id: idSchema.description('Unique identifier for the list item'),\n text: Joi.string()\n .trim()\n .allow('')\n .description('Display text shown to the user'),\n description: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional additional descriptive text for the item'),\n conditional: Joi.object<Item['conditional']>()\n .description('Optional components to show when this item is selected')\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n .description('Components to display conditionally')\n })\n .optional(),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Condition that determines if this item is shown'),\n hint: Joi.object<Item['hint']>()\n .optional()\n .keys({\n id: idSchema,\n text: Joi.string().trim()\n })\n .description('Optional hint text to be shown on list item')\n })\n\nconst stringListItemSchema = baseListItemSchema\n .append({\n value: Joi.string()\n .trim()\n .required()\n .description('String value stored when this item is selected')\n })\n .description('List item with string value')\n\nconst numberListItemSchema = baseListItemSchema\n .append({\n value: Joi.number()\n .required()\n .description('Numeric value stored when this item is selected')\n })\n .description('List item with numeric value')\n\nexport const listSchema = Joi.object<List>()\n .description('Reusable list of options for select components')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the list'),\n name: Joi.string()\n .trim()\n .required()\n .description('Name used to reference this list from components'),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable title for the list'),\n type: Joi.string()\n .trim()\n .required()\n .valid('string', 'number')\n .description('Data type for list values (string or number)'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with string values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n ),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with numeric values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n )\n })\n })\n\n/**\n * V2 Joi schema for Lists\n */\nexport const listSchemaV2 = listSchema\n .keys({\n id: idSchema.description('Unique identifier for the list')\n })\n .description('List schema for V2 forms')\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>()\n .description('Feedback configuration for the form')\n .keys({\n feedbackForm: Joi.boolean()\n .default(false)\n .description('Whether to show the built-in feedback form'),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'URL to an external feedback form when not using built-in feedback'\n )\n }),\n emailAddress: Joi.string()\n .trim()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n .description('Email address where feedback is sent')\n })\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>()\n .description('Phase banner configuration showing development status')\n .keys({\n phase: Joi.string()\n .trim()\n .valid('alpha', 'beta')\n .description('Development phase of the service (alpha or beta)')\n })\n\nconst outputSchema = Joi.object<FormDefinition['output']>()\n .description('Configuration for form submission output')\n .keys({\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .description('Complete form definition describing all aspects of a form')\n .required()\n .keys({\n engine: Joi.string()\n .trim()\n .allow('V1', 'V2')\n .default('V1')\n .description('Form engine version to use (V1 or V2)'),\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V1)\n .default(SchemaVersion.V1)\n .description('Form schema version to use (1 or 2)'),\n name: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Unique name identifying the form'),\n feedback: feedbackSchema\n .optional()\n .description('Feedback mechanism configuration'),\n startPage: Joi.string()\n .trim()\n .optional()\n .description('Path of the first page to show when starting the form'),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .description('Pages schema for V1 forms')\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required()\n .description('Sections grouping related pages together')\n .error(\n checkErrors([\n FormDefinitionError.UniqueSectionName,\n FormDefinitionError.UniqueSectionTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic'),\n lists: Joi.array<List>()\n .items(listSchema)\n .unique('name')\n .unique('title')\n .description('Reusable lists of options for select components'),\n metadata: Joi.object({ a: Joi.any() })\n .unknown()\n .optional()\n .description('Custom metadata for the form'),\n declaration: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Declaration text shown on the summary page'),\n skipSummary: Joi.any()\n .strip()\n .description('option to skip the summary page'),\n phaseBanner: phaseBannerSchema\n .optional()\n .description('Phase banner configuration'),\n outputEmail: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .optional()\n .description('Email address where form submissions are sent'),\n output: outputSchema\n .optional()\n .description('Configuration for submission output format')\n })\n\nexport const formDefinitionV2Schema = formDefinitionSchema\n .keys({\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V2)\n .description('Form schema version to use (2)'),\n pages: Joi.array<Page>()\n .items(pageSchemaV2)\n .required()\n .unique('id')\n .unique('path')\n .description('Pages schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageId,\n FormDefinitionError.UniquePagePath\n ])\n ),\n lists: Joi.array<List>()\n .items(listSchemaV2)\n .unique('id')\n .unique('name')\n .unique('title')\n .description('Lists schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListId,\n FormDefinitionError.UniqueListName,\n FormDefinitionError.UniqueListTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapperV2>()\n .items(conditionWrapperSchemaV2)\n .unique('id')\n .unique('displayName')\n .description('Named conditions used for form logic')\n .error(\n checkErrors([\n FormDefinitionError.UniqueConditionId,\n FormDefinitionError.UniqueConditionDisplayName\n ])\n )\n })\n .description('Form definition schema for V2')\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["JoiDate","JoiBase","v4","uuidV4","ComponentType","ConditionType","OperatorName","SchemaVersion","checkErrors","FormDefinitionError","ControllerType","hasComponents","Joi","extend","idSchemaOptional","string","uuid","idSchema","default","conditionIdRef","ref","in","adjust","conditions","map","condition","id","componentIdRefSchema","pages","flatMap","page","components","filter","component","listIdRef","lists","list","listItemIdRef","items","item","sectionsSchema","object","description","keys","name","trim","required","title","hideTitle","boolean","optional","conditionFieldSchema","type","display","conditionValueSchema","value","conditionListItemRefDataSchemaV2","listId","when","is","exist","then","valid","error","RefConditionListId","itemId","RefConditionItemId","relativeDateValueDataSchemaV2","period","number","integer","positive","unit","direction","relativeDateValueDataSchema","conditionRefSchema","conditionName","conditionDisplayName","coordinator","conditionRefDataSchemaV2","conditionId","RefConditionConditionId","conditionSchema","field","operator","alternatives","try","conditionDataSchemaV2","componentId","RefConditionComponentId","Object","values","any","switch","BooleanValue","StringValue","NumberValue","DateValue","date","format","raw","ListItemRef","RelativeDate","conditionGroupSchema","array","link","conditionsModelSchema","conditionWrapperSchema","displayName","conditionWrapperSchemaV2","min","conditional","otherwise","max","componentSchema","shortDescription","Details","Html","InsetText","Markdown","pattern","allow","hint","options","rows","empty","maxWords","maxDaysInPast","maxDaysInFuture","customValidationMessage","customValidationMessages","unknown","schema","length","componentSchemaV2","RefPageComponentList","componentPayloadSchemaV2","fileUploadComponentSchema","FileUploadField","contentComponentSchema","List","nextSchema","path","redirect","repeatOptions","repeatSchema","pageRepeatSchema","eventSchema","method","url","uri","scheme","eventsSchema","onLoad","onSave","pageUploadComponentsSchema","unique","ignoreUndefined","pageSchema","disallow","section","controller","repeat","strip","next","events","view","pageSchemaV2","append","FileUpload","UniquePageComponentId","UniquePageComponentName","RefPageCondition","pagePayloadSchemaV2","baseListItemSchema","text","stringListItemSchema","numberListItemSchema","listSchema","UniqueListItemId","UniqueListItemText","UniqueListItemValue","listSchemaV2","feedbackSchema","feedbackForm","emailAddress","email","tlds","phaseBannerSchema","phase","outputSchema","audience","version","formDefinitionSchema","engine","V1","feedback","startPage","sections","UniqueSectionName","UniqueSectionTitle","metadata","a","declaration","skipSummary","phaseBanner","outputEmail","output","formDefinitionV2Schema","V2","UniquePageId","UniquePagePath","UniqueListId","UniqueListName","UniqueListTitle","UniqueConditionId","UniqueConditionDisplayName","Schema"],"sources":["../../../../src/form/form-definition/index.ts"],"sourcesContent":["import JoiDate from '@joi/date'\nimport JoiBase, { type LanguageMessages } from 'joi'\nimport { v4 as uuidV4 } from 'uuid'\n\nimport { ComponentType } from '~/src/components/enums.js'\nimport {\n type ComponentDef,\n type ContentComponentsDef,\n type FileUploadFieldComponent\n} from '~/src/components/types.js'\nimport { ConditionType, OperatorName } from '~/src/conditions/enums.js'\nimport {\n type ConditionData,\n type ConditionDataV2,\n type ConditionFieldData,\n type ConditionGroupData,\n type ConditionGroupDataV2,\n type ConditionListItemRefValueDataV2,\n type ConditionRefData,\n type ConditionRefDataV2,\n type ConditionValueData,\n type ConditionsModelData,\n type RelativeDateValueData,\n type RelativeDateValueDataV2\n} from '~/src/conditions/types.js'\nimport {\n SchemaVersion,\n type ConditionWrapper,\n type ConditionWrapperV2,\n type Event,\n type EventOptions,\n type Events,\n type FormDefinition,\n type Item,\n type Link,\n type List,\n type Page,\n type PhaseBanner,\n type Repeat,\n type RepeatOptions,\n type RepeatSchema,\n type Section\n} from '~/src/form/form-definition/types.js'\nimport { checkErrors } from '~/src/form/form-manager/errors.js'\nimport { FormDefinitionError } from '~/src/form/form-manager/types.js'\nimport { ControllerType } from '~/src/pages/enums.js'\nimport { hasComponents } from '~/src/pages/helpers.js'\n\nconst Joi = JoiBase.extend(JoiDate) as JoiBase.Root\n\nconst idSchemaOptional = Joi.string().uuid()\n\nconst idSchema = idSchemaOptional.default(() => uuidV4())\n\nconst conditionIdRef = Joi.ref('/conditions', {\n in: true,\n adjust: (conditions: ConditionWrapperV2[]) =>\n conditions.map((condition) => condition.id)\n})\n\nconst componentIdRefSchema = Joi.ref('/pages', {\n in: true,\n adjust: (pages: Page[]) =>\n pages.flatMap((page) =>\n hasComponents(page)\n ? page.components\n .filter((component) => component.id)\n .map((component) => component.id)\n : []\n )\n})\n\nconst listIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.filter((list) => list.id).map((list) => list.id)\n})\n\nconst listItemIdRef = Joi.ref('/lists', {\n in: true,\n adjust: (lists: List[]) =>\n lists.flatMap((list) =>\n list.items.filter((item) => item.id).map((item) => item.id)\n )\n})\n\nconst sectionsSchema = Joi.object<Section>()\n .description('A form section grouping related pages together')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Unique identifier for the section, used in code and page references'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable section title displayed to users'),\n hideTitle: Joi.boolean()\n .optional()\n .default(false)\n .description(\n 'When true, the section title will not be displayed in the UI'\n )\n })\n\nconst conditionFieldSchema = Joi.object<ConditionFieldData>()\n .description('Field reference used in a condition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Component name referenced by this condition'),\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the field (e.g., string, number, date)'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the field for display purposes')\n })\n\nconst conditionValueSchema = Joi.object<ConditionValueData>()\n .description('Value specification for a condition')\n .keys({\n type: Joi.string()\n .trim()\n .required()\n .description('Data type of the value (e.g., string, number, date)'),\n value: Joi.string()\n .trim()\n .required()\n .description('The actual value to compare against'),\n display: Joi.string()\n .trim()\n .required()\n .description('Human-readable version of the value for display purposes')\n })\n\nconst conditionListItemRefDataSchemaV2 =\n Joi.object<ConditionListItemRefValueDataV2>()\n .description('List item ref specification for a condition')\n .keys({\n listId: Joi.string()\n .trim()\n .required()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .description('The id of the list')\n .error(checkErrors(FormDefinitionError.RefConditionListId)),\n itemId: Joi.string()\n .trim()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listItemIdRef)\n })\n .required()\n .description('The id of the list item')\n .error(checkErrors(FormDefinitionError.RefConditionItemId))\n })\n\nconst relativeDateValueDataSchemaV2 = Joi.object<RelativeDateValueDataV2>()\n .description('Relative date specification for date-based conditions')\n .keys({\n period: Joi.number()\n .integer()\n .positive()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst relativeDateValueDataSchema = Joi.object<RelativeDateValueData>()\n .description('Relative date specification for date-based conditions')\n .keys({\n type: Joi.string()\n .trim()\n .valid('RelativeDate')\n .required()\n .description('Type of the condition value, should be \"RelativeDate\"'),\n period: Joi.string()\n .trim()\n .required()\n .description('Numeric amount of the time period, as a string'),\n unit: Joi.string()\n .trim()\n .required()\n .description('Time unit (e.g. days, weeks, months, years)'),\n direction: Joi.string()\n .trim()\n .required()\n .description('Temporal direction, either \"past\" or \"future\"')\n })\n\nconst conditionRefSchema = Joi.object<ConditionRefData>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n conditionName: Joi.string()\n .trim()\n .required()\n .description('Name of the referenced condition'),\n conditionDisplayName: Joi.string()\n .trim()\n .required()\n .description('Human-readable name of the condition for display purposes'),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nconst conditionRefDataSchemaV2 = Joi.object<ConditionRefDataV2>()\n .description('Reference to a named condition defined elsewhere')\n .keys({\n id: idSchema.description('Unique identifier for the referenced condition'),\n conditionId: Joi.string()\n .trim()\n .required()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .description('Name of the referenced condition')\n .error(checkErrors(FormDefinitionError.RefConditionConditionId))\n })\n\nconst conditionSchema = Joi.object<ConditionData>()\n .description('Condition definition specifying a logical comparison')\n .keys({\n field: conditionFieldSchema.description(\n 'The form field being evaluated in this condition'\n ),\n operator: Joi.string()\n .trim()\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n value: Joi.alternatives()\n .try(conditionValueSchema, relativeDateValueDataSchema)\n .description(\n 'Value to compare the field against, either fixed or relative date'\n ),\n coordinator: Joi.string()\n .trim()\n .optional()\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n )\n })\n\nexport const conditionDataSchemaV2 = Joi.object<ConditionDataV2>()\n .description('Condition definition')\n .keys({\n id: idSchema.description(\n 'Unique identifier used to reference this condition'\n ),\n componentId: Joi.string()\n .trim()\n .required()\n .when('/pages', {\n is: Joi.exist(),\n then: Joi.valid(componentIdRefSchema)\n })\n .description(\n 'Reference to the component id being evaluated in this condition'\n )\n .error(checkErrors(FormDefinitionError.RefConditionComponentId)),\n operator: Joi.string()\n .trim()\n .valid(...Object.values(OperatorName))\n .required()\n .description('Comparison operator (equals, greaterThan, contains, etc.)'),\n type: Joi.string()\n .trim()\n .valid(...Object.values(ConditionType))\n .required()\n .description('Type of the condition value'),\n value: Joi.any()\n .required()\n .description('The actual value to compare against')\n .when('type', {\n switch: [\n { is: ConditionType.BooleanValue, then: Joi.boolean() },\n { is: ConditionType.StringValue, then: Joi.string() },\n { is: ConditionType.NumberValue, then: Joi.number() },\n {\n is: ConditionType.DateValue,\n then: Joi.date().format('YYYY-MM-DD').raw()\n },\n {\n is: ConditionType.ListItemRef,\n then: conditionListItemRefDataSchemaV2\n },\n {\n is: ConditionType.RelativeDate,\n then: relativeDateValueDataSchemaV2\n }\n ]\n })\n .description(\n 'Value to compare the field against, either fixed or relative date'\n )\n })\n\nconst conditionGroupSchema = Joi.object<ConditionGroupData>()\n .description('Group of conditions combined with logical operators')\n .keys({\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n Joi.link('#conditionGroupSchema')\n )\n )\n .description('Array of conditions or condition references in this group')\n })\n .id('conditionGroupSchema')\n\nconst conditionsModelSchema = Joi.object<ConditionsModelData>()\n .description('Complete condition model with name and condition set')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier for the condition set'),\n conditions: Joi.array()\n .items(\n Joi.alternatives().try(\n conditionSchema,\n conditionRefSchema,\n conditionGroupSchema\n )\n )\n .description(\n 'Array of conditions, condition references, or condition groups'\n )\n })\n\nconst conditionWrapperSchema = Joi.object<ConditionWrapper>()\n .description('Container for a named condition with its definition')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description('Unique identifier used to reference this condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n value: conditionsModelSchema\n .required()\n .description('The complete condition definition')\n })\n\nexport const conditionWrapperSchemaV2 = Joi.object<ConditionWrapperV2>()\n .description('Container for a named condition with its definition')\n .keys({\n id: idSchema.description('Unique identifier for the condition'),\n displayName: Joi.string()\n .trim()\n .description('Human-readable name for display in the UI'),\n coordinator: Joi.string()\n .optional()\n .when('items', { is: Joi.array().min(2), then: Joi.required() })\n .description(\n 'Logical operator connecting this condition with others (AND, OR)'\n ),\n items: Joi.array<ConditionGroupDataV2>()\n .items(\n Joi.alternatives().conditional('.componentId', {\n is: Joi.exist(),\n then: conditionDataSchemaV2,\n otherwise: conditionRefDataSchemaV2\n })\n )\n .min(1)\n .max(15)\n .description('Array of conditions or condition references')\n })\n .description('Condition schema for V2 forms')\n\nexport const componentSchema = Joi.object<ComponentDef>()\n .description('Form component definition specifying UI element behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the component'),\n type: Joi.string<ComponentType>()\n .trim()\n .required()\n .description('Component type (TextField, RadioButtons, DateField, etc.)'),\n shortDescription: Joi.string()\n .trim()\n .optional()\n .description('Brief description of the component purpose'),\n name: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .optional()\n .description('Optional identifier for display-only components'),\n otherwise: Joi.string()\n .trim()\n .pattern(/^[a-zA-Z]+$/)\n .required()\n .description('Unique identifier for the component, used in form data')\n }),\n title: Joi.when('type', {\n is: Joi.string().valid(\n ComponentType.Details,\n ComponentType.Html,\n ComponentType.InsetText,\n ComponentType.Markdown\n ),\n then: Joi.string()\n .trim()\n .optional()\n .description('Optional title for display-only components'),\n otherwise: Joi.string()\n .trim()\n .allow('')\n .description('Label displayed above the component')\n }),\n hint: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Additional guidance text displayed below the component title'\n ),\n options: Joi.object({\n rows: Joi.number()\n .empty('')\n .description('Number of rows for textarea components'),\n maxWords: Joi.number()\n .empty('')\n .description('Maximum number of words allowed in text inputs'),\n maxDaysInPast: Joi.number()\n .empty('')\n .description('Maximum days in the past allowed for date inputs'),\n maxDaysInFuture: Joi.number()\n .empty('')\n .description('Maximum days in the future allowed for date inputs'),\n customValidationMessage: Joi.string()\n .trim()\n .allow('')\n .description('Custom error message for validation failures'),\n customValidationMessages: Joi.object<LanguageMessages>()\n .unknown(true)\n .optional()\n .description('Custom error messages keyed by validation rule name')\n })\n .default({})\n .unknown(true)\n .description('Component-specific configuration options'),\n schema: Joi.object({\n min: Joi.number()\n .empty('')\n .description('Minimum value or length for validation'),\n max: Joi.number()\n .empty('')\n .description('Maximum value or length for validation'),\n length: Joi.number()\n .empty('')\n .description('Exact length required for validation')\n })\n .unknown(true)\n .default({})\n .description('Validation rules for the component'),\n list: Joi.string()\n .trim()\n .optional()\n .description(\n 'Reference to a predefined list of options for select components'\n )\n })\n .unknown(true)\n\nexport const componentSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .when('/lists', {\n is: Joi.exist(),\n then: Joi.valid(listIdRef)\n })\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n .error(checkErrors(FormDefinitionError.RefPageComponentList))\n })\n .description('Component schema for V2 forms')\n\nexport const componentPayloadSchemaV2 = componentSchema\n .keys({\n id: idSchema.description('Unique identifier for the component'),\n list: Joi.string()\n .optional()\n .description(\n 'List id reference to a predefined list of options for select components'\n )\n })\n .description('Payload schema for component for V2 forms')\n\nexport const fileUploadComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType.FileUploadField>()\n .trim()\n .valid(ComponentType.FileUploadField)\n .required()\n .description('Component that can only be a FileUploadField')\n})\n\nexport const contentComponentSchema = componentSchemaV2.keys({\n type: Joi.string<ComponentType>()\n .trim()\n .valid(ComponentType.Details)\n .valid(ComponentType.Html)\n .valid(ComponentType.Markdown)\n .valid(ComponentType.InsetText)\n .valid(ComponentType.List)\n .required()\n .description('Content only component type (Details, Html, Markdown, etc.)')\n})\n\nconst nextSchema = Joi.object<Link>()\n .description('Navigation link defining where to go after completing a page')\n .keys({\n path: Joi.string()\n .trim()\n .required()\n .description('The target page path to navigate to'),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description(\n 'Optional condition that determines if this path should be taken'\n ),\n redirect: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional external URL to redirect to instead of an internal page'\n )\n })\n\nconst repeatOptions = Joi.object<RepeatOptions>()\n .description('Configuration options for a repeatable page section')\n .keys({\n name: Joi.string()\n .trim()\n .required()\n .description(\n 'Identifier for the repeatable section, used in data structure'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Title displayed for each repeatable item')\n })\n\nconst repeatSchema = Joi.object<RepeatSchema>()\n .description('Validation rules for a repeatable section')\n .keys({\n min: Joi.number()\n .empty('')\n .required()\n .description('Minimum number of repetitions required'),\n max: Joi.number()\n .empty('')\n .required()\n .description('Maximum number of repetitions allowed')\n })\n\nexport const pageRepeatSchema = Joi.object<Repeat>()\n .description('Complete configuration for a repeatable page')\n .keys({\n options: repeatOptions\n .required()\n .description('Display and identification options for the repetition'),\n schema: repeatSchema\n .required()\n .description('Validation constraints for the number of repetitions')\n })\n\nconst eventSchema = Joi.object<Event>()\n .description('Event handler configuration for page lifecycle events')\n .keys({\n type: Joi.string()\n .trim()\n .allow('http')\n .required()\n .description(\n 'Type of the event handler (currently only \"http\" supported)'\n ),\n options: Joi.object<EventOptions>()\n .description('Options specific to the event handler type')\n .keys({\n method: Joi.string()\n .trim()\n .allow('POST')\n .required()\n .description('HTTP method to use for the request'),\n url: Joi.string()\n .trim()\n .uri({ scheme: ['http', 'https'] })\n .required()\n .description('URL endpoint to call when the event fires')\n })\n })\n\nconst eventsSchema = Joi.object<Events>()\n .description(\n 'Collection of event handlers for different page lifecycle events'\n )\n .keys({\n onLoad: eventSchema\n .optional()\n .description('Event handler triggered when the page is loaded'),\n onSave: eventSchema\n .optional()\n .description('Event handler triggered when the page data is saved')\n })\n\nexport const pageUploadComponentsSchema = Joi.array<\n FileUploadFieldComponent | ContentComponentsDef\n>()\n .items(\n fileUploadComponentSchema.required(),\n contentComponentSchema.optional()\n )\n .unique('id')\n .unique('name', { ignoreUndefined: true })\n .min(1)\n .max(2)\n .description('Components allowed on Page Upload schema')\n\n/**\n * `/status` is a special route for providing a user's application status.\n * It should not be configured via the designer.\n */\nexport const pageSchema = Joi.object<Page>()\n .description('Form page definition specifying content and behavior')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the page'),\n path: Joi.string()\n .trim()\n .required()\n .disallow('/status')\n .description(\n 'URL path for this page, must not be the reserved \"/status\" path'\n ),\n title: Joi.string()\n .trim()\n .required()\n .description('Page title displayed at the top of the page'),\n section: Joi.string().trim().description('Section this page belongs to'),\n controller: Joi.string()\n .trim()\n .optional()\n .description('Custom controller class name for special page behavior'),\n components: Joi.array<ComponentDef>()\n .items(componentSchema)\n .unique('name')\n .description('UI components displayed on this page'),\n repeat: Joi.when('controller', {\n is: Joi.string().trim().valid('RepeatPageController').required(),\n then: pageRepeatSchema\n .required()\n .description(\n 'Configuration for repeatable pages, required when using RepeatPageController'\n ),\n otherwise: Joi.any().strip()\n }),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional condition that determines if this page is shown'),\n next: Joi.array<Link>()\n .items(nextSchema)\n .default([])\n .description('Possible navigation paths after this page'),\n events: eventsSchema\n .optional()\n .description('Event handlers for page lifecycle events'),\n view: Joi.string()\n .trim()\n .optional()\n .description(\n 'Optional custom view template to use for rendering this page'\n )\n })\n\n/**\n * V2 engine schema - used with new editor\n */\nexport const pageSchemaV2 = pageSchema\n .append({\n id: idSchema.description('Unique identifier for the page'),\n title: Joi.string()\n .trim()\n .allow('')\n .required()\n .description(\n 'Page title displayed at the top of the page (with support for empty titles in V2)'\n ),\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentSchemaV2)\n .unique('id')\n .unique('name', { ignoreUndefined: true })\n .description('Components schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageComponentId,\n FormDefinitionError.UniquePageComponentName\n ])\n )\n }),\n condition: Joi.string()\n .trim()\n .when('/conditions', {\n is: Joi.exist(),\n then: Joi.valid(conditionIdRef)\n })\n .optional()\n .description('Optional condition that determines if this page is shown')\n .error(checkErrors(FormDefinitionError.RefPageCondition))\n })\n .description('Page schema for V2 forms')\n\nexport const pagePayloadSchemaV2 = pageSchemaV2\n .append({\n components: Joi.when('controller', {\n switch: [\n {\n is: Joi.string().trim().valid(ControllerType.FileUpload).required(),\n then: pageUploadComponentsSchema\n }\n ],\n otherwise: Joi.array<ComponentDef>()\n .items(componentPayloadSchemaV2)\n .unique('id')\n .unique('name')\n .description('Components schema for V2 forms')\n })\n })\n .description('Payload Page schema for V2 forms')\n\nconst baseListItemSchema = Joi.object<Item>()\n .description('Base schema for list items with common properties')\n .keys({\n id: idSchema.description('Unique identifier for the list item'),\n text: Joi.string()\n .trim()\n .allow('')\n .description('Display text shown to the user'),\n description: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Optional additional descriptive text for the item'),\n conditional: Joi.object<Item['conditional']>()\n .description('Optional components to show when this item is selected')\n .keys({\n components: Joi.array<ComponentDef>()\n .required()\n .items(componentSchema.unknown(true))\n .unique('name')\n .description('Components to display conditionally')\n })\n .optional(),\n condition: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Condition that determines if this item is shown'),\n hint: Joi.object<Item['hint']>()\n .optional()\n .keys({\n id: idSchema,\n text: Joi.string().trim()\n })\n .description('Optional hint text to be shown on list item')\n })\n\nconst stringListItemSchema = baseListItemSchema\n .append({\n value: Joi.string()\n .trim()\n .required()\n .description('String value stored when this item is selected')\n })\n .description('List item with string value')\n\nconst numberListItemSchema = baseListItemSchema\n .append({\n value: Joi.number()\n .required()\n .description('Numeric value stored when this item is selected')\n })\n .description('List item with numeric value')\n\nexport const listSchema = Joi.object<List>()\n .description('Reusable list of options for select components')\n .keys({\n id: idSchemaOptional.description('Unique identifier for the list'),\n name: Joi.string()\n .trim()\n .required()\n .description('Name used to reference this list from components'),\n title: Joi.string()\n .trim()\n .required()\n .description('Human-readable title for the list'),\n type: Joi.string()\n .trim()\n .required()\n .valid('string', 'number')\n .description('Data type for list values (string or number)'),\n items: Joi.when('type', {\n is: 'string',\n then: Joi.array()\n .items(stringListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with string values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n ),\n otherwise: Joi.array()\n .items(numberListItemSchema)\n .unique('id')\n .unique('text')\n .unique('value')\n .description('Array of items with numeric values')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListItemId,\n FormDefinitionError.UniqueListItemText,\n FormDefinitionError.UniqueListItemValue\n ])\n )\n })\n })\n\n/**\n * V2 Joi schema for Lists\n */\nexport const listSchemaV2 = listSchema\n .keys({\n id: idSchema.description('Unique identifier for the list')\n })\n .description('List schema for V2 forms')\n\nconst feedbackSchema = Joi.object<FormDefinition['feedback']>()\n .description('Feedback configuration for the form')\n .keys({\n feedbackForm: Joi.boolean()\n .default(false)\n .description('Whether to show the built-in feedback form'),\n url: Joi.when('feedbackForm', {\n is: Joi.boolean().valid(false),\n then: Joi.string()\n .trim()\n .optional()\n .allow('')\n .description(\n 'URL to an external feedback form when not using built-in feedback'\n )\n }),\n emailAddress: Joi.string()\n .trim()\n .email({\n tlds: {\n allow: false\n }\n })\n .optional()\n .description('Email address where feedback is sent')\n })\n\nconst phaseBannerSchema = Joi.object<PhaseBanner>()\n .description('Phase banner configuration showing development status')\n .keys({\n phase: Joi.string()\n .trim()\n .valid('alpha', 'beta')\n .description('Development phase of the service (alpha or beta)')\n })\n\nconst outputSchema = Joi.object<FormDefinition['output']>()\n .description('Configuration for form submission output')\n .keys({\n audience: Joi.string()\n .trim()\n .valid('human', 'machine')\n .required()\n .description(\n 'Target audience for the output (human readable or machine processable)'\n ),\n version: Joi.string()\n .trim()\n .required()\n .description('Version identifier for the output format')\n })\n\n/**\n * Joi schema for `FormDefinition` interface\n * @see {@link FormDefinition}\n */\nexport const formDefinitionSchema = Joi.object<FormDefinition>()\n .description('Complete form definition describing all aspects of a form')\n .required()\n .keys({\n engine: Joi.string()\n .trim()\n .allow('V1', 'V2')\n .default('V1')\n .description('Form engine version to use (V1 or V2)'),\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V1)\n .default(SchemaVersion.V1)\n .description('Form schema version to use (1 or 2)'),\n name: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Unique name identifying the form'),\n feedback: feedbackSchema\n .optional()\n .description('Feedback mechanism configuration'),\n startPage: Joi.string()\n .trim()\n .optional()\n .description('Path of the first page to show when starting the form'),\n pages: Joi.array<Page>()\n .required()\n .items(pageSchema)\n .description('Pages schema for V1 forms')\n .unique('path'),\n sections: Joi.array<Section>()\n .items(sectionsSchema)\n .unique('name')\n .unique('title')\n .required()\n .description('Sections grouping related pages together')\n .error(\n checkErrors([\n FormDefinitionError.UniqueSectionName,\n FormDefinitionError.UniqueSectionTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapper>()\n .items(conditionWrapperSchema)\n .unique('name')\n .unique('displayName')\n .description('Named conditions used for form logic'),\n lists: Joi.array<List>()\n .items(listSchema)\n .unique('name')\n .unique('title')\n .description('Reusable lists of options for select components'),\n metadata: Joi.object({ a: Joi.any() })\n .unknown()\n .optional()\n .description('Custom metadata for the form'),\n declaration: Joi.string()\n .trim()\n .allow('')\n .optional()\n .description('Declaration text shown on the summary page'),\n skipSummary: Joi.any()\n .strip()\n .description('option to skip the summary page'),\n phaseBanner: phaseBannerSchema\n .optional()\n .description('Phase banner configuration'),\n outputEmail: Joi.string()\n .trim()\n .email({ tlds: { allow: ['uk'] } })\n .optional()\n .description('Email address where form submissions are sent'),\n output: outputSchema\n .optional()\n .description('Configuration for submission output format')\n })\n\nexport const formDefinitionV2Schema = formDefinitionSchema\n .keys({\n schema: Joi.number()\n .integer()\n .valid(SchemaVersion.V2)\n .description('Form schema version to use (2)'),\n pages: Joi.array<Page>()\n .items(pageSchemaV2)\n .required()\n .unique('id')\n .unique('path')\n .description('Pages schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniquePageId,\n FormDefinitionError.UniquePagePath\n ])\n ),\n lists: Joi.array<List>()\n .items(listSchemaV2)\n .unique('id')\n .unique('name')\n .unique('title')\n .description('Lists schema for V2 forms')\n .error(\n checkErrors([\n FormDefinitionError.UniqueListId,\n FormDefinitionError.UniqueListName,\n FormDefinitionError.UniqueListTitle\n ])\n ),\n conditions: Joi.array<ConditionWrapperV2>()\n .items(conditionWrapperSchemaV2)\n .unique('id')\n .unique('displayName')\n .description('Named conditions used for form logic')\n .error(\n checkErrors([\n FormDefinitionError.UniqueConditionId,\n FormDefinitionError.UniqueConditionDisplayName\n ])\n )\n })\n .description('Form definition schema for V2')\n\n// Maintain compatibility with legacy named export\n// E.g. `import { Schema } from '@defra/forms-model'`\nexport const Schema = formDefinitionSchema\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ import { AuditEventMessageCategory, AuditEventMessageSchemaVersion, AuditEventMe
3
3
  import { type AuditEvent, type AuditMessage, type AuditRecord, type AuditUser, type FormCreatedMessageData, type FormMessageChangesData, type FormMessageDataBase, type FormNotificationEmailChanges, type FormOrganisationChanges, type FormPrivacyNoticeChanges, type FormSubmissionGuidanceChanges, type FormSupportContactChanges, type FormSupportEmailChanges, type FormSupportOnlineChanges, type FormSupportPhoneChanges, type FormTeamEmailChanges, type FormTeamNameChanges, type FormTitleChanges, type FormUpdatedMessageData, type FormUploadedChanges } from '../../form/form-audit/types.js';
4
4
  export declare const formMessageDataBase: Joi.ObjectSchema<FormMessageDataBase>;
5
5
  export declare const formCreatedMessageData: Joi.ObjectSchema<FormCreatedMessageData>;
6
+ export declare const formChangeSet: Joi.ArraySchema<any[]>;
6
7
  export declare const formUpdatedMessageData: Joi.ObjectSchema<FormUpdatedMessageData>;
7
8
  export declare const formTitleChanges: Joi.ObjectSchema<FormTitleChanges>;
8
9
  export declare const formOrganisationChanges: Joi.ObjectSchema<FormOrganisationChanges>;
@@ -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;AAE5C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EAEd,KAAK,sBAAsB,EAC3B,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;AAGvC,eAAO,MAAM,mBAAmB,uCAG9B,CAAA;AAEF,eAAO,MAAM,sBAAsB,0CAM/B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,0CAG/B,CAAA;AAEJ,eAAO,MAAM,gBAAgB,oCAIhB,CAAA;AAEb,eAAO,MAAM,uBAAuB,2CAIvB,CAAA;AAEb,eAAO,MAAM,mBAAmB,uCAInB,CAAA;AAEb,eAAO,MAAM,oBAAoB,wCAIpB,CAAA;AAEb,eAAO,MAAM,yBAAyB,6CAIzB,CAAA;AAEb,eAAO,MAAM,uBAAuB,2CAIvB,CAAA;AAEb,eAAO,MAAM,wBAAwB,4CAKxB,CAAA;AAEb,eAAO,MAAM,wBAAwB,4CAIxB,CAAA;AAEb,eAAO,MAAM,4BAA4B,gDAK1B,CAAA;AAEf,eAAO,MAAM,6BAA6B,iDAK3B,CAAA;AAEf,eAAO,MAAM,mBAAmB,uCAInB,CAAA;AAEb,eAAO,MAAM,uBAAuB,2CAIhC,CAAA;AAEJ,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,sBAAsB,EACxE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,YAAY,CAAC,CAAC,CAAC,CAOjB;AAED,eAAO,MAAM,eAAe,6BAG1B,CAAA;AAEF,eAAO,MAAM,eAAe,6BAG3B,CAAA;AAED,eAAO,MAAM,UAAU,yBAqBtB,CAAA;AAED,eAAO,MAAM,0BAA0B,kCAAsC,CAAA;AAE7E,eAAO,MAAM,aAAa,gCAgIxB,CAAA;AAEF,eAAO,MAAM,UAAU,8BAErB,CAAA;AAEF,eAAO,MAAM,WAAW,+BAItB,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;AAG5C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,SAAS,EAGd,KAAK,sBAAsB,EAC3B,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;AAGvC,eAAO,MAAM,mBAAmB,uCAG9B,CAAA;AAEF,eAAO,MAAM,sBAAsB,0CAM/B,CAAA;AAIJ,eAAO,MAAM,aAAa,wBAazB,CAAA;AAED,eAAO,MAAM,sBAAsB,0CAG/B,CAAA;AAEJ,eAAO,MAAM,gBAAgB,oCAIhB,CAAA;AAEb,eAAO,MAAM,uBAAuB,2CAIvB,CAAA;AAEb,eAAO,MAAM,mBAAmB,uCAInB,CAAA;AAEb,eAAO,MAAM,oBAAoB,wCAIpB,CAAA;AAEb,eAAO,MAAM,yBAAyB,6CAIzB,CAAA;AAEb,eAAO,MAAM,uBAAuB,2CAIvB,CAAA;AAEb,eAAO,MAAM,wBAAwB,4CAKxB,CAAA;AAEb,eAAO,MAAM,wBAAwB,4CAIxB,CAAA;AAEb,eAAO,MAAM,4BAA4B,gDAK1B,CAAA;AAEf,eAAO,MAAM,6BAA6B,iDAK3B,CAAA;AAEf,eAAO,MAAM,mBAAmB,uCAInB,CAAA;AAEb,eAAO,MAAM,uBAAuB,2CAIhC,CAAA;AAEJ,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,CAAC,SAAS,sBAAsB,EACxE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GACtB,YAAY,CAAC,CAAC,CAAC,CAOjB;AAED,eAAO,MAAM,eAAe,6BAG1B,CAAA;AAEF,eAAO,MAAM,eAAe,6BAG3B,CAAA;AAED,eAAO,MAAM,UAAU,yBAqBtB,CAAA;AAED,eAAO,MAAM,0BAA0B,kCAAsC,CAAA;AAE7E,eAAO,MAAM,aAAa,gCAgIxB,CAAA;AAEF,eAAO,MAAM,UAAU,8BAErB,CAAA;AAEF,eAAO,MAAM,WAAW,+BAItB,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { type IChange } from 'json-diff-ts';
1
2
  import { type AuditEventMessageCategory, type AuditEventMessageSchemaVersion, type AuditEventMessageType } from '../../form/form-audit/enums.js';
2
3
  import { type FormMetadataContact } from '../../form/form-metadata/types.js';
3
4
  export interface FormMessageDataBase {
@@ -88,16 +89,18 @@ export interface FormSubmissionGuidanceUpdatedMessageData extends FormMessageDat
88
89
  export interface FormUploadedMessageData extends FormMessageDataBase {
89
90
  changes: ChangesMessageData<FormUploadedChanges>;
90
91
  }
91
- export type FormMessageChangesData = FormTitleUpdatedMessageData | FormOrganisationUpdatedMessageData | FormTeamNameUpdatedMessageData | FormTeamEmailUpdatedMessageData | FormSupportContactUpdatedMessageData | FormSupportPhoneUpdatedMessageData | FormSupportEmailUpdatedMessageData | FormSupportOnlineUpdatedMessageData | FormPrivacyNoticeUpdatedMessageData | FormNotificationEmailUpdatedMessageData | FormSubmissionGuidanceUpdatedMessageData | FormUploadedMessageData;
92
- export type FormMessageActivitiesData = FormCreatedMessageData | FormUpdatedMessageData | FormMessageDataBase;
92
+ export type FormChangeSet = IChange;
93
93
  export interface FormUpdatedMessageData extends FormMessageDataBase {
94
- description: string;
94
+ changeSet: FormChangeSet[];
95
95
  }
96
+ export type FormMessageChangesData = FormTitleUpdatedMessageData | FormOrganisationUpdatedMessageData | FormTeamNameUpdatedMessageData | FormTeamEmailUpdatedMessageData | FormSupportContactUpdatedMessageData | FormSupportPhoneUpdatedMessageData | FormSupportEmailUpdatedMessageData | FormSupportOnlineUpdatedMessageData | FormPrivacyNoticeUpdatedMessageData | FormNotificationEmailUpdatedMessageData | FormSubmissionGuidanceUpdatedMessageData | FormUploadedMessageData;
97
+ export type FormMessageActivitiesData = FormCreatedMessageData | FormMessageDataBase;
98
+ export type FormMessageChangeSetData = FormUpdatedMessageData;
96
99
  export interface AuditUser {
97
100
  id: string;
98
101
  displayName: string;
99
102
  }
100
- export type MessageData = FormMessageChangesData | FormMessageActivitiesData;
103
+ export type MessageData = FormMessageChangesData | FormMessageActivitiesData | FormMessageChangeSetData;
101
104
  export interface MessageBase {
102
105
  schemaVersion: AuditEventMessageSchemaVersion;
103
106
  category: AuditEventMessageCategory;
@@ -200,6 +203,7 @@ export interface FormMigratedMessage extends MessageBase {
200
203
  export interface FormUpdatedMessage extends MessageBase {
201
204
  category: AuditEventMessageCategory.FORM;
202
205
  type: AuditEventMessageType.FORM_UPDATED;
206
+ data: FormUpdatedMessageData;
203
207
  }
204
208
  export type AuditMessage = FormCreatedMessage | FormTitleUpdatedMessage | FormOrganisationUpdatedMessage | FormTeamNameUpdatedMessage | FormTeamEmailUpdatedMessage | FormSupportContactUpdatedMessage | FormSupportPhoneUpdatedMessage | FormSupportEmailUpdatedMessage | FormSupportOnlineUpdatedMessage | FormPrivacyNoticeUpdatedMessage | FormNotificationEmailUpdatedMessage | FormSubmissionGuidanceUpdatedMessage | FormUploadedMessage | FormDownloadedMessage | FormPublishedMessage | FormDraftCreatedFromLiveMessage | FormLiveCreatedFromDraftMessage | FormDraftDeletedMessage | FormMigratedMessage | FormUpdatedMessage;
205
209
  export interface AuditEvent {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAkC,MAAM,KAAK,CAAA;AAIpD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAEL,KAAK,eAAe,EAWrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA4N5C,eAAO,MAAM,qBAAqB,uCAoD9B,CAAA;AAoDJ,eAAO,MAAM,wBAAwB,0CAyBU,CAAA;AAE/C,eAAO,MAAM,eAAe,oCAkGZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,oCAciB,CAAA;AAE/C,eAAO,MAAM,wBAAwB,oCASsB,CAAA;AAE3D,eAAO,MAAM,yBAAyB,oCAMpC,CAAA;AAEF,eAAO,MAAM,sBAAsB,oCAUjC,CAAA;AAoDF,eAAO,MAAM,gBAAgB,8BASzB,CAAA;AAyCJ,eAAO,MAAM,0BAA0B,sEAWmB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,UAAU,4BAmDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAuCiB,CAAA;AAE1C,eAAO,MAAM,mBAAmB,4BAgBkB,CAAA;AAwDlD,eAAO,MAAM,UAAU,4BA8CnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAIiB,CAAA;AAsD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCA4E7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,sCA2CY,CAAA;AAI/C,eAAO,MAAM,MAAM,sCAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-definition/index.ts"],"names":[],"mappings":"AACA,OAAO,OAAkC,MAAM,KAAK,CAAA;AAIpD,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC9B,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAEL,KAAK,eAAe,EAWrB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,cAAc,EAGnB,KAAK,IAAI,EACT,KAAK,IAAI,EAET,KAAK,MAAM,EAIZ,MAAM,qCAAqC,CAAA;AA4N5C,eAAO,MAAM,qBAAqB,uCAoD9B,CAAA;AAoDJ,eAAO,MAAM,wBAAwB,0CAyBU,CAAA;AAE/C,eAAO,MAAM,eAAe,oCAmGZ,CAAA;AAEhB,eAAO,MAAM,iBAAiB,oCAciB,CAAA;AAE/C,eAAO,MAAM,wBAAwB,oCASsB,CAAA;AAE3D,eAAO,MAAM,yBAAyB,oCAMpC,CAAA;AAEF,eAAO,MAAM,sBAAsB,oCAUjC,CAAA;AAoDF,eAAO,MAAM,gBAAgB,8BASzB,CAAA;AAyCJ,eAAO,MAAM,0BAA0B,sEAWmB,CAAA;AAE1D;;;GAGG;AACH,eAAO,MAAM,UAAU,4BAmDnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAuCiB,CAAA;AAE1C,eAAO,MAAM,mBAAmB,4BAgBkB,CAAA;AAwDlD,eAAO,MAAM,UAAU,4BA8CnB,CAAA;AAEJ;;GAEG;AACH,eAAO,MAAM,YAAY,4BAIiB,CAAA;AAsD1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,sCA4E7B,CAAA;AAEJ,eAAO,MAAM,sBAAsB,sCA2CY,CAAA;AAI/C,eAAO,MAAM,MAAM,sCAAuB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@defra/forms-model",
3
- "version": "3.0.521",
3
+ "version": "3.0.523",
4
4
  "description": "A hapi plugin providing the model for Defra forms",
5
5
  "homepage": "https://github.com/DEFRA/forms-designer/tree/main/model#readme",
6
6
  "types": "dist/types/index.d.ts",
@@ -35,6 +35,7 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "@joi/date": "^2.1.1",
38
+ "json-diff-ts": "^4.8.1",
38
39
  "marked": "^15.0.12",
39
40
  "nanoid": "^5.0.7",
40
41
  "slug": "^11.0.0",
@@ -1,4 +1,5 @@
1
1
  import Joi, { type ObjectSchema } from 'joi'
2
+ import { Operation } from 'json-diff-ts'
2
3
 
3
4
  import {
4
5
  AuditEventMessageCategory,
@@ -11,6 +12,7 @@ import {
11
12
  type AuditRecord,
12
13
  type AuditUser,
13
14
  type ChangesMessageData,
15
+ type FormChangeSet,
14
16
  type FormCreatedMessageData,
15
17
  type FormMessageChangesData,
16
18
  type FormMessageDataBase,
@@ -55,9 +57,26 @@ export const formCreatedMessageData =
55
57
  teamEmail: Joi.string().required()
56
58
  })
57
59
 
60
+ const allowedOperations = [Operation.ADD, Operation.REMOVE, Operation.UPDATE]
61
+
62
+ export const formChangeSet = Joi.array().items(
63
+ Joi.object<FormChangeSet>()
64
+ .keys({
65
+ type: Joi.string()
66
+ .valid(...allowedOperations)
67
+ .required(),
68
+ key: Joi.string().required(),
69
+ embeddedKey: Joi.string().optional(),
70
+ value: Joi.any().optional(),
71
+ oldValue: Joi.any().optional(),
72
+ changes: Joi.array().items(Joi.link('#formChangeSet')).optional()
73
+ })
74
+ .id('formChangeSet')
75
+ )
76
+
58
77
  export const formUpdatedMessageData =
59
78
  formMessageDataBase.append<FormUpdatedMessageData>({
60
- description: Joi.string().trim().required()
79
+ changeSet: formChangeSet.required()
61
80
  })
62
81
 
63
82
  export const formTitleChanges = Joi.object<FormTitleChanges>()
@@ -1,3 +1,5 @@
1
+ import { type IChange } from 'json-diff-ts'
2
+
1
3
  import {
2
4
  type AuditEventMessageCategory,
3
5
  type AuditEventMessageSchemaVersion,
@@ -128,6 +130,12 @@ export interface FormUploadedMessageData extends FormMessageDataBase {
128
130
  changes: ChangesMessageData<FormUploadedChanges>
129
131
  }
130
132
 
133
+ export type FormChangeSet = IChange
134
+
135
+ export interface FormUpdatedMessageData extends FormMessageDataBase {
136
+ changeSet: FormChangeSet[]
137
+ }
138
+
131
139
  export type FormMessageChangesData =
132
140
  | FormTitleUpdatedMessageData
133
141
  | FormOrganisationUpdatedMessageData
@@ -144,19 +152,19 @@ export type FormMessageChangesData =
144
152
 
145
153
  export type FormMessageActivitiesData =
146
154
  | FormCreatedMessageData
147
- | FormUpdatedMessageData
148
155
  | FormMessageDataBase
149
156
 
150
- export interface FormUpdatedMessageData extends FormMessageDataBase {
151
- description: string
152
- }
157
+ export type FormMessageChangeSetData = FormUpdatedMessageData
153
158
 
154
159
  export interface AuditUser {
155
160
  id: string
156
161
  displayName: string
157
162
  }
158
163
 
159
- export type MessageData = FormMessageChangesData | FormMessageActivitiesData
164
+ export type MessageData =
165
+ | FormMessageChangesData
166
+ | FormMessageActivitiesData
167
+ | FormMessageChangeSetData
160
168
 
161
169
  export interface MessageBase {
162
170
  schemaVersion: AuditEventMessageSchemaVersion
@@ -280,6 +288,7 @@ export interface FormMigratedMessage extends MessageBase {
280
288
  export interface FormUpdatedMessage extends MessageBase {
281
289
  category: AuditEventMessageCategory.FORM
282
290
  type: AuditEventMessageType.FORM_UPDATED
291
+ data: FormUpdatedMessageData
283
292
  }
284
293
 
285
294
  export type AuditMessage =
@@ -418,6 +418,7 @@ export const componentSchema = Joi.object<ComponentDef>()
418
418
  otherwise: Joi.string()
419
419
  .trim()
420
420
  .pattern(/^[a-zA-Z]+$/)
421
+ .required()
421
422
  .description('Unique identifier for the component, used in form data')
422
423
  }),
423
424
  title: Joi.when('type', {
@@ -646,7 +647,7 @@ export const pageUploadComponentsSchema = Joi.array<
646
647
  contentComponentSchema.optional()
647
648
  )
648
649
  .unique('id')
649
- .unique('name')
650
+ .unique('name', { ignoreUndefined: true })
650
651
  .min(1)
651
652
  .max(2)
652
653
  .description('Components allowed on Page Upload schema')
@@ -731,7 +732,7 @@ export const pageSchemaV2 = pageSchema
731
732
  otherwise: Joi.array<ComponentDef>()
732
733
  .items(componentSchemaV2)
733
734
  .unique('id')
734
- .unique('name')
735
+ .unique('name', { ignoreUndefined: true })
735
736
  .description('Components schema for V2 forms')
736
737
  .error(
737
738
  checkErrors([