@defra/forms-model 3.0.513 → 3.0.515
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.
- package/dist/module/form/form-audit/__stubs__/events.js +32 -0
- package/dist/module/form/form-audit/__stubs__/events.js.map +1 -0
- package/dist/module/form/form-audit/enums.js +4 -0
- package/dist/module/form/form-audit/enums.js.map +1 -1
- package/dist/module/form/form-audit/index.js +56 -1
- package/dist/module/form/form-audit/index.js.map +1 -1
- package/dist/module/form/form-audit/types.js.map +1 -1
- package/dist/module/stubs.js +1 -0
- package/dist/module/stubs.js.map +1 -1
- package/dist/types/form/form-audit/__stubs__/events.d.ts +6 -0
- package/dist/types/form/form-audit/__stubs__/events.d.ts.map +1 -0
- package/dist/types/form/form-audit/enums.d.ts +3 -0
- package/dist/types/form/form-audit/enums.d.ts.map +1 -1
- package/dist/types/form/form-audit/index.d.ts +14 -1
- package/dist/types/form/form-audit/index.d.ts.map +1 -1
- package/dist/types/form/form-audit/types.d.ts +30 -29
- package/dist/types/form/form-audit/types.d.ts.map +1 -1
- package/dist/types/stubs.d.ts +1 -0
- package/dist/types/stubs.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/form/form-audit/__stubs__/events.ts +48 -0
- package/src/form/form-audit/enums.ts +4 -0
- package/src/form/form-audit/index.ts +99 -0
- package/src/form/form-audit/types.ts +33 -24
- package/src/stubs.ts +1 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
import { AuditEventMessageCategory, AuditEventMessageSchemaVersion, AuditEventMessageType } from "../enums.js";
|
2
|
+
export const formCreatedFormId = '8c772d00-beac-4a29-95cb-033a263d0f1b';
|
3
|
+
export function buildFormCreatedMessageData(partialFormCreatedMessageData = {}) {
|
4
|
+
return {
|
5
|
+
formId: formCreatedFormId,
|
6
|
+
slug: 'chemistry',
|
7
|
+
title: 'Chemistry',
|
8
|
+
organisation: 'Defra',
|
9
|
+
teamName: 'Forms Team',
|
10
|
+
teamEmail: 'forms@example.com',
|
11
|
+
...partialFormCreatedMessageData
|
12
|
+
};
|
13
|
+
}
|
14
|
+
export function buildAuditUser(auditUser = {}) {
|
15
|
+
return {
|
16
|
+
displayName: 'Enrique Chase',
|
17
|
+
id: '18ab1e08-c921-4bb6-a19c-e677c709cc6d',
|
18
|
+
...auditUser
|
19
|
+
};
|
20
|
+
}
|
21
|
+
export function buildFormCreatedMessage(partialFormCreatedMessage = {}) {
|
22
|
+
return {
|
23
|
+
type: AuditEventMessageType.FORM_CREATED,
|
24
|
+
category: AuditEventMessageCategory.FORM,
|
25
|
+
createdAt: new Date('2025-07-23'),
|
26
|
+
createdBy: buildAuditUser(),
|
27
|
+
data: buildFormCreatedMessageData(),
|
28
|
+
schemaVersion: AuditEventMessageSchemaVersion.V1,
|
29
|
+
...partialFormCreatedMessage
|
30
|
+
};
|
31
|
+
}
|
32
|
+
//# sourceMappingURL=events.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"events.js","names":["AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageType","formCreatedFormId","buildFormCreatedMessageData","partialFormCreatedMessageData","formId","slug","title","organisation","teamName","teamEmail","buildAuditUser","auditUser","displayName","id","buildFormCreatedMessage","partialFormCreatedMessage","type","FORM_CREATED","category","FORM","createdAt","Date","createdBy","data","schemaVersion","V1"],"sources":["../../../../../src/form/form-audit/__stubs__/events.ts"],"sourcesContent":["import {\n AuditEventMessageCategory,\n AuditEventMessageSchemaVersion,\n AuditEventMessageType\n} from '~/src/form/form-audit/enums.js'\nimport {\n type AuditUser,\n type FormCreatedMessage,\n type FormCreatedMessageData\n} from '~/src/form/form-audit/types.js'\n\nexport const formCreatedFormId = '8c772d00-beac-4a29-95cb-033a263d0f1b'\n\nexport function buildFormCreatedMessageData(\n partialFormCreatedMessageData: Partial<FormCreatedMessageData> = {}\n): FormCreatedMessageData {\n return {\n formId: formCreatedFormId,\n slug: 'chemistry',\n title: 'Chemistry',\n organisation: 'Defra',\n teamName: 'Forms Team',\n teamEmail: 'forms@example.com',\n ...partialFormCreatedMessageData\n }\n}\n\nexport function buildAuditUser(auditUser: Partial<AuditUser> = {}): AuditUser {\n return {\n displayName: 'Enrique Chase',\n id: '18ab1e08-c921-4bb6-a19c-e677c709cc6d',\n ...auditUser\n }\n}\n\nexport function buildFormCreatedMessage(\n partialFormCreatedMessage: Partial<FormCreatedMessage> = {}\n): FormCreatedMessage {\n return {\n type: AuditEventMessageType.FORM_CREATED,\n category: AuditEventMessageCategory.FORM,\n createdAt: new Date('2025-07-23'),\n createdBy: buildAuditUser(),\n data: buildFormCreatedMessageData(),\n schemaVersion: AuditEventMessageSchemaVersion.V1,\n ...partialFormCreatedMessage\n } as FormCreatedMessage\n}\n"],"mappings":"AAAA,SACEA,yBAAyB,EACzBC,8BAA8B,EAC9BC,qBAAqB;AAQvB,OAAO,MAAMC,iBAAiB,GAAG,sCAAsC;AAEvE,OAAO,SAASC,2BAA2BA,CACzCC,6BAA8D,GAAG,CAAC,CAAC,EAC3C;EACxB,OAAO;IACLC,MAAM,EAAEH,iBAAiB;IACzBI,IAAI,EAAE,WAAW;IACjBC,KAAK,EAAE,WAAW;IAClBC,YAAY,EAAE,OAAO;IACrBC,QAAQ,EAAE,YAAY;IACtBC,SAAS,EAAE,mBAAmB;IAC9B,GAAGN;EACL,CAAC;AACH;AAEA,OAAO,SAASO,cAAcA,CAACC,SAA6B,GAAG,CAAC,CAAC,EAAa;EAC5E,OAAO;IACLC,WAAW,EAAE,eAAe;IAC5BC,EAAE,EAAE,sCAAsC;IAC1C,GAAGF;EACL,CAAC;AACH;AAEA,OAAO,SAASG,uBAAuBA,CACrCC,yBAAsD,GAAG,CAAC,CAAC,EACvC;EACpB,OAAO;IACLC,IAAI,EAAEhB,qBAAqB,CAACiB,YAAY;IACxCC,QAAQ,EAAEpB,yBAAyB,CAACqB,IAAI;IACxCC,SAAS,EAAE,IAAIC,IAAI,CAAC,YAAY,CAAC;IACjCC,SAAS,EAAEZ,cAAc,CAAC,CAAC;IAC3Ba,IAAI,EAAErB,2BAA2B,CAAC,CAAC;IACnCsB,aAAa,EAAEzB,8BAA8B,CAAC0B,EAAE;IAChD,GAAGV;EACL,CAAC;AACH","ignoreList":[]}
|
@@ -1,3 +1,7 @@
|
|
1
|
+
export let AuditEventMessageSchemaVersion = /*#__PURE__*/function (AuditEventMessageSchemaVersion) {
|
2
|
+
AuditEventMessageSchemaVersion[AuditEventMessageSchemaVersion["V1"] = 1] = "V1";
|
3
|
+
return AuditEventMessageSchemaVersion;
|
4
|
+
}({});
|
1
5
|
export let AuditEventMessageCategory = /*#__PURE__*/function (AuditEventMessageCategory) {
|
2
6
|
AuditEventMessageCategory["FORM"] = "FORM";
|
3
7
|
AuditEventMessageCategory["ENTITLEMENT"] = "ENTITLEMENT";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"enums.js","names":["AuditEventMessageCategory","AuditEventMessageSubCategory","AuditEventMessageType"],"sources":["../../../../src/form/form-audit/enums.ts"],"sourcesContent":["export enum AuditEventMessageCategory {\n FORM = 'FORM',\n ENTITLEMENT = 'ENTITLEMENT'\n}\n\nexport enum AuditEventMessageSubCategory {\n FORM_METADATA = 'FORM_METADATA',\n FORM_DEFINITION = 'FORM_DEFINITION',\n FORM_SUBMISSION = 'FORM_SUBMISSION'\n}\n\nexport enum AuditEventMessageType {\n FORM_CREATED = 'FORM_CREATED',\n FORM_PUBLISHED = 'FORM_PUBLISHED',\n FORM_NAME_UPDATED = 'FORM_NAME_UPDATED',\n FORM_ORGANISATION_UPDATED = 'FORM_ORGANISATION_UPDATED',\n FORM_TEAM_NAME_UPDATED = 'FORM_TEAM_NAME_UPDATED',\n FORM_TEAM_EMAIL_UPDATED = 'FORM_TEAM_EMAIL_UPDATED',\n FORM_SUPPORT_PHONE_UPDATED = 'FORM_SUPPORT_PHONE_UPDATED',\n FORM_SUPPORT_EMAIL_UPDATED = 'FORM_SUPPORT_EMAIL_UPDATED',\n FORM_SUPPORT_LINK_UPDATED = 'FORM_SUPPORT_LINK_UPDATED',\n FORM_PRIVACY_POLICY_LINK_UPDATED = 'FORM_PRIVACY_POLICY_LINK_UPDATED',\n FORM_NOTIFICATION_EMAIL_UPDATED = 'FORM_NOTIFICATION_EMAIL_UPDATED',\n FORM_SUBMISSION_GUIDANCE_UPDATED = 'FORM_SUBMISSION_GUIDANCE_UPDATED',\n FORM_JSON_UPLOADED = 'FORM_JSON_UPLOADED',\n FORM_JSON_DOWNLOADED = 'FORM_JSON_DOWNLOADED',\n FORM_DRAFT_CREATED_FROM_LIVE = 'FORM_DRAFT_CREATED_FROM_LIVE',\n FORM_DRAFT_DELETED = 'FORM_DRAFT_DELETED',\n FORM_MIGRATED = 'FORM_MIGRATED',\n FORM_UPDATED = 'FORM_UPDATED'\n}\n"],"mappings":"AAAA,WAAYA,yBAAyB,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAKrC,WAAYC,4BAA4B,0BAA5BA,4BAA4B;EAA5BA,4BAA4B;EAA5BA,4BAA4B;EAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA;AAMxC,WAAYC,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA","ignoreList":[]}
|
1
|
+
{"version":3,"file":"enums.js","names":["AuditEventMessageSchemaVersion","AuditEventMessageCategory","AuditEventMessageSubCategory","AuditEventMessageType"],"sources":["../../../../src/form/form-audit/enums.ts"],"sourcesContent":["export enum AuditEventMessageSchemaVersion {\n V1 = 1\n}\n\nexport enum AuditEventMessageCategory {\n FORM = 'FORM',\n ENTITLEMENT = 'ENTITLEMENT'\n}\n\nexport enum AuditEventMessageSubCategory {\n FORM_METADATA = 'FORM_METADATA',\n FORM_DEFINITION = 'FORM_DEFINITION',\n FORM_SUBMISSION = 'FORM_SUBMISSION'\n}\n\nexport enum AuditEventMessageType {\n FORM_CREATED = 'FORM_CREATED',\n FORM_PUBLISHED = 'FORM_PUBLISHED',\n FORM_NAME_UPDATED = 'FORM_NAME_UPDATED',\n FORM_ORGANISATION_UPDATED = 'FORM_ORGANISATION_UPDATED',\n FORM_TEAM_NAME_UPDATED = 'FORM_TEAM_NAME_UPDATED',\n FORM_TEAM_EMAIL_UPDATED = 'FORM_TEAM_EMAIL_UPDATED',\n FORM_SUPPORT_PHONE_UPDATED = 'FORM_SUPPORT_PHONE_UPDATED',\n FORM_SUPPORT_EMAIL_UPDATED = 'FORM_SUPPORT_EMAIL_UPDATED',\n FORM_SUPPORT_LINK_UPDATED = 'FORM_SUPPORT_LINK_UPDATED',\n FORM_PRIVACY_POLICY_LINK_UPDATED = 'FORM_PRIVACY_POLICY_LINK_UPDATED',\n FORM_NOTIFICATION_EMAIL_UPDATED = 'FORM_NOTIFICATION_EMAIL_UPDATED',\n FORM_SUBMISSION_GUIDANCE_UPDATED = 'FORM_SUBMISSION_GUIDANCE_UPDATED',\n FORM_JSON_UPLOADED = 'FORM_JSON_UPLOADED',\n FORM_JSON_DOWNLOADED = 'FORM_JSON_DOWNLOADED',\n FORM_DRAFT_CREATED_FROM_LIVE = 'FORM_DRAFT_CREATED_FROM_LIVE',\n FORM_DRAFT_DELETED = 'FORM_DRAFT_DELETED',\n FORM_MIGRATED = 'FORM_MIGRATED',\n FORM_UPDATED = 'FORM_UPDATED'\n}\n"],"mappings":"AAAA,WAAYA,8BAA8B,0BAA9BA,8BAA8B;EAA9BA,8BAA8B,CAA9BA,8BAA8B;EAAA,OAA9BA,8BAA8B;AAAA;AAI1C,WAAYC,yBAAyB,0BAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAzBA,yBAAyB;EAAA,OAAzBA,yBAAyB;AAAA;AAKrC,WAAYC,4BAA4B,0BAA5BA,4BAA4B;EAA5BA,4BAA4B;EAA5BA,4BAA4B;EAA5BA,4BAA4B;EAAA,OAA5BA,4BAA4B;AAAA;AAMxC,WAAYC,qBAAqB,0BAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAArBA,qBAAqB;EAAA,OAArBA,qBAAqB;AAAA","ignoreList":[]}
|
@@ -1,2 +1,57 @@
|
|
1
|
-
|
1
|
+
import Joi from 'joi';
|
2
|
+
import { AuditEventMessageCategory, AuditEventMessageSchemaVersion, AuditEventMessageType } from "./enums.js";
|
3
|
+
export const formMessageDataBase = Joi.object({
|
4
|
+
formId: Joi.string().trim().required(),
|
5
|
+
slug: Joi.string().trim().required()
|
6
|
+
});
|
7
|
+
export const formCreatedMessageData = formMessageDataBase.append({
|
8
|
+
title: Joi.string().trim().required(),
|
9
|
+
organisation: Joi.string().trim().required(),
|
10
|
+
teamName: Joi.string().trim().required(),
|
11
|
+
teamEmail: Joi.string().trim().required()
|
12
|
+
});
|
13
|
+
export const supportEmailChanges = Joi.object().keys({
|
14
|
+
supportEmail: Joi.string().email().required(),
|
15
|
+
responseTime: Joi.string().required()
|
16
|
+
});
|
17
|
+
export function supportEmailUpdatedMessageData(schema) {
|
18
|
+
return formMessageDataBase.append({
|
19
|
+
changes: Joi.object().keys({
|
20
|
+
previous: schema,
|
21
|
+
new: schema
|
22
|
+
})
|
23
|
+
});
|
24
|
+
}
|
25
|
+
export const auditUserSchema = Joi.object().keys({
|
26
|
+
id: Joi.string().uuid().required(),
|
27
|
+
displayName: Joi.string().required()
|
28
|
+
});
|
29
|
+
export const validCategories = [AuditEventMessageCategory.FORM, AuditEventMessageCategory.ENTITLEMENT];
|
30
|
+
export const validTypes = [AuditEventMessageType.FORM_CREATED, AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED];
|
31
|
+
export const validMessageSchemaVersions = [AuditEventMessageSchemaVersion.V1];
|
32
|
+
export const messageSchema = Joi.object().keys({
|
33
|
+
schemaVersion: Joi.string().valid(...validMessageSchemaVersions).required(),
|
34
|
+
type: Joi.string().valid(...validTypes),
|
35
|
+
category: Joi.string().valid(...validCategories).required(),
|
36
|
+
createdAt: Joi.date().required(),
|
37
|
+
createdBy: auditUserSchema.required(),
|
38
|
+
data: Joi.when('type', {
|
39
|
+
switch: [{
|
40
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),
|
41
|
+
then: formCreatedMessageData
|
42
|
+
}, {
|
43
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),
|
44
|
+
then: supportEmailUpdatedMessageData(supportEmailChanges)
|
45
|
+
}]
|
46
|
+
}),
|
47
|
+
messageCreatedAt: Joi.date().required()
|
48
|
+
});
|
49
|
+
export const auditEvent = Joi.object().keys({
|
50
|
+
message: messageSchema
|
51
|
+
});
|
52
|
+
export const auditRecord = messageSchema.append({
|
53
|
+
messageId: Joi.string().uuid().required(),
|
54
|
+
entityId: Joi.string().required(),
|
55
|
+
recordCreatedAt: Joi.date().required()
|
56
|
+
});
|
2
57
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/form/form-audit/index.ts"],"sourcesContent":[""],"mappings":"","ignoreList":[]}
|
1
|
+
{"version":3,"file":"index.js","names":["Joi","AuditEventMessageCategory","AuditEventMessageSchemaVersion","AuditEventMessageType","formMessageDataBase","object","formId","string","trim","required","slug","formCreatedMessageData","append","title","organisation","teamName","teamEmail","supportEmailChanges","keys","supportEmail","email","responseTime","supportEmailUpdatedMessageData","schema","changes","previous","new","auditUserSchema","id","uuid","displayName","validCategories","FORM","ENTITLEMENT","validTypes","FORM_CREATED","FORM_SUPPORT_EMAIL_UPDATED","validMessageSchemaVersions","V1","messageSchema","schemaVersion","valid","type","category","createdAt","date","createdBy","data","when","switch","is","then","messageCreatedAt","auditEvent","message","auditRecord","messageId","entityId","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 FormMessageDataBase,\n type SupportEmailChanges,\n type SupportEmailUpdatedMessageData\n} from '~/src/form/form-audit/types.js'\n\nexport const formMessageDataBase = Joi.object<FormMessageDataBase>({\n formId: Joi.string().trim().required(),\n slug: Joi.string().trim().required()\n})\n\nexport const formCreatedMessageData =\n formMessageDataBase.append<FormCreatedMessageData>({\n title: Joi.string().trim().required(),\n organisation: Joi.string().trim().required(),\n teamName: Joi.string().trim().required(),\n teamEmail: Joi.string().trim().required()\n })\n\nexport const supportEmailChanges = Joi.object<SupportEmailChanges>().keys({\n supportEmail: Joi.string().email().required(),\n responseTime: Joi.string().required()\n})\n\nexport function supportEmailUpdatedMessageData<T>(schema: ObjectSchema<T>) {\n return formMessageDataBase.append<SupportEmailUpdatedMessageData>({\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_SUPPORT_EMAIL_UPDATED\n]\n\nexport const validMessageSchemaVersions = [AuditEventMessageSchemaVersion.V1]\n\nexport const messageSchema = Joi.object<AuditMessage>().keys({\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()\n .trim()\n .valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),\n then: supportEmailUpdatedMessageData(supportEmailChanges)\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 AuditEventMessageType\n} from '~/src/form/form-audit/enums.js'\n\nexport interface
|
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'\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 SupportEmailChanges {\n supportEmail: string\n responseTime: string\n}\n\nexport interface SupportEmailUpdatedMessageData extends FormMessageDataBase {\n changes: ChangesMessageData<SupportEmailChanges>\n}\n\nexport interface AuditUser {\n id: string\n displayName: string\n}\n\nexport type MessageData =\n | FormCreatedMessageData\n | SupportEmailUpdatedMessageData\n\nexport interface MessageBase {\n schemaVersion: AuditEventMessageSchemaVersion\n category: AuditEventMessageCategory\n type: AuditEventMessageType\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 FormSupportEmailUpdatedMessage extends MessageBase {\n category: AuditEventMessageCategory.FORM\n type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED\n data: SupportEmailUpdatedMessageData\n}\n\nexport type AuditMessage = FormCreatedMessage | FormSupportEmailUpdatedMessage\n\nexport interface AuditEvent {\n message: AuditMessage\n}\n\nexport type AuditRecord = AuditMessage & {\n messageId: string\n entityId: string\n recordCreatedAt: Date\n}\n\nexport interface MessageBody {\n Message: string\n}\n"],"mappings":"","ignoreList":[]}
|
package/dist/module/stubs.js
CHANGED
@@ -15,4 +15,5 @@ export { buildMarkdownComponent } from "./__stubs__/components.js";
|
|
15
15
|
export { QuestionRendererStub } from "./form/form-editor/__stubs__/preview.js";
|
16
16
|
export { PageRendererStub } from "./form/form-editor/__stubs__/preview.js";
|
17
17
|
export { QuestionPreviewElements } from "./form/form-editor/__stubs__/preview.js";
|
18
|
+
export * from "./form/form-audit/__stubs__/events.js";
|
18
19
|
//# sourceMappingURL=stubs.js.map
|
package/dist/module/stubs.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stubs.js","names":["buildList","buildListItem","buildCheckboxComponent","buildRadioComponent","buildAutoCompleteComponent","buildNumberFieldComponent","buildFileUploadComponent","buildTextFieldComponent","buildRepeaterPage","buildFileUploadPage","buildSummaryPage","buildQuestionPage","buildMarkdownComponent","QuestionRendererStub","PageRendererStub","QuestionPreviewElements"],"sources":["../../src/stubs.ts"],"sourcesContent":["export * from '~/src/__stubs__/form-definition.js'\nexport { buildList } from '~/src/__stubs__/components.js'\nexport { buildListItem } from '~/src/__stubs__/components.js'\nexport { buildCheckboxComponent } from '~/src/__stubs__/components.js'\nexport { buildRadioComponent } from '~/src/__stubs__/components.js'\nexport { buildAutoCompleteComponent } from '~/src/__stubs__/components.js'\nexport { buildNumberFieldComponent } from '~/src/__stubs__/components.js'\nexport { buildFileUploadComponent } from '~/src/__stubs__/components.js'\nexport { buildTextFieldComponent } from '~/src/__stubs__/components.js'\nexport { buildRepeaterPage } from '~/src/__stubs__/pages.js'\nexport { buildFileUploadPage } from '~/src/__stubs__/pages.js'\nexport { buildSummaryPage } from '~/src/__stubs__/pages.js'\nexport { buildQuestionPage } from '~/src/__stubs__/pages.js'\nexport { buildMarkdownComponent } from '~/src/__stubs__/components.js'\nexport { QuestionRendererStub } from '~/src/form/form-editor/__stubs__/preview.js'\nexport { PageRendererStub } from '~/src/form/form-editor/__stubs__/preview.js'\nexport { QuestionPreviewElements } from '~/src/form/form-editor/__stubs__/preview.js'\n"],"mappings":"AAAA;AACA,SAASA,SAAS;AAClB,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,0BAA0B;AACnC,SAASC,yBAAyB;AAClC,SAASC,wBAAwB;AACjC,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAC5B,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAC7B,SAASC,gBAAgB;AACzB,SAASC,uBAAuB","ignoreList":[]}
|
1
|
+
{"version":3,"file":"stubs.js","names":["buildList","buildListItem","buildCheckboxComponent","buildRadioComponent","buildAutoCompleteComponent","buildNumberFieldComponent","buildFileUploadComponent","buildTextFieldComponent","buildRepeaterPage","buildFileUploadPage","buildSummaryPage","buildQuestionPage","buildMarkdownComponent","QuestionRendererStub","PageRendererStub","QuestionPreviewElements"],"sources":["../../src/stubs.ts"],"sourcesContent":["export * from '~/src/__stubs__/form-definition.js'\nexport { buildList } from '~/src/__stubs__/components.js'\nexport { buildListItem } from '~/src/__stubs__/components.js'\nexport { buildCheckboxComponent } from '~/src/__stubs__/components.js'\nexport { buildRadioComponent } from '~/src/__stubs__/components.js'\nexport { buildAutoCompleteComponent } from '~/src/__stubs__/components.js'\nexport { buildNumberFieldComponent } from '~/src/__stubs__/components.js'\nexport { buildFileUploadComponent } from '~/src/__stubs__/components.js'\nexport { buildTextFieldComponent } from '~/src/__stubs__/components.js'\nexport { buildRepeaterPage } from '~/src/__stubs__/pages.js'\nexport { buildFileUploadPage } from '~/src/__stubs__/pages.js'\nexport { buildSummaryPage } from '~/src/__stubs__/pages.js'\nexport { buildQuestionPage } from '~/src/__stubs__/pages.js'\nexport { buildMarkdownComponent } from '~/src/__stubs__/components.js'\nexport { QuestionRendererStub } from '~/src/form/form-editor/__stubs__/preview.js'\nexport { PageRendererStub } from '~/src/form/form-editor/__stubs__/preview.js'\nexport { QuestionPreviewElements } from '~/src/form/form-editor/__stubs__/preview.js'\nexport * from '~/src/form/form-audit/__stubs__/events.js'\n"],"mappings":"AAAA;AACA,SAASA,SAAS;AAClB,SAASC,aAAa;AACtB,SAASC,sBAAsB;AAC/B,SAASC,mBAAmB;AAC5B,SAASC,0BAA0B;AACnC,SAASC,yBAAyB;AAClC,SAASC,wBAAwB;AACjC,SAASC,uBAAuB;AAChC,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAC5B,SAASC,gBAAgB;AACzB,SAASC,iBAAiB;AAC1B,SAASC,sBAAsB;AAC/B,SAASC,oBAAoB;AAC7B,SAASC,gBAAgB;AACzB,SAASC,uBAAuB;AAChC","ignoreList":[]}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { type AuditUser, type FormCreatedMessage, type FormCreatedMessageData } from '../../../form/form-audit/types.js';
|
2
|
+
export declare const formCreatedFormId = "8c772d00-beac-4a29-95cb-033a263d0f1b";
|
3
|
+
export declare function buildFormCreatedMessageData(partialFormCreatedMessageData?: Partial<FormCreatedMessageData>): FormCreatedMessageData;
|
4
|
+
export declare function buildAuditUser(auditUser?: Partial<AuditUser>): AuditUser;
|
5
|
+
export declare function buildFormCreatedMessage(partialFormCreatedMessage?: Partial<FormCreatedMessage>): FormCreatedMessage;
|
6
|
+
//# sourceMappingURL=events.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../../src/form/form-audit/__stubs__/events.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAA;AAEvC,eAAO,MAAM,iBAAiB,yCAAyC,CAAA;AAEvE,wBAAgB,2BAA2B,CACzC,6BAA6B,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAClE,sBAAsB,CAUxB;AAED,wBAAgB,cAAc,CAAC,SAAS,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAM5E;AAED,wBAAgB,uBAAuB,CACrC,yBAAyB,GAAE,OAAO,CAAC,kBAAkB,CAAM,GAC1D,kBAAkB,CAUpB"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,yBAAyB;IACnC,IAAI,SAAS;IACb,WAAW,gBAAgB;CAC5B;AAED,oBAAY,4BAA4B;IACtC,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;CACpC;AAED,oBAAY,qBAAqB;IAC/B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,yBAAyB,8BAA8B;IACvD,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IACnD,0BAA0B,+BAA+B;IACzD,0BAA0B,+BAA+B;IACzD,yBAAyB,8BAA8B;IACvD,gCAAgC,qCAAqC;IACrE,+BAA+B,oCAAoC;IACnE,gCAAgC,qCAAqC;IACrE,kBAAkB,uBAAuB;IACzC,oBAAoB,yBAAyB;IAC7C,4BAA4B,iCAAiC;IAC7D,kBAAkB,uBAAuB;IACzC,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;CAC9B"}
|
1
|
+
{"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/enums.ts"],"names":[],"mappings":"AAAA,oBAAY,8BAA8B;IACxC,EAAE,IAAI;CACP;AAED,oBAAY,yBAAyB;IACnC,IAAI,SAAS;IACb,WAAW,gBAAgB;CAC5B;AAED,oBAAY,4BAA4B;IACtC,aAAa,kBAAkB;IAC/B,eAAe,oBAAoB;IACnC,eAAe,oBAAoB;CACpC;AAED,oBAAY,qBAAqB;IAC/B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,yBAAyB,8BAA8B;IACvD,sBAAsB,2BAA2B;IACjD,uBAAuB,4BAA4B;IACnD,0BAA0B,+BAA+B;IACzD,0BAA0B,+BAA+B;IACzD,yBAAyB,8BAA8B;IACvD,gCAAgC,qCAAqC;IACrE,+BAA+B,oCAAoC;IACnE,gCAAgC,qCAAqC;IACrE,kBAAkB,uBAAuB;IACzC,oBAAoB,yBAAyB;IAC7C,4BAA4B,iCAAiC;IAC7D,kBAAkB,uBAAuB;IACzC,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;CAC9B"}
|
@@ -1,2 +1,15 @@
|
|
1
|
-
|
1
|
+
import Joi, { type ObjectSchema } from 'joi';
|
2
|
+
import { AuditEventMessageCategory, AuditEventMessageSchemaVersion, AuditEventMessageType } from '../../form/form-audit/enums.js';
|
3
|
+
import { type AuditEvent, type AuditMessage, type AuditRecord, type AuditUser, type FormCreatedMessageData, type FormMessageDataBase, type SupportEmailChanges, type SupportEmailUpdatedMessageData } from '../../form/form-audit/types.js';
|
4
|
+
export declare const formMessageDataBase: Joi.ObjectSchema<FormMessageDataBase>;
|
5
|
+
export declare const formCreatedMessageData: Joi.ObjectSchema<FormCreatedMessageData>;
|
6
|
+
export declare const supportEmailChanges: Joi.ObjectSchema<SupportEmailChanges>;
|
7
|
+
export declare function supportEmailUpdatedMessageData<T>(schema: ObjectSchema<T>): Joi.ObjectSchema<SupportEmailUpdatedMessageData>;
|
8
|
+
export declare const auditUserSchema: Joi.ObjectSchema<AuditUser>;
|
9
|
+
export declare const validCategories: AuditEventMessageCategory[];
|
10
|
+
export declare const validTypes: AuditEventMessageType[];
|
11
|
+
export declare const validMessageSchemaVersions: AuditEventMessageSchemaVersion[];
|
12
|
+
export declare const messageSchema: Joi.ObjectSchema<AuditMessage>;
|
13
|
+
export declare const auditEvent: Joi.ObjectSchema<AuditEvent>;
|
14
|
+
export declare const auditRecord: Joi.ObjectSchema<AuditRecord>;
|
2
15
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/index.ts"],"names":[],"mappings":""}
|
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,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,8BAA8B,EACpC,MAAM,gCAAgC,CAAA;AAEvC,eAAO,MAAM,mBAAmB,uCAG9B,CAAA;AAEF,eAAO,MAAM,sBAAsB,0CAM/B,CAAA;AAEJ,eAAO,MAAM,mBAAmB,uCAG9B,CAAA;AAEF,wBAAgB,8BAA8B,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,oDAOxE;AAED,eAAO,MAAM,eAAe,6BAG1B,CAAA;AAEF,eAAO,MAAM,eAAe,6BAG3B,CAAA;AAED,eAAO,MAAM,UAAU,yBAGtB,CAAA;AAED,eAAO,MAAM,0BAA0B,kCAAsC,CAAA;AAE7E,eAAO,MAAM,aAAa,gCAyBxB,CAAA;AAEF,eAAO,MAAM,UAAU,8BAErB,CAAA;AAEF,eAAO,MAAM,WAAW,+BAItB,CAAA"}
|
@@ -1,5 +1,5 @@
|
|
1
|
-
import { type AuditEventMessageCategory, type AuditEventMessageType } from '../../form/form-audit/enums.js';
|
2
|
-
export interface
|
1
|
+
import { type AuditEventMessageCategory, type AuditEventMessageSchemaVersion, type AuditEventMessageType } from '../../form/form-audit/enums.js';
|
2
|
+
export interface FormMessageDataBase {
|
3
3
|
formId: string;
|
4
4
|
slug: string;
|
5
5
|
}
|
@@ -7,52 +7,53 @@ export interface ChangesMessageData<T> {
|
|
7
7
|
previous: T;
|
8
8
|
new: T;
|
9
9
|
}
|
10
|
-
export interface FormCreatedMessageData extends
|
10
|
+
export interface FormCreatedMessageData extends FormMessageDataBase {
|
11
11
|
title: string;
|
12
12
|
organisation: string;
|
13
13
|
teamName: string;
|
14
14
|
teamEmail: string;
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
export interface SupportEmailUpdatedMessageData extends FormMessageData {
|
27
|
-
changes: ChangesMessageData<{
|
28
|
-
supportEmail: string;
|
29
|
-
responseTime: string;
|
30
|
-
}>;
|
15
|
+
}
|
16
|
+
export interface SupportEmailChanges {
|
17
|
+
supportEmail: string;
|
18
|
+
responseTime: string;
|
19
|
+
}
|
20
|
+
export interface SupportEmailUpdatedMessageData extends FormMessageDataBase {
|
21
|
+
changes: ChangesMessageData<SupportEmailChanges>;
|
22
|
+
}
|
23
|
+
export interface AuditUser {
|
24
|
+
id: string;
|
25
|
+
displayName: string;
|
31
26
|
}
|
32
27
|
export type MessageData = FormCreatedMessageData | SupportEmailUpdatedMessageData;
|
33
|
-
export interface
|
34
|
-
schemaVersion:
|
28
|
+
export interface MessageBase {
|
29
|
+
schemaVersion: AuditEventMessageSchemaVersion;
|
35
30
|
category: AuditEventMessageCategory;
|
36
31
|
type: AuditEventMessageType;
|
37
32
|
createdAt: Date;
|
38
|
-
createdBy:
|
39
|
-
id: string;
|
40
|
-
displayName: string;
|
41
|
-
};
|
33
|
+
createdBy: AuditUser;
|
42
34
|
data: MessageData;
|
35
|
+
messageCreatedAt: Date;
|
43
36
|
}
|
44
|
-
export interface FormCreatedMessage extends
|
37
|
+
export interface FormCreatedMessage extends MessageBase {
|
45
38
|
category: AuditEventMessageCategory.FORM;
|
46
39
|
type: AuditEventMessageType.FORM_CREATED;
|
47
40
|
data: FormCreatedMessageData;
|
48
41
|
}
|
49
|
-
export interface
|
42
|
+
export interface FormSupportEmailUpdatedMessage extends MessageBase {
|
50
43
|
category: AuditEventMessageCategory.FORM;
|
51
44
|
type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED;
|
52
45
|
data: SupportEmailUpdatedMessageData;
|
53
46
|
}
|
54
|
-
export type
|
47
|
+
export type AuditMessage = FormCreatedMessage | FormSupportEmailUpdatedMessage;
|
55
48
|
export interface AuditEvent {
|
56
|
-
message:
|
49
|
+
message: AuditMessage;
|
50
|
+
}
|
51
|
+
export type AuditRecord = AuditMessage & {
|
52
|
+
messageId: string;
|
53
|
+
entityId: string;
|
54
|
+
recordCreatedAt: Date;
|
55
|
+
};
|
56
|
+
export interface MessageBody {
|
57
|
+
Message: string;
|
57
58
|
}
|
58
59
|
//# sourceMappingURL=types.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC3B,MAAM,gCAAgC,CAAA;AAEvC,MAAM,WAAW,
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/form/form-audit/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,yBAAyB,EAC9B,KAAK,8BAA8B,EACnC,KAAK,qBAAqB,EAC3B,MAAM,gCAAgC,CAAA;AAEvC,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,QAAQ,EAAE,CAAC,CAAA;IACX,GAAG,EAAE,CAAC,CAAA;CACP;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,8BAA+B,SAAQ,mBAAmB;IACzE,OAAO,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,MAAM,WAAW,GACnB,sBAAsB,GACtB,8BAA8B,CAAA;AAElC,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,8BAA8B,CAAA;IAC7C,QAAQ,EAAE,yBAAyB,CAAA;IACnC,IAAI,EAAE,qBAAqB,CAAA;IAC3B,SAAS,EAAE,IAAI,CAAA;IACf,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,WAAW,CAAA;IACjB,gBAAgB,EAAE,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,YAAY,CAAA;IACxC,IAAI,EAAE,sBAAsB,CAAA;CAC7B;AAED,MAAM,WAAW,8BAA+B,SAAQ,WAAW;IACjE,QAAQ,EAAE,yBAAyB,CAAC,IAAI,CAAA;IACxC,IAAI,EAAE,qBAAqB,CAAC,0BAA0B,CAAA;IACtD,IAAI,EAAE,8BAA8B,CAAA;CACrC;AAED,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG,8BAA8B,CAAA;AAE9E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,YAAY,CAAA;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG;IACvC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,eAAe,EAAE,IAAI,CAAA;CACtB,CAAA;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB"}
|
package/dist/types/stubs.d.ts
CHANGED
@@ -15,4 +15,5 @@ export { buildMarkdownComponent } from './__stubs__/components.js';
|
|
15
15
|
export { QuestionRendererStub } from './form/form-editor/__stubs__/preview.js';
|
16
16
|
export { PageRendererStub } from './form/form-editor/__stubs__/preview.js';
|
17
17
|
export { QuestionPreviewElements } from './form/form-editor/__stubs__/preview.js';
|
18
|
+
export * from './form/form-audit/__stubs__/events.js';
|
18
19
|
//# sourceMappingURL=stubs.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../src/stubs.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAA"}
|
1
|
+
{"version":3,"file":"stubs.d.ts","sourceRoot":"","sources":["../../src/stubs.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAA;AAClF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAA;AACrF,cAAc,2CAA2C,CAAA"}
|
package/package.json
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
import {
|
2
|
+
AuditEventMessageCategory,
|
3
|
+
AuditEventMessageSchemaVersion,
|
4
|
+
AuditEventMessageType
|
5
|
+
} from '~/src/form/form-audit/enums.js'
|
6
|
+
import {
|
7
|
+
type AuditUser,
|
8
|
+
type FormCreatedMessage,
|
9
|
+
type FormCreatedMessageData
|
10
|
+
} from '~/src/form/form-audit/types.js'
|
11
|
+
|
12
|
+
export const formCreatedFormId = '8c772d00-beac-4a29-95cb-033a263d0f1b'
|
13
|
+
|
14
|
+
export function buildFormCreatedMessageData(
|
15
|
+
partialFormCreatedMessageData: Partial<FormCreatedMessageData> = {}
|
16
|
+
): FormCreatedMessageData {
|
17
|
+
return {
|
18
|
+
formId: formCreatedFormId,
|
19
|
+
slug: 'chemistry',
|
20
|
+
title: 'Chemistry',
|
21
|
+
organisation: 'Defra',
|
22
|
+
teamName: 'Forms Team',
|
23
|
+
teamEmail: 'forms@example.com',
|
24
|
+
...partialFormCreatedMessageData
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
export function buildAuditUser(auditUser: Partial<AuditUser> = {}): AuditUser {
|
29
|
+
return {
|
30
|
+
displayName: 'Enrique Chase',
|
31
|
+
id: '18ab1e08-c921-4bb6-a19c-e677c709cc6d',
|
32
|
+
...auditUser
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
export function buildFormCreatedMessage(
|
37
|
+
partialFormCreatedMessage: Partial<FormCreatedMessage> = {}
|
38
|
+
): FormCreatedMessage {
|
39
|
+
return {
|
40
|
+
type: AuditEventMessageType.FORM_CREATED,
|
41
|
+
category: AuditEventMessageCategory.FORM,
|
42
|
+
createdAt: new Date('2025-07-23'),
|
43
|
+
createdBy: buildAuditUser(),
|
44
|
+
data: buildFormCreatedMessageData(),
|
45
|
+
schemaVersion: AuditEventMessageSchemaVersion.V1,
|
46
|
+
...partialFormCreatedMessage
|
47
|
+
} as FormCreatedMessage
|
48
|
+
}
|
@@ -0,0 +1,99 @@
|
|
1
|
+
import Joi, { type ObjectSchema } from 'joi'
|
2
|
+
|
3
|
+
import {
|
4
|
+
AuditEventMessageCategory,
|
5
|
+
AuditEventMessageSchemaVersion,
|
6
|
+
AuditEventMessageType
|
7
|
+
} from '~/src/form/form-audit/enums.js'
|
8
|
+
import {
|
9
|
+
type AuditEvent,
|
10
|
+
type AuditMessage,
|
11
|
+
type AuditRecord,
|
12
|
+
type AuditUser,
|
13
|
+
type ChangesMessageData,
|
14
|
+
type FormCreatedMessageData,
|
15
|
+
type FormMessageDataBase,
|
16
|
+
type SupportEmailChanges,
|
17
|
+
type SupportEmailUpdatedMessageData
|
18
|
+
} from '~/src/form/form-audit/types.js'
|
19
|
+
|
20
|
+
export const formMessageDataBase = Joi.object<FormMessageDataBase>({
|
21
|
+
formId: Joi.string().trim().required(),
|
22
|
+
slug: Joi.string().trim().required()
|
23
|
+
})
|
24
|
+
|
25
|
+
export const formCreatedMessageData =
|
26
|
+
formMessageDataBase.append<FormCreatedMessageData>({
|
27
|
+
title: Joi.string().trim().required(),
|
28
|
+
organisation: Joi.string().trim().required(),
|
29
|
+
teamName: Joi.string().trim().required(),
|
30
|
+
teamEmail: Joi.string().trim().required()
|
31
|
+
})
|
32
|
+
|
33
|
+
export const supportEmailChanges = Joi.object<SupportEmailChanges>().keys({
|
34
|
+
supportEmail: Joi.string().email().required(),
|
35
|
+
responseTime: Joi.string().required()
|
36
|
+
})
|
37
|
+
|
38
|
+
export function supportEmailUpdatedMessageData<T>(schema: ObjectSchema<T>) {
|
39
|
+
return formMessageDataBase.append<SupportEmailUpdatedMessageData>({
|
40
|
+
changes: Joi.object<ChangesMessageData<T>>().keys({
|
41
|
+
previous: schema,
|
42
|
+
new: schema
|
43
|
+
})
|
44
|
+
})
|
45
|
+
}
|
46
|
+
|
47
|
+
export const auditUserSchema = Joi.object<AuditUser>().keys({
|
48
|
+
id: Joi.string().uuid().required(),
|
49
|
+
displayName: Joi.string().required()
|
50
|
+
})
|
51
|
+
|
52
|
+
export const validCategories = [
|
53
|
+
AuditEventMessageCategory.FORM,
|
54
|
+
AuditEventMessageCategory.ENTITLEMENT
|
55
|
+
]
|
56
|
+
|
57
|
+
export const validTypes = [
|
58
|
+
AuditEventMessageType.FORM_CREATED,
|
59
|
+
AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED
|
60
|
+
]
|
61
|
+
|
62
|
+
export const validMessageSchemaVersions = [AuditEventMessageSchemaVersion.V1]
|
63
|
+
|
64
|
+
export const messageSchema = Joi.object<AuditMessage>().keys({
|
65
|
+
schemaVersion: Joi.string()
|
66
|
+
.valid(...validMessageSchemaVersions)
|
67
|
+
.required(),
|
68
|
+
type: Joi.string().valid(...validTypes),
|
69
|
+
category: Joi.string()
|
70
|
+
.valid(...validCategories)
|
71
|
+
.required(),
|
72
|
+
createdAt: Joi.date().required(),
|
73
|
+
createdBy: auditUserSchema.required(),
|
74
|
+
data: Joi.when('type', {
|
75
|
+
switch: [
|
76
|
+
{
|
77
|
+
is: Joi.string().trim().valid(AuditEventMessageType.FORM_CREATED),
|
78
|
+
then: formCreatedMessageData
|
79
|
+
},
|
80
|
+
{
|
81
|
+
is: Joi.string()
|
82
|
+
.trim()
|
83
|
+
.valid(AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED),
|
84
|
+
then: supportEmailUpdatedMessageData(supportEmailChanges)
|
85
|
+
}
|
86
|
+
]
|
87
|
+
}),
|
88
|
+
messageCreatedAt: Joi.date().required()
|
89
|
+
})
|
90
|
+
|
91
|
+
export const auditEvent = Joi.object<AuditEvent>().keys({
|
92
|
+
message: messageSchema
|
93
|
+
})
|
94
|
+
|
95
|
+
export const auditRecord = messageSchema.append<AuditRecord>({
|
96
|
+
messageId: Joi.string().uuid().required(),
|
97
|
+
entityId: Joi.string().required(),
|
98
|
+
recordCreatedAt: Joi.date().required()
|
99
|
+
})
|
@@ -1,9 +1,10 @@
|
|
1
1
|
import {
|
2
2
|
type AuditEventMessageCategory,
|
3
|
+
type AuditEventMessageSchemaVersion,
|
3
4
|
type AuditEventMessageType
|
4
5
|
} from '~/src/form/form-audit/enums.js'
|
5
6
|
|
6
|
-
export interface
|
7
|
+
export interface FormMessageDataBase {
|
7
8
|
formId: string
|
8
9
|
slug: string
|
9
10
|
}
|
@@ -13,57 +14,65 @@ export interface ChangesMessageData<T> {
|
|
13
14
|
new: T
|
14
15
|
}
|
15
16
|
|
16
|
-
export interface FormCreatedMessageData extends
|
17
|
+
export interface FormCreatedMessageData extends FormMessageDataBase {
|
17
18
|
title: string
|
18
19
|
organisation: string
|
19
20
|
teamName: string
|
20
21
|
teamEmail: string
|
21
|
-
createdAt: Date
|
22
|
-
createdBy: {
|
23
|
-
id: string
|
24
|
-
displayName: string
|
25
|
-
}
|
26
|
-
updatedAt: Date
|
27
|
-
updatedBy: {
|
28
|
-
id: string
|
29
|
-
displayName: string
|
30
|
-
}
|
31
22
|
}
|
32
23
|
|
33
|
-
export interface
|
34
|
-
|
24
|
+
export interface SupportEmailChanges {
|
25
|
+
supportEmail: string
|
26
|
+
responseTime: string
|
27
|
+
}
|
28
|
+
|
29
|
+
export interface SupportEmailUpdatedMessageData extends FormMessageDataBase {
|
30
|
+
changes: ChangesMessageData<SupportEmailChanges>
|
31
|
+
}
|
32
|
+
|
33
|
+
export interface AuditUser {
|
34
|
+
id: string
|
35
|
+
displayName: string
|
35
36
|
}
|
36
37
|
|
37
38
|
export type MessageData =
|
38
39
|
| FormCreatedMessageData
|
39
40
|
| SupportEmailUpdatedMessageData
|
40
41
|
|
41
|
-
export interface
|
42
|
-
schemaVersion:
|
42
|
+
export interface MessageBase {
|
43
|
+
schemaVersion: AuditEventMessageSchemaVersion
|
43
44
|
category: AuditEventMessageCategory
|
44
45
|
type: AuditEventMessageType
|
45
46
|
createdAt: Date
|
46
|
-
createdBy:
|
47
|
-
id: string
|
48
|
-
displayName: string
|
49
|
-
}
|
47
|
+
createdBy: AuditUser
|
50
48
|
data: MessageData
|
49
|
+
messageCreatedAt: Date
|
51
50
|
}
|
52
51
|
|
53
|
-
export interface FormCreatedMessage extends
|
52
|
+
export interface FormCreatedMessage extends MessageBase {
|
54
53
|
category: AuditEventMessageCategory.FORM
|
55
54
|
type: AuditEventMessageType.FORM_CREATED
|
56
55
|
data: FormCreatedMessageData
|
57
56
|
}
|
58
57
|
|
59
|
-
export interface
|
58
|
+
export interface FormSupportEmailUpdatedMessage extends MessageBase {
|
60
59
|
category: AuditEventMessageCategory.FORM
|
61
60
|
type: AuditEventMessageType.FORM_SUPPORT_EMAIL_UPDATED
|
62
61
|
data: SupportEmailUpdatedMessageData
|
63
62
|
}
|
64
63
|
|
65
|
-
export type
|
64
|
+
export type AuditMessage = FormCreatedMessage | FormSupportEmailUpdatedMessage
|
66
65
|
|
67
66
|
export interface AuditEvent {
|
68
|
-
message:
|
67
|
+
message: AuditMessage
|
68
|
+
}
|
69
|
+
|
70
|
+
export type AuditRecord = AuditMessage & {
|
71
|
+
messageId: string
|
72
|
+
entityId: string
|
73
|
+
recordCreatedAt: Date
|
74
|
+
}
|
75
|
+
|
76
|
+
export interface MessageBody {
|
77
|
+
Message: string
|
69
78
|
}
|
package/src/stubs.ts
CHANGED
@@ -15,3 +15,4 @@ export { buildMarkdownComponent } from '~/src/__stubs__/components.js'
|
|
15
15
|
export { QuestionRendererStub } from '~/src/form/form-editor/__stubs__/preview.js'
|
16
16
|
export { PageRendererStub } from '~/src/form/form-editor/__stubs__/preview.js'
|
17
17
|
export { QuestionPreviewElements } from '~/src/form/form-editor/__stubs__/preview.js'
|
18
|
+
export * from '~/src/form/form-audit/__stubs__/events.js'
|